Repository: ignite Updated Branches: refs/heads/ignite-10779-2 [created] c31aa014e
IGNITE-10779 Unit test for reproducing forgotten counter presence, docs improve Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c31aa014 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c31aa014 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c31aa014 Branch: refs/heads/ignite-10779-2 Commit: c31aa014ebae049b13cbed2d73d9dd449681aad6 Parents: dd764c9 Author: Dmitriy Pavlov <[email protected]> Authored: Wed Dec 26 21:14:47 2018 +0300 Committer: Dmitriy Pavlov <[email protected]> Committed: Wed Dec 26 21:14:47 2018 +0300 ---------------------------------------------------------------------- .../java/org/apache/ignite/internal/README.md | 12 ++- .../ignite/internal/processors/cache/README.md | 3 + .../CheckpointWriteProgressSupplier.java | 6 +- .../persistence/pagemem/PageMemoryImpl.java | 2 +- .../pagemem/IgniteThrottlingUnitTest.java | 83 +++++++++++++++++++- .../pagemem/PagesWriteThrottleSandboxTest.java | 5 +- .../testsuites/IgnitePdsUnitTestSuite.java | 1 - 7 files changed, 102 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/c31aa014/modules/core/src/main/java/org/apache/ignite/internal/README.md ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/README.md b/modules/core/src/main/java/org/apache/ignite/internal/README.md index 8d0f208..0ed8639 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/README.md +++ b/modules/core/src/main/java/org/apache/ignite/internal/README.md @@ -3,10 +3,18 @@ Apache Ignite Internals Contains implementation classes for Apache Ignite. -*Ignite Components* +### Ignite Components All internal Ignite components implements [GridComponent.java](GridComponent.java) - interface for - [processors](processors) and for - [managers](managers) - has associated SPI. -Service Provider Interface (SPI) abbreviation is here because Apache Ignite was designed as a pluggable product. But Ignite users usually do not define own implementations. \ No newline at end of file +Service Provider Interface (SPI) abbreviation is here because Apache Ignite was designed as a pluggable product. But Ignite users usually do not define own implementations. + +### Contexts +Ignite manages its components using Context used to access components and binding theirs to each other. +Component-related context in the Apache Ignite is an implementation of [GridKernalContext.java](GridKernalContext.java). +This context instance is usually referred in code as `kctx` or `ctx`. + +Higher-level context, cache shared context is also defined in [processors/cache](processors/cache) + http://git-wip-us.apache.org/repos/asf/ignite/blob/c31aa014/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/README.md ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/README.md b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/README.md index f8c50ce..19c5d70 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/README.md +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/README.md @@ -1,5 +1,8 @@ Apache Ignite Cache Processors ------------------------------ +### Context +[GridCacheSharedContext.java](GridCacheSharedContext.java) is a class which is used for binding cache-related managers. +This context is shared by all caches defined. This context instance is usually referred in code as `sctx`, `cctx` or `ctx`. ### Native Persistence Apache Ignite has its own [Native Persistence](persistence) - Implementation http://git-wip-us.apache.org/repos/asf/ignite/blob/c31aa014/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CheckpointWriteProgressSupplier.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CheckpointWriteProgressSupplier.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CheckpointWriteProgressSupplier.java index d20e8d4..596a65f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CheckpointWriteProgressSupplier.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CheckpointWriteProgressSupplier.java @@ -24,17 +24,17 @@ import java.util.concurrent.atomic.AtomicInteger; */ public interface CheckpointWriteProgressSupplier { /** - * Counter for written checkpoint pages. Not null only if checkpoint is running. + * @return Counter for written checkpoint pages. Not <code>null</code> only if checkpoint is running. */ public AtomicInteger writtenPagesCounter(); /** - * @return Counter for fsynced checkpoint pages. Not null only if checkpoint is running. + * @return Counter for fsynced checkpoint pages. Not <code>null</code> only if checkpoint is running. */ public AtomicInteger syncedPagesCounter(); /** - * @return Counter for evicted pages during current checkpoint. Not null only if checkpoint is running. + * @return Counter for evicted pages during current checkpoint. Not <code>null</code> only if checkpoint is running. */ public AtomicInteger evictedPagesCntr(); http://git-wip-us.apache.org/repos/asf/ignite/blob/c31aa014/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java index 31127fc..5b26a34 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java @@ -325,7 +325,7 @@ public class PageMemoryImpl implements PageMemoryEx { storeMgr = ctx.pageStore(); walMgr = ctx.wal(); encMgr = ctx.kernalContext().encryption(); - encryptionDisabled = ctx.gridConfig().getEncryptionSpi() instanceof NoopEncryptionSpi; + encryptionDisabled = ctx.gridConfig().getEncryptionSpi() instanceof NoopEncryptionSpi; assert storeMgr != null; assert walMgr != null; http://git-wip-us.apache.org/repos/asf/ignite/blob/c31aa014/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IgniteThrottlingUnitTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IgniteThrottlingUnitTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IgniteThrottlingUnitTest.java index 6f504da..744fce9 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IgniteThrottlingUnitTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/IgniteThrottlingUnitTest.java @@ -16,21 +16,39 @@ */ package org.apache.ignite.internal.processors.cache.persistence.pagemem; +import java.io.File; import java.util.Arrays; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.LockSupport; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteLogger; +import org.apache.ignite.configuration.DataStorageConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.internal.GridKernalContext; +import org.apache.ignite.internal.managers.encryption.GridEncryptionManager; +import org.apache.ignite.internal.processors.cache.GridCacheProcessor; +import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.processors.cache.persistence.CheckpointLockStateChecker; import org.apache.ignite.internal.processors.cache.persistence.CheckpointWriteProgressSupplier; +import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager; +import org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager; +import org.apache.ignite.internal.processors.cache.persistence.filename.PdsFolderSettings; +import org.apache.ignite.internal.processors.cache.persistence.filename.PdsFoldersResolver; +import org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager; +import org.apache.ignite.internal.processors.subscription.GridInternalSubscriptionProcessor; import org.apache.ignite.logger.NullLogger; +import org.apache.ignite.spi.encryption.noop.NoopEncryptionSpi; import org.apache.ignite.testframework.GridTestUtils; import org.junit.Rule; import org.junit.Test; import org.junit.rules.Timeout; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; @@ -269,7 +287,7 @@ public class IgniteThrottlingUnitTest { throttle.onMarkDirty(false); - if(warnings.get()>0) + if (warnings.get() > 0) break; } @@ -277,4 +295,67 @@ public class IgniteThrottlingUnitTest { assertTrue(warnings.get() > 0); } + + //todo may move this test to upper package + @Test + public void checkWrittenCounterIsIncreased() throws IgniteCheckedException { + IgniteConfiguration cfg = new IgniteConfiguration(); + DataStorageConfiguration dsCfg = new DataStorageConfiguration(); + cfg.setDataStorageConfiguration(dsCfg); + + //instead of init default SPI + cfg.setEncryptionSpi(new NoopEncryptionSpi()); + cfg.setGridLogger(new NullLogger()); + + GridKernalContext kctx = mock(GridKernalContext.class); + when(kctx.config()).thenReturn(cfg); + + when(kctx.internalSubscriptionProcessor()).thenReturn(mock(GridInternalSubscriptionProcessor.class)); + + GridEncryptionManager encryptionMgr = mock(GridEncryptionManager.class); + when(kctx.encryption()).thenReturn(encryptionMgr); + + when(kctx.log(any(Class.class))).thenReturn(cfg.getGridLogger()); + + + GridCacheDatabaseSharedManager.FileLockHolder lockHolder = mock(GridCacheDatabaseSharedManager.FileLockHolder.class); + PdsFolderSettings folders = mock(PdsFolderSettings.class); + when(folders.getLockedFileLockHolder()).thenReturn(lockHolder); + + PdsFoldersResolver foldersRslvr = mock(PdsFoldersResolver.class); + when(foldersRslvr.resolveFolders()).thenReturn(folders); + + when(kctx.pdsFolderResolver()).thenReturn(foldersRslvr); + + GridCacheSharedContext sctx = mock(GridCacheSharedContext.class); + when(sctx.kernalContext()).thenReturn(kctx); + when(sctx.gridConfig()).thenReturn(cfg); + + FilePageStoreManager filePageStoreMgr = mock(FilePageStoreManager.class); + when(filePageStoreMgr.workDir()).thenReturn(new File(System.getProperty("java.io.tmpdir"))); + + when(sctx.pageStore()).thenReturn(filePageStoreMgr); + + FileWriteAheadLogManager wal = mock(FileWriteAheadLogManager.class); + when(sctx.wal()).thenReturn(wal); + + when(sctx.logger(any(Class.class))).thenReturn(cfg.getGridLogger()); + + //binding + GridCacheProcessor cacheProcessor = mock(GridCacheProcessor.class); + when(cacheProcessor.context()).thenReturn(sctx); + when(kctx.cache()).thenReturn(cacheProcessor); + + //start GCDSM + GridCacheDatabaseSharedManager mgr = new GridCacheDatabaseSharedManager(kctx); + assertNull(mgr.getCheckpointer()); + mgr.start(sctx); + + assertNotNull(mgr.getCheckpointer()); + + int startCnt = mgr.writtenPagesCounter().get(); + + + assertTrue(mgr.writtenPagesCounter().get() > startCnt); + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/c31aa014/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java index 0bfe22a..7755318 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java @@ -34,6 +34,7 @@ import org.apache.ignite.configuration.DataStorageConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.configuration.WALMode; import org.apache.ignite.internal.IgniteEx; +import org.apache.ignite.internal.processors.cache.persistence.CheckpointWriteProgressSupplier; import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager; import org.apache.ignite.internal.processors.cache.ratemetrics.HitRateMetrics; import org.apache.ignite.internal.util.typedef.internal.S; @@ -151,7 +152,7 @@ public class PagesWriteThrottleSandboxTest extends GridCommonAbstractTest { long cpWrittenPages; - AtomicInteger cntr = ((GridCacheDatabaseSharedManager)(((IgniteEx)ignite(0)) + AtomicInteger cntr = ((CheckpointWriteProgressSupplier)(((IgniteEx)ignite(0)) .context().cache().context().database())).writtenPagesCounter(); cpWrittenPages = cntr == null ? 0 : cntr.get(); @@ -169,7 +170,7 @@ public class PagesWriteThrottleSandboxTest extends GridCommonAbstractTest { try { Thread.sleep(1000); } - catch (InterruptedException e) { + catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/c31aa014/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsUnitTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsUnitTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsUnitTestSuite.java index c022eea..f68d60c 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsUnitTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsUnitTestSuite.java @@ -30,7 +30,6 @@ import org.junit.runners.Suite; @Suite.SuiteClasses({ IgniteThrottlingUnitTest.class, IgnitePageMemReplaceDelayedWriteUnitTest.class, - IgniteThrottlingUnitTest.class, FullPageIdTableTest.class, RobinHoodBackwardShiftHashMapTest.class })
