[bisq-network/bisq] (7/7) [BUGFIX] Fix duplicate sequence number use case (Non-persistent ProtectedStoragePayloads) (#3665)

Julian Knutsen notifications at github.com
Fri Nov 22 23:14:07 UTC 2019


73b59e0

Fix a bug introduced in d484617385276d033223ad8f36e821504e116f96 that
did not properly handle a valid use case for duplicate sequence numbers.

For in-memory-only ProtectedStoragePayloads, the client nodes need a way
to reconstruct the Payloads after startup from peer and seed nodes. This
involves sending a ProtectedStorageEntry with a sequence number that
is equal to the last one the client had already seen.

This patch adds tests to confirm the bug and fix as well as the changes
necessary to allow adding of Payloads that were previously seen, but
removed during a restart.
You can view, comment on, or merge this pull request online at:

  https://github.com/bisq-network/bisq/pull/3665

-- Commit Summary --

  * [PR COMMENTS] Make maxSequenceNumberBeforePurge final
  * [TESTS] Clean up 'Analyze Code' warnings
  * [REFACTOR] HashMapListener::onAdded/onRemoved
  * [REFACTOR] removeFromMapAndDataStore can operate on Collections
  * Change removeFromMapAndDataStore to signal listeners at the end in a batch
  * Update removeExpiredEntries to remove all items in a batch
  * ProposalService::onProtectedDataRemoved signals listeners once on batch removes
  * Remove HashmapChangedListener::onBatch operations
  * [TESTS] Regression test for #3629
  * [BUGFIX] Reconstruct HashMap using 32-byte key
  * [BUGFIX] Use 32-byte key in requestData path
  * [DEAD CODE] Remove getProtectedDataStoreMap
  * [TESTS] Allow tests to validate SequenceNumberMap write separately
  * Implement remove-before-add message sequence behavior
  * [TESTS] Allow remove() verification to be more flexible
  * Broadcast remove-before-add messages to P2P network
  * [TESTS] Clean up remove verification helpers
  * [TESTS] Introduce MapStoreServiceFake
  * Persist changes to ProtectedStorageEntrys
  * [DEADCODE] Remove protectedDataStoreListener
  * [DEADCODE] Remove unused methods in ProtectedDataStoreService
  * [BUGFIX] Fix duplicate sequence number use case (startup)

-- File Changes --

    M core/src/main/java/bisq/core/alert/AlertManager.java (32)
    M core/src/main/java/bisq/core/dao/governance/proposal/ProposalListPresentation.java (49)
    M core/src/main/java/bisq/core/dao/governance/proposal/ProposalService.java (65)
    M core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalStore.java (2)
    M core/src/main/java/bisq/core/filter/FilterManager.java (31)
    M core/src/main/java/bisq/core/offer/OfferBookService.java (37)
    M core/src/main/java/bisq/core/support/dispute/agent/DisputeAgentManager.java (23)
    A core/src/test/java/bisq/core/dao/governance/proposal/ProposalServiceP2PDataStorageListenerTest.java (127)
    M p2p/src/main/java/bisq/network/p2p/P2PModule.java (1)
    M p2p/src/main/java/bisq/network/p2p/P2PService.java (13)
    M p2p/src/main/java/bisq/network/p2p/peers/getdata/RequestDataHandler.java (2)
    M p2p/src/main/java/bisq/network/p2p/storage/HashMapChangedListener.java (14)
    M p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java (150)
    M p2p/src/main/java/bisq/network/p2p/storage/persistence/MapStoreService.java (5)
    D p2p/src/main/java/bisq/network/p2p/storage/persistence/ProtectedDataStoreListener.java (26)
    M p2p/src/main/java/bisq/network/p2p/storage/persistence/ProtectedDataStoreService.java (16)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageClientAPITest.java (8)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStoragePersistableNetworkPayloadTest.java (1)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageProtectedStorageEntryTest.java (108)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageRemoveExpiredTest.java (32)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStoreDisconnectTest.java (7)
    M p2p/src/test/java/bisq/network/p2p/storage/TestState.java (201)
    R p2p/src/test/java/bisq/network/p2p/storage/mocks/MapStoreServiceFake.java (43)
    M p2p/src/test/java/bisq/network/p2p/storage/mocks/ProtectedStoragePayloadStub.java (2)

-- Patch Links --

https://github.com/bisq-network/bisq/pull/3665.patch
https://github.com/bisq-network/bisq/pull/3665.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/bisq-network/bisq/pull/3665
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20191122/241aabc2/attachment-0001.html>


More information about the bisq-github mailing list