[bisq-network/bisq] Use a thread in PersistenceManager for reading persisted files instead of using thread in client code (#4628)

chimp1984 notifications at github.com
Mon Oct 12 02:05:11 UTC 2020


Bases on 1.4.0 release branch but intended to get into master after release. Set it as draft to make more clear its not ready for merge yet (though ready for review). Code changes are at commit fa2163fb0f25dd870cdec81c2b3a50229d8350af.

Use a thread in PersistenceManager for reading persisted files instead of using thread in client code

Before we use a thread in readFromResources and readAllPersisted. To avoid that client code need to deal with
threading we moved that to the PersistenceManager and changed the API accordingly so it will not return the persisted object but calls a consumer once it is completed with reading.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Bump version number for v1.4.0
  * Update translations for v1.4.0
  * Create a P2WPKH keychain for new btc wallets
  * Add a P2WPKH keychain for existing wallets
  * AddressEntry: Add boolean segwit flag
  * Stop using LegacyAddress for btc addresses
  * Fix log msg in BtcCoinSelector
  * Comment out segwit BSQ account path
  * TradeWalletService: adapt to segwit wallet
  * WalletService: adapt to segwit wallet
  * New AddressEntry: use different script types
  * AddressEntryList: arbitrator entry use P2PKH
  * Add segwit/legacy checbox for address creation
  * Serialize tx without segwit
  * Don't create an extra address at startup
  * Don't create a wallet address when not needed
  * Remove unused WalletService.findKeyFromPubKeyHash()
  * Remove unused import
  * Enable reusing unused AVAILABLE entries
  * Make codacy happy
  * Validate AddressEntry.segwit
  * Make it clear segwit is not used for the trade protocol yet.
  * BtcWalletService.getFreshAddressEntry(): code clean up
  * Construct dummy outputs with LegacyAddress
  * setWitness(): Code clean up
  * Use try-with-resources
  * Improve error handling for P2WPKH
  * Switch back to LegacyAddress for fee estimation
  * Fix add segwit keychain for encrypted wallet
  * Use bitcoinj 0.15.8 (commit a733034)
  * Do a backup of the wallet before segwit migration
  * Check migratedWalletToSegwit is true
  * Merge pull request #4568 from oscarguindzberg/segwitWallet
  * Add NO_ADDRESS_PRE_FIX capability.
  * Cleanups
  * Make onRemoved default in interface
  * Add methods for getting peers capabilities
  * Remove verification for address prefix
  * Clear capabilitiesListeners at shutdown
  * Refactor: move SupportedCapabilitiesMessage handling code out to a method
  * Use only node address for equals and hashcode
  * Pass supportedCapabilities to PeerManager. Not further processed yet, will be done in next commits
  * Use getSingleThreadListeningExecutor, cleanups
  * Apply code inspection suggestions
  * Add findPeersCapabilities method
  * Add getDateAsLong method, add setter for capabilities
  * Add findPeersCapabilities method
  * Replace persistedPeers with peerList
  * Use getPersistedPeers for peerList.getList() calls
  * Update common/src/main/java/bisq/common/app/Capability.java
  * Update p2p/src/main/java/bisq/network/p2p/network/Connection.java
  * Fix incorrect handling of decryptedEntries size
  * Refactor: Return early
  * Refactor: Rearrange code, remove unused methods, renamings (no functional change)
  * Refactor: Rename method
  * Use connection.getPeersNodeAddressOptional().isPresent() instead of connection.hasPeersNodeAddress() which does the same internally
  * Fix tests
  * Use a hashset instead of list to avoid duplicates. Filter out my own node from persisted peers.
  * Decrease failedConnectionAttempts onConnection
  * Fix incorrect collection used in == 1 check
  * Add isPresent check
  * Do not log size as we don't want to call potentially expensive toProtoMessage method
  * Copy peers in a new hashset to avoid concurrent modification exc at serialisation
  * Dont reassign param
  * Use custom class MailboxItem instead of Tuple
  * Apply code review suggestions
  * When updating the capability from a reported peer we check if the reported one has higher capabilities, otherwise we ignore it.
  * Apply codacy suggestions
  * Add TradeStatistics3 and related classes
  * Remove PublishTradeStatistics from buyer protocol
  * Refactor: Move class
  * Refactor: Rename class
  * let seller publish trade statistics only if peer is updated user. If not the peer will publish only.
  * Delete TradeStatistics (version 1)
  * We "hack" TradeStatistics2StorageService to fulfill our needs:
  * Apply TradeStatistics3 to TradeStatisticsManager and some related classes
  * Apply TradeStatistics3 to client classes
  * Adjust tests, remove tests which do not make sense anymore
  * Use TradeStatistics3 in protobuf file
  * Remove resource file
  * Prune mediator and refund agent entries for all entries beside the last 100 we use for the selection algorithm.
  * Add injector.getInstance(TradeStatisticsConverter.class) to BisqExecutable to enforce inclusion.
  * Do conversion in a thread to not block UI thread. takes about 4 seconds on my machine.
  * Add filter for excluding null objects
  * Add check that size is > LOOK_BACK_RANGE
  * Add resource file for 1.4.0 (should be updated at release time)
  * Apply codacy suggestions
  * Remove copy&past mistake
  * Republish trade statistics from seller side if peer capability is know. This is not the case without getting PR #4609 merges as well.
  * Remove comment line
  * Remove unused variable
  * Cleanups: Remove outdated TODOs, fix typos
  * Merge pull request #4610 from chimp1984/remove-address-prefix
  * Merge pull request #4611 from chimp1984/new-trade-statistics
  * Use a thread in PersistenceManager for reading persisted files instead of using thread in client code

-- File Changes --

    M build.gradle (4)
    M common/src/main/java/bisq/common/app/Capabilities.java (18)
    M common/src/main/java/bisq/common/app/Capability.java (4)
    M common/src/main/java/bisq/common/app/Version.java (3)
    M common/src/main/java/bisq/common/consensus/UsedForTradeContractJson.java (3)
    M common/src/main/java/bisq/common/crypto/Encryption.java (1)
    M common/src/main/java/bisq/common/crypto/KeyStorage.java (1)
    M common/src/main/java/bisq/common/file/JsonFileManager.java (4)
    M common/src/main/java/bisq/common/persistence/PersistenceManager.java (34)
    M common/src/main/java/bisq/common/proto/network/NetworkEnvelope.java (1)
    M common/src/main/java/bisq/common/proto/persistable/PersistedDataHost.java (8)
    M common/src/test/java/bisq/common/app/CapabilitiesTest.java (42)
    M core/src/main/java/bisq/core/api/CoreApi.java (4)
    M core/src/main/java/bisq/core/app/BisqExecutable.java (11)
    M core/src/main/java/bisq/core/app/BisqSetup.java (10)
    D core/src/main/java/bisq/core/app/SetupUtils.java (49)
    M core/src/main/java/bisq/core/app/WalletAppSetup.java (2)
    M core/src/main/java/bisq/core/app/misc/AppSetupWithP2P.java (10)
    M core/src/main/java/bisq/core/btc/model/AddressEntry.java (30)
    M core/src/main/java/bisq/core/btc/model/AddressEntryList.java (43)
    M core/src/main/java/bisq/core/btc/setup/BisqKeyChainGroupStructure.java (12)
    M core/src/main/java/bisq/core/btc/setup/WalletConfig.java (96)
    M core/src/main/java/bisq/core/btc/setup/WalletsSetup.java (9)
    M core/src/main/java/bisq/core/btc/wallet/BtcCoinSelector.java (2)
    M core/src/main/java/bisq/core/btc/wallet/BtcWalletService.java (51)
    M core/src/main/java/bisq/core/btc/wallet/TradeWalletService.java (69)
    M core/src/main/java/bisq/core/btc/wallet/WalletService.java (55)
    M core/src/main/java/bisq/core/dao/governance/asset/AssetService.java (6)
    M core/src/main/java/bisq/core/dao/governance/ballot/BallotListService.java (15)
    M core/src/main/java/bisq/core/dao/governance/blindvote/MyBlindVoteListService.java (13)
    M core/src/main/java/bisq/core/dao/governance/blindvote/network/RepublishGovernanceDataHandler.java (2)
    M core/src/main/java/bisq/core/dao/governance/bond/reputation/MyReputationListService.java (13)
    M core/src/main/java/bisq/core/dao/governance/myvote/MyVoteListService.java (16)
    M core/src/main/java/bisq/core/dao/governance/proofofburn/MyProofOfBurnListService.java (13)
    M core/src/main/java/bisq/core/dao/governance/proposal/MyProposalListService.java (15)
    M core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalStorageService.java (4)
    M core/src/main/java/bisq/core/dao/node/lite/network/LiteNodeNetworkService.java (2)
    M core/src/main/java/bisq/core/dao/state/unconfirmed/UnconfirmedBsqChangeOutputListService.java (13)
    M core/src/main/java/bisq/core/offer/OpenOfferManager.java (17)
    M core/src/main/java/bisq/core/offer/availability/DisputeAgentSelection.java (19)
    M core/src/main/java/bisq/core/proto/CoreProtoResolver.java (3)
    M core/src/main/java/bisq/core/proto/network/CoreNetworkProtoResolver.java (4)
    M core/src/main/java/bisq/core/proto/persistable/CorePersistenceProtoResolver.java (3)
    M core/src/main/java/bisq/core/provider/fee/FeeService.java (1)
    M core/src/main/java/bisq/core/provider/price/PriceFeedService.java (17)
    M core/src/main/java/bisq/core/setup/CoreNetworkCapabilities.java (4)
    M core/src/main/java/bisq/core/support/dispute/DisputeListService.java (11)
    M core/src/main/java/bisq/core/support/dispute/agent/DisputeAgentManager.java (2)
    M core/src/main/java/bisq/core/support/dispute/arbitration/ArbitrationManager.java (2)
    M core/src/main/java/bisq/core/trade/TradeManager.java (23)
    M core/src/main/java/bisq/core/trade/TradeModule.java (4)
    M core/src/main/java/bisq/core/trade/closed/ClosedTradableManager.java (19)
    M core/src/main/java/bisq/core/trade/failed/FailedTradesManager.java (23)
    M core/src/main/java/bisq/core/trade/protocol/BuyerProtocol.java (4)
    M core/src/main/java/bisq/core/trade/protocol/SellerProtocol.java (30)
    M core/src/main/java/bisq/core/trade/protocol/TradeProtocol.java (5)
    D core/src/main/java/bisq/core/trade/protocol/tasks/PublishTradeStatistics.java (80)
    A core/src/main/java/bisq/core/trade/protocol/tasks/seller/SellerPublishesTradeStatistics.java (105)
    D core/src/main/java/bisq/core/trade/statistics/TradeStatistics.java (236)
    M core/src/main/java/bisq/core/trade/statistics/TradeStatistics2.java (2)
    M core/src/main/java/bisq/core/trade/statistics/TradeStatistics2StorageService.java (22)
    A core/src/main/java/bisq/core/trade/statistics/TradeStatistics3.java (355)
    A core/src/main/java/bisq/core/trade/statistics/TradeStatistics3StorageService.java (84)
    A core/src/main/java/bisq/core/trade/statistics/TradeStatistics3Store.java (73)
    A core/src/main/java/bisq/core/trade/statistics/TradeStatisticsConverter.java (182)
    M core/src/main/java/bisq/core/trade/statistics/TradeStatisticsForJson.java (52)
    M core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java (138)
    M core/src/main/java/bisq/core/user/Preferences.java (90)
    M core/src/main/java/bisq/core/user/User.java (22)
    M core/src/main/resources/i18n/displayStrings.properties (1)
    M core/src/main/resources/i18n/displayStrings_de.properties (187)
    M core/src/main/resources/i18n/displayStrings_es.properties (217)
    M core/src/main/resources/i18n/displayStrings_fa.properties (189)
    M core/src/main/resources/i18n/displayStrings_fr.properties (195)
    M core/src/main/resources/i18n/displayStrings_ja.properties (287)
    M core/src/main/resources/i18n/displayStrings_pt-br.properties (187)
    M core/src/main/resources/i18n/displayStrings_pt.properties (187)
    M core/src/main/resources/i18n/displayStrings_ru.properties (187)
    M core/src/main/resources/i18n/displayStrings_th.properties (187)
    M core/src/main/resources/i18n/displayStrings_vi.properties (187)
    M core/src/main/resources/i18n/displayStrings_zh-hans.properties (299)
    M core/src/main/resources/i18n/displayStrings_zh-hant.properties (303)
    D core/src/test/java/bisq/core/trade/statistics/TradeStatistics2Maker.java (91)
    D core/src/test/java/bisq/core/trade/statistics/TradeStatistics2Test.java (45)
    D core/src/test/java/bisq/core/trade/statistics/TradeStatisticsManagerTest.java (114)
    M daemon/src/main/java/bisq/daemon/grpc/GrpcGetTradeStatisticsService.java (4)
    M desktop/package/linux/Dockerfile (2)
    M desktop/package/linux/package.sh (2)
    M desktop/package/linux/release.sh (2)
    M desktop/package/macosx/Info.plist (4)
    M desktop/package/macosx/create_app.sh (2)
    M desktop/package/macosx/finalize.sh (2)
    M desktop/package/macosx/replace_version_number.sh (4)
    M desktop/package/windows/package.bat (2)
    M desktop/package/windows/release.bat (2)
    M desktop/src/main/java/bisq/desktop/Navigation.java (38)
    M desktop/src/main/java/bisq/desktop/components/AddressTextField.java (3)
    M desktop/src/main/java/bisq/desktop/components/BsqAddressTextField.java (3)
    M desktop/src/main/java/bisq/desktop/components/TextFieldWithCopyIcon.java (3)
    M desktop/src/main/java/bisq/desktop/main/account/register/AgentRegistrationView.java (2)
    M desktop/src/main/java/bisq/desktop/main/dao/economy/dashboard/BsqDashboardView.java (36)
    M desktop/src/main/java/bisq/desktop/main/debug/DebugView.java (8)
    M desktop/src/main/java/bisq/desktop/main/funds/deposit/DepositView.java (25)
    M desktop/src/main/java/bisq/desktop/main/market/MarketView.java (32)
    M desktop/src/main/java/bisq/desktop/main/market/spread/SpreadView.java (2)
    M desktop/src/main/java/bisq/desktop/main/market/spread/SpreadViewModel.java (2)
    M desktop/src/main/java/bisq/desktop/main/market/trades/TradesChartsView.java (96)
    M desktop/src/main/java/bisq/desktop/main/market/trades/TradesChartsViewModel.java (33)
    M desktop/src/main/java/bisq/desktop/main/offer/MutableOfferDataModel.java (6)
    M desktop/src/main/java/bisq/desktop/util/FormBuilder.java (2)
    M desktop/src/main/java/bisq/desktop/util/GUIUtil.java (37)
    M desktop/src/main/resources/logback.xml (3)
    M desktop/src/test/java/bisq/desktop/main/market/trades/TradesChartsViewModelTest.java (72)
    M gradle/witness/gradle-witness.gradle (2)
    M monitor/src/main/java/bisq/monitor/Monitor.java (3)
    M monitor/src/main/java/bisq/monitor/metric/MarketStats.java (16)
    M monitor/src/main/java/bisq/monitor/metric/P2PMarketStats.java (6)
    M monitor/src/main/java/bisq/monitor/metric/P2PNetworkLoad.java (2)
    M monitor/src/main/java/bisq/monitor/metric/P2PSeedNodeSnapshot.java (11)
    M monitor/src/main/java/bisq/monitor/metric/PriceNodeStats.java (3)
    M monitor/src/main/java/bisq/monitor/metric/TorRoundTripTime.java (3)
    M monitor/src/main/java/bisq/monitor/metric/TorStartupTime.java (2)
    M p2p/src/main/java/bisq/network/p2p/DecryptedDirectMessageListener.java (2)
    M p2p/src/main/java/bisq/network/p2p/P2PService.java (338)
    M p2p/src/main/java/bisq/network/p2p/PrefixedSealedAndSignedMessage.java (7)
    M p2p/src/main/java/bisq/network/p2p/network/Connection.java (78)
    M p2p/src/main/java/bisq/network/p2p/network/NetworkNode.java (9)
    M p2p/src/main/java/bisq/network/p2p/network/SynchronizedProtoOutputStream.java (6)
    M p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java (0)
    M p2p/src/main/java/bisq/network/p2p/peers/getdata/RequestDataManager.java (0)
    M p2p/src/main/java/bisq/network/p2p/peers/peerexchange/GetPeersRequestHandler.java (0)
    M p2p/src/main/java/bisq/network/p2p/peers/peerexchange/Peer.java (0)
    M p2p/src/main/java/bisq/network/p2p/peers/peerexchange/PeerExchangeHandler.java (0)
    M p2p/src/main/java/bisq/network/p2p/peers/peerexchange/PeerExchangeManager.java (0)
    M p2p/src/main/java/bisq/network/p2p/peers/peerexchange/PeerList.java (0)
    M p2p/src/main/java/bisq/network/p2p/peers/peerexchange/messages/GetPeersRequest.java (0)
    M p2p/src/main/java/bisq/network/p2p/peers/peerexchange/messages/GetPeersResponse.java (0)
    M p2p/src/main/java/bisq/network/p2p/storage/HashMapChangedListener.java (0)
    M p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java (0)
    M p2p/src/main/java/bisq/network/p2p/storage/persistence/AppendOnlyDataStoreService.java (0)
    M p2p/src/main/java/bisq/network/p2p/storage/persistence/HistoricalDataStoreService.java (0)
    M p2p/src/main/java/bisq/network/p2p/storage/persistence/MapStoreService.java (0)
    M p2p/src/main/java/bisq/network/p2p/storage/persistence/ProtectedDataStoreService.java (0)
    M p2p/src/main/java/bisq/network/p2p/storage/persistence/ResourceDataStoreService.java (0)
    M p2p/src/main/java/bisq/network/p2p/storage/persistence/StoreService.java (0)
    D p2p/src/main/resources/TradeStatistics2Store_BTC_MAINNET (0)
    A p2p/src/main/resources/TradeStatistics3Store_1.4.0_BTC_MAINNET (0)
    M p2p/src/test/java/bisq/network/p2p/MockNode.java (0)
    M p2p/src/test/java/bisq/network/p2p/storage/mocks/MapStoreServiceFake.java (0)
    M proto/src/main/proto/grpc.proto (0)
    M proto/src/main/proto/pb.proto (0)
    M relay/src/main/resources/version.txt (0)
    M seednode/src/main/java/bisq/seednode/SeedNodeMain.java (0)

-- Patch Links --

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


More information about the bisq-github mailing list