This is an automated email from the ASF dual-hosted git repository. sdanilov pushed a commit to branch ignite-17720 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 36d43ed08741e427c0c8f7093d7c47e6d629d8af Author: Semyon Danilov <[email protected]> AuthorDate: Tue Sep 27 17:30:03 2022 +0400 IGNITE-17720 Extend MvPartitionStorage scan API with write intent resolution capabilities --- .../TestConcurrentHashMapMvPartitionStorage.java | 4 ++++ .../mv/AbstractPageMemoryMvPartitionStorage.java | 11 +++++----- .../storage/rocksdb/RocksDbMvPartitionStorage.java | 24 ---------------------- 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapMvPartitionStorage.java b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapMvPartitionStorage.java index be90f55363..f9da2dbab9 100644 --- a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapMvPartitionStorage.java +++ b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapMvPartitionStorage.java @@ -340,6 +340,10 @@ public class TestConcurrentHashMapMvPartitionStorage implements MvPartitionStora @Override public BinaryRow committed(HybridTimestamp timestamp) { + if (currentChain == null) { + throw new IllegalStateException(); + } + ReadResult read = read(currentChain, timestamp, null, filter); if (read.transactionId() == null) { diff --git a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java index 9cc60288cd..0b8eabdb49 100644 --- a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java +++ b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java @@ -662,7 +662,7 @@ public abstract class AbstractPageMemoryMvPartitionStorage implements MvPartitio throw new StorageException("Find failed", e); } - return new ScanCursor(treeCursor, keyFilter, txId); + return new TransactionIdCursor(treeCursor, keyFilter, txId); } @Override @@ -775,6 +775,7 @@ public abstract class AbstractPageMemoryMvPartitionStorage implements MvPartitio assert nextRead != null; ReadResult res = nextRead; + nextRead = null; return res; @@ -787,8 +788,8 @@ public abstract class AbstractPageMemoryMvPartitionStorage implements MvPartitio @Override public BinaryRow committed(HybridTimestamp timestamp) { - if (iterationExhausted) { - throw new NoSuchElementException(); + if (iterationExhausted || nextRead == null) { + throw new IllegalStateException(); } VersionChain chain = getCurrentChainFromTreeCursor(); @@ -799,7 +800,7 @@ public abstract class AbstractPageMemoryMvPartitionStorage implements MvPartitio } } - private class ScanCursor implements Cursor<BinaryRow> { + private class TransactionIdCursor implements Cursor<BinaryRow> { private final IgniteCursor<VersionChain> treeCursor; private final Predicate<BinaryRow> keyFilter; @@ -810,7 +811,7 @@ public abstract class AbstractPageMemoryMvPartitionStorage implements MvPartitio private boolean iterationExhausted = false; - public ScanCursor( + public TransactionIdCursor( IgniteCursor<VersionChain> treeCursor, Predicate<BinaryRow> keyFilter, @Nullable UUID transactionId diff --git a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorage.java b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorage.java index 3028d9afe2..994d697561 100644 --- a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorage.java +++ b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorage.java @@ -813,30 +813,6 @@ public class RocksDbMvPartitionStorage implements MvPartitionStorage { public void close() throws Exception { IgniteUtils.closeAll(it, options); } - - private void incrementRowId(ByteBuffer buf) { - long lsb = 1 + buf.getLong(ROW_ID_OFFSET + Long.BYTES); - - buf.putLong(ROW_ID_OFFSET + Long.BYTES, lsb); - - if (lsb != 0L) { - return; - } - - long msb = 1 + buf.getLong(ROW_ID_OFFSET); - - buf.putLong(ROW_ID_OFFSET, msb); - - if (msb != 0L) { - return; - } - - short partitionId = (short) (1 + buf.getShort(0)); - - assert partitionId != 0; - - buf.putShort(0, partitionId); - } }; }
