<p>While reseaching for the app-freeze problem a user reported I looked closer to the changes in our persistence framework. There have been added thread-safety to PersistableEnvelope classes. While trying to figure out if those changes might cause a deadlock in some rare edge cases I came to the conclusion that the overall model is not reflecting well our requirements. Worse it had a lot of resource waste by creating new threads very frequently which got terminated mostly without doing actual work.<br>
Beside that I questioned the need to persist the data that frequently. We read data only at startup (with a few irrelevant exceptions). Writing the data at shutdown would be sufficient for most type of data. The resource heavy data are the DaoState and the Trade statistics as well as SequenceNumberMap which gets updated very frequently. All those data have very low priority and can be recovered in case of a sever crash. For more critical data like disputeList or trades we use a timer which writes to disk a minute after a persist request got called. We could improve that by calling a persistNow just at the moments when critical state changes happen (e.g. in a trade). Atm I left all the write requests as it was before and they basically trigger a request at any data change of an object.<br>
To run those operations on the user thread avoids all the issues with threading and risk of deadlocks. The total performance is for sure better as before as it removed a lot of wasted efforts. If really needed we could introduce a threaded version as well with callback handling, but I guess that is not needed.</p>
<p>The changes are quite heavy over many places. Some are pure refactoring but many are also design changes, like that the data objects are not responsible themselves anymore for persistence but their owner (e.g. trademanager not trade). So that made the overall architecture more clear.</p>
<p>I leave it WIP for now as it needs much more testing and I might add persistNow calls for the critical state changes and might eliminate request calls for  irrelevant data changes.</p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/bisq-network/bisq/pull/4527'>https://github.com/bisq-network/bisq/pull/4527</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>Move read code from file manager to storage</li>
  <li>Remove FileManager class</li>
  <li>Replace init methods with getPersisted</li>
  <li>Change API for Storage</li>
  <li>Use Userthread executor instead of new thread (WIP)</li>
  <li>Flush to disk at shutdown</li>
  <li>Refactor: Rename class</li>
  <li>Refactor: Rename package</li>
  <li>Refactor: Rename queueUpForSave to persistAtShutDown</li>
  <li>Add Priority enum</li>
  <li>Remove removeAndBackupFile call</li>
  <li>Change PersistenceManager.Priority</li>
  <li>Refactor: Rename method and variable</li>
  <li>Add timer to write to disk if data has high prio</li>
  <li>Change log level</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-247ca8a00a281db956d9fa0839e939bb">common/src/main/java/bisq/common/crypto/KeyStorage.java</a>
    (2)
  </li>
  <li>
    <strong>R</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-36ed4b734b955d321a49f312af9a3b25">common/src/main/java/bisq/common/persistence/CorruptedDatabaseFilesHandler.java</a>
    (2)
  </li>
  <li>
    <strong>R</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-2aab34eb67066636dae5876df284e0ec">common/src/main/java/bisq/common/persistence/FileUtil.java</a>
    (21)
  </li>
  <li>
    <strong>R</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-a26fcf058c747db91ffb1d53161b87b7">common/src/main/java/bisq/common/persistence/JsonFileManager.java</a>
    (8)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-f4550812f524c87992c94670713b90b6">common/src/main/java/bisq/common/persistence/PersistenceManager.java</a>
    (306)
  </li>
  <li>
    <strong>R</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-3b391e5de4ba3f56b98cc15aa0dbecac">common/src/main/java/bisq/common/persistence/ResourceNotFoundException.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-9d9052046932deaf1c3fc5a21f083103">common/src/main/java/bisq/common/proto/persistable/PersistableEnvelope.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-5c45d321af4815b655248cedfb46627c">common/src/main/java/bisq/common/proto/persistable/PersistableList.java</a>
    (62)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-49edadbc7cc2b408cde2f35639582a3f">common/src/main/java/bisq/common/proto/persistable/ThreadedPersistableEnvelope.java</a>
    (44)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-e3254db84514d111b29e581baef1d305">common/src/main/java/bisq/common/proto/persistable/UserThreadMappedPersistableEnvelope.java</a>
    (45)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-277fdd1626aeb0a82c67fe47ba6d9a11">common/src/main/java/bisq/common/proto/persistable/UserThreadMappedPersistableList.java</a>
    (31)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-da0c14fbd6b9b0a2cdf500d353864623">common/src/main/java/bisq/common/storage/FileManager.java</a>
    (252)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-5f2f17bf52f3cb1e19c3d643944c5441">common/src/main/java/bisq/common/storage/Storage.java</a>
    (183)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-f54fd83e87ddb67b0e63f048b898f9e8">core/src/main/java/bisq/core/account/sign/SignedWitnessStorageService.java</a>
    (13)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-d41c2b0482b3a816bdc6937013840693">core/src/main/java/bisq/core/account/sign/SignedWitnessStore.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-fee209e3a15872104ac8dce473f74835">core/src/main/java/bisq/core/account/witness/AccountAgeWitnessStorageService.java</a>
    (13)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-c69601cb63d42ddee3aec5bea1d388fc">core/src/main/java/bisq/core/account/witness/AccountAgeWitnessStore.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-666314b6a179e5da1812adb6fbdbd778">core/src/main/java/bisq/core/app/AvoidStandbyModeService.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-151b69c4f6e62667c2af489def6c96ac">core/src/main/java/bisq/core/app/BisqExecutable.java</a>
    (29)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-84f452890342bd723db5bc8caf45473c">core/src/main/java/bisq/core/app/BisqHeadlessApp.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-3076f49fb0ce6351cc376a051c5aec47">core/src/main/java/bisq/core/app/TorSetup.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-1052338fe11283a233a5d9d732f68893">core/src/main/java/bisq/core/app/misc/AppSetup.java</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-04ac371732915bccd364389ca3d7d3a1">core/src/main/java/bisq/core/app/misc/ExecutableForAppWithP2p.java</a>
    (49)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-d0a6fa46710a2fe6bb6c4855d5064dc1">core/src/main/java/bisq/core/btc/model/AddressEntryList.java</a>
    (27)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-2aef55dfcdfabcdf98c19ede9971e3bd">core/src/main/java/bisq/core/btc/setup/WalletsSetup.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-66ab05261be96f603c871b25c67367d6">core/src/main/java/bisq/core/dao/governance/ballot/BallotListService.java</a>
    (17)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-caf2002010cf60cce66ec04c6ff8b331">core/src/main/java/bisq/core/dao/governance/blindvote/MyBlindVoteList.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-aedfd5cdf12ab48407310af7b4330293">core/src/main/java/bisq/core/dao/governance/blindvote/MyBlindVoteListService.java</a>
    (17)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-00c9e0a32ca2c0aa44d4f09fb25f750b">core/src/main/java/bisq/core/dao/governance/blindvote/storage/BlindVoteStorageService.java</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-647f4a6227bb0da94e169c7a3b4df597">core/src/main/java/bisq/core/dao/governance/blindvote/storage/BlindVoteStore.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-bbcdaffe68144139cc49111fdcf2db76">core/src/main/java/bisq/core/dao/governance/bond/reputation/MyReputationList.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-bf442b52716cb3cd4169e35f2e1c89ce">core/src/main/java/bisq/core/dao/governance/bond/reputation/MyReputationListService.java</a>
    (16)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-83315ff698dc70bb097daa3d3aafdeb7">core/src/main/java/bisq/core/dao/governance/myvote/MyVoteList.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-b9eed5c2dcef41d01ee2669f219dd47f">core/src/main/java/bisq/core/dao/governance/myvote/MyVoteListService.java</a>
    (19)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-c48be586f745d4ab9e958f3e54263cf9">core/src/main/java/bisq/core/dao/governance/proofofburn/MyProofOfBurnList.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-4257373dc36d9f295f42f00d8e12e6e0">core/src/main/java/bisq/core/dao/governance/proofofburn/MyProofOfBurnListService.java</a>
    (16)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-c874fe054d6699974d72f5500ad3a514">core/src/main/java/bisq/core/dao/governance/proposal/MyProposalList.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-c77ce4f2c750f58a2d101fd6a980cbd9">core/src/main/java/bisq/core/dao/governance/proposal/MyProposalListService.java</a>
    (17)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-08346658fe4cf809e83fa8c5e6027516">core/src/main/java/bisq/core/dao/governance/proposal/storage/appendonly/ProposalStorageService.java</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-90bfd129fda4cceee2a2e3adc80f0599">core/src/main/java/bisq/core/dao/governance/proposal/storage/appendonly/ProposalStore.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-11af1d2e21ff32650ac2f52526ca5c21">core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalStorageService.java</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-cd988523bfaba5645ae2dca608ddef8a">core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalStore.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-a8f0a07a66ff84a1e6b7d252e7a290b9">core/src/main/java/bisq/core/dao/monitoring/DaoStateMonitoringService.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-15853bc7835ebcf484ac607168a5d1b3">core/src/main/java/bisq/core/dao/node/explorer/ExportJsonFilesService.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-d2840605cffb0ddb509492650a57ecff">core/src/main/java/bisq/core/dao/state/DaoStateStorageService.java</a>
    (47)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-e4adda6eb72da8ffff3245b4e11999e0">core/src/main/java/bisq/core/dao/state/DaoStateStore.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-dd6c4bfb4c099ba16b8d82403585acad">core/src/main/java/bisq/core/dao/state/model/governance/BallotList.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-1fbdb477d9cca62520f84810afc072a3">core/src/main/java/bisq/core/dao/state/unconfirmed/UnconfirmedBsqChangeOutputList.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-a7a206aab76e80ddf1e297e243d73f2b">core/src/main/java/bisq/core/dao/state/unconfirmed/UnconfirmedBsqChangeOutputListService.java</a>
    (17)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-c741466832c4479dfbb2db1da81f7a59">core/src/main/java/bisq/core/notifications/alerts/DisputeMsgEvents.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-cac321c43100d29106b36bd1a4c69cba">core/src/main/java/bisq/core/offer/OfferBookService.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-f960546989ba1c3d5d53d32fded2c6c4">core/src/main/java/bisq/core/offer/OpenOffer.java</a>
    (24)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-021fecd2aa27fad782894de17e8fe732">core/src/main/java/bisq/core/offer/OpenOfferManager.java</a>
    (49)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-f02bb74fc5567ee11cd6c8a6c58fe504">core/src/main/java/bisq/core/payment/PaymentAccountList.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-7797e84941bbe8ab1a6abf8eac281d85">core/src/main/java/bisq/core/proto/persistable/CorePersistenceProtoResolver.java</a>
    (18)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-cda7d40808cfbc74c5b87d210c3649b8">core/src/main/java/bisq/core/support/dispute/Dispute.java</a>
    (27)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-7b7b58652dc7a7d69b825662b96d4d86">core/src/main/java/bisq/core/support/dispute/DisputeList.java</a>
    (73)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-b7b502442a42ce16bd4202a16b36c58b">core/src/main/java/bisq/core/support/dispute/DisputeListService.java</a>
    (35)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-27340c4c147f46b771dc7a08bbd38a6b">core/src/main/java/bisq/core/support/dispute/DisputeManager.java</a>
    (37)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-1dacc663610af44a0f4fcee16cbb4cb4">core/src/main/java/bisq/core/support/dispute/agent/MultipleHolderNameDetection.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-6c98a4cf88b2b697f29951a22022d7bf">core/src/main/java/bisq/core/support/dispute/arbitration/ArbitrationDisputeList.java</a>
    (34)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-1048c561181b77769fc83e926fed066a">core/src/main/java/bisq/core/support/dispute/arbitration/ArbitrationDisputeListService.java</a>
    (13)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-ad25145d2a5b56a4bcf0c91856f279de">core/src/main/java/bisq/core/support/dispute/arbitration/ArbitrationManager.java</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-5d7bae1f81ba15bc2071373719802251">core/src/main/java/bisq/core/support/dispute/mediation/MediationDisputeList.java</a>
    (29)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-eb8ae71fcb38959da08c94b2f9beb2ff">core/src/main/java/bisq/core/support/dispute/mediation/MediationDisputeListService.java</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-175b341b16337976b323e2347d4c74b2">core/src/main/java/bisq/core/support/dispute/mediation/MediationManager.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-b7951e1f39d08abb52d0830ec757dca7">core/src/main/java/bisq/core/support/dispute/refund/RefundDisputeList.java</a>
    (35)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-fdda05be22118318492be8eba65d45fc">core/src/main/java/bisq/core/support/dispute/refund/RefundDisputeListService.java</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-ace16f12e9aa58cdfb2b62922d7f4d62">core/src/main/java/bisq/core/support/dispute/refund/RefundManager.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-0d900d7ffd1edf96ceb4f0b16c1f7d20">core/src/main/java/bisq/core/support/traderchat/TraderChatManager.java</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-26afb205c56203e523096f3088e99ee0">core/src/main/java/bisq/core/trade/BuyerAsMakerTrade.java</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-0e852549184765ee96eb4ebc855ba50f">core/src/main/java/bisq/core/trade/BuyerAsTakerTrade.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-7d9f575b1e9896f9c0532f5bf8839b33">core/src/main/java/bisq/core/trade/BuyerTrade.java</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-1a0c3e2143619cb25b594ace1f0797f5">core/src/main/java/bisq/core/trade/DumpDelayedPayoutTx.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-4b71baa12613c87d16e3bd61a712ffdc">core/src/main/java/bisq/core/trade/SellerAsMakerTrade.java</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-3b7197d0271da46899d0981540e68b87">core/src/main/java/bisq/core/trade/SellerAsTakerTrade.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-618e7451b699d9b18f20d4e4ffeaab53">core/src/main/java/bisq/core/trade/SellerTrade.java</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-de7219d9ec691ce16c505868ad7eee5f">core/src/main/java/bisq/core/trade/TradableList.java</a>
    (72)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-0af080d552e467803896267f8199c544">core/src/main/java/bisq/core/trade/Trade.java</a>
    (31)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-5bdbc074df621c9b94b16c72ca834894">core/src/main/java/bisq/core/trade/TradeManager.java</a>
    (40)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-718de6e056cc434320fb5e2b3d3e7f51">core/src/main/java/bisq/core/trade/closed/ClosedTradableManager.java</a>
    (36)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-22dc8ba2292641ac9123887a259c3e62">core/src/main/java/bisq/core/trade/failed/FailedTradesManager.java</a>
    (30)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-12ec2e36c5d1f9da8903a6e846b8eed9">core/src/main/java/bisq/core/trade/statistics/TradeStatistics2StorageService.java</a>
    (14)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-f12e49a26a007a7123c25619a2830837">core/src/main/java/bisq/core/trade/statistics/TradeStatistics2Store.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-b9fe3b1058923a7dda73e026c9513b16">core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-93fa2d63ee6efe3f8daddf00e1074401">core/src/main/java/bisq/core/user/Preferences.java</a>
    (21)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-22930c0c83b6a4f4b6eb7d71d4bf39ea">core/src/main/java/bisq/core/user/PreferencesPayload.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-99dd35d965ed0b14a3dc4ae199eee184">core/src/main/java/bisq/core/user/User.java</a>
    (22)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-40c16cce7f21ac7e6550a32b015321fe">core/src/main/java/bisq/core/user/UserPayload.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-4623a1ff7f01f974693bcb96a2d6a512">core/src/test/java/bisq/core/crypto/EncryptionTest.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-e6b8fcf17af82ba32ef86ed7b7aa817e">core/src/test/java/bisq/core/crypto/SigTest.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-b85e171bd7932f855c937472393c1183">core/src/test/java/bisq/core/dao/governance/ballot/BallotListServiceTest.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-30aeca40e71120b7ea170643b84501e2">core/src/test/java/bisq/core/dao/governance/proposal/MyProposalListServiceTest.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-fb2dcd172aa00196ce76338e308e7a31">core/src/test/java/bisq/core/offer/OpenOfferManagerTest.java</a>
    (20)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-4e70bc02abed194f76f532e859ac30eb">core/src/test/java/bisq/core/trade/TradableListTest.java</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-51da5d1ace2f5d3fd916a5df666a1e2b">core/src/test/java/bisq/core/user/PreferencesTest.java</a>
    (15)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-6bcdcea69cee029e1e14a0e6f4b63e7c">desktop/src/main/java/bisq/desktop/Navigation.java</a>
    (14)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-983f465fba37d94e2376c264467401b8">desktop/src/main/java/bisq/desktop/main/MainViewModel.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-f0b2622ac24a200abd3b460d4bac1d72">desktop/src/main/java/bisq/desktop/main/SharedPresentation.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-5ea7775f5328dc916b5305c40c4e9345">desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-6b51bec56185aba294d5ca517840f210">desktop/src/main/java/bisq/desktop/main/account/content/backup/BackupView.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-76352ea19f4c4b95ff2e3a16fcfef1a6">desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsDataModel.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-522c769925610d8eae301e8a3a5eccff">desktop/src/main/java/bisq/desktop/main/overlays/windows/ContractWindow.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-0687516b9d17b1b6bdcf472ae7434fbc">desktop/src/main/java/bisq/desktop/main/overlays/windows/DisputeSummaryWindow.java</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-fe7c0115bdbb949918c317fd1a26840a">desktop/src/main/java/bisq/desktop/main/overlays/windows/downloadupdate/DownloadTask.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-62811e6004bb38ee1ee37843f31cc035">desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/PendingTradesDataModel.java</a>
    (7)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-58c7c15e2a4bf339d573f45a9d838bbd">desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-ea30f419e33ac565b5891e1a56a95f48">desktop/src/main/java/bisq/desktop/main/support/dispute/agent/DisputeAgentView.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-098e0992d055ff9ddb11ebc2ce88cf16">desktop/src/main/java/bisq/desktop/main/support/dispute/client/DisputeClientView.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-99f9124929ef2a0358af2aa1d2d07a2e">desktop/src/main/java/bisq/desktop/util/GUIUtil.java</a>
    (54)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-78d90a9830caf104d321901a5afbed80">desktop/src/test/java/bisq/desktop/GuiceSetupTest.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-2ab5a4cb3d7a991c9b650c0ed91fa7eb">desktop/src/test/java/bisq/desktop/main/portfolio/editoffer/EditOfferDataModelTest.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-f23d158144ebc963ef3d44332a1706c2">desktop/src/test/java/bisq/desktop/maker/PreferenceMakers.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-8a37ef9dcb6cc131a581fbcdb37050f5">monitor/src/main/java/bisq/monitor/metric/P2PMarketStats.java</a>
    (11)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-0ba2bc60ae1d88a1c89f58bf6b5e546e">monitor/src/main/java/bisq/monitor/metric/P2PNetworkLoad.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-a6cabf2f4a93365311baea3d2b6011fd">monitor/src/main/java/bisq/monitor/metric/P2PSeedNodeSnapshot.java</a>
    (11)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-f374ac46a42572bd5cf822a032d8df60">p2p/src/main/java/bisq/network/p2p/network/TorMode.java</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-a68598a1286ab69eb9ef04051f87f246">p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java</a>
    (35)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-11189b9c82104dbc1d9d13d7077b14c6">p2p/src/main/java/bisq/network/p2p/peers/peerexchange/PeerList.java</a>
    (13)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-926901286366061dc8575034045cb922">p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java</a>
    (22)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-27d3eec44fcbd8d9a7b864bbf7efaa5c">p2p/src/main/java/bisq/network/p2p/storage/persistence/MapStoreService.java</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-a7cf2891d9c98b6bbd99d361ea93ce12">p2p/src/main/java/bisq/network/p2p/storage/persistence/SequenceNumberMap.java</a>
    (11)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-ee1f4922cf5b366bf0ac62e33eaeeab0">p2p/src/main/java/bisq/network/p2p/storage/persistence/StoreService.java</a>
    (46)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-6044e1fcc32b0f16d53b2e5c5e76ee0f">p2p/src/test/java/bisq/network/crypto/EncryptionServiceTests.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-51cf00817695f964992bc6a4aee433e0">p2p/src/test/java/bisq/network/p2p/MockNode.java</a>
    (11)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-13bd8636e771defde3fc57ec247637c6">p2p/src/test/java/bisq/network/p2p/storage/TestState.java</a>
    (39)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-31addf3cb1fe9ca45d4634fc8646148e">p2p/src/test/java/bisq/network/p2p/storage/mocks/MapStoreServiceFake.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-abeef191d5fb3a4026246a598628d464">seednode/src/main/resources/logback.xml</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/4527/files#diff-c97180aa6dff297544eb5e2edc098797">statsnode/src/main/resources/logback.xml</a>
    (3)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/bisq-network/bisq/pull/4527.patch'>https://github.com/bisq-network/bisq/pull/4527.patch</a></li>
  <li><a href='https://github.com/bisq-network/bisq/pull/4527.diff'>https://github.com/bisq-network/bisq/pull/4527.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/bisq-network/bisq/pull/4527">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJFFTNQKNW4VTUXWD2C6LQLSF4FDBANCNFSM4RMUJAIA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AJFFTNUNPQBPVCYHR363JVTSF4FDBA5CNFSM4RMUJAIKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4KOSQUAQ.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/bisq-network/bisq/pull/4527",
"url": "https://github.com/bisq-network/bisq/pull/4527",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>