This is an automated email from the ASF dual-hosted git repository.

irakov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 188e4d5  IGNITE-12601 
DistributedMetaStoragePersistentTest.testUnstableTopology is flaky - Fixes 
#7334.
188e4d5 is described below

commit 188e4d52c2d8085874fed9349b03fedeca6edb59
Author: Slava Koptilin <slava.kopti...@gmail.com>
AuthorDate: Fri Jan 31 01:23:19 2020 +0300

    IGNITE-12601 DistributedMetaStoragePersistentTest.testUnstableTopology is 
flaky - Fixes #7334.
    
    Signed-off-by: Ivan Rakov <ivan.glu...@gmail.com>
---
 .../cache/persistence/metastorage/MetaStorage.java    | 19 ++++++++-----------
 .../metastorage/persistence/DmsDataWriterWorker.java  |  2 ++
 2 files changed, 10 insertions(+), 11 deletions(-)

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 @@ public class MetaStorage implements DbCheckpointListener, 
ReadWriteMetastorage {
     @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 @@ public class MetaStorage implements DbCheckpointListener, 
ReadWriteMetastorage {
     /** {@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 @@ public class MetaStorage implements DbCheckpointListener, 
ReadWriteMetastorage {
                 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 @@ class DmsDataWriterWorker extends GridWorker {
 
         metastorage.iterate(COMMON_KEY_PREFIX, (key, val) -> allKeys.add(key), 
false);
 
+        allKeys.remove(cleanupGuardKey());
+
         for (String key : allKeys)
             metastorage.remove(key);
 

Reply via email to