diff --git a/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java b/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java index 9e2f296dfb..54f23c0993 100644 --- a/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java +++ b/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java @@ -428,9 +428,8 @@ public class P2PDataStorage implements MessageListener, ConnectionListener, Pers // Persist ProtectedStorageEntrys carrying PersistablePayload payloads and signal listeners on changes if (protectedStoragePayload instanceof PersistablePayload) { - ProtectedStorageEntry previous = protectedDataStoreService.putIfAbsent(hashOfPayload, protectedStorageEntry); - if (previous == null) - protectedDataStoreListeners.forEach(e -> e.onAdded(protectedStorageEntry)); + protectedDataStoreService.put(hashOfPayload, protectedStorageEntry); + protectedDataStoreListeners.forEach(e -> e.onAdded(protectedStorageEntry)); } return true; diff --git a/p2p/src/main/java/bisq/network/p2p/storage/persistence/MapStoreService.java b/p2p/src/main/java/bisq/network/p2p/storage/persistence/MapStoreService.java index 5449a3f3a9..67088799c4 100644 --- a/p2p/src/main/java/bisq/network/p2p/storage/persistence/MapStoreService.java +++ b/p2p/src/main/java/bisq/network/p2p/storage/persistence/MapStoreService.java @@ -56,6 +56,11 @@ public abstract class MapStoreService service.canHandle(entry)) .forEach(service -> { - service.putIfAbsent(hash, entry); + service.put(hash, entry); }); } diff --git a/p2p/src/test/java/bisq/network/p2p/storage/TestState.java b/p2p/src/test/java/bisq/network/p2p/storage/TestState.java index 4e4e2a6a49..fdda13a66f 100644 --- a/p2p/src/test/java/bisq/network/p2p/storage/TestState.java +++ b/p2p/src/test/java/bisq/network/p2p/storage/TestState.java @@ -221,16 +221,9 @@ public class TestState { if (expectedStateChange) { Assert.assertEquals(protectedStorageEntry, this.mockedStorage.getMap().get(hashMapHash)); - // PersistablePayload payloads need to be written to disk and listeners signaled... unless the hash already exists in the protectedDataStore. - // Note: this behavior is different from the HashMap listeners that are signaled on an increase in seq #, even if the hash already exists. - // TODO: Should the behavior be identical between this and the HashMap listeners? - // TODO: Do we want ot overwrite stale values in order to persist updated sequence numbers and timestamps? - if (protectedStorageEntry.getProtectedStoragePayload() instanceof PersistablePayload && beforeState.protectedStorageEntryBeforeOpDataStoreMap == null) { + if (protectedStorageEntry.getProtectedStoragePayload() instanceof PersistablePayload) { Assert.assertEquals(protectedStorageEntry, this.protectedDataStoreService.getMap().get(hashMapHash)); verify(this.protectedDataStoreListener).onAdded(protectedStorageEntry); - } else { - Assert.assertEquals(beforeState.protectedStorageEntryBeforeOpDataStoreMap, this.protectedDataStoreService.getMap().get(hashMapHash)); - verify(this.protectedDataStoreListener, never()).onAdded(protectedStorageEntry); } verify(this.hashMapChangedListener).onAdded(Collections.singletonList(protectedStorageEntry));