This is an automated email from the ASF dual-hosted git repository.
tkalkirill pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 12e58d00bc IGNITE-23357 Get rid of metastorage Entry#updateCounter
(#4507)
12e58d00bc is described below
commit 12e58d00bcaecf9e27f43e763bd2f60e2a042cf1
Author: Kirill Tkalenko <[email protected]>
AuthorDate: Fri Oct 4 14:59:16 2024 +0300
IGNITE-23357 Get rid of metastorage Entry#updateCounter (#4507)
---
.../DistributionZoneRebalanceEngineTest.java | 2 +-
.../apache/ignite/internal/metastorage/Entry.java | 9 --
.../metastorage/TestMetasStorageUtils.java | 7 +-
.../ItMetaStorageMultipleNodesVsStorageTest.java | 4 +-
.../impl/ItMetaStorageServicePersistenceTest.java | 13 +-
.../metastorage/impl/ItMetaStorageServiceTest.java | 3 -
.../server/raft/ItMetaStorageRaftGroupTest.java | 2 -
.../internal/metastorage/impl/EntryImpl.java | 27 +---
.../metastorage/server/KeyValueStorage.java | 7 -
.../ignite/internal/metastorage/server/Value.java | 11 +-
.../server/persistence/RocksDbKeyValueStorage.java | 134 +++++------------
.../server/persistence/RocksStorageUtils.java | 20 +--
.../internal/metastorage/impl/EntryImplTest.java | 4 +-
.../metastorage/server/AndConditionTest.java | 6 +-
.../server/BasicOperationsKeyValueStorageTest.java | 160 ---------------------
.../metastorage/server/ExistenceConditionTest.java | 4 +-
.../metastorage/server/OrConditionTest.java | 6 +-
.../metastorage/server/RevisionConditionTest.java | 16 +--
.../metastorage/server/TombstoneConditionTest.java | 4 +-
.../metastorage/server/ValueConditionTest.java | 28 ++--
.../metastorage/server/WatchProcessorTest.java | 26 ++--
.../server/SimpleInMemoryKeyValueStorage.java | 42 ++----
.../SimpleInMemoryKeyValueStorageSnapshot.java | 4 -
.../internal/metastorage/server/ValueSnapshot.java | 5 +-
.../internal/placementdriver/LeaseTrackerTest.java | 4 +-
.../internal/placementdriver/LeaseUpdaterTest.java | 1 -
26 files changed, 115 insertions(+), 434 deletions(-)
diff --git
a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngineTest.java
b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngineTest.java
index 51fdf95f94..4b07a4591c 100644
---
a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngineTest.java
+++
b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngineTest.java
@@ -542,7 +542,7 @@ public class DistributionZoneRebalanceEngineTest extends
IgniteAbstractTest {
newLogicalTopology = null;
}
- Entry newEntry = new EntryImpl(zoneDataNodesKey(zoneId).bytes(),
newLogicalTopology, rev, 1, clock.now());
+ Entry newEntry = new EntryImpl(zoneDataNodesKey(zoneId).bytes(),
newLogicalTopology, rev, clock.now());
EntryEvent entryEvent = new EntryEvent(null, newEntry);
diff --git
a/modules/metastorage-api/src/main/java/org/apache/ignite/internal/metastorage/Entry.java
b/modules/metastorage-api/src/main/java/org/apache/ignite/internal/metastorage/Entry.java
index 7f15c716db..007c3aebc2 100644
---
a/modules/metastorage-api/src/main/java/org/apache/ignite/internal/metastorage/Entry.java
+++
b/modules/metastorage-api/src/main/java/org/apache/ignite/internal/metastorage/Entry.java
@@ -29,8 +29,6 @@ import org.jetbrains.annotations.Nullable;
* <li>key - an unique entry's key. Keys are comparable in lexicographic
manner.</li>
* <li>value - a data which is associated with a key and represented as an
array of bytes.</li>
* <li>revision - a number which denotes a version of whole meta storage.
Each change increments the revision.</li>
- * <li>updateCounter - a number which denotes a number of times entries in
the meta storage have been updated. Each change increments
- * the updateCounter.</li>
* <li>timestamp - a timestamp of execution of the operation that changed
the entry in the meta storage. ach change increments the
* timestamp.</li>
* </ul>
@@ -49,13 +47,6 @@ public interface Entry extends Serializable {
*/
long revision();
- /**
- * Returns the metastorage update counter in which the entry was created,
{@code 0} for an {@link #empty empty entry}.
- *
- * <p>Update counter increases both when one key and each key in the batch
are changed under one revision.</p>
- */
- long updateCounter();
-
/** Returns {@code true} if entry is empty (never existed or was destroyed
by the compaction), otherwise - {@code false}. */
boolean empty();
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/TestMetasStorageUtils.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/TestMetasStorageUtils.java
index a9e5474497..bb55ddc9d5 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/TestMetasStorageUtils.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/TestMetasStorageUtils.java
@@ -31,9 +31,8 @@ public class TestMetasStorageUtils {
public static final HybridTimestamp ANY_TIMESTAMP = new
HybridTimestamp(1L, 0);
/** Checks the metastore entry. */
- public static void checkEntry(Entry actEntry, byte[] expKey, byte
@Nullable [] expValue, long expRevision, long expUpdateCounter) {
+ public static void checkEntry(Entry actEntry, byte[] expKey, byte
@Nullable [] expValue, long expRevision) {
assertEquals(expRevision, actEntry.revision(), () -> "entry=" +
actEntry);
- assertEquals(expUpdateCounter, actEntry.updateCounter(), () ->
"entry=" + actEntry);
assertArrayEquals(expKey, actEntry.key(), () -> "entry=" + actEntry);
assertArrayEquals(expValue, actEntry.value(), () -> "entry=" +
actEntry);
}
@@ -44,10 +43,6 @@ public class TestMetasStorageUtils {
return false;
}
- if (act.updateCounter() != exp.updateCounter()) {
- return false;
- }
-
if (act.timestamp() != ANY_TIMESTAMP && exp.timestamp() !=
ANY_TIMESTAMP) {
if (!Objects.equals(act.timestamp(), exp.timestamp())) {
return false;
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesVsStorageTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesVsStorageTest.java
index ee38859fc4..d334257776 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesVsStorageTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesVsStorageTest.java
@@ -124,8 +124,8 @@ abstract class ItMetaStorageMultipleNodesVsStorageTest
extends ItMetaStorageMult
assertThat(awaitFuture, willCompleteSuccessfully());
- checkEntry(awaitFuture.join().oldEntry(), key.bytes(), value, 1, 1);
- checkEntry(awaitFuture.join().newEntry(), key.bytes(), newValue, 2, 3);
+ checkEntry(awaitFuture.join().oldEntry(), key.bytes(), value, 1);
+ checkEntry(awaitFuture.join().newEntry(), key.bytes(), newValue, 2);
// Check that the second node has been registered as a learner.
assertThat(firstNode.getMetaStorageLearners(),
willBe(Set.of(secondNode.name())));
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServicePersistenceTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServicePersistenceTest.java
index 48c5586e29..875c8457ef 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServicePersistenceTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServicePersistenceTest.java
@@ -93,7 +93,7 @@ public class ItMetaStorageServicePersistenceTest extends
ItAbstractListenerSnaps
assertThat(metaStorage.put(FIRST_KEY, FIRST_VALUE),
willCompleteSuccessfully());
// Check that data has been written successfully
- checkEntry(FIRST_KEY.bytes(), FIRST_VALUE, 1, 1);
+ checkEntry(FIRST_KEY.bytes(), FIRST_VALUE, 1);
}
@Override
@@ -110,13 +110,13 @@ public class ItMetaStorageServicePersistenceTest extends
ItAbstractListenerSnaps
assertThat(metaStorage.remove(FIRST_KEY), willCompleteSuccessfully());
// Check that data has been removed
- checkEntry(FIRST_KEY.bytes(), null, 2, 2);
+ checkEntry(FIRST_KEY.bytes(), null, 2);
// Put same data again
assertThat(metaStorage.put(FIRST_KEY, FIRST_VALUE),
willCompleteSuccessfully());
// Check that it has been written
- checkEntry(FIRST_KEY.bytes(), FIRST_VALUE, 3, 3);
+ checkEntry(FIRST_KEY.bytes(), FIRST_VALUE, 3);
}
@Override
@@ -134,9 +134,8 @@ public class ItMetaStorageServicePersistenceTest extends
ItAbstractListenerSnaps
byte[] lastValue = interactedAfterSnapshot ? SECOND_VALUE :
FIRST_VALUE;
int expectedRevision = interactedAfterSnapshot ? 4 : 3;
- int expectedUpdateCounter = interactedAfterSnapshot ? 4 : 3;
- Entry expectedLastEntry = new EntryImpl(lastKey, lastValue,
expectedRevision, expectedUpdateCounter, ANY_TIMESTAMP);
+ Entry expectedLastEntry = new EntryImpl(lastKey, lastValue,
expectedRevision, ANY_TIMESTAMP);
return () -> TestMetasStorageUtils.equals(storage.get(lastKey),
expectedLastEntry);
}
@@ -171,12 +170,12 @@ public class ItMetaStorageServicePersistenceTest extends
ItAbstractListenerSnaps
return new
ThreadLocalOptimizedMarshaller(clusterService.serializationRegistry());
}
- private void checkEntry(byte[] expKey, byte @Nullable [] expValue, long
expRevision, long expUpdateCounter) {
+ private void checkEntry(byte[] expKey, byte @Nullable [] expValue, long
expRevision) {
CompletableFuture<Entry> future = metaStorage.get(new
ByteArray(expKey));
assertThat(future, willCompleteSuccessfully());
- TestMetasStorageUtils.checkEntry(future.join(), expKey, expValue,
expRevision, expUpdateCounter);
+ TestMetasStorageUtils.checkEntry(future.join(), expKey, expValue,
expRevision);
}
private static ClusterNode getNode(RaftServer server) {
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
index 0ca65e4edc..7e06ecc851 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
@@ -145,7 +145,6 @@ public class ItMetaStorageServiceTest extends
BaseIgniteAbstractTest {
new byte[]{1},
new byte[]{2},
10,
- 2,
ANY_TIMESTAMP
);
@@ -164,7 +163,6 @@ public class ItMetaStorageServiceTest extends
BaseIgniteAbstractTest {
new byte[]{1},
new byte[]{2},
10,
- 2,
ANY_TIMESTAMP
);
@@ -174,7 +172,6 @@ public class ItMetaStorageServiceTest extends
BaseIgniteAbstractTest {
new byte[]{3},
new byte[]{4},
10,
- 3,
ANY_TIMESTAMP
);
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
index 72476742bc..920ab7bdf1 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
@@ -115,7 +115,6 @@ public class ItMetaStorageRaftGroupTest extends
IgniteAbstractTest {
new byte[]{1},
new byte[]{2},
10,
- 2,
ANY_TIMESTAMP
);
@@ -125,7 +124,6 @@ public class ItMetaStorageRaftGroupTest extends
IgniteAbstractTest {
new byte[]{3},
new byte[]{4},
11,
- 3,
ANY_TIMESTAMP
);
diff --git
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/impl/EntryImpl.java
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/impl/EntryImpl.java
index 8aceb58f41..8646bdbc60 100644
---
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/impl/EntryImpl.java
+++
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/impl/EntryImpl.java
@@ -35,16 +35,13 @@ public final class EntryImpl implements Entry {
private final long revision;
- private final long updateCounter;
-
private final @Nullable HybridTimestamp timestamp;
/** Constructor. */
- public EntryImpl(byte[] key, byte @Nullable [] value, long revision, long
updateCounter, @Nullable HybridTimestamp timestamp) {
+ public EntryImpl(byte[] key, byte @Nullable [] value, long revision,
@Nullable HybridTimestamp timestamp) {
this.key = key;
this.value = value;
this.revision = revision;
- this.updateCounter = updateCounter;
this.timestamp = timestamp;
}
@@ -63,11 +60,6 @@ public final class EntryImpl implements Entry {
return revision;
}
- @Override
- public long updateCounter() {
- return updateCounter;
- }
-
@Override
public @Nullable HybridTimestamp timestamp() {
return timestamp;
@@ -75,22 +67,22 @@ public final class EntryImpl implements Entry {
@Override
public boolean tombstone() {
- return value == null && revision > 0 && updateCounter > 0;
+ return value == null && timestamp != null;
}
/** Creates an instance of tombstone entry. */
- public static Entry tombstone(byte[] key, long revision, long
updateCounter, HybridTimestamp timestamp) {
- return new EntryImpl(key, null, revision, updateCounter, timestamp);
+ public static Entry tombstone(byte[] key, long revision, HybridTimestamp
timestamp) {
+ return new EntryImpl(key, null, revision, timestamp);
}
@Override
public boolean empty() {
- return value == null && revision == 0 && updateCounter == 0;
+ return timestamp == null;
}
/** Creates an instance of empty entry for a given key. */
public static Entry empty(byte[] key) {
- return new EntryImpl(key, null, 0, 0, null);
+ return new EntryImpl(key, null, 0, null);
}
@Override
@@ -109,10 +101,6 @@ public final class EntryImpl implements Entry {
return false;
}
- if (updateCounter != entry.updateCounter) {
- return false;
- }
-
if (!Objects.equals(timestamp, entry.timestamp)) {
return false;
}
@@ -132,8 +120,6 @@ public final class EntryImpl implements Entry {
res = 31 * res + (int) (revision ^ (revision >>> 32));
- res = 31 * res + (int) (updateCounter ^ (updateCounter >>> 32));
-
res = 31 * res + Objects.hashCode(timestamp);
return res;
@@ -145,7 +131,6 @@ public final class EntryImpl implements Entry {
+ "key=" + new String(key, UTF_8)
+ ", value=" + Arrays.toString(value)
+ ", revision=" + revision
- + ", updateCounter=" + updateCounter
+ ", timestamp=" + timestamp
+ '}';
}
diff --git
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/KeyValueStorage.java
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/KeyValueStorage.java
index 06dc9f7178..d3cf016875 100644
---
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/KeyValueStorage.java
+++
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/KeyValueStorage.java
@@ -55,13 +55,6 @@ public interface KeyValueStorage extends ManuallyCloseable {
*/
long revision();
- /**
- * Returns update counter.
- *
- * @return Update counter.
- */
- long updateCounter();
-
/**
* Returns an entry by the given key.
*
diff --git
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/Value.java
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/Value.java
index 7acf9d5c3d..962eb0eb27 100644
---
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/Value.java
+++
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/Value.java
@@ -26,20 +26,16 @@ public class Value {
private final byte[] bytes;
- private final long updateCounter;
-
private final HybridTimestamp operationTimestamp;
/**
* Constructs value.
*
* @param bytes Value bytes or {@code #TOMBSTONE}.
- * @param updateCounter Storage update counter when value changes.
* @param operationTimestamp Timestamp of the value change operation.
*/
- public Value(byte[] bytes, long updateCounter, HybridTimestamp
operationTimestamp) {
+ public Value(byte[] bytes, HybridTimestamp operationTimestamp) {
this.bytes = bytes;
- this.updateCounter = updateCounter;
this.operationTimestamp = operationTimestamp;
}
@@ -48,11 +44,6 @@ public class Value {
return bytes;
}
- /** Returns Storage update counter when value changes. */
- public long updateCounter() {
- return updateCounter;
- }
-
/** Returns the timestamp of the value change operation. */
public HybridTimestamp operationTimestamp() {
return operationTimestamp;
diff --git
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/persistence/RocksDbKeyValueStorage.java
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/persistence/RocksDbKeyValueStorage.java
index 31d50fab0d..24150794fb 100644
---
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/persistence/RocksDbKeyValueStorage.java
+++
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/persistence/RocksDbKeyValueStorage.java
@@ -124,12 +124,12 @@ import org.rocksdb.WriteBatch;
import org.rocksdb.WriteOptions;
/**
- * Key-value storage based on RocksDB. Keys are stored with revision. Values
are stored in the default column family with an update counter
- * and a boolean flag which represents whether this record is a tombstone.
+ * Key-value storage based on RocksDB. Keys are stored with revision. Values
are stored in the default column family with an operation
+ * timestamp and a boolean flag which represents whether this record is a
tombstone.
* <br>
* Key: [8 bytes revision, N bytes key itself].
* <br>
- * Value: [8 bytes update counter, 1 byte tombstone flag, N bytes value].
+ * Value: [8 bytes operation timestamp, 1 byte tombstone flag, N bytes value].
* <br>
* The mapping from the key to the set of the storage's revisions is stored in
the "index" column family. A key represents the key of an
* entry and the value is a {@code byte[]} that represents a {@code long[]}
where every item is a revision of the storage.
@@ -146,12 +146,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
"SYSTEM_REVISION_KEY".getBytes(UTF_8)
);
- /** Update counter key. */
- private static final byte[] UPDATE_COUNTER_KEY = keyToRocksKey(
- SYSTEM_REVISION_MARKER_VALUE,
- "SYSTEM_UPDATE_COUNTER_KEY".getBytes(UTF_8)
- );
-
/** Compaction revision key. */
private static final byte[] COMPACTION_REVISION_KEY = keyToRocksKey(
SYSTEM_REVISION_MARKER_VALUE,
@@ -211,13 +205,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
*/
private long rev;
- /**
- * Update counter. Will be incremented for each update of any particular
entry.
- *
- * <p>Multi-threaded access is guarded by {@link #rwLock}.</p>
- */
- private long updCntr;
-
/**
* Last compaction revision that was set or restored from a snapshot.
*
@@ -337,7 +324,7 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
);
}
- protected DBOptions createDbOptions() {
+ private DBOptions createDbOptions() {
DBOptions options = new DBOptions()
.setCreateMissingColumnFamilies(true)
.setCreateIfMissing(true);
@@ -347,7 +334,7 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
return options;
}
- protected void createDb() throws RocksDBException {
+ private void createDb() throws RocksDBException {
List<ColumnFamilyDescriptor> descriptors = cfDescriptors();
assert descriptors.size() == 4;
@@ -452,8 +439,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
rev = bytesToLong(data.get(REVISION_KEY));
- updCntr = bytesToLong(data.get(UPDATE_COUNTER_KEY));
-
byte[] compactionRevisionBytes = data.get(COMPACTION_REVISION_KEY);
if (compactionRevisionBytes != null) {
@@ -479,17 +464,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
}
}
- @Override
- public long updateCounter() {
- rwLock.readLock().lock();
-
- try {
- return updCntr;
- } finally {
- rwLock.readLock().unlock();
- }
- }
-
@Override
public void put(byte[] key, byte[] value, HybridTimestamp opTs) {
rwLock.writeLock().lock();
@@ -497,13 +471,11 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
try (WriteBatch batch = new WriteBatch()) {
long curRev = rev + 1;
- long cntr = updCntr + 1;
-
- addDataToBatch(batch, key, value, curRev, cntr, opTs);
+ addDataToBatch(batch, key, value, curRev, opTs);
updateKeysIndex(batch, key, curRev);
- fillAndWriteBatch(batch, curRev, cntr, opTs);
+ fillAndWriteBatch(batch, curRev, opTs);
} catch (RocksDBException e) {
throw new MetaStorageException(OP_EXECUTION_ERR, e);
} finally {
@@ -531,18 +503,16 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
}
/**
- * Fills the batch with system values (the update counter and the
revision) and writes it to the db.
+ * Fills the batch with system values and writes it to the db.
*
- * @param batch Write batch.
- * @param newRev New revision.
- * @param newCntr New update counter.
- * @param ts Operation's timestamp.
+ * @param batch Write batch.
+ * @param newRev New revision.
+ * @param ts Operation's timestamp.
* @throws RocksDBException If failed.
*/
- private void fillAndWriteBatch(WriteBatch batch, long newRev, long
newCntr, @Nullable HybridTimestamp ts) throws RocksDBException {
+ private void fillAndWriteBatch(WriteBatch batch, long newRev, @Nullable
HybridTimestamp ts) throws RocksDBException {
byte[] revisionBytes = longToBytes(newRev);
- data.put(batch, UPDATE_COUNTER_KEY, longToBytes(newCntr));
data.put(batch, REVISION_KEY, revisionBytes);
if (ts != null) {
@@ -555,7 +525,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
db.write(defaultWriteOptions, batch);
rev = newRev;
- updCntr = newCntr;
updatedEntries.ts = ts;
@@ -570,8 +539,8 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
private static Entry entry(byte[] key, long revision, Value value) {
return value.tombstone()
- ? EntryImpl.tombstone(key, revision, value.updateCounter(),
value.operationTimestamp())
- : new EntryImpl(key, value.bytes(), revision,
value.updateCounter(), value.operationTimestamp());
+ ? EntryImpl.tombstone(key, revision,
value.operationTimestamp())
+ : new EntryImpl(key, value.bytes(), revision,
value.operationTimestamp());
}
@Override
@@ -581,13 +550,13 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
try (WriteBatch batch = new WriteBatch()) {
long curRev = rev + 1;
- long counter = addAllToBatch(batch, keys, values, curRev, opTs);
+ addAllToBatch(batch, keys, values, curRev, opTs);
for (byte[] key : keys) {
updateKeysIndex(batch, key, curRev);
}
- fillAndWriteBatch(batch, curRev, counter, opTs);
+ fillAndWriteBatch(batch, curRev, opTs);
} catch (RocksDBException e) {
throw new MetaStorageException(OP_EXECUTION_ERR, e);
} finally {
@@ -656,12 +625,11 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
try (WriteBatch batch = new WriteBatch()) {
long curRev = rev + 1;
- long counter = updCntr + 1;
- if (addToBatchForRemoval(batch, key, curRev, counter, opTs)) {
+ if (addToBatchForRemoval(batch, key, curRev, opTs)) {
updateKeysIndex(batch, key, curRev);
- fillAndWriteBatch(batch, curRev, counter, opTs);
+ fillAndWriteBatch(batch, curRev, opTs);
}
} catch (RocksDBException e) {
throw new MetaStorageException(OP_EXECUTION_ERR, e);
@@ -679,13 +647,9 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
List<byte[]> existingKeys = new ArrayList<>(keys.size());
- long counter = updCntr;
-
for (byte[] key : keys) {
- if (addToBatchForRemoval(batch, key, curRev, counter + 1,
opTs)) {
+ if (addToBatchForRemoval(batch, key, curRev, opTs)) {
existingKeys.add(key);
-
- counter++;
}
}
@@ -693,7 +657,7 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
updateKeysIndex(batch, key, curRev);
}
- fillAndWriteBatch(batch, curRev, counter, opTs);
+ fillAndWriteBatch(batch, curRev, opTs);
} catch (RocksDBException e) {
throw new MetaStorageException(OP_EXECUTION_ERR, e);
} finally {
@@ -782,8 +746,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
boolean modified = false;
- long counter = updCntr;
-
List<byte[]> updatedKeys = new ArrayList<>();
try (WriteBatch batch = new WriteBatch()) {
@@ -792,9 +754,7 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
switch (op.type()) {
case PUT:
- counter++;
-
- addDataToBatch(batch, key, toByteArray(op.value()),
curRev, counter, opTs);
+ addDataToBatch(batch, key, toByteArray(op.value()),
curRev, opTs);
updatedKeys.add(key);
@@ -803,13 +763,9 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
break;
case REMOVE:
- counter++;
-
- boolean removed = addToBatchForRemoval(batch, key,
curRev, counter, opTs);
+ boolean removed = addToBatchForRemoval(batch, key,
curRev, opTs);
- if (!removed) {
- counter--;
- } else {
+ if (removed) {
updatedKeys.add(key);
}
@@ -830,7 +786,7 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
updateKeysIndex(batch, key, curRev);
}
- fillAndWriteBatch(batch, curRev, counter, opTs);
+ fillAndWriteBatch(batch, curRev, opTs);
}
}
}
@@ -1056,7 +1012,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
* @param batch Write batch.
* @param key Target key.
* @param curRev Revision.
- * @param counter Update counter.
* @param opTs Operation timestamp.
* @return {@code true} if an entry can be deleted.
* @throws RocksDBException If failed.
@@ -1065,7 +1020,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
WriteBatch batch,
byte[] key,
long curRev,
- long counter,
HybridTimestamp opTs
) throws RocksDBException {
Entry e = doGet(key, curRev);
@@ -1074,7 +1028,7 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
return false;
}
- addDataToBatch(batch, key, TOMBSTONE, curRev, counter, opTs);
+ addDataToBatch(batch, key, TOMBSTONE, curRev, opTs);
return true;
}
@@ -1319,10 +1273,10 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
Value lastVal = bytesToValue(valueBytes);
if (lastVal.tombstone()) {
- return EntryImpl.tombstone(key, revision, lastVal.updateCounter(),
lastVal.operationTimestamp());
+ return EntryImpl.tombstone(key, revision,
lastVal.operationTimestamp());
}
- return new EntryImpl(key, lastVal.bytes(), revision,
lastVal.updateCounter(), lastVal.operationTimestamp());
+ return new EntryImpl(key, lastVal.bytes(), revision,
lastVal.operationTimestamp());
}
/**
@@ -1332,7 +1286,6 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
* @param key Key.
* @param value Value.
* @param curRev Revision.
- * @param cntr Update counter.
* @param opTs Operation timestamp.
* @throws RocksDBException If failed.
*/
@@ -1341,59 +1294,40 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
byte[] key,
byte[] value,
long curRev,
- long cntr,
HybridTimestamp opTs
) throws RocksDBException {
byte[] rocksKey = keyToRocksKey(curRev, key);
- byte[] rocksValue = valueToBytes(value, cntr, opTs);
+ byte[] rocksValue = valueToBytes(value, opTs);
data.put(batch, rocksKey, rocksValue);
- updatedEntries.add(entry(key, curRev, new Value(value, cntr, opTs)));
+ updatedEntries.add(entry(key, curRev, new Value(value, opTs)));
}
/**
* Adds all entries to the batch.
*
- * @param batch Write batch.
- * @param keys Keys.
+ * @param batch Write batch.
+ * @param keys Keys.
* @param values Values.
* @param curRev Revision.
* @param opTs Operation timestamp.
- * @return New update counter value.
* @throws RocksDBException If failed.
*/
- private long addAllToBatch(
+ private void addAllToBatch(
WriteBatch batch,
List<byte[]> keys,
List<byte[]> values,
long curRev,
HybridTimestamp opTs
) throws RocksDBException {
- long counter = this.updCntr;
-
for (int i = 0; i < keys.size(); i++) {
- counter++;
-
byte[] key = keys.get(i);
-
byte[] bytes = values.get(i);
- addDataToBatch(batch, key, bytes, curRev, counter, opTs);
+ addDataToBatch(batch, key, bytes, curRev, opTs);
}
-
- return counter;
- }
-
- /**
- * Gets last revision from the list.
- *
- * @param revs Revisions.
- * @return Last revision.
- */
- private static long lastRevision(long[] revs) {
- return revs[revs.length - 1];
}
/**
@@ -1577,7 +1511,7 @@ public class RocksDbKeyValueStorage implements
KeyValueStorage {
@Nullable
private HybridTimestamp ts;
- public UpdatedEntries() {
+ private UpdatedEntries() {
this.updatedEntries = new ArrayList<>();
}
diff --git
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/persistence/RocksStorageUtils.java
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/persistence/RocksStorageUtils.java
index 57115a2ea8..d4e19e1333 100644
---
a/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/persistence/RocksStorageUtils.java
+++
b/modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/server/persistence/RocksStorageUtils.java
@@ -133,15 +133,11 @@ class RocksStorageUtils {
/** Converts from a byte array to a {@link Value}. */
static Value bytesToValue(byte[] valueBytes) {
- // At least an 8-byte update counter, 8-bytes operation timestamp and
a 1-byte boolean.
- assert valueBytes.length > 2 * Long.BYTES;
+ // At least an 8-bytes operation timestamp and a 1-byte boolean.
+ assert valueBytes.length > Long.BYTES;
var pos = 0;
- // Read an update counter (8-byte long) from the entry.
- long updateCounter = (long) LONG_ARRAY_HANDLE.get(valueBytes, pos);
- pos += Long.BYTES;
-
// Read an operation timestamp (8-byte long) from the entry.
long operationTimestamp = (long) LONG_ARRAY_HANDLE.get(valueBytes,
pos);
pos += Long.BYTES;
@@ -157,24 +153,20 @@ class RocksStorageUtils {
val = TOMBSTONE;
}
- return new Value(val, updateCounter,
hybridTimestamp(operationTimestamp));
+ return new Value(val, hybridTimestamp(operationTimestamp));
}
/**
* Converts the contents of a {@link Value} to a byte array.
*
* @param value Value byte array.
- * @param updateCounter Update counter.
* @param operationTimestamp Operation timestamp.
- * @return Value with an update counter and a tombstone.
+ * @return Value bytes.
*/
- static byte[] valueToBytes(byte[] value, long updateCounter,
HybridTimestamp operationTimestamp) {
- var bytes = new byte[Long.BYTES + Long.BYTES + Byte.BYTES +
value.length];
+ static byte[] valueToBytes(byte[] value, HybridTimestamp
operationTimestamp) {
+ var bytes = new byte[Long.BYTES + Byte.BYTES + value.length];
var pos = 0;
- LONG_ARRAY_HANDLE.set(bytes, pos, updateCounter);
- pos += Long.BYTES;
-
LONG_ARRAY_HANDLE.set(bytes, pos, operationTimestamp.longValue());
pos += Long.BYTES;
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/impl/EntryImplTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/impl/EntryImplTest.java
index 93824b46ff..a30f6fd29f 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/impl/EntryImplTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/impl/EntryImplTest.java
@@ -39,7 +39,6 @@ public class EntryImplTest {
assertFalse(entry.tombstone());
assertEquals(0, entry.revision());
- assertEquals(0, entry.updateCounter());
assertArrayEquals(KEY, entry.key());
@@ -49,13 +48,12 @@ public class EntryImplTest {
@Test
void testTombstone() {
- Entry entry = EntryImpl.tombstone(KEY, 1, 2, hybridTimestamp(10L));
+ Entry entry = EntryImpl.tombstone(KEY, 1, hybridTimestamp(10L));
assertFalse(entry.empty());
assertTrue(entry.tombstone());
assertEquals(1, entry.revision());
- assertEquals(2, entry.updateCounter());
assertEquals(hybridTimestamp(10L), entry.timestamp());
assertArrayEquals(KEY, entry.key());
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/AndConditionTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/AndConditionTest.java
index 939dd88a0c..4a3bf7293d 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/AndConditionTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/AndConditionTest.java
@@ -50,9 +50,9 @@ public class AndConditionTest extends BaseIgniteAbstractTest {
private final HybridClock clock = new HybridClockImpl();
private final Entry[] entries = {
- new EntryImpl(new byte[]{1}, new byte[]{10}, 1, 1, clock.now()),
- new EntryImpl(new byte[]{2}, new byte[]{20}, 2, 3, clock.now()),
- new EntryImpl(new byte[]{3}, new byte[]{30}, 3, 4, clock.now()),
+ new EntryImpl(new byte[]{1}, new byte[]{10}, 1, clock.now()),
+ new EntryImpl(new byte[]{2}, new byte[]{20}, 2, clock.now()),
+ new EntryImpl(new byte[]{3}, new byte[]{30}, 3, clock.now()),
};
@BeforeEach
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/BasicOperationsKeyValueStorageTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/BasicOperationsKeyValueStorageTest.java
index f1e6f7b57d..5709bc2d9c 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/BasicOperationsKeyValueStorageTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/BasicOperationsKeyValueStorageTest.java
@@ -91,32 +91,27 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val = keyValue(1, 1);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
assertTrue(storage.get(key).empty());
putToMs(key, val);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
Entry e = storage.get(key);
assertFalse(e.empty());
assertFalse(e.tombstone());
assertEquals(1, e.revision());
- assertEquals(1, e.updateCounter());
putToMs(key, val);
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
e = storage.get(key);
assertFalse(e.empty());
assertFalse(e.tombstone());
assertEquals(2, e.revision());
- assertEquals(2, e.updateCounter());
}
@Test
@@ -134,7 +129,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] key4 = key(4);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
// Regular put.
putToMs(key1, val1);
@@ -148,14 +142,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
removeFromMs(key3);
assertEquals(5, storage.revision());
- assertEquals(5, storage.updateCounter());
// Bounded by revision 2.
Entry key1EntryBounded2 = storage.get(key1, 2);
assertNotNull(key1EntryBounded2);
assertEquals(1, key1EntryBounded2.revision());
- assertEquals(1, key1EntryBounded2.updateCounter());
assertArrayEquals(val1, key1EntryBounded2.value());
assertFalse(key1EntryBounded2.tombstone());
assertFalse(key1EntryBounded2.empty());
@@ -164,7 +156,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(key2EntryBounded2);
assertEquals(2, key2EntryBounded2.revision());
- assertEquals(2, key2EntryBounded2.updateCounter());
assertArrayEquals(val21, key2EntryBounded2.value());
assertFalse(key2EntryBounded2.tombstone());
assertFalse(key2EntryBounded2.empty());
@@ -173,7 +164,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(key3EntryBounded2);
assertEquals(0, key3EntryBounded2.revision());
- assertEquals(0, key3EntryBounded2.updateCounter());
assertNull(key3EntryBounded2.value());
assertFalse(key3EntryBounded2.tombstone());
assertTrue(key3EntryBounded2.empty());
@@ -183,7 +173,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(key1EntryBounded5);
assertEquals(1, key1EntryBounded5.revision());
- assertEquals(1, key1EntryBounded5.updateCounter());
assertArrayEquals(val1, key1EntryBounded5.value());
assertFalse(key1EntryBounded5.tombstone());
assertFalse(key1EntryBounded5.empty());
@@ -192,7 +181,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(key2EntryBounded5);
assertEquals(3, key2EntryBounded5.revision());
- assertEquals(3, key2EntryBounded5.updateCounter());
assertArrayEquals(val22, key2EntryBounded5.value());
assertFalse(key2EntryBounded5.tombstone());
assertFalse(key2EntryBounded5.empty());
@@ -201,7 +189,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(key3EntryBounded5);
assertEquals(5, key3EntryBounded5.revision());
- assertEquals(5, key3EntryBounded5.updateCounter());
assertTrue(key3EntryBounded5.tombstone());
assertNull(key3EntryBounded5.value());
assertFalse(key3EntryBounded5.empty());
@@ -223,7 +210,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val9 = keyValue(1, 9);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val1);
putToMs(key1, val2);
@@ -238,7 +224,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
removeFromMs(key1);
assertEquals(10, storage.revision());
- assertEquals(10, storage.updateCounter());
// Check that a lower revision and an upper revision are inclusive.
// Check that entry with another key is not included in a result list.
@@ -303,7 +288,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] key4 = key(4);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
// Regular put.
putToMs(key1, val1);
@@ -317,7 +301,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
removeFromMs(key3);
assertEquals(5, storage.revision());
- assertEquals(5, storage.updateCounter());
Collection<Entry> entries = storage.getAll(List.of(key1, key2, key3,
key4));
@@ -330,7 +313,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e1);
assertEquals(1, e1.revision());
- assertEquals(1, e1.updateCounter());
assertFalse(e1.tombstone());
assertFalse(e1.empty());
assertArrayEquals(val1, e1.value());
@@ -340,7 +322,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e2);
assertEquals(3, e2.revision());
- assertEquals(3, e2.updateCounter());
assertFalse(e2.tombstone());
assertFalse(e2.empty());
assertArrayEquals(val22, e2.value());
@@ -350,7 +331,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e3);
assertEquals(5, e3.revision());
- assertEquals(5, e3.updateCounter());
assertTrue(e3.tombstone());
assertFalse(e3.empty());
@@ -377,7 +357,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] key4 = key(4);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
// Regular put.
putToMs(key1, val1);
@@ -391,7 +370,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
removeFromMs(key3);
assertEquals(5, storage.revision());
- assertEquals(5, storage.updateCounter());
// Bounded by revision 2.
Collection<Entry> entries = storage.getAll(List.of(key1, key2, key3,
key4), 2);
@@ -405,7 +383,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e1);
assertEquals(1, e1.revision());
- assertEquals(1, e1.updateCounter());
assertFalse(e1.tombstone());
assertFalse(e1.empty());
assertArrayEquals(val1, e1.value());
@@ -415,7 +392,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e2);
assertEquals(2, e2.revision());
- assertEquals(2, e2.updateCounter());
assertFalse(e2.tombstone());
assertFalse(e2.empty());
assertArrayEquals(val21, e2.value());
@@ -443,7 +419,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e1);
assertEquals(1, e1.revision());
- assertEquals(1, e1.updateCounter());
assertFalse(e1.tombstone());
assertFalse(e1.empty());
assertArrayEquals(val1, e1.value());
@@ -453,7 +428,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e2);
assertEquals(3, e2.revision());
- assertEquals(3, e2.updateCounter());
assertFalse(e2.tombstone());
assertFalse(e2.empty());
assertArrayEquals(val22, e2.value());
@@ -463,7 +437,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e3);
assertEquals(4, e3.revision());
- assertEquals(4, e3.updateCounter());
assertFalse(e3.tombstone());
assertFalse(e3.empty());
assertArrayEquals(val3, e3.value());
@@ -491,7 +464,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] key4 = key(4);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
// Must be rewritten.
putToMs(key2, val21);
@@ -501,12 +473,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
removeFromMs(key3);
assertEquals(3, storage.revision());
- assertEquals(3, storage.updateCounter());
putAllToMs(List.of(key1, key2, key3), List.of(val1, val22, val32));
assertEquals(4, storage.revision());
- assertEquals(6, storage.updateCounter());
Collection<Entry> entries = storage.getAll(List.of(key1, key2, key3,
key4));
@@ -519,7 +489,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e1);
assertEquals(4, e1.revision());
- assertEquals(4, e1.updateCounter());
assertFalse(e1.tombstone());
assertFalse(e1.empty());
assertArrayEquals(val1, e1.value());
@@ -529,7 +498,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e2);
assertEquals(4, e2.revision());
- assertEquals(5, e2.updateCounter());
assertFalse(e2.tombstone());
assertFalse(e2.empty());
assertArrayEquals(val22, e2.value());
@@ -539,7 +507,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e3);
assertEquals(4, e3.revision());
- assertEquals(6, e3.updateCounter());
assertFalse(e3.tombstone());
assertFalse(e3.empty());
@@ -557,46 +524,39 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val = keyValue(1, 1);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
assertTrue(storage.get(key).empty());
// Remove non-existent entry.
removeFromMs(key);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
assertTrue(storage.get(key).empty());
putToMs(key, val);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
// Remove existent entry.
removeFromMs(key);
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
Entry e = storage.get(key);
assertFalse(e.empty());
assertTrue(e.tombstone());
assertEquals(2, e.revision());
- assertEquals(2, e.updateCounter());
// Remove already removed entry (tombstone can't be removed).
removeFromMs(key);
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
e = storage.get(key);
assertFalse(e.empty());
assertTrue(e.tombstone());
assertEquals(2, e.revision());
- assertEquals(2, e.updateCounter());
}
@Test
@@ -614,7 +574,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] key4 = key(4);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
// Regular put.
putToMs(key1, val1);
@@ -628,12 +587,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
removeFromMs(key3);
assertEquals(5, storage.revision());
- assertEquals(5, storage.updateCounter());
removeAllFromMs(List.of(key1, key2, key3, key4));
assertEquals(6, storage.revision());
- assertEquals(7, storage.updateCounter()); // Only two keys are updated.
Collection<Entry> entries = storage.getAll(List.of(key1, key2, key3,
key4));
@@ -646,7 +603,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e1);
assertEquals(6, e1.revision());
- assertEquals(6, e1.updateCounter());
assertTrue(e1.tombstone());
assertFalse(e1.empty());
@@ -655,7 +611,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e2);
assertEquals(6, e2.revision());
- assertEquals(7, e2.updateCounter());
assertTrue(e2.tombstone());
assertFalse(e2.empty());
@@ -664,7 +619,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertNotNull(e3);
assertEquals(5, e3.revision());
- assertEquals(5, e3.updateCounter());
assertTrue(e3.tombstone());
assertFalse(e3.empty());
@@ -689,12 +643,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new RevisionCondition(RevisionCondition.Type.EQUAL, key1, 1),
@@ -705,14 +657,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// "Success" branch is applied.
assertTrue(branch);
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertArrayEquals(val12, e1.value());
Entry e2 = storage.get(key2);
@@ -720,7 +670,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Failure" branch isn't applied.
@@ -742,12 +691,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new RevisionCondition(RevisionCondition.Type.EQUAL, key1, 2),
@@ -758,14 +705,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// "Failure" branch is applied.
assertFalse(branch);
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertArrayEquals(val12, e1.value());
Entry e2 = storage.get(key2);
@@ -773,7 +718,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Success" branch isn't applied.
@@ -795,12 +739,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new ExistenceCondition(ExistenceCondition.Type.EXISTS, key1),
@@ -811,14 +753,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// "Success" branch is applied.
assertTrue(branch);
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertArrayEquals(val12, e1.value());
Entry e2 = storage.get(key2);
@@ -826,7 +766,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Failure" branch isn't applied.
@@ -848,12 +787,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new ExistenceCondition(ExistenceCondition.Type.EXISTS, key3),
@@ -864,14 +801,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// "Failure" branch is applied.
assertFalse(branch);
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertArrayEquals(val12, e1.value());
Entry e2 = storage.get(key2);
@@ -879,7 +814,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Success" branch isn't applied.
@@ -901,12 +835,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new ExistenceCondition(ExistenceCondition.Type.NOT_EXISTS,
key2),
@@ -917,14 +849,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// "Success" branch is applied.
assertTrue(branch);
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertArrayEquals(val12, e1.value());
Entry e2 = storage.get(key2);
@@ -932,7 +862,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Failure" branch isn't applied.
@@ -954,12 +883,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new ExistenceCondition(ExistenceCondition.Type.NOT_EXISTS,
key1),
@@ -973,14 +900,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// "Failure" branch is applied.
assertFalse(branch);
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertArrayEquals(val12, e1.value());
Entry e2 = storage.get(key2);
@@ -988,7 +913,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Success" branch isn't applied.
@@ -1009,13 +933,11 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
removeFromMs(key1); // Should be tombstone after remove.
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
boolean branch = invokeOnMs(
new TombstoneCondition(TombstoneCondition.Type.TOMBSTONE,
key1),
@@ -1026,14 +948,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// "Success" branch is applied.
assertTrue(branch);
assertEquals(3, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertTrue(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertNull(e1.value());
Entry e2 = storage.get(key2);
@@ -1041,7 +961,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(3, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Failure" branch isn't applied.
@@ -1062,12 +981,10 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new TombstoneCondition(TombstoneCondition.Type.TOMBSTONE,
key1),
@@ -1078,14 +995,12 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// "Failure" branch is applied.
assertFalse(branch);
assertEquals(2, storage.revision());
- assertEquals(3, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(1, e1.revision());
- assertEquals(1, e1.updateCounter());
assertArrayEquals(val11, e1.value());
Entry e3 = storage.get(key3);
@@ -1093,7 +1008,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e3.empty());
assertFalse(e3.tombstone());
assertEquals(2, e3.revision());
- assertEquals(2, e3.updateCounter());
assertArrayEquals(val3, e3.value());
// "Success" branch isn't applied.
@@ -1114,12 +1028,10 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new TombstoneCondition(TombstoneCondition.Type.NOT_TOMBSTONE,
key1),
@@ -1130,14 +1042,12 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
// "Success" branch is applied.
assertTrue(branch);
assertEquals(2, storage.revision());
- assertEquals(3, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(1, e1.revision());
- assertEquals(1, e1.updateCounter());
assertArrayEquals(val11, e1.value());
Entry e2 = storage.get(key2);
@@ -1145,7 +1055,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(2, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Failure" branch isn't applied.
@@ -1166,13 +1075,11 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
removeFromMs(key1); // Should be tombstone after remove.
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
boolean branch = invokeOnMs(
new TombstoneCondition(TombstoneCondition.Type.NOT_TOMBSTONE,
key1),
@@ -1183,14 +1090,12 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
// "Failure" branch is applied.
assertFalse(branch);
assertEquals(3, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertTrue(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertNull(e1.value());
Entry e3 = storage.get(key3);
@@ -1198,7 +1103,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e3.empty());
assertFalse(e3.tombstone());
assertEquals(3, e3.revision());
- assertEquals(3, e3.updateCounter());
assertArrayEquals(val3, e3.value());
// "Success" branch isn't applied.
@@ -1220,12 +1124,10 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new ValueCondition(ValueCondition.Type.EQUAL, key1, val11),
@@ -1239,14 +1141,12 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
// "Success" branch is applied.
assertTrue(branch);
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertArrayEquals(val12, e1.value());
Entry e2 = storage.get(key2);
@@ -1254,7 +1154,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Failure" branch isn't applied.
@@ -1276,12 +1175,10 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val11);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
boolean branch = invokeOnMs(
new ValueCondition(ValueCondition.Type.EQUAL, key1, val12),
@@ -1295,14 +1192,12 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
// "Failure" branch is applied.
assertFalse(branch);
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertFalse(e1.empty());
assertFalse(e1.tombstone());
assertEquals(2, e1.revision());
- assertEquals(2, e1.updateCounter());
assertArrayEquals(val12, e1.value());
Entry e2 = storage.get(key2);
@@ -1310,7 +1205,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(2, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(val2, e2.value());
// "Success" branch isn't applied.
@@ -1331,12 +1225,10 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val1);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
// No-op.
boolean branch = invokeOnMs(
@@ -1349,7 +1241,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
// No updates.
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
// Put.
branch = invokeOnMs(
@@ -1364,14 +1255,12 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
assertTrue(branch);
assertEquals(3, storage.revision());
- assertEquals(5, storage.updateCounter());
Entry e2 = storage.get(key2);
assertFalse(e2.empty());
assertFalse(e2.tombstone());
assertEquals(3, e2.revision());
- assertEquals(3, e2.updateCounter());
assertArrayEquals(key2, e2.key());
assertArrayEquals(val2, e2.value());
@@ -1380,7 +1269,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e3.empty());
assertFalse(e3.tombstone());
assertEquals(3, e3.revision());
- assertEquals(4, e3.updateCounter());
assertArrayEquals(key3, e3.key());
assertArrayEquals(val3, e3.value());
@@ -1397,14 +1285,12 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
assertTrue(branch);
assertEquals(4, storage.revision());
- assertEquals(8, storage.updateCounter());
e2 = storage.get(key2);
assertFalse(e2.empty());
assertTrue(e2.tombstone());
assertEquals(4, e2.revision());
- assertEquals(6, e2.updateCounter());
assertArrayEquals(key2, e2.key());
e3 = storage.get(key3);
@@ -1412,7 +1298,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(e3.empty());
assertTrue(e3.tombstone());
assertEquals(4, e3.revision());
- assertEquals(7, e3.updateCounter());
assertArrayEquals(key3, e3.key());
}
@@ -1445,22 +1330,18 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] rval3 = keyValue(2, 6);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val1);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
putToMs(key2, val2);
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
putToMs(key3, val3);
assertEquals(3, storage.revision());
- assertEquals(3, storage.updateCounter());
If iif = new If(
new OrCondition(new ValueCondition(Type.EQUAL, key1, val1),
new ExistenceCondition(ExistenceCondition.Type.EXISTS, key2)),
@@ -1476,7 +1357,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertEquals(1, branch.getAsInt());
assertEquals(4, storage.revision());
- assertEquals(5, storage.updateCounter());
Entry e1 = storage.get(key1);
assertEquals(4, e1.revision());
@@ -1519,27 +1399,22 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] rval3 = keyValue(2, 6);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val1);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
putToMs(key2, val2);
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
putToMs(key3, val3);
assertEquals(3, storage.revision());
- assertEquals(3, storage.updateCounter());
putToMs(key3, val3);
assertEquals(4, storage.revision());
- assertEquals(4, storage.updateCounter());
If iif = new If(
new OrCondition(new ValueCondition(Type.EQUAL, key1, val1),
new ExistenceCondition(ExistenceCondition.Type.EXISTS, key2)),
@@ -1554,7 +1429,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertEquals(2, branch.getAsInt());
assertEquals(5, storage.revision());
- assertEquals(7, storage.updateCounter());
Entry e1 = storage.get(key1);
assertEquals(5, e1.revision());
@@ -1598,17 +1472,14 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] rval3 = keyValue(2, 6);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putToMs(key1, val2);
assertEquals(1, storage.revision());
- assertEquals(1, storage.updateCounter());
putToMs(key3, val3);
assertEquals(2, storage.revision());
- assertEquals(2, storage.updateCounter());
If iif = new If(
new OrCondition(new ValueCondition(Type.EQUAL, key1, val1),
new ExistenceCondition(ExistenceCondition.Type.EXISTS, key2)),
@@ -1623,7 +1494,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertEquals(3, branch.getAsInt());
assertEquals(3, storage.revision());
- assertEquals(4, storage.updateCounter());
Entry e1 = storage.get(key1);
assertEquals(1, e1.revision());
@@ -1649,12 +1519,10 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
byte[] val3 = keyValue(3, 3);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
putAllToMs(List.of(key1, key2, key3), List.of(val1, val2, val3));
assertEquals(1, storage.revision());
- assertEquals(3, storage.updateCounter());
// Range for latest revision without max bound.
try (Cursor<Entry> cur = storage.range(key1, null)) {
@@ -1667,7 +1535,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertArrayEquals(key1, e1.key());
assertArrayEquals(val1, e1.value());
assertEquals(1, e1.revision());
- assertEquals(1, e1.updateCounter());
assertTrue(cur.hasNext());
@@ -1678,7 +1545,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertArrayEquals(key2, e2.key());
assertArrayEquals(val2, e2.value());
assertEquals(1, e2.revision());
- assertEquals(2, e2.updateCounter());
// Deliberately don't call cur.hasNext()
@@ -1689,7 +1555,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertArrayEquals(key3, e3.key());
assertArrayEquals(val3, e3.value());
assertEquals(1, e3.revision());
- assertEquals(3, e3.updateCounter());
assertFalse(cur.hasNext());
@@ -1713,7 +1578,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertArrayEquals(key1, e1.key());
assertArrayEquals(val1, e1.value());
assertEquals(1, e1.revision());
- assertEquals(1, e1.updateCounter());
assertTrue(cur.hasNext());
@@ -1724,7 +1588,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertArrayEquals(key2, e2.key());
assertArrayEquals(val2, e2.value());
assertEquals(1, e2.revision());
- assertEquals(2, e2.updateCounter());
assertFalse(cur.hasNext());
@@ -1782,7 +1645,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
@Test
public void watchLexicographicTest() {
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
byte[] key = key(0);
byte[] val = keyValue(0, 0);
@@ -1806,7 +1668,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
}
assertEquals(count, storage.revision());
- assertEquals(count, storage.updateCounter());
assertThat(awaitFuture, willCompleteSuccessfully());
}
@@ -1824,7 +1685,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val31 = keyValue(3, 31);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
// Watch for all updates starting from revision 2.
CompletableFuture<Void> awaitFuture = watchRange(key1, null, 2, 2,
(event, state) -> {
@@ -1846,7 +1706,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(oldEntry2.empty());
assertFalse(oldEntry2.tombstone());
assertEquals(1, oldEntry2.revision());
- assertEquals(2, oldEntry2.updateCounter());
assertArrayEquals(key2, oldEntry2.key());
assertArrayEquals(val21, oldEntry2.value());
@@ -1855,7 +1714,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(newEntry2.empty());
assertFalse(newEntry2.tombstone());
assertEquals(2, newEntry2.revision());
- assertEquals(3, newEntry2.updateCounter());
assertArrayEquals(key2, newEntry2.key());
assertArrayEquals(val22, newEntry2.value());
@@ -1875,7 +1733,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(newEntry3.empty());
assertFalse(newEntry3.tombstone());
assertEquals(2, newEntry3.revision());
- assertEquals(4, newEntry3.updateCounter());
assertArrayEquals(key3, newEntry3.key());
assertArrayEquals(val31, newEntry3.value());
} else if (state == 2) {
@@ -1888,7 +1745,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(oldEntry1.empty());
assertFalse(oldEntry1.tombstone());
assertEquals(1, oldEntry1.revision());
- assertEquals(1, oldEntry1.updateCounter());
assertArrayEquals(key1, oldEntry1.key());
assertArrayEquals(val11, oldEntry1.value());
@@ -1897,7 +1753,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(newEntry1.empty());
assertTrue(newEntry1.tombstone());
assertEquals(3, newEntry1.revision());
- assertEquals(5, newEntry1.updateCounter());
assertArrayEquals(key1, newEntry1.key());
assertNull(newEntry1.value());
}
@@ -1906,12 +1761,10 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
putAllToMs(List.of(key1, key2), List.of(val11, val21));
assertEquals(1, storage.revision());
- assertEquals(2, storage.updateCounter());
putAllToMs(List.of(key2, key3), List.of(val22, val31));
assertEquals(2, storage.revision());
- assertEquals(4, storage.updateCounter());
removeFromMs(key1);
@@ -1929,7 +1782,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val22 = keyValue(2, 22);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
CompletableFuture<Void> awaitFuture = watchExact(key1, 1, 2, (event,
state) -> {
if (state == 1) {
@@ -1947,7 +1799,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(newEntry1.empty());
assertFalse(newEntry1.tombstone());
assertEquals(1, newEntry1.revision());
- assertEquals(1, newEntry1.updateCounter());
assertArrayEquals(key1, newEntry1.key());
assertArrayEquals(val11, newEntry1.value());
} else if (state == 2) {
@@ -1960,7 +1811,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(oldEntry1.empty());
assertFalse(oldEntry1.tombstone());
assertEquals(1, oldEntry1.revision());
- assertEquals(1, oldEntry1.updateCounter());
assertArrayEquals(key1, oldEntry1.key());
assertArrayEquals(val11, oldEntry1.value());
@@ -1969,7 +1819,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(newEntry1.empty());
assertFalse(newEntry1.tombstone());
assertEquals(3, newEntry1.revision());
- assertEquals(4, newEntry1.updateCounter());
assertArrayEquals(key1, newEntry1.key());
assertArrayEquals(val12, newEntry1.value());
}
@@ -1978,7 +1827,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
putAllToMs(List.of(key1, key2), List.of(val11, val21));
assertEquals(1, storage.revision());
- assertEquals(2, storage.updateCounter());
putToMs(key2, val22);
putToMs(key1, val12);
@@ -1996,7 +1844,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val2 = keyValue(2, 21);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
CompletableFuture<Void> awaitFuture = watchExact(key2, 1, 1, (event,
state) -> {
assertTrue(event.single());
@@ -2013,7 +1860,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
assertFalse(newEntry1.empty());
assertFalse(newEntry1.tombstone());
assertEquals(3, newEntry1.revision());
- assertEquals(3, newEntry1.updateCounter());
assertArrayEquals(key2, newEntry1.key());
assertArrayEquals(val2, newEntry1.value());
});
@@ -2023,7 +1869,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
putToMs(key2, val2);
assertEquals(3, storage.revision());
- assertEquals(3, storage.updateCounter());
assertThat(awaitFuture, willCompleteSuccessfully());
}
@@ -2042,7 +1887,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
byte[] val32 = keyValue(3, 32);
assertEquals(0, storage.revision());
- assertEquals(0, storage.updateCounter());
CompletableFuture<Void> awaitFuture = watchExact(List.of(key1, key2),
1, 2, (event, state) -> {
if (state == 1) {
@@ -2055,7 +1899,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
putAllToMs(List.of(key1, key2, key3), List.of(val11, val21, val31));
assertEquals(1, storage.revision());
- assertEquals(3, storage.updateCounter());
putToMs(key2, val22);
@@ -2308,13 +2151,11 @@ public abstract class
BasicOperationsKeyValueStorageTest extends AbstractKeyValu
restartStorage();
assertEquals(0L, storage.revision());
- assertEquals(0L, storage.updateCounter());
assertTrue(storage.get(key).empty());
storage.restoreSnapshot(snapshotDir);
assertEquals(1L, storage.revision());
- assertEquals(1L, storage.updateCounter());
assertFalse(storage.get(key).empty());
}
@@ -2334,7 +2175,6 @@ public abstract class BasicOperationsKeyValueStorageTest
extends AbstractKeyValu
storage.restoreSnapshot(snapshotDir);
assertEquals(1L, storage.revision());
- assertEquals(1L, storage.updateCounter());
assertFalse(storage.get(key0).empty());
assertTrue(storage.get(key1).empty());
}
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/ExistenceConditionTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/ExistenceConditionTest.java
index 5968b6f433..f4f939474f 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/ExistenceConditionTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/ExistenceConditionTest.java
@@ -43,13 +43,13 @@ public class ExistenceConditionTest {
private static final byte[] VAL = {1};
/** Regular entry. */
- private static final Entry ENTRY = new EntryImpl(KEY, VAL, 1, 1,
CLOCK.now());
+ private static final Entry ENTRY = new EntryImpl(KEY, VAL, 1, CLOCK.now());
/** Empty entry. */
private static final Entry EMPTY = EntryImpl.empty(KEY);
/** Tombstone entry. */
- private static final Entry TOMBSTONE = EntryImpl.tombstone(KEY, 1, 1,
CLOCK.now());
+ private static final Entry TOMBSTONE = EntryImpl.tombstone(KEY, 1,
CLOCK.now());
/**
* Tests {@link ExistenceCondition.Type#EXISTS} condition for regular,
empty and tombstone entries.
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/OrConditionTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/OrConditionTest.java
index 6006fe11a4..bc9b65b341 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/OrConditionTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/OrConditionTest.java
@@ -50,9 +50,9 @@ public class OrConditionTest extends BaseIgniteAbstractTest {
private final HybridClock clock = new HybridClockImpl();
private final Entry[] entries = {
- new EntryImpl(new byte[]{1}, new byte[]{10}, 1, 1, clock.now()),
- new EntryImpl(new byte[]{2}, new byte[]{20}, 2, 3, clock.now()),
- new EntryImpl(new byte[]{3}, new byte[]{30}, 3, 4, clock.now()),
+ new EntryImpl(new byte[]{1}, new byte[]{10}, 1, clock.now()),
+ new EntryImpl(new byte[]{2}, new byte[]{20}, 2, clock.now()),
+ new EntryImpl(new byte[]{3}, new byte[]{30}, 3, clock.now()),
};
@BeforeEach
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/RevisionConditionTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/RevisionConditionTest.java
index 1abf8f3668..fcb64d553e 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/RevisionConditionTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/RevisionConditionTest.java
@@ -52,7 +52,7 @@ public class RevisionConditionTest {
Condition cond = new RevisionCondition(EQUAL, KEY, 1);
// 1 == 1.
- assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, clock.now())));
}
/**
@@ -63,7 +63,7 @@ public class RevisionConditionTest {
Condition cond = new RevisionCondition(NOT_EQUAL, KEY, 1);
// 2 != 1.
- assertTrue(cond.test(new EntryImpl(KEY, VAL, 2, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL, 2, clock.now())));
}
/**
@@ -74,7 +74,7 @@ public class RevisionConditionTest {
Condition cond = new RevisionCondition(GREATER, KEY, 1);
// 2 > 1.
- assertTrue(cond.test(new EntryImpl(KEY, VAL, 2, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL, 2, clock.now())));
}
/**
@@ -85,10 +85,10 @@ public class RevisionConditionTest {
Condition cond = new RevisionCondition(GREATER_OR_EQUAL, KEY, 1);
// 2 >= 1 (2 > 1).
- assertTrue(cond.test(new EntryImpl(KEY, VAL, 2, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL, 2, clock.now())));
// 1 >= 1 (1 == 1).
- assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, clock.now())));
}
/**
@@ -99,7 +99,7 @@ public class RevisionConditionTest {
Condition cond = new RevisionCondition(LESS, KEY, 2);
// 1 < 2
- assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, clock.now())));
}
/**
@@ -110,9 +110,9 @@ public class RevisionConditionTest {
Condition cond = new RevisionCondition(LESS_OR_EQUAL, KEY, 2);
// 1 <= 2 (1 < 2)
- assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, clock.now())));
// 1 <= 1 (1 == 1).
- assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL, 1, clock.now())));
}
}
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/TombstoneConditionTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/TombstoneConditionTest.java
index 48176cdec4..d4a2ef878e 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/TombstoneConditionTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/TombstoneConditionTest.java
@@ -41,13 +41,13 @@ public class TombstoneConditionTest {
private static final byte[] VAL = {1};
/** Regular entry. */
- private static final Entry ENTRY = new EntryImpl(KEY, VAL, 1, 1,
CLOCK.now());
+ private static final Entry ENTRY = new EntryImpl(KEY, VAL, 1, CLOCK.now());
/** Empty entry. */
private static final Entry EMPTY = EntryImpl.empty(KEY);
/** Tombstone entry. */
- private static final Entry TOMBSTONE = EntryImpl.tombstone(KEY, 1, 1,
CLOCK.now());
+ private static final Entry TOMBSTONE = EntryImpl.tombstone(KEY, 1,
CLOCK.now());
/**
* Tests {@link TombstoneCondition.Type#TOMBSTONE} condition for regular,
empty and tombstone entries.
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/ValueConditionTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/ValueConditionTest.java
index f5d0e70886..b707896864 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/ValueConditionTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/ValueConditionTest.java
@@ -58,9 +58,9 @@ public class ValueConditionTest {
public void eq() {
Condition cond = new ValueCondition(EQUAL, KEY, VAL_1);
- assertTrue(cond.test(new EntryImpl(KEY, VAL_1, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL_1, 1, clock.now())));
- assertFalse(cond.test(new EntryImpl(KEY, VAL_2, 1, 1, clock.now())));
+ assertFalse(cond.test(new EntryImpl(KEY, VAL_2, 1, clock.now())));
}
/**
@@ -70,9 +70,9 @@ public class ValueConditionTest {
public void ne() {
Condition cond = new ValueCondition(NOT_EQUAL, KEY, VAL_1);
- assertTrue(cond.test(new EntryImpl(KEY, VAL_2, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL_2, 1, clock.now())));
- assertFalse(cond.test(new EntryImpl(KEY, VAL_1, 1, 1, clock.now())));
+ assertFalse(cond.test(new EntryImpl(KEY, VAL_1, 1, clock.now())));
}
/**
@@ -83,10 +83,10 @@ public class ValueConditionTest {
Condition cond = new ValueCondition(GREATER, KEY, VAL_1);
// byte[]{22} > byte[]{11}.
- assertTrue(cond.test(new EntryImpl(KEY, VAL_2, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL_2, 1, clock.now())));
// byte[]{11} > byte[]{11}.
- assertFalse(cond.test(new EntryImpl(KEY, VAL_1, 1, 1, clock.now())));
+ assertFalse(cond.test(new EntryImpl(KEY, VAL_1, 1, clock.now())));
}
/**
@@ -97,13 +97,13 @@ public class ValueConditionTest {
Condition cond = new ValueCondition(GREATER_OR_EQUAL, KEY, VAL_2);
// byte[]{33} >= byte[]{22}.
- assertTrue(cond.test(new EntryImpl(KEY, VAL_3, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL_3, 1, clock.now())));
// byte[]{22} >= byte[]{22}.
- assertTrue(cond.test(new EntryImpl(KEY, VAL_2, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL_2, 1, clock.now())));
// byte[]{11} >= byte[]{22}.
- assertFalse(cond.test(new EntryImpl(KEY, VAL_1, 1, 1, clock.now())));
+ assertFalse(cond.test(new EntryImpl(KEY, VAL_1, 1, clock.now())));
}
/**
@@ -114,10 +114,10 @@ public class ValueConditionTest {
Condition cond = new ValueCondition(LESS, KEY, VAL_2);
// byte[]{11} < byte[]{22}
- assertTrue(cond.test(new EntryImpl(KEY, VAL_1, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL_1, 1, clock.now())));
// byte[]{22} < byte[]{22}
- assertFalse(cond.test(new EntryImpl(KEY, VAL_2, 1, 1, clock.now())));
+ assertFalse(cond.test(new EntryImpl(KEY, VAL_2, 1, clock.now())));
}
/**
@@ -128,12 +128,12 @@ public class ValueConditionTest {
Condition cond = new ValueCondition(LESS_OR_EQUAL, KEY, VAL_2);
// byte[]{11} <= byte[]{22}
- assertTrue(cond.test(new EntryImpl(KEY, VAL_1, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL_1, 1, clock.now())));
// byte[]{22} <= byte[]{22}
- assertTrue(cond.test(new EntryImpl(KEY, VAL_2, 1, 1, clock.now())));
+ assertTrue(cond.test(new EntryImpl(KEY, VAL_2, 1, clock.now())));
// byte[]{33} <= byte[]{22}
- assertFalse(cond.test(new EntryImpl(KEY, VAL_3, 1, 1, clock.now())));
+ assertFalse(cond.test(new EntryImpl(KEY, VAL_3, 1, clock.now())));
}
}
diff --git
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/WatchProcessorTest.java
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/WatchProcessorTest.java
index 7ee5169ce5..d7e1f4c90c 100644
---
a/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/WatchProcessorTest.java
+++
b/modules/metastorage/src/test/java/org/apache/ignite/internal/metastorage/server/WatchProcessorTest.java
@@ -81,8 +81,8 @@ public class WatchProcessorTest extends
BaseIgniteAbstractTest {
watchProcessor.addWatch(new Watch(0, listener1, key ->
Arrays.equals(key, "foo".getBytes(UTF_8))));
watchProcessor.addWatch(new Watch(0, listener2, key ->
Arrays.equals(key, "bar".getBytes(UTF_8))));
- var entry1 = new EntryImpl("foo".getBytes(UTF_8), null, 1, 0,
TIMESTAMP);
- var entry2 = new EntryImpl("bar".getBytes(UTF_8), null, 1, 0,
TIMESTAMP);
+ var entry1 = new EntryImpl("foo".getBytes(UTF_8), null, 1, TIMESTAMP);
+ var entry2 = new EntryImpl("bar".getBytes(UTF_8), null, 1, TIMESTAMP);
CompletableFuture<Void> notificationFuture =
watchProcessor.notifyWatches(List.of(entry1, entry2),
HybridTimestamp.MAX_VALUE);
@@ -108,8 +108,8 @@ public class WatchProcessorTest extends
BaseIgniteAbstractTest {
watchProcessor.addWatch(new Watch(0, listener1, key ->
Arrays.equals(key, "foo".getBytes(UTF_8))));
watchProcessor.addWatch(new Watch(0, listener2, key ->
Arrays.equals(key, "bar".getBytes(UTF_8))));
- var entry1 = new EntryImpl("foo".getBytes(UTF_8), null, 1, 0,
TIMESTAMP);
- var entry2 = new EntryImpl("bar".getBytes(UTF_8), null, 2, 0,
TIMESTAMP);
+ var entry1 = new EntryImpl("foo".getBytes(UTF_8), null, 1, TIMESTAMP);
+ var entry2 = new EntryImpl("bar".getBytes(UTF_8), null, 2, TIMESTAMP);
HybridTimestamp ts = new HybridTimestamp(1, 2);
@@ -150,8 +150,8 @@ public class WatchProcessorTest extends
BaseIgniteAbstractTest {
watchProcessor.addWatch(new Watch(0, listener1, key ->
Arrays.equals(key, "foo".getBytes(UTF_8))));
watchProcessor.addWatch(new Watch(0, listener2, key ->
Arrays.equals(key, "bar".getBytes(UTF_8))));
- var entry1 = new EntryImpl("foo".getBytes(UTF_8), null, 1, 0,
TIMESTAMP);
- var entry2 = new EntryImpl("bar".getBytes(UTF_8), null, 1, 0,
TIMESTAMP);
+ var entry1 = new EntryImpl("foo".getBytes(UTF_8), null, 1, TIMESTAMP);
+ var entry2 = new EntryImpl("bar".getBytes(UTF_8), null, 1, TIMESTAMP);
CompletableFuture<Void> notificationFuture =
watchProcessor.notifyWatches(List.of(entry1, entry2),
HybridTimestamp.MAX_VALUE);
@@ -184,16 +184,16 @@ public class WatchProcessorTest extends
BaseIgniteAbstractTest {
watchProcessor.addWatch(new Watch(0, listener1, key ->
Arrays.equals(key, "foo".getBytes(UTF_8))));
watchProcessor.addWatch(new Watch(0, listener2, key ->
Arrays.equals(key, "bar".getBytes(UTF_8))));
- var entry1 = new EntryImpl("foo".getBytes(UTF_8), null, 1, 0,
TIMESTAMP);
- var entry2 = new EntryImpl("bar".getBytes(UTF_8), null, 1, 0,
TIMESTAMP);
+ var entry1 = new EntryImpl("foo".getBytes(UTF_8), null, 1, TIMESTAMP);
+ var entry2 = new EntryImpl("bar".getBytes(UTF_8), null, 1, TIMESTAMP);
watchProcessor.notifyWatches(List.of(entry1, entry2),
HybridTimestamp.MAX_VALUE);
verify(listener1, timeout(1_000)).onUpdate(new WatchEvent(new
EntryEvent(oldEntry(entry1), entry1)));
verify(listener2, timeout(1_000)).onUpdate(new WatchEvent(new
EntryEvent(oldEntry(entry2), entry2)));
- var entry3 = new EntryImpl("foo".getBytes(UTF_8), null, 2, 0,
TIMESTAMP);
- var entry4 = new EntryImpl("bar".getBytes(UTF_8), null, 2, 0,
TIMESTAMP);
+ var entry3 = new EntryImpl("foo".getBytes(UTF_8), null, 2, TIMESTAMP);
+ var entry4 = new EntryImpl("bar".getBytes(UTF_8), null, 2, TIMESTAMP);
CompletableFuture<Void> notificationFuture =
watchProcessor.notifyWatches(List.of(entry3, entry4),
HybridTimestamp.MAX_VALUE);
@@ -218,7 +218,7 @@ public class WatchProcessorTest extends
BaseIgniteAbstractTest {
watchProcessor.addWatch(new Watch(0, listener, key ->
Arrays.equals(key, "foo".getBytes(UTF_8))));
- var entry = new EntryImpl("bar".getBytes(UTF_8), null, 1, 0,
TIMESTAMP);
+ var entry = new EntryImpl("bar".getBytes(UTF_8), null, 1, TIMESTAMP);
CompletableFuture<Void> notificationFuture =
watchProcessor.notifyWatches(List.of(entry), HybridTimestamp.MAX_VALUE);
@@ -236,10 +236,10 @@ public class WatchProcessorTest extends
BaseIgniteAbstractTest {
}
private static Entry oldEntry(byte[] key, long revision) {
- return new EntryImpl(key, null, revision, 0, TIMESTAMP);
+ return new EntryImpl(key, null, revision, TIMESTAMP);
}
private static Entry oldEntry(Entry entry) {
- return new EntryImpl(entry.key(), null, entry.revision() - 1, 0,
TIMESTAMP);
+ return new EntryImpl(entry.key(), null, entry.revision() - 1,
TIMESTAMP);
}
}
diff --git
a/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/SimpleInMemoryKeyValueStorage.java
b/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/SimpleInMemoryKeyValueStorage.java
index a0ff4be9ad..6ba48f9213 100644
---
a/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/SimpleInMemoryKeyValueStorage.java
+++
b/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/SimpleInMemoryKeyValueStorage.java
@@ -113,13 +113,6 @@ public class SimpleInMemoryKeyValueStorage implements
KeyValueStorage {
*/
private long rev;
- /**
- * Update counter. Will be incremented for each update of any particular
entry.
- *
- * <p>Multi-threaded access is guarded by {@link #mux}.</p>
- */
- private long updCntr;
-
/**
* Last compaction revision that was set or restored from a snapshot.
*
@@ -169,13 +162,6 @@ public class SimpleInMemoryKeyValueStorage implements
KeyValueStorage {
}
}
- @Override
- public long updateCounter() {
- synchronized (mux) {
- return updCntr;
- }
- }
-
@Override
public void put(byte[] key, byte[] value, HybridTimestamp opTs) {
synchronized (mux) {
@@ -524,7 +510,7 @@ public class SimpleInMemoryKeyValueStorage implements
KeyValueStorage {
revsIdx.tailMap(minWatchRevision)
.forEach((revision, entries) -> {
entries.forEach((key, value) -> {
- var entry = new EntryImpl(key, value.bytes(),
revision, value.updateCounter(), value.operationTimestamp());
+ var entry = new EntryImpl(key, value.bytes(),
revision, value.operationTimestamp());
updatedEntries.add(entry);
});
@@ -609,7 +595,6 @@ public class SimpleInMemoryKeyValueStorage implements
KeyValueStorage {
Map.copyOf(revToTsMap),
revsIdxCopy,
rev,
- updCntr,
savedCompactionRevision
);
@@ -652,7 +637,6 @@ public class SimpleInMemoryKeyValueStorage implements
KeyValueStorage {
});
rev = snapshot.rev;
- updCntr = snapshot.updCntr;
compactionRevision = snapshot.savedCompactionRevision;
savedCompactionRevision = snapshot.savedCompactionRevision;
} catch (Throwable t) {
@@ -851,24 +835,20 @@ public class SimpleInMemoryKeyValueStorage implements
KeyValueStorage {
Value lastVal = lastRevVals.get(key);
if (lastVal.tombstone()) {
- return EntryImpl.tombstone(key, lastRev, lastVal.updateCounter(),
lastVal.operationTimestamp());
+ return EntryImpl.tombstone(key, lastRev,
lastVal.operationTimestamp());
}
- return new EntryImpl(key, lastVal.bytes(), lastRev,
lastVal.updateCounter(), lastVal.operationTimestamp());
+ return new EntryImpl(key, lastVal.bytes(), lastRev,
lastVal.operationTimestamp());
}
- private long doPut(byte[] key, byte[] bytes, long curRev, HybridTimestamp
opTs) {
- long curUpdCntr = ++updCntr;
-
+ private void doPut(byte[] key, byte[] bytes, long curRev, HybridTimestamp
opTs) {
// Update keysIdx.
List<Long> revs = keysIdx.computeIfAbsent(key, k -> new ArrayList<>());
- long lastRev = revs.isEmpty() ? 0 : lastRevision(revs);
-
revs.add(curRev);
// Update revsIdx.
- Value val = new Value(bytes, curUpdCntr, opTs);
+ Value val = new Value(bytes, opTs);
revsIdx.compute(
curRev,
@@ -883,14 +863,13 @@ public class SimpleInMemoryKeyValueStorage implements
KeyValueStorage {
}
);
- var updatedEntry = new EntryImpl(key, val.tombstone() ? null : bytes,
curRev, curUpdCntr, val.operationTimestamp());
+ var updatedEntry = new EntryImpl(key, val.tombstone() ? null : bytes,
curRev, val.operationTimestamp());
updatedEntries.add(updatedEntry);
- return lastRev;
}
- private long doPutAll(long curRev, List<byte[]> keys, List<byte[]>
bytesList, HybridTimestamp opTs) {
+ private void doPutAll(long curRev, List<byte[]> keys, List<byte[]>
bytesList, HybridTimestamp opTs) {
synchronized (mux) {
// Update revsIdx.
NavigableMap<byte[], Value> entries = new TreeMap<>(CMP);
@@ -900,25 +879,22 @@ public class SimpleInMemoryKeyValueStorage implements
KeyValueStorage {
byte[] bytes = bytesList.get(i);
- long curUpdCntr = ++updCntr;
-
// Update keysIdx.
List<Long> revs = keysIdx.computeIfAbsent(key, k -> new
ArrayList<>());
revs.add(curRev);
- Value val = new Value(bytes, curUpdCntr, opTs);
+ Value val = new Value(bytes, opTs);
entries.put(key, val);
- updatedEntries.add(new EntryImpl(key, bytes, curRev,
curUpdCntr, opTs));
+ updatedEntries.add(new EntryImpl(key, bytes, curRev, opTs));
revsIdx.put(curRev, entries);
}
updateRevision(curRev, opTs);
- return curRev;
}
}
diff --git
a/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/SimpleInMemoryKeyValueStorageSnapshot.java
b/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/SimpleInMemoryKeyValueStorageSnapshot.java
index 16a726e691..040ca11c24 100644
---
a/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/SimpleInMemoryKeyValueStorageSnapshot.java
+++
b/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/SimpleInMemoryKeyValueStorageSnapshot.java
@@ -44,8 +44,6 @@ class SimpleInMemoryKeyValueStorageSnapshot implements
Serializable {
final long rev;
- final long updCntr;
-
final long savedCompactionRevision;
SimpleInMemoryKeyValueStorageSnapshot(
@@ -54,7 +52,6 @@ class SimpleInMemoryKeyValueStorageSnapshot implements
Serializable {
Map<Long, HybridTimestamp> revToTsMap,
Map<Long, Map<byte[], ValueSnapshot>> revsIdx,
long rev,
- long updCntr,
long savedCompactionRevision
) {
this.keysIdx = keysIdx;
@@ -62,7 +59,6 @@ class SimpleInMemoryKeyValueStorageSnapshot implements
Serializable {
this.revToTsMap = revToTsMap;
this.revsIdx = revsIdx;
this.rev = rev;
- this.updCntr = updCntr;
this.savedCompactionRevision = savedCompactionRevision;
}
}
diff --git
a/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/ValueSnapshot.java
b/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/ValueSnapshot.java
index 0d1865aa3d..9fad118b80 100644
---
a/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/ValueSnapshot.java
+++
b/modules/metastorage/src/testFixtures/java/org/apache/ignite/internal/metastorage/server/ValueSnapshot.java
@@ -26,20 +26,17 @@ class ValueSnapshot implements Serializable {
private final byte[] bytes;
- private final long updCntr;
-
private final boolean tombstone;
private final HybridTimestamp operationTimestamp;
ValueSnapshot(Value value) {
bytes = value.bytes();
- updCntr = value.updateCounter();
tombstone = value.tombstone();
operationTimestamp = value.operationTimestamp();
}
Value toValue() {
- return tombstone ? new Value(Value.TOMBSTONE, updCntr,
operationTimestamp) : new Value(bytes, updCntr, operationTimestamp);
+ return tombstone ? new Value(Value.TOMBSTONE, operationTimestamp) :
new Value(bytes, operationTimestamp);
}
}
diff --git
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseTrackerTest.java
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseTrackerTest.java
index fb44d2eb83..cae9d40442 100644
---
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseTrackerTest.java
+++
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseTrackerTest.java
@@ -101,8 +101,8 @@ public class LeaseTrackerTest extends
BaseIgniteAbstractTest {
.acceptLease(new HybridTimestamp(2000, 0));
// In entry0, there are leases for partition ids partId0 and partId1.
In entry1, there is only partId0, so partId1 is expired.
- Entry entry0 = new EntryImpl(leasesKeyBytes, new
LeaseBatch(List.of(lease0, lease1)).bytes(), 0, 0, clock.now());
- Entry entry1 = new EntryImpl(leasesKeyBytes, new
LeaseBatch(List.of(lease0)).bytes(), 0, 1, clock.now());
+ Entry entry0 = new EntryImpl(leasesKeyBytes, new
LeaseBatch(List.of(lease0, lease1)).bytes(), 0, clock.now());
+ Entry entry1 = new EntryImpl(leasesKeyBytes, new
LeaseBatch(List.of(lease0)).bytes(), 0, clock.now());
listenerRef.get().onUpdate(new WatchEvent(new EntryEvent(emptyEntry,
entry0)));
assertNull(parametersRef.get());
diff --git
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseUpdaterTest.java
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseUpdaterTest.java
index e7e2dcc46b..9a7cd175c4 100644
---
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseUpdaterTest.java
+++
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseUpdaterTest.java
@@ -120,7 +120,6 @@ public class LeaseUpdaterTest extends
BaseIgniteAbstractTest {
stablePartAssignmentsKey(new TablePartitionId(1, 0)).bytes(),
Assignments.of(HybridTimestamp.MIN_VALUE.longValue(),
Assignment.forPeer(node.name())).toBytes(),
1,
- 0,
clock.now()
);