IGNITE-12601 DistributedMetaStoragePersistentTest.testUnstableTopology is flaky - Fixes #7334.
Signed-off-by: Ivan Rakov <ivan.glukos@gmail.com>
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
index 670992c..d56500a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
@@ -418,17 +418,8 @@
@Override public void write(@NotNull String key, @NotNull Serializable val) throws IgniteCheckedException {
assert val != null;
- byte[] data = marshaller.marshal(val);
-
- final WALPointer ptr;
-
- synchronized (this) {
- ptr = wal.log(new MetastoreDataRecord(key, data));
-
- writeRaw(key, data);
- }
-
- wal.flush(ptr, false);
+ if (!readOnly)
+ writeRaw(key, marshaller.marshal(val));
}
/** {@inheritDoc} */
@@ -439,7 +430,11 @@
/** {@inheritDoc} */
@Override public void writeRaw(String key, byte[] data) throws IgniteCheckedException {
if (!readOnly) {
+ WALPointer ptr;
+
synchronized (this) {
+ ptr = wal.log(new MetastoreDataRecord(key, data));
+
MetastorageDataRow oldRow = tree.findOne(new MetastorageDataRow(key, null));
if (oldRow != null) {
@@ -451,6 +446,8 @@
tree.rowStore().addRow(row);
tree.put(row);
}
+
+ wal.flush(ptr, false);
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DmsDataWriterWorker.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DmsDataWriterWorker.java
index 1c333b6..816ff9c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DmsDataWriterWorker.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DmsDataWriterWorker.java
@@ -268,6 +268,8 @@
metastorage.iterate(COMMON_KEY_PREFIX, (key, val) -> allKeys.add(key), false);
+ allKeys.remove(cleanupGuardKey());
+
for (String key : allKeys)
metastorage.remove(key);