This is an automated email from the ASF dual-hosted git repository.
sboikov pushed a commit to branch ignite-11704
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/ignite-11704 by this push:
new db16252 ignite-11704
db16252 is described below
commit db1625276b61cba1b87d287a133b979031728c11
Author: sboikov <[email protected]>
AuthorDate: Wed Jul 24 09:58:40 2019 +0300
ignite-11704
---
.../cache/persistence/CacheDataRowAdapter.java | 58 ++++++++++------------
.../IgniteCacheDatabaseSharedManager.java | 11 +++-
2 files changed, 37 insertions(+), 32 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
index 5216e21..c0a421e 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/CacheDataRowAdapter.java
@@ -262,33 +262,8 @@ public class CacheDataRowAdapter implements CacheDataRow {
incomplete = readIncomplete(incomplete, sharedCtx,
coctx, pageMem,
grpId, pageAddr, itemId, io, rowData,
readCacheId, skipVer);
- if (incomplete == null) {
- if (rowData == TOMBSTONES && val != null &&
!sharedCtx.database().isTombstone(this)) {
- // TODO IGNITE-11704.
- ver = null;
- key = null;
- val = null;
- verReady = true;
- }
-
+ if (incomplete == null || (rowData == KEY_ONLY && key
!= null))
return;
- }
-
- if (rowData == KEY_ONLY) {
- if (key != null)
- return;
- }
- else if (rowData == TOMBSTONES) {
- // TODO IGNITE-11704.
- if (val != null &&
!sharedCtx.database().isTombstone(this)) {
- ver = null;
- key = null;
- val = null;
- verReady = true;
-
- return;
- }
- }
nextLink = incomplete.getNextLink();
}
@@ -377,9 +352,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
buf.position(off);
buf.limit(off + payloadSize);
- boolean keyOnly = rowData == RowData.KEY_ONLY;
-
- incomplete = readFragment(sharedCtx, coctx, buf, keyOnly, readCacheId,
incomplete, skipVer);
+ incomplete = readFragment(sharedCtx, coctx, buf, rowData, readCacheId,
incomplete, skipVer);
if (incomplete != null)
incomplete.setNextLink(nextLink);
@@ -416,11 +389,13 @@ public class CacheDataRowAdapter implements CacheDataRow {
GridCacheSharedContext<?, ?> sharedCtx,
CacheObjectContext coctx,
ByteBuffer buf,
- boolean keyOnly,
+ RowData rowData,
boolean readCacheId,
IncompleteObject<?> incomplete,
boolean skipVer
) throws IgniteCheckedException {
+ boolean tombstones = rowData == TOMBSTONES;
+
if (readCacheId && cacheId == 0) {
incomplete = readIncompleteCacheId(buf, incomplete);
@@ -442,6 +417,12 @@ public class CacheDataRowAdapter implements CacheDataRow {
// Read key.
if (key == null) {
+ if (tombstones && sharedCtx.database().isTombstone(buf, key,
(IncompleteCacheObject)incomplete) == Boolean.FALSE) {
+ verReady = true;
+
+ return null;
+ }
+
incomplete = readIncompleteKey(coctx, buf,
(IncompleteCacheObject)incomplete);
if (key == null) {
@@ -449,7 +430,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
return incomplete; // Need to finish reading the key.
}
- if (keyOnly)
+ if (rowData == RowData.KEY_ONLY)
return null; // Key is ready - we are done!
incomplete = null;
@@ -468,6 +449,13 @@ public class CacheDataRowAdapter implements CacheDataRow {
// Read value.
if (val == null) {
+ if (tombstones && sharedCtx.database().isTombstone(buf, key,
(IncompleteCacheObject)incomplete) == Boolean.FALSE) {
+ key = null;
+ verReady = true;
+
+ return null;
+ }
+
incomplete = readIncompleteValue(coctx, buf,
(IncompleteCacheObject)incomplete);
if (val == null) {
@@ -478,6 +466,14 @@ public class CacheDataRowAdapter implements CacheDataRow {
incomplete = null;
}
+ if (tombstones && !sharedCtx.database().isTombstone(this)) {
+ key = null;
+ val = null;
+ verReady = true;
+
+ return null;
+ }
+
// Read version.
if (!verReady) {
incomplete = readIncompleteVersion(buf, incomplete, skipVer);
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
index 16c43ef..feb2e78 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.processors.cache.persistence;
import java.io.File;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -55,6 +56,8 @@ import
org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
import org.apache.ignite.internal.processors.cache.GridCacheMapEntry;
import
org.apache.ignite.internal.processors.cache.GridCacheSharedManagerAdapter;
+import org.apache.ignite.internal.processors.cache.IncompleteCacheObject;
+import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture;
import
org.apache.ignite.internal.processors.cache.persistence.evict.FairFifoPageEvictionTracker;
import
org.apache.ignite.internal.processors.cache.persistence.evict.NoOpPageEvictionTracker;
@@ -179,6 +182,13 @@ public class IgniteCacheDatabaseSharedManager extends
GridCacheSharedManagerAdap
return false;
}
+ public Boolean isTombstone(ByteBuffer buf,
+ @Nullable KeyCacheObject key,
+ @Nullable IncompleteCacheObject incomplete) {
+ // TODO IGNITE-11704
+ return null;
+ }
+
public boolean isTombstone(long addr) throws IgniteCheckedException {
int off = 0;
@@ -206,7 +216,6 @@ public class IgniteCacheDatabaseSharedManager extends
GridCacheSharedManagerAdap
return true;
}
-
/**
* @param cfg Ignite configuration.
* @param groupName Name of group.