IGNITE-10457: MVCC TX: Fix MvccProcessor initialization on recovery from store. This closes #5538.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/cdba7d9a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/cdba7d9a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/cdba7d9a Branch: refs/heads/ignite-10044 Commit: cdba7d9a1a1d0e2f69aafaeeef3a2746bc69b072 Parents: 7251718 Author: Igor Seliverstov <[email protected]> Authored: Tue Dec 4 17:40:04 2018 +0300 Committer: Igor Seliverstov <[email protected]> Committed: Tue Dec 4 17:40:04 2018 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheProcessor.java | 10 +++++++--- .../processors/cache/mvcc/MvccProcessorImpl.java | 6 ++++++ .../persistence/DatabaseLifecycleListener.java | 16 ++++++++++------ .../persistence/GridCacheDatabaseSharedManager.java | 8 +++++--- .../query/h2/GridIndexRebuildSelfTest.java | 2 +- 5 files changed, 29 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/cdba7d9a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java index 0870d1b..b49c697 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java @@ -5476,7 +5476,9 @@ public class GridCacheProcessor extends GridProcessorAdapter { } /** {@inheritDoc} */ - @Override public void afterBinaryMemoryRestore(GridCacheDatabaseSharedManager.RestoreBinaryState binaryState) throws IgniteCheckedException { + @Override public void afterBinaryMemoryRestore( + IgniteCacheDatabaseSharedManager mgr, + GridCacheDatabaseSharedManager.RestoreBinaryState restoreState) throws IgniteCheckedException { for (DynamicCacheDescriptor cacheDescriptor : persistentCaches()) { startCacheInRecoveryMode(cacheDescriptor); @@ -5485,8 +5487,10 @@ public class GridCacheProcessor extends GridProcessorAdapter { } /** {@inheritDoc} */ - @Override public void afterLogicalUpdatesApplied(GridCacheDatabaseSharedManager.RestoreLogicalState logicalState) throws IgniteCheckedException { - restorePartitionStates(cacheGroups(), logicalState.partitionRecoveryStates()); + @Override public void afterLogicalUpdatesApplied( + IgniteCacheDatabaseSharedManager mgr, + GridCacheDatabaseSharedManager.RestoreLogicalState restoreState) throws IgniteCheckedException { + restorePartitionStates(cacheGroups(), restoreState.partitionRecoveryStates()); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/cdba7d9a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java index 3ea8f4c..7f386d8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java @@ -80,6 +80,7 @@ import org.apache.ignite.internal.processors.cache.mvcc.txlog.TxLog; import org.apache.ignite.internal.processors.cache.mvcc.txlog.TxState; import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow; import org.apache.ignite.internal.processors.cache.persistence.DatabaseLifecycleListener; +import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager; import org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager; import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx; import org.apache.ignite.internal.processors.cache.tree.mvcc.data.MvccDataRow; @@ -347,6 +348,11 @@ public class MvccProcessorImpl extends GridProcessorAdapter implements MvccProce /** {@inheritDoc} */ @Override public void beforeBinaryMemoryRestore(IgniteCacheDatabaseSharedManager mgr) throws IgniteCheckedException { txLogPageStoreInit(mgr); + } + + /** {@inheritDoc} */ + @Override public void afterBinaryMemoryRestore(IgniteCacheDatabaseSharedManager mgr, + GridCacheDatabaseSharedManager.RestoreBinaryState restoreState) throws IgniteCheckedException { boolean hasMvccCaches = ctx.cache().persistentCaches().stream() .anyMatch(c -> c.cacheConfiguration().getAtomicityMode() == TRANSACTIONAL_SNAPSHOT); http://git-wip-us.apache.org/repos/asf/ignite/blob/cdba7d9a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DatabaseLifecycleListener.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DatabaseLifecycleListener.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DatabaseLifecycleListener.java index 6762109..34ad751 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DatabaseLifecycleListener.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DatabaseLifecycleListener.java @@ -51,20 +51,24 @@ public interface DatabaseLifecycleListener { /** * Callback executed when binary memory has fully restored and WAL logging is resumed. * - * @param binaryState Result of binary recovery. + * + * @param mgr + * @param restoreState Result of binary recovery. * @throws IgniteCheckedException If failed. */ - public default void afterBinaryMemoryRestore(GridCacheDatabaseSharedManager.RestoreBinaryState binaryState) - throws IgniteCheckedException {} + public default void afterBinaryMemoryRestore(IgniteCacheDatabaseSharedManager mgr, + GridCacheDatabaseSharedManager.RestoreBinaryState restoreState) throws IgniteCheckedException {} /** * Callback executed when all logical updates were applied and page memory become to fully consistent state. * - * @param logicalState Result of logical recovery. + * + * @param mgr + * @param restoreState Result of logical recovery. * @throws IgniteCheckedException If failed. */ - public default void afterLogicalUpdatesApplied(GridCacheDatabaseSharedManager.RestoreLogicalState logicalState) - throws IgniteCheckedException {} + public default void afterLogicalUpdatesApplied(IgniteCacheDatabaseSharedManager mgr, + GridCacheDatabaseSharedManager.RestoreLogicalState restoreState) throws IgniteCheckedException {} /** * Callback executed when all physical updates are applied and we are ready to write new physical records http://git-wip-us.apache.org/repos/asf/ignite/blob/cdba7d9a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java index 9a03337..95a99fb 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java @@ -944,7 +944,7 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan cctx.wal().resumeLogging(restored); for (DatabaseLifecycleListener lsnr : getDatabaseListeners(cctx.kernalContext())) - lsnr.afterBinaryMemoryRestore(binaryState); + lsnr.afterBinaryMemoryRestore(this, binaryState); if (log.isInfoEnabled()) log.info("Binary recovery performed in " + (System.currentTimeMillis() - time) + " ms."); @@ -2472,7 +2472,7 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan ", time=" + (U.currentTimeMillis() - start) + " ms]"); for (DatabaseLifecycleListener lsnr : getDatabaseListeners(cctx.kernalContext())) - lsnr.afterLogicalUpdatesApplied(restoreLogicalState); + lsnr.afterLogicalUpdatesApplied(this, restoreLogicalState); return restoreLogicalState; } @@ -4713,7 +4713,9 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan cctx.pageStore().initializeForMetastorage(); } - @Override public void afterBinaryMemoryRestore(RestoreBinaryState binaryState) throws IgniteCheckedException { + @Override public void afterBinaryMemoryRestore( + IgniteCacheDatabaseSharedManager mgr, + RestoreBinaryState restoreState) throws IgniteCheckedException { assert metaStorage == null; metaStorage = createMetastorage(false); http://git-wip-us.apache.org/repos/asf/ignite/blob/cdba7d9a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java index d8ba060..9afb749 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexRebuildSelfTest.java @@ -115,7 +115,7 @@ public class GridIndexRebuildSelfTest extends DynamicIndexAbstractSelfTest { IgniteEx srv = startServer(); execute(srv, "CREATE TABLE T(k int primary key, v int) WITH \"cache_name=T,wrap_value=false," + - "atomicity=transactional_snapshot\""); + "atomicity=transactional\""); execute(srv, "CREATE INDEX IDX ON T(v)");
