Skip to content
This repository was archived by the owner on Jun 26, 2023. It is now read-only.

fix!: make peer store methods atomic #368

Merged
merged 9 commits into from
Apr 21, 2023
Merged

Conversation

achingbrain
Copy link
Member

The existing peer store interface has separate sub-stores for addresses, protocols, metadata, etc.

Each method is async due to the underlying datastore being async.

This means it's impossible to do atomic writes to the peer store if you have multiple sets of data to write.

Internally, however, the default peer store implementation stores the peer data as a single datastore entry keyed on the peer id.

This PR:

  1. Removes the sub-stores in favour of atomic set/update methods for peer data
  2. Removes @libp2p/peer-store specific init types
  3. Removes tagging methods in favour of set/update for peer data
  4. Removes references to consuming peer records since this is part of the identify protocol so should be handled there

Unverified

No user is associated with the committer email.
The existing peer store interface has separate sub-stores for addresses,
protocols, metadata, etc.

Each method is async due to the underlying datastore being async.

This means it's impossible to do atomic writes to the peer store if
you have multiple sets of data to write.

Internally, however, the default peer store implementation stores the
peer data as a single datastore entry keyed on the peer id.

This PR:

1. Removes the sub-stores in favour of atomic `set`/`update` methods for peer data
2. Removes `@libp2p/peer-store` specific init types
3. Removes tagging methods in favour of `set`/`update` for peer data
4. Removes references to consuming peer records since this is part of the identify protocol so should be handled there

Unverified

No user is associated with the committer email.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.

Unverified

No user is associated with the committer email.

Unverified

No user is associated with the committer email.

Unverified

No user is associated with the committer email.

Unverified

No user is associated with the committer email.

Unverified

No user is associated with the committer email.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
@achingbrain achingbrain marked this pull request as ready for review April 21, 2023 11:00
@achingbrain achingbrain merged commit 47c8b78 into master Apr 21, 2023
@achingbrain achingbrain deleted the fix/atomic-peer-store branch April 21, 2023 12:15
github-actions bot pushed a commit that referenced this pull request Apr 21, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
## [@libp2p/interface-peer-store-v2.0.0](https://github.com/libp2p/js-libp2p-interfaces/compare/@libp2p/interface-peer-store-v1.2.9...@libp2p/interface-peer-store-v2.0.0) (2023-04-21)

### ⚠ BREAKING CHANGES

* make peer store methods atomic (#368)

### Bug Fixes

* make peer store methods atomic ([#368](#368)) ([47c8b78](47c8b78))
@github-actions
Copy link

🎉 This PR is included in version @libp2p/interface-peer-store-v2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

None yet

2 participants