Repository: ignite Updated Branches: refs/heads/master ebaedf9a4 -> 4353618a7
IGNITE-9945 Entry start version should not omit datacenter ID - Fixes #5034. Signed-off-by: Alexey Goncharuk <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4353618a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4353618a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4353618a Branch: refs/heads/master Commit: 4353618a7501e2dada6b0027cadc2b9c6b069fde Parents: ebaedf9 Author: Andrey V. Mashenkov <[email protected]> Authored: Mon Oct 22 16:01:28 2018 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Mon Oct 22 16:01:28 2018 +0300 ---------------------------------------------------------------------- .../cache/CacheConflictResolutionManager.java | 2 +- .../processors/cache/GridCacheMapEntry.java | 9 ++---- .../cache/version/GridCacheVersionManager.java | 31 ++++++++++++++++++-- 3 files changed, 32 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4353618a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheConflictResolutionManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheConflictResolutionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheConflictResolutionManager.java index 6d65d82..9790f75 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheConflictResolutionManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheConflictResolutionManager.java @@ -17,7 +17,7 @@ package org.apache.ignite.internal.processors.cache; -import org.apache.ignite.internal.processors.cache.version.*; +import org.apache.ignite.internal.processors.cache.version.CacheVersionConflictResolver; /** * Conflict resolver manager. http://git-wip-us.apache.org/repos/asf/ignite/blob/4353618a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java index ab5b725..c753296 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java @@ -73,7 +73,6 @@ import org.apache.ignite.internal.processors.cache.version.GridCacheLazyPlainVer import org.apache.ignite.internal.processors.cache.version.GridCacheVersion; import org.apache.ignite.internal.processors.cache.version.GridCacheVersionConflictContext; import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx; -import org.apache.ignite.internal.processors.cache.version.GridCacheVersionManager; import org.apache.ignite.internal.processors.cache.version.GridCacheVersionedEntryEx; import org.apache.ignite.internal.processors.dr.GridDrType; import org.apache.ignite.internal.processors.query.IgniteSQLException; @@ -117,10 +116,8 @@ import static org.apache.ignite.internal.processors.cache.GridCacheUpdateAtomicR import static org.apache.ignite.internal.processors.cache.GridCacheUpdateAtomicResult.UpdateOutcome.REMOVE_NO_VAL; import static org.apache.ignite.internal.processors.cache.mvcc.MvccUtils.compareIgnoreOpCounter; import static org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.RowData.NO_KEY; -import static org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode.CONCURRENT_UPDATE; import static org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode.DUPLICATE_KEY; import static org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode.TRANSACTION_SERIALIZATION_ERROR; -import static org.apache.ignite.internal.processors.dr.GridDrType.DR_BACKUP; import static org.apache.ignite.internal.processors.dr.GridDrType.DR_NONE; /** @@ -222,7 +219,7 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme this.cctx = cctx; this.listenerLock = cctx.continuousQueries().getListenerReadLock(); - ver = GridCacheVersionManager.START_VER; + ver = cctx.shared().versions().startVersion(); } /** @@ -332,7 +329,7 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme * @return {@code True} if start version. */ public boolean isStartVersion() { - return ver == GridCacheVersionManager.START_VER; + return cctx.shared().versions().isStartVersion(ver); } /** {@inheritDoc} */ @@ -3287,7 +3284,7 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme GridCacheVersion currentVer = row != null ? row.version() : GridCacheMapEntry.this.ver; - boolean isStartVer = currentVer == GridCacheVersionManager.START_VER; + boolean isStartVer = cctx.shared().versions().isStartVersion(currentVer); if (cctx.group().persistenceEnabled()) { if (!isStartVer) { http://git-wip-us.apache.org/repos/asf/ignite/blob/4353618a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java index df8af48..2a6526a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java @@ -41,9 +41,6 @@ public class GridCacheVersionManager extends GridCacheSharedManagerAdapter { /** */ public static final GridCacheVersion EVICT_VER = new GridCacheVersion(Integer.MAX_VALUE, 0, 0, 0); - /** */ - public static final GridCacheVersion START_VER = new GridCacheVersion(0, 0, 0, 0); - /** Timestamp used as base time for cache topology version (January 1, 2014). */ public static final long TOP_VER_BASE_TIME = 1388520000000L; @@ -56,6 +53,9 @@ public class GridCacheVersionManager extends GridCacheSharedManagerAdapter { /** Current order for store operations. */ private final AtomicLong loadOrder = new AtomicLong(0); + /** Entry start version. */ + private GridCacheVersion startVer; + /** Last version. */ private volatile GridCacheVersion last; @@ -87,6 +87,8 @@ public class GridCacheVersionManager extends GridCacheSharedManagerAdapter { @Override public void start0() throws IgniteCheckedException { last = new GridCacheVersion(0, order.get(), 0, dataCenterId); + startVer = new GridCacheVersion(0, 0, 0, dataCenterId); + cctx.gridEvents().addLocalEventListener(discoLsnr, EVT_NODE_METRICS_UPDATED); } @@ -104,6 +106,8 @@ public class GridCacheVersionManager extends GridCacheSharedManagerAdapter { this.dataCenterId = dataCenterId; last = new GridCacheVersion(0, order.get(), 0, dataCenterId); + + startVer = new GridCacheVersion(0, 0, 0, dataCenterId); } /** @@ -301,4 +305,25 @@ public class GridCacheVersionManager extends GridCacheSharedManagerAdapter { public GridCacheVersion last() { return last; } + + /** + * Gets start version. + * + * @return Start version. + */ + public GridCacheVersion startVersion() { + assert startVer != null; + + return startVer; + } + + /** + * Check if given version is start version. + * + * @param ver Version. + * @return {@code True} if given version is start version. + */ + public boolean isStartVersion(GridCacheVersion ver) { + return startVer.equals(ver); + } }
