[bisq-network/bisq] (10/10) Make isDataOwner a private policy decision in BroadcastHandler (#3669)

Julian Knutsen notifications at github.com
Sat Nov 23 18:10:27 UTC 2019


## Motivation
Clean up the API usages of broadcast and P2PDataStorage APIs, by removing an unneeded parameter.

##
`isDataOwner` is used when deciding how many peer nodes should receive
a BroadcastMessage. If the `BroadcastMessage` originated
on the local node it is sent to ALL peer nodes with a small delay.

If the node is only relaying the message (it originated on a different
node) it is sent to MAX(peers.size(), 7) peers with a delay that is
twice as long.

All the information needed to determine whether or not the
`BroadcastMessage` originated on the local node is available at the final
broadcast site and there is no reason to have callers pass it in.

In the event that the sender address is not known during broadcast (which
is only a remote possibility due to how early the local node address
is set during startup) we can default to relay mode.

This first patch just removes the deep parameters. The next will remove
everything else. There is one real change in `LiteNodeNetworkService.java`
where it was using the local node when it should have been using the
peer node. This was updated to the correct behavior.
You can view, comment on, or merge this pull request online at:

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

-- 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)
  * [TESTS] Add tests of requestData
  * [REFACTOR] Introduce buildGetDataRequest variants
  * [TESTS] Add tests of new RequestData APIs
  * [TESTS] Add tests of GetDataRequestHandler
  * [REFACTOR] Introduce buildGetDataResponse
  * [REFACTOR] Extract connectionInfo String
  * [REFACTOR] Extract getDataResponse logging
  * [REFACTOR] Extract truncation logging
  * [REFACTOR] Pass peerCapabilities into buildGetDataResponse
  * [TESTS] Unit tests of buildGetDataResponse
  * Remove redundant HashSet lookups in filter functions
  * [REFACTOR] Move required capabilities log
  * [REFACTOR] Inline capability check for ProtectedStorageEntries
  * [REFACTOR] Inline filtering functions
  * [REFACTOR] Remove duplication in filtering functions
  * [BUGFIX] Fix off-by-one in truncation logic
  * [TESTS] Add test of RequestDataHandler::onMessage
  * [REFACTOR] Introduce processGetDataResponse
  * [TESTS] Make verify() functions more flexible
  * [TESTS] Add unit tests for processGetDataResponse
  * Remove static from initialRequestApplied
  * [TESTS] Write synchronization integration tests
  * [REFACTOR] Clean up processGetDataResponse
  * [RENAME] LazyProcessedPayload to ProcessOncePersistableNetworkPayload
  * Remove @Nullable around persistableNetworkPayloadSet
  * Remove @Nullable around supportedCapabilities in PreliminaryGetDataRequest
  * [DEADCODE] Remove old request handler tests
  * Remove @Nullable around supportedCapabilities in GetDataResponse
  * Make addPersistableNetworkPayloadFromInitialRequest private
  * [REFACTOR] Clean up ClientAPI for addPersistableNetworkPayload
  * [REFACTOR] Clean up ClientAPI for addProtectedStorageEntry
  * [REFACTOR] Clean up ClientAPI for remove
  * [REFACTOR] Clean up ClientAPI for refreshTTL
  * Make isDataOwner a private policy decision in BroadcastHandler
  * Remove isDataOwner from P2PDataStorage

-- File Changes --

    M core/src/main/java/bisq/core/account/sign/SignedWitness.java (4)
    M core/src/main/java/bisq/core/account/witness/AccountAgeWitness.java (4)
    M core/src/main/java/bisq/core/alert/AlertManager.java (36)
    M core/src/main/java/bisq/core/dao/governance/proposal/MyProposalListService.java (4)
    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/TempProposalPayload.java (4)
    M core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalStore.java (2)
    M core/src/main/java/bisq/core/dao/monitoring/network/StateNetworkService.java (2)
    M core/src/main/java/bisq/core/dao/node/full/network/FullNodeNetworkService.java (2)
    M core/src/main/java/bisq/core/dao/node/lite/network/LiteNodeNetworkService.java (2)
    M core/src/main/java/bisq/core/filter/FilterManager.java (35)
    M core/src/main/java/bisq/core/offer/OfferBookService.java (43)
    M core/src/main/java/bisq/core/support/dispute/agent/DisputeAgentManager.java (23)
    M core/src/main/java/bisq/core/support/dispute/agent/DisputeAgentService.java (4)
    M core/src/main/java/bisq/core/trade/statistics/TradeStatistics.java (4)
    M core/src/main/java/bisq/core/trade/statistics/TradeStatistics2.java (4)
    A core/src/test/java/bisq/core/dao/governance/proposal/ProposalServiceP2PDataStorageListenerTest.java (127)
    M monitor/src/main/java/bisq/monitor/metric/P2PMarketStats.java (19)
    M monitor/src/main/java/bisq/monitor/metric/P2PSeedNodeSnapshot.java (19)
    M p2p/src/main/java/bisq/network/p2p/P2PModule.java (1)
    M p2p/src/main/java/bisq/network/p2p/P2PService.java (31)
    M p2p/src/main/java/bisq/network/p2p/peers/BroadcastHandler.java (4)
    M p2p/src/main/java/bisq/network/p2p/peers/Broadcaster.java (4)
    M p2p/src/main/java/bisq/network/p2p/peers/getdata/GetDataRequestHandler.java (122)
    M p2p/src/main/java/bisq/network/p2p/peers/getdata/RequestDataHandler.java (92)
    M p2p/src/main/java/bisq/network/p2p/peers/getdata/messages/GetDataResponse.java (35)
    M p2p/src/main/java/bisq/network/p2p/peers/getdata/messages/PreliminaryGetDataRequest.java (21)
    M p2p/src/main/java/bisq/network/p2p/storage/HashMapChangedListener.java (14)
    M p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java (433)
    R p2p/src/main/java/bisq/network/p2p/storage/payload/ProcessOncePersistableNetworkPayload.java (7)
    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)
    A p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageBuildGetDataResponseTest.java (481)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageClientAPITest.java (46)
    A p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageGetDataIntegrationTest.java (193)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageOnMessageHandlerTest.java (6)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStoragePersistableNetworkPayloadTest.java (45)
    A p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageProcessGetDataResponse.java (263)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageProtectedStorageEntryTest.java (149)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageRemoveExpiredTest.java (44)
    A p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageRequestDataTest.java (171)
    M p2p/src/test/java/bisq/network/p2p/storage/P2PDataStoreDisconnectTest.java (11)
    M p2p/src/test/java/bisq/network/p2p/storage/TestState.java (276)
    R p2p/src/test/java/bisq/network/p2p/storage/mocks/MapStoreServiceFake.java (43)
    M p2p/src/test/java/bisq/network/p2p/storage/mocks/PersistableNetworkPayloadStub.java (12)
    M p2p/src/test/java/bisq/network/p2p/storage/mocks/ProtectedStoragePayloadStub.java (2)

-- Patch Links --

https://github.com/bisq-network/bisq/pull/3669.patch
https://github.com/bisq-network/bisq/pull/3669.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/3669
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20191123/c47b0481/attachment.html>


More information about the bisq-github mailing list