<p>New commit is <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/bisq-network/bisq/commit/bdfe32bd18d246fb947700baf4194957fad38f96/hovercard" href="https://github.com/bisq-network/bisq/commit/bdfe32bd18d246fb947700baf4194957fad38f96"><tt>bdfe32b</tt></a></p>
<p>The remove code checks to ensure these fields match, but the add code<br>
never did. This could lead to a situation where a MailboxStoragePayload<br>
could be added, but never removed.</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/3609'>https://github.com/bisq-network/bisq/pull/3609</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>[BUGFIX] Don't try and remove() if addMailboxData() fails</li>
  <li>[REFACTOR] P2PDataStorage::addPersistableNetworkPayload()</li>
  <li>[REFACTOR] P2PDataStorage::addProtectedStorageEntry()</li>
  <li>[REFACTOR] P2PDataStorage::refreshTTL()</li>
  <li>[REFACTOR] P2PDataStorage::remove()</li>
  <li>[REFACTOR] P2PDataStorage::removeMailboxData()</li>
  <li>[PR COMMENTS] Clean up logging messages</li>
  <li>Update behavior of P2PDataStorage::addProtectedStorageEntry() on duplicates</li>
  <li>Update behavior of P2PDataStorage::refreshTTL() on duplicates</li>
  <li>Update behavior of P2PDataStorage::remove() & removeMailboxData() on duplicate sequence #s</li>
  <li>Use dependency injected Clock in P2PDataStore</li>
  <li>[REFACTOR] Clean up ProtectedStorageEntry ctor</li>
  <li>Use Clock in ProtectedStorageEntry</li>
  <li>[TESTS] Use ClockFake in tests to control time</li>
  <li>[TESTS] Test onBootstrapComplete()</li>
  <li>[TESTS] Lower entries required for purge in tests</li>
  <li>[REFACTOR] Remove duplicated code in refreshTTL</li>
  <li>[TESTS] Add more tests around mis-wrapped ProtectedStorageEntrys</li>
  <li>[REFACTOR] ProtectedStorageEntry::validForAddOperation()</li>
  <li>[REFACTOR] ProtectedStorageEntry::isValidForRemoveOperation()</li>
  <li>[REFACTOR] Remove checkPublicKeys()</li>
  <li>Clean up toString() methods</li>
  <li>[REFACTOR] Move signature validation behind isValidForAddOperation()</li>
  <li>[REFACTOR] Move signature validation behind isValidForRemoveOperation()</li>
  <li>[REFACTOR] Move receiversPubKey check behind isValidForRemoveOperation()</li>
  <li>Remove duplicate check in refreshTTL</li>
  <li>Introduce isMetadataEquals and use it</li>
  <li>[TESTS] Update remove validation with BroadcastMessage type</li>
  <li>Combine remove() and removeMailboxData()</li>
  <li>[PR COMMENTS] Logging format and function rename</li>
  <li>[TESTS] Start deprecating integrations tests</li>
  <li>[TESTS] Remove dead tests and code</li>
  <li>[DEAD CODE] Remove unused functions and imports</li>
  <li>[DEAD CODE] Remove obsolete tests</li>
  <li>[TESTS] Add JavaDocs for test objects</li>
  <li>[TESTS] Split monolithic P2PDataStoreTest into separate files</li>
  <li>[TESTS] Clean up TestState static methods</li>
  <li>[TESTS] Make SavedTestState ctor private to TestState</li>
  <li>[TESTS] Add missing license text to test files</li>
  <li>[TESTS] Rename P2PDataStoreTest</li>
  <li>Add payload safety checks in ProtectedStorageEntry</li>
  <li>[REFACTOR] Clean up removeExpiredEntries</li>
  <li>[BUGFIX] Correctly remove PersistablePayload in onDisconnect path</li>
  <li>[REFACTOR] Use common path for updating map/data store on remove</li>
  <li>[BUGFIX] Validate Entry.receiversPubKey for MailboxPayloads</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-0">common/src/main/java/bisq/common/proto/network/NetworkProtoResolver.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-1">core/src/main/java/bisq/core/proto/CoreProtoResolver.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-2">core/src/main/java/bisq/core/proto/network/CoreNetworkProtoResolver.java</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-3">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/3609/files#diff-4">monitor/src/main/java/bisq/monitor/metric/P2PSeedNodeSnapshotBase.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-5">p2p/src/main/java/bisq/network/p2p/P2PService.java</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-6">p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java</a>
    (472)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-7">p2p/src/main/java/bisq/network/p2p/storage/payload/ProtectedMailboxStorageEntry.java</a>
    (168)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-8">p2p/src/main/java/bisq/network/p2p/storage/payload/ProtectedStorageEntry.java</a>
    (189)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-9">p2p/src/test/java/bisq/network/p2p/TestUtils.java</a>
    (5)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-10">p2p/src/test/java/bisq/network/p2p/storage/ObsoleteP2PDataStorageTest.java</a>
    (217)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-11">p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageClientAPITest.java</a>
    (242)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-12">p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageOnMessageHandlerTest.java</a>
    (101)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-13">p2p/src/test/java/bisq/network/p2p/storage/P2PDataStoragePersistableNetworkPayloadTest.java</a>
    (195)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-14">p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageProtectedStorageEntryTest.java</a>
    (630)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-15">p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageRemoveExpiredTest.java</a>
    (196)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-16">p2p/src/test/java/bisq/network/p2p/storage/P2PDataStorageTest.java</a>
    (1526)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-17">p2p/src/test/java/bisq/network/p2p/storage/P2PDataStoreDisconnectTest.java</a>
    (203)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-18">p2p/src/test/java/bisq/network/p2p/storage/ProtectedDataStorageTest.java</a>
    (229)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-19">p2p/src/test/java/bisq/network/p2p/storage/TestState.java</a>
    (373)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-20">p2p/src/test/java/bisq/network/p2p/storage/messages/AddDataMessageTest.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-21">p2p/src/test/java/bisq/network/p2p/storage/mocks/AppendOnlyDataStoreServiceFake.java</a>
    (6)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-22">p2p/src/test/java/bisq/network/p2p/storage/mocks/ClockFake.java</a>
    (54)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-23">p2p/src/test/java/bisq/network/p2p/storage/mocks/DateTolerantPayloadStub.java</a>
    (7)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-24">p2p/src/test/java/bisq/network/p2p/storage/mocks/ExpirableProtectedStoragePayloadStub.java</a>
    (59)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-25">p2p/src/test/java/bisq/network/p2p/storage/mocks/PersistableExpirableProtectedStoragePayloadStub.java</a>
    (40)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-26">p2p/src/test/java/bisq/network/p2p/storage/mocks/PersistableNetworkPayloadStub.java</a>
    (7)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-27">p2p/src/test/java/bisq/network/p2p/storage/mocks/ProtectedDataStoreServiceFake.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-28">p2p/src/test/java/bisq/network/p2p/storage/mocks/ProtectedStoragePayloadStub.java</a>
    (10)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-29">p2p/src/test/java/bisq/network/p2p/storage/payload/ProtectedMailboxStorageEntryTest.java</a>
    (199)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/bisq-network/bisq/pull/3609/files#diff-30">p2p/src/test/java/bisq/network/p2p/storage/payload/ProtectedStorageEntryTest.java</a>
    (252)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/bisq-network/bisq/pull/3609.patch'>https://github.com/bisq-network/bisq/pull/3609.patch</a></li>
  <li><a href='https://github.com/bisq-network/bisq/pull/3609.diff'>https://github.com/bisq-network/bisq/pull/3609.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/3609?email_source=notifications&email_token=AJFFTNSWGDVQJMLXRRTEYPLQTWJLVA5CNFSM4JNPVW22YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HZMYEEQ">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJFFTNRL2LYBXBX5252LEXLQTWJLVANCNFSM4JNPVW2Q">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AJFFTNVISZTGYBRFBBZYJG3QTWJLVA5CNFSM4JNPVW22YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HZMYEEQ.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/3609?email_source=notifications\u0026email_token=AJFFTNSWGDVQJMLXRRTEYPLQTWJLVA5CNFSM4JNPVW22YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HZMYEEQ",
"url": "https://github.com/bisq-network/bisq/pull/3609?email_source=notifications\u0026email_token=AJFFTNSWGDVQJMLXRRTEYPLQTWJLVA5CNFSM4JNPVW22YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HZMYEEQ",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>