Skip to content
This repository has been 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

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
@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
## [@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.

2 participants