Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Track v0.17.0 changes #1178

Closed
1 task done
doitian opened this issue Jul 4, 2019 · 0 comments
Closed
1 task done

Track v0.17.0 changes #1178

doitian opened this issue Jul 4, 2019 · 0 comments

Comments

@doitian
Copy link
Member

doitian commented Jul 4, 2019

Features

Bug Fixes

Improvements

  • perf: Reveal network errors and involver handle it #1072: Reveal network errors and involver handle it (@keroro520)

    • feat: Reveal network errors. Currently, when CKBProtocolContext receives an error from p2p, it only logs the error and doesn't return to the caller. I change to CKBProtocolContext return the error to the caller, and caller handles it.

    • perf: Short-circuiting break if occurs network error, Synchronizer responses Blocks and Transactions. This is the original intention of this PR. To achieve it, I have to make CKBProtocolContext reveals the network errors, which introduces most of the change code.

  • refactor: Define a general Filter struct #1073: Define a general Filter struct (@keroro520)

    • refactor: Define a Filter struct

    • feat: Use LruCache to avoid memory leaking

      If we use native HashMap/HashSet as cache/filter, we have to prevent memory overflow by timely check or else. Replacing HashMap/HashSet with LruCache help us limit the memory usage, and reduce works around pruning staled items.

  • perf: Avoid re-requesting blocks in orphan pool #1098: Avoid re-requesting blocks in orphan pool (@keroro520)

  • refactor(storage): use flatbuffer instead of bincode in storage #1032 storage: Use flatbuffer instead of bincode in storage (@yangby-cryptape)

    This is a breaking change: b:database

    Associated Issues

    Description

    • I use flatbuffer, not cfb. We can do it later.

    • I copy some code from ckb-protocol, not just use it, because:

      • Since the data is from local storage, we can ensure the data format shouldn't be malformed.

        Do expect(..) is safety for storage, but not safety for network.

      • I try to split those proto-types into different schemas, classify them according to their usages.

      • If required, we can rewrite proto-types for storage, and don't have to modify proto-types for network.

      • I rewrite some of them.

    • I just remove bincode from ckb-store, but I keep the bincode for computing hashes. We can do it later.

    • I can't remove serde from ckb-core, because:

      I think we should use jsonrpc-types for importing and exporting jsons and use Display for log outputs.

      Then we can remove serde from ckb-core.

    BREAKING CHANGE

    The data format in storage is changed.

  • perf: skip stored block processing #1126: Skip stored block processing (@quake)

Misc

Doc

@doitian doitian closed this as completed Jul 10, 2019
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

No branches or pull requests

1 participant