Skip to content

kad: Refactor GetRecord query and add tests#97

Merged
lexnv merged 19 commits intomasterfrom
lexnv/refactor-get-records
May 16, 2024
Merged

kad: Refactor GetRecord query and add tests#97
lexnv merged 19 commits intomasterfrom
lexnv/refactor-get-records

Conversation

@lexnv
Copy link
Collaborator

@lexnv lexnv commented Apr 29, 2024

This PR refactors the GetRecord query to make it more robust.

  • Avoid panics on unwraps and unimplemented logic
  • Separate config immutable variables from main query logic
  • Simplifies logic of next_action method
  • Private methods for internal logic

Builds on top of: #96

cc @paritytech/networking

@lexnv lexnv self-assigned this Apr 29, 2024
@lexnv lexnv changed the title kad: Refactor GetRecord query kad: Refactor GetRecord query and add tests Apr 30, 2024
Copy link
Collaborator

@dmitry-markin dmitry-markin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Base automatically changed from lenxv/expose-peer-records to master May 16, 2024 11:16
lexnv added 2 commits May 16, 2024 14:21
@lexnv lexnv merged commit 5548223 into master May 16, 2024
@lexnv lexnv deleted the lexnv/refactor-get-records branch May 16, 2024 11:50
@lexnv lexnv mentioned this pull request May 24, 2024
lexnv added a commit that referenced this pull request May 24, 2024
## [0.5.0] - 2023-05-24

This is a small patch release that makes the `FindNode` command a bit
more robst:

- The `FindNode` command now retains the K (replication factor) best
results.
- The `FindNode` command has been updated to handle errors and
unexpected states without panicking.

### Changed

- kad: Refactor FindNode query, keep K best results and add tests
([#114](#114))

## [0.4.0] - 2023-05-23

This release introduces breaking changes to the litep2p crate, primarily
affecting the `kad` module. Key updates include:

- The `GetRecord` command now exposes all peer records, not just the
latest one.
- A new `RecordType` has been introduced to clearly distinguish between
locally stored records and those discovered from the network.

Significant refactoring has been done to enhance the efficiency and
accuracy of the `kad` module. The updates are as follows:

- The `GetRecord` command now exposes all peer records.
- The `GetRecord` command has been updated to handle errors and
unexpected states without panicking.

Additionally, we've improved code coverage in the `kad` module by adding
more tests.

### Added

- Add release checklist
([#115](#115))
- Re-export `multihash` & `multiaddr` types
([#79](#79))
- kad: Expose all peer records of `GET_VALUE` query
([#96](#96))

### Changed

- multistream_select: Remove unneeded changelog.md
([#116](#116))
- kad: Refactor `GetRecord` query and add tests
([#97](#97))
- kad/store: Set memory-store on an incoming record for PutRecordTo
([#88](#88))
- multistream: Dialer deny multiple /multistream/1.0.0 headers
([#61](#61))
- kad: Limit MemoryStore entries
([#78](#78))
- Refactor WebRTC code
([#51](#51))
- Revert "Bring `rustfmt.toml` in sync with polkadot-sdk (#71)"
([#74](#74))
- cargo: Update str0m from 0.4.1 to 0.5.1
([#95](#95))

### Fixed

- Fix clippy  ([#83](#83))
- crypto: Don't panic on unsupported key types
([#84](#84))

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Intel-driver added a commit to Intel-driver/litep2p that referenced this pull request Dec 24, 2025
## [0.5.0] - 2023-05-24

This is a small patch release that makes the `FindNode` command a bit
more robst:

- The `FindNode` command now retains the K (replication factor) best
results.
- The `FindNode` command has been updated to handle errors and
unexpected states without panicking.

### Changed

- kad: Refactor FindNode query, keep K best results and add tests
([#114](paritytech/litep2p#114))

## [0.4.0] - 2023-05-23

This release introduces breaking changes to the litep2p crate, primarily
affecting the `kad` module. Key updates include:

- The `GetRecord` command now exposes all peer records, not just the
latest one.
- A new `RecordType` has been introduced to clearly distinguish between
locally stored records and those discovered from the network.

Significant refactoring has been done to enhance the efficiency and
accuracy of the `kad` module. The updates are as follows:

- The `GetRecord` command now exposes all peer records.
- The `GetRecord` command has been updated to handle errors and
unexpected states without panicking.

Additionally, we've improved code coverage in the `kad` module by adding
more tests.

### Added

- Add release checklist
([#115](paritytech/litep2p#115))
- Re-export `multihash` & `multiaddr` types
([#79](paritytech/litep2p#79))
- kad: Expose all peer records of `GET_VALUE` query
([#96](paritytech/litep2p#96))

### Changed

- multistream_select: Remove unneeded changelog.md
([#116](paritytech/litep2p#116))
- kad: Refactor `GetRecord` query and add tests
([#97](paritytech/litep2p#97))
- kad/store: Set memory-store on an incoming record for PutRecordTo
([#88](paritytech/litep2p#88))
- multistream: Dialer deny multiple /multistream/1.0.0 headers
([#61](paritytech/litep2p#61))
- kad: Limit MemoryStore entries
([#78](paritytech/litep2p#78))
- Refactor WebRTC code
([#51](paritytech/litep2p#51))
- Revert "Bring `rustfmt.toml` in sync with polkadot-sdk (#71)"
([#74](paritytech/litep2p#74))
- cargo: Update str0m from 0.4.1 to 0.5.1
([#95](paritytech/litep2p#95))

### Fixed

- Fix clippy  ([#83](paritytech/litep2p#83))
- crypto: Don't panic on unsupported key types
([#84](paritytech/litep2p#84))

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants