diff --git a/Cargo.lock b/Cargo.lock index 52e9edc716fd47..fb12d5dc497cea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -258,7 +258,7 @@ dependencies = [ "bcs 0.1.4", "bollard", "chrono", - "clap 4.4.12", + "clap 4.4.14", "clap_complete", "codespan-reporting", "dashmap", @@ -552,7 +552,7 @@ dependencies = [ "async-trait", "bcs 0.1.4", "bytes", - "clap 4.4.12", + "clap 4.4.14", "csv", "futures", "itertools 0.10.5", @@ -669,7 +669,7 @@ dependencies = [ "aptos-metrics-core", "aptos-types", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "criterion", "dashmap", "itertools 0.10.5", @@ -718,7 +718,7 @@ name = "aptos-cargo-cli" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.4.12", + "clap 4.4.14", "clap-verbosity-flag", "determinator", "env_logger", @@ -746,7 +746,7 @@ name = "aptos-cli-common" version = "1.0.0" dependencies = [ "anstyle", - "clap 4.4.12", + "clap 4.4.14", "clap_complete", ] @@ -773,7 +773,7 @@ dependencies = [ "aptos-vm-logging", "aptos-vm-types", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "futures", "itertools 0.10.5", "move-binary-format", @@ -894,7 +894,7 @@ dependencies = [ "bytes", "chrono", "claims", - "clap 4.4.12", + "clap 4.4.14", "dashmap", "enum_dispatch", "fail 0.5.1", @@ -1036,7 +1036,7 @@ name = "aptos-crypto-derive" version = "0.0.3" dependencies = [ "anyhow", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -1136,7 +1136,7 @@ dependencies = [ "bcs 0.1.4", "byteorder", "claims", - "clap 4.4.12", + "clap 4.4.14", "dashmap", "either", "itertools 0.10.5", @@ -1208,7 +1208,7 @@ dependencies = [ "aptos-vm", "async-trait", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "itertools 0.10.5", "owo-colors", "tokio", @@ -1224,7 +1224,7 @@ dependencies = [ "aptos-logger", "aptos-move-debugger", "aptos-push-metrics", - "clap 4.4.12", + "clap 4.4.14", "tokio", ] @@ -1281,7 +1281,7 @@ name = "aptos-enum-conversion-derive" version = "0.0.3" dependencies = [ "anyhow", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", "trybuild", @@ -1400,7 +1400,7 @@ dependencies = [ "async-trait", "bcs 0.1.4", "chrono", - "clap 4.4.12", + "clap 4.4.14", "derivative", "indicatif 0.15.0", "itertools 0.10.5", @@ -1437,7 +1437,7 @@ dependencies = [ "aptos-types", "aptos-vm", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "crossbeam-channel", "ctrlc", "dashmap", @@ -1564,7 +1564,7 @@ dependencies = [ "aptos-faucet-core", "aptos-logger", "aptos-sdk", - "clap 4.4.12", + "clap 4.4.14", "tokio", ] @@ -1580,7 +1580,7 @@ dependencies = [ "aptos-sdk", "async-trait", "captcha", - "clap 4.4.12", + "clap 4.4.14", "deadpool-redis", "enum_dispatch", "futures", @@ -1622,7 +1622,7 @@ dependencies = [ "anyhow", "aptos-faucet-core", "aptos-logger", - "clap 4.4.12", + "clap 4.4.14", "tokio", ] @@ -1634,7 +1634,7 @@ dependencies = [ "aptos-logger", "aptos-node-checker", "aptos-sdk", - "clap 4.4.12", + "clap 4.4.14", "env_logger", "futures", "gcp-bigquery-client", @@ -1671,7 +1671,7 @@ dependencies = [ "aptos-transaction-generator-lib", "async-trait", "chrono", - "clap 4.4.12", + "clap 4.4.14", "either", "futures", "hex", @@ -1714,7 +1714,7 @@ dependencies = [ "aptos-testcases", "async-trait", "chrono", - "clap 4.4.12", + "clap 4.4.14", "futures", "jemallocator", "once_cell", @@ -1757,7 +1757,7 @@ dependencies = [ "bulletproofs", "byteorder", "claims", - "clap 4.4.12", + "clap 4.4.14", "codespan-reporting", "curve25519-dalek-ng", "either", @@ -1839,7 +1839,7 @@ dependencies = [ "aptos-vault-client", "bcs 0.1.4", "byteorder", - "clap 4.4.12", + "clap 4.4.14", "datatest-stable", "hex", "move-binary-format", @@ -1880,7 +1880,7 @@ dependencies = [ "aptos-types", "aptos-vm-types", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "float-cmp", "move-binary-format", "move-bytecode-source-map", @@ -1952,7 +1952,7 @@ dependencies = [ "aptos-package-builder", "aptos-types", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "move-core-types", "move-model", "tempfile", @@ -2023,7 +2023,7 @@ dependencies = [ "bcs 0.1.4", "bigdecimal", "chrono", - "clap 4.4.12", + "clap 4.4.14", "diesel", "diesel_migrations", "field_count", @@ -2056,7 +2056,7 @@ dependencies = [ "async-trait", "backoff", "base64 0.13.1", - "clap 4.4.12", + "clap 4.4.14", "futures", "futures-core", "once_cell", @@ -2085,7 +2085,7 @@ dependencies = [ "backtrace", "base64 0.13.1", "bytes", - "clap 4.4.12", + "clap 4.4.14", "cloud-storage", "dashmap", "enum_dispatch", @@ -2128,7 +2128,7 @@ dependencies = [ "aptos-runtimes", "async-trait", "base64 0.13.1", - "clap 4.4.12", + "clap 4.4.14", "cloud-storage", "futures", "once_cell", @@ -2157,7 +2157,7 @@ dependencies = [ "aptos-runtimes", "async-trait", "base64 0.13.1", - "clap 4.4.12", + "clap 4.4.14", "cloud-storage", "futures", "futures-util", @@ -2246,7 +2246,7 @@ dependencies = [ "async-trait", "backoff", "base64 0.13.1", - "clap 4.4.12", + "clap 4.4.14", "futures", "futures-core", "futures-util", @@ -2277,7 +2277,7 @@ dependencies = [ "aptos-runtimes", "async-trait", "backtrace", - "clap 4.4.12", + "clap 4.4.14", "futures", "prometheus", "serde", @@ -2360,7 +2360,7 @@ dependencies = [ "backtrace", "base64 0.13.1", "chrono", - "clap 4.4.12", + "clap 4.4.14", "cloud-storage", "flate2", "futures", @@ -2534,7 +2534,7 @@ dependencies = [ name = "aptos-log-derive" version = "0.1.0" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -2676,7 +2676,7 @@ dependencies = [ "aptos-vm-logging", "aptos-vm-types", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "move-binary-format", "move-cli", "move-compiler", @@ -2698,7 +2698,7 @@ dependencies = [ "aptos-gas-schedule", "aptos-types", "aptos-vm", - "clap 4.4.12", + "clap 4.4.14", "move-cli", "move-package", "move-prover", @@ -2904,7 +2904,7 @@ dependencies = [ "aptos-logger", "aptos-network", "aptos-types", - "clap 4.4.12", + "clap 4.4.14", "futures", "serde", "tokio", @@ -2951,7 +2951,7 @@ dependencies = [ "base64 0.13.1", "bytes", "chrono", - "clap 4.4.12", + "clap 4.4.14", "csv", "diesel", "diesel_migrations", @@ -3026,7 +3026,7 @@ dependencies = [ "aptos-validator-transaction-pool", "aptos-vm", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "either", "fail 0.5.1", "futures", @@ -3058,7 +3058,7 @@ dependencies = [ "aptos-sdk", "aptos-transaction-emitter-lib", "async-trait", - "clap 4.4.12", + "clap 4.4.14", "const_format", "env_logger", "futures", @@ -3105,7 +3105,7 @@ dependencies = [ name = "aptos-num-variants" version = "0.1.0" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -3132,7 +3132,7 @@ dependencies = [ "aptos-mempool", "aptos-storage-interface", "aptos-types", - "clap 4.4.12", + "clap 4.4.14", ] [[package]] @@ -3316,7 +3316,7 @@ dependencies = [ "aptos-types", "aptos-vm-genesis", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "futures", "git2 0.16.1", "handlebars", @@ -3378,7 +3378,7 @@ dependencies = [ "aptos-types", "bcs 0.1.4", "bytes", - "clap 4.4.12", + "clap 4.4.14", "futures", "hex", "move-binary-format", @@ -3425,7 +3425,7 @@ dependencies = [ "aptos-types", "aptos-warp-webserver", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "futures", "hex", "itertools 0.10.5", @@ -3450,7 +3450,7 @@ dependencies = [ "aptos-logger", "aptos-rosetta", "aptos-types", - "clap 4.4.12", + "clap 4.4.14", "serde", "serde_json", "tokio", @@ -3565,7 +3565,7 @@ dependencies = [ "aptos-framework", "aptos-types", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "heck 0.4.1", "move-core-types", "once_cell", @@ -3885,7 +3885,7 @@ dependencies = [ "bcs 0.1.4", "chrono", "claims", - "clap 4.4.12", + "clap 4.4.14", "debug-ignore", "flate2", "futures", @@ -3982,7 +3982,7 @@ dependencies = [ "aptos-types", "aptos-vm", "aptos-vm-logging", - "clap 4.4.12", + "clap 4.4.14", "criterion", "criterion-cpu-time", "num_cpus", @@ -4000,7 +4000,7 @@ dependencies = [ "aptos-logger", "aptos-sdk", "aptos-transaction-emitter-lib", - "clap 4.4.12", + "clap 4.4.14", "futures", "rand 0.7.3", "tokio", @@ -4022,7 +4022,7 @@ dependencies = [ "aptos-transaction-generator-lib", "aptos-types", "async-trait", - "clap 4.4.12", + "clap 4.4.14", "futures", "itertools 0.10.5", "once_cell", @@ -4044,7 +4044,7 @@ dependencies = [ "aptos-logger", "aptos-sdk", "async-trait", - "clap 4.4.12", + "clap 4.4.14", "move-binary-format", "once_cell", "rand 0.7.3", @@ -4068,7 +4068,7 @@ dependencies = [ "aptos-vm", "aptos-vm-genesis", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "datatest-stable", "hex", "move-binary-format", @@ -4254,7 +4254,7 @@ dependencies = [ "aptos-language-e2e-tests", "aptos-types", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "move-binary-format", "move-bytecode-source-map", "move-core-types", @@ -4313,7 +4313,7 @@ dependencies = [ "aptos-vm", "aptos-vm-genesis", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "glob", "move-binary-format", "move-core-types", @@ -4501,7 +4501,7 @@ checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ "num-bigint 0.4.4", "num-traits", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -4537,7 +4537,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -4653,7 +4653,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" dependencies = [ "concurrent-queue", - "event-listener 4.0.2", + "event-listener 4.0.3", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -4682,7 +4682,7 @@ dependencies = [ "async-task", "concurrent-queue", "fastrand 2.0.1", - "futures-lite 2.1.0", + "futures-lite 2.2.0", "slab", ] @@ -4697,7 +4697,7 @@ dependencies = [ "async-io 2.2.2", "async-lock 3.2.0", "blocking", - "futures-lite 2.1.0", + "futures-lite 2.2.0", "once_cell", ] @@ -4731,7 +4731,7 @@ dependencies = [ "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.1.0", + "futures-lite 2.2.0", "parking", "polling 3.3.1", "rustix 0.38.28", @@ -4755,7 +4755,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" dependencies = [ - "event-listener 4.0.2", + "event-listener 4.0.3", "event-listener-strategy", "pin-project-lite", ] @@ -4801,9 +4801,9 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -4868,16 +4868,16 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] name = "async-task" -version = "4.6.0" +version = "4.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d90cd0b264dfdd8eb5bad0a2c217c1f88fa96a8573f40e7b12de23fb468f46" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" @@ -4885,9 +4885,9 @@ version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -4914,7 +4914,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -4926,7 +4926,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -5086,9 +5086,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9" [[package]] name = "base64ct" @@ -5163,7 +5163,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3deeecb812ca5300b7d3f66f730cc2ebd3511c3d36c691dd79c165d5b19a26e3" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -5204,12 +5204,12 @@ dependencies = [ "lazycell", "peeking_take_while", "prettyplease", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "regex", "rustc-hash", "shlex", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -5354,7 +5354,7 @@ dependencies = [ "async-task", "fastrand 2.0.1", "futures-io", - "futures-lite 2.1.0", + "futures-lite 2.2.0", "piper", "tracing", ] @@ -5377,7 +5377,7 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f03db470b3c0213c47e978da93200259a1eb4dae2e5512cba9955e2b540a6fc6" dependencies = [ - "base64 0.21.5", + "base64 0.21.6", "bollard-stubs", "bytes", "futures-core", @@ -5799,9 +5799,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.12" +version = "4.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056d" +checksum = "33e92c5c1a78c62968ec57dbc2440366a2d6e5a23faf829970ff1585dc6b18e2" dependencies = [ "clap_builder", "clap_derive 4.4.7", @@ -5813,15 +5813,15 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c90e95e5bd4e8ac34fa6f37c774b0c6f8ed06ea90c79931fd448fcf941a9767" dependencies = [ - "clap 4.4.12", + "clap 4.4.14", "log", ] [[package]] name = "clap_builder" -version = "4.4.12" +version = "4.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9" +checksum = "f4323769dc8a61e2c39ad7dc26f6f2800524691a44d74fe3d1071a5c24db6370" dependencies = [ "anstream", "anstyle", @@ -5835,7 +5835,7 @@ version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97aeaa95557bd02f23fbb662f981670c3d20c5a26e69f7354b28f57092437fcd" dependencies = [ - "clap 4.4.12", + "clap 4.4.14", ] [[package]] @@ -5846,7 +5846,7 @@ checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ "heck 0.4.1", "proc-macro-error", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -5858,9 +5858,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -6059,7 +6059,7 @@ version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "unicode-xid 0.2.4", ] @@ -6094,7 +6094,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" dependencies = [ "aes-gcm", - "base64 0.21.5", + "base64 0.21.6", "hkdf 0.12.4", "hmac 0.12.1", "percent-encoding", @@ -6170,9 +6170,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -6234,11 +6234,10 @@ dependencies = [ [[package]] name = "crossbeam" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eb9105919ca8e40d437fc9cbb8f1975d916f1bd28afe795a48aae32a2cc8920" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" dependencies = [ - "cfg-if", "crossbeam-channel", "crossbeam-deque", "crossbeam-epoch", @@ -6248,54 +6247,46 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a9b73a36529d9c47029b9fb3a6f0ea3cc916a261195352ba19e770fc1748b2" +checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.17" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3681d554572a651dda4186cd47240627c3d0114d45a95f6ad27f2f22e7548d" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-queue" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc6598521bb5a83d491e8c1fe51db7296019d2ca3cb93cc6c2a20369a4d78a2" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.18" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crossterm" @@ -6513,7 +6504,7 @@ checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "strsim 0.10.0", "syn 1.0.109", @@ -6654,7 +6645,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -6665,9 +6656,9 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -6677,7 +6668,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "rustc_version", "syn 1.0.109", @@ -6760,9 +6751,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef8337737574f55a468005a83499da720f20c65586241ffea339db9ecdfd2b44" dependencies = [ "diesel_table_macro_syntax", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -6782,7 +6773,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" dependencies = [ - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -7087,9 +7078,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" dependencies = [ "once_cell", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -7199,7 +7190,7 @@ dependencies = [ "fixed-hash 0.8.0", "impl-codec 0.6.0", "impl-rlp", - "scale-info 2.10.0", + "scale-info 1.0.0", "tiny-keccak", ] @@ -7280,7 +7271,7 @@ dependencies = [ "impl-codec 0.6.0", "impl-rlp", "primitive-types 0.12.2", - "scale-info 2.10.0", + "scale-info 1.0.0", "uint", ] @@ -7309,9 +7300,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "4.0.2" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "218a870470cce1469024e9fb66b901aa983929d81304a1cdb299f28118e550d5" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" dependencies = [ "concurrent-queue", "parking", @@ -7324,7 +7315,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" dependencies = [ - "event-listener 4.0.2", + "event-listener 4.0.3", "pin-project-lite", ] @@ -7683,9 +7674,9 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -7798,9 +7789,9 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" +checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" dependencies = [ "fastrand 2.0.1", "futures-core", @@ -7815,9 +7806,9 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -7964,7 +7955,7 @@ dependencies = [ "aptos-network", "aptos-types", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "move-core-types", "rand 0.7.3", "serde", @@ -8155,7 +8146,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "931bedb2264cb00f914b0a6a5c304e34865c34306632d3932e0951a073e4a67d" dependencies = [ "async-trait", - "base64 0.21.5", + "base64 0.21.6", "google-cloud-metadata", "google-cloud-token", "home", @@ -8234,7 +8225,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22c57ca1d971d7c6f852c02eda4e87e88b1247b6ed8be9fa5b2768c68b0f2ca5" dependencies = [ "async-stream", - "base64 0.21.5", + "base64 0.21.6", "bytes", "futures-util", "google-cloud-auth", @@ -8431,7 +8422,7 @@ version = "7.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" dependencies = [ - "base64 0.21.5", + "base64 0.21.6", "byteorder", "flate2", "nom", @@ -8444,7 +8435,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64 0.21.5", + "base64 0.21.6", "bytes", "headers-core", "http", @@ -8650,7 +8641,7 @@ dependencies = [ "assert-json-diff", "async-object-pool", "async-trait", - "base64 0.21.5", + "base64 0.21.6", "basic-cookies", "crossbeam-utils", "form_urlencoded", @@ -8837,9 +8828,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747ad1b4ae841a78e8aba0d63adbfbeaea26b517b63705d47856b73015d27060" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" dependencies = [ "crossbeam-deque", "globset", @@ -8926,7 +8917,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -8960,7 +8951,7 @@ checksum = "0a0c890c85da4bab7bce4204c707396bbd3c6c8a681716a51c8814cfc2b682df" dependencies = [ "anyhow", "proc-macro-hack", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -8971,7 +8962,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", ] @@ -9035,7 +9026,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "321f0f839cd44a4686e9504b0a62b4d69a50b62072144c71c68f5873c167b8d9" dependencies = [ "ahash 0.8.7", - "clap 4.4.12", + "clap 4.4.14", "crossbeam-channel", "crossbeam-utils", "dashmap", @@ -9286,7 +9277,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.5", + "base64 0.21.6", "pem 1.1.1", "ring 0.16.20", "serde", @@ -9518,9 +9509,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libfuzzer-sys" @@ -9675,9 +9666,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.12" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" +checksum = "5f526fdd09d99e19742883e43de41e1aa9e36db0c7ab7f935165d611c5cccc66" dependencies = [ "cc", "libc", @@ -9714,7 +9705,7 @@ name = "listener" version = "0.1.0" dependencies = [ "bytes", - "clap 4.4.12", + "clap 4.4.14", "tokio", ] @@ -9828,7 +9819,7 @@ name = "macros" version = "0.1.0" source = "git+https://github.com/niroco/diesel_async_migrations?rev=11f331b73c5cfcc894380074f748d8fda710ac12#11f331b73c5cfcc894380074f748d8fda710ac12" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", ] @@ -9944,7 +9935,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cce3325ac70e67bbab5bd837a31cae01f1a6db64e0e744a33cb03a543469ef08" dependencies = [ "migrations_internals", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", ] @@ -10035,7 +10026,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" dependencies = [ "cfg-if", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -10060,7 +10051,7 @@ dependencies = [ "anyhow", "aptos-framework", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "move-binary-format", ] @@ -10096,7 +10087,7 @@ name = "move-analyzer" version = "1.0.0" dependencies = [ "anyhow", - "clap 4.4.12", + "clap 4.4.14", "codespan-reporting", "crossbeam", "derivative", @@ -10208,7 +10199,7 @@ name = "move-bytecode-viewer" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.4.12", + "clap 4.4.14", "crossterm 0.26.1", "move-binary-format", "move-bytecode-source-map", @@ -10226,7 +10217,7 @@ dependencies = [ "anyhow", "bcs 0.1.4", "bytes", - "clap 4.4.12", + "clap 4.4.14", "codespan-reporting", "colored", "datatest-stable", @@ -10289,7 +10280,7 @@ version = "0.0.1" dependencies = [ "anyhow", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "codespan-reporting", "datatest-stable", "difference", @@ -10327,7 +10318,7 @@ version = "0.1.0" dependencies = [ "anyhow", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "codespan", "codespan-reporting", "datatest-stable", @@ -10392,7 +10383,7 @@ version = "0.1.0" dependencies = [ "anyhow", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "codespan", "colored", "move-binary-format", @@ -10410,7 +10401,7 @@ name = "move-disassembler" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.4.12", + "clap 4.4.14", "colored", "move-binary-format", "move-bytecode-source-map", @@ -10477,7 +10468,7 @@ name = "move-explain" version = "0.1.0" dependencies = [ "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "move-command-line-common", "move-core-types", ] @@ -10488,7 +10479,7 @@ version = "0.1.0" dependencies = [ "anyhow", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "move-binary-format", "move-bytecode-source-map", "move-bytecode-verifier", @@ -10586,7 +10577,7 @@ version = "0.1.0" dependencies = [ "anyhow", "bcs 0.1.4", - "clap 4.4.12", + "clap 4.4.14", "colored", "datatest-stable", "dirs-next", @@ -10627,7 +10618,7 @@ dependencies = [ "anyhow", "async-trait", "atty", - "clap 4.4.12", + "clap 4.4.14", "codespan", "codespan-reporting", "datatest-stable", @@ -10698,7 +10689,7 @@ dependencies = [ "anyhow", "async-trait", "atty", - "clap 4.4.12", + "clap 4.4.14", "codespan", "codespan-reporting", "datatest-stable", @@ -10856,7 +10847,7 @@ version = "0.1.0" dependencies = [ "anyhow", "atty", - "clap 4.4.12", + "clap 4.4.14", "codespan", "codespan-reporting", "datatest-stable", @@ -10898,7 +10889,7 @@ name = "move-transactional-test-runner" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.4.12", + "clap 4.4.14", "colored", "datatest-stable", "difference", @@ -10934,7 +10925,7 @@ dependencies = [ "anyhow", "better_any", "bytes", - "clap 4.4.12", + "clap 4.4.14", "codespan-reporting", "colored", "datatest-stable", @@ -11095,7 +11086,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -11219,7 +11210,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be7d33be719c6f4d09e64e27c1ef4e73485dc4cc1f4d22201f89860a7fe22e22" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -11231,7 +11222,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "066b468120587a402f0b47d8f80035c921f6a46f8209efd0632a89a16f5188a4" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -11349,7 +11340,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -11515,9 +11506,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -11596,7 +11587,7 @@ checksum = "03f2cb802b5bdfdf52f1ffa0b54ce105e4d346e91990dd571f86c91321ad49e2" dependencies = [ "Inflector", "proc-macro-error", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -11609,7 +11600,7 @@ checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" dependencies = [ "Inflector", "proc-macro-error", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -11682,7 +11673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -11694,7 +11685,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ "proc-macro-crate 2.0.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -11900,9 +11891,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" dependencies = [ "memchr", "thiserror", @@ -11911,9 +11902,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" +checksum = "bcd6ab1236bbdb3a49027e920e693192ebfe8913f6d60e294de57463a493cfde" dependencies = [ "pest", "pest_generator", @@ -11921,22 +11912,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" +checksum = "2a31940305ffc96863a735bef7c7994a00b325a7138fdbc5bda0f1a0476d3275" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] name = "pest_meta" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" +checksum = "a7ff62f5259e53b78d1af898941cdcdccfae7385cf7d793a6e55de5d05bb4b7d" dependencies = [ "once_cell", "pest", @@ -12034,7 +12025,7 @@ version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -12045,9 +12036,9 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -12200,9 +12191,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ddcf4680d8d867e1e375116203846acb088483fa2070244f90589f458bbb31" dependencies = [ "proc-macro-crate 2.0.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -12241,7 +12232,7 @@ dependencies = [ "indexmap 1.9.3", "mime", "proc-macro-crate 1.3.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "regex", "syn 1.0.109", @@ -12305,7 +12296,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597c3287a549da151aca6ada2795ecde089c7527bd5093114e8e0e1c3f0e52b1" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -12322,7 +12313,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520" dependencies = [ - "base64 0.21.5", + "base64 0.21.6", "byteorder", "bytes", "fallible-iterator", @@ -12461,8 +12452,8 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ - "proc-macro2 1.0.75", - "syn 2.0.47", + "proc-macro2 1.0.76", + "syn 2.0.48", ] [[package]] @@ -12510,7 +12501,7 @@ dependencies = [ "fixed-hash 0.8.0", "impl-codec 0.6.0", "impl-rlp", - "scale-info 2.10.0", + "scale-info 1.0.0", "uint", ] @@ -12541,7 +12532,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", "version_check", @@ -12553,7 +12544,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "version_check", ] @@ -12581,9 +12572,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.75" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907a61bd0f64c2f29cd1cf1dc34d05176426a3f504a78010f08416ddb7b13708" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" dependencies = [ "unicode-ident", ] @@ -12601,7 +12592,7 @@ dependencies = [ "bcs 0.1.4", "bigdecimal", "chrono", - "clap 4.4.12", + "clap 4.4.14", "diesel", "diesel-async", "diesel_async_migrations", @@ -12729,7 +12720,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cf16337405ca084e9c78985114633b6827711d22b9e6ef6c6c0d665eb3f0b6e" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -12762,7 +12753,7 @@ checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", "itertools 0.10.5", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -12775,9 +12766,9 @@ checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" dependencies = [ "anyhow", "itertools 0.11.0", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -12829,7 +12820,7 @@ version = "0.1.0" dependencies = [ "anyhow", "chrono", - "clap 4.4.12", + "clap 4.4.14", "codespan-reporting", "hex", "itertools 0.10.5", @@ -12965,7 +12956,7 @@ version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", ] [[package]] @@ -13211,9 +13202,9 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fddb4f8d99b0a2ebafc65a87a69a7b9875e4b1ae1f00db265d300ef7f28bccc" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -13267,7 +13258,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ "async-compression", - "base64 0.21.5", + "base64 0.21.6", "bytes", "cookie 0.16.2", "cookie_store", @@ -13447,7 +13438,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -13529,7 +13520,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5015e68a0685a95ade3eee617ff7101ab6a3fc689203101ca16ebc16f2b89c66" dependencies = [ "cfg-if", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "rustc_version", "syn 1.0.109", @@ -13663,7 +13654,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.6", ] [[package]] @@ -13761,7 +13752,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -13773,7 +13764,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -13930,7 +13921,7 @@ name = "sender" version = "0.1.0" dependencies = [ "bytes", - "clap 4.4.12", + "clap 4.4.14", "event-listener 2.5.3", "quanta", "tokio", @@ -13938,9 +13929,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.194" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] @@ -14014,20 +14005,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.194" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.110" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fbd975230bada99c8bb618e0c365c2eefa219158d5c6c29610fd09ff1833257" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "indexmap 2.1.0", "itoa", @@ -14062,9 +14053,9 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -14094,7 +14085,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" dependencies = [ - "base64 0.21.5", + "base64 0.21.6", "chrono", "hex", "indexmap 1.9.3", @@ -14157,7 +14148,7 @@ dependencies = [ "anyhow", "async-trait", "backtrace", - "clap 4.4.12", + "clap 4.4.14", "futures", "prometheus", "serde", @@ -14589,7 +14580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -14738,7 +14729,7 @@ checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck 0.3.3", "proc-macro-error", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -14768,7 +14759,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "rustversion", "syn 1.0.109", @@ -14781,10 +14772,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "rustversion", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -14839,18 +14830,18 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.47" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1726efe18f42ae774cc644f330953a5e7b3c3003d3edcecf18850fe9d4dd9afb" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "unicode-ident", ] @@ -15014,9 +15005,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" dependencies = [ "cfg-if", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -15025,9 +15016,9 @@ version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", "test-case-core", ] @@ -15035,7 +15026,7 @@ dependencies = [ name = "test-generation" version = "0.1.0" dependencies = [ - "clap 4.4.12", + "clap 4.4.14", "crossbeam-channel", "getrandom 0.2.11", "hex", @@ -15061,7 +15052,7 @@ name = "testdiff" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.4.12", + "clap 4.4.14", "itertools 0.10.5", "once_cell", "walkdir", @@ -15118,9 +15109,9 @@ version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -15273,9 +15264,9 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -15508,7 +15499,7 @@ dependencies = [ "async-stream", "async-trait", "axum 0.6.20", - "base64 0.21.5", + "base64 0.21.6", "bytes", "flate2", "futures-core", @@ -15542,7 +15533,7 @@ dependencies = [ "async-stream", "async-trait", "axum 0.6.20", - "base64 0.21.5", + "base64 0.21.6", "bytes", "flate2", "h2", @@ -15667,7 +15658,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ad0c048e114d19d1140662762bfdb10682f3bc806d8be18af846600214dd9af" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", "syn 1.0.109", ] @@ -15690,9 +15681,9 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -15803,9 +15794,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "trybuild" -version = "1.0.87" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6b2fc10a33500845468aa7c06567a9226581b24f03c6f891e6dda2dc9a1c8b" +checksum = "76de4f783e610194f6c98bfd53f9fc52bb2e0d02c947621e8a0f4ecc799b2880" dependencies = [ "basic-toml", "glob", @@ -16171,9 +16162,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ce5bb364b23e66b528d03168df78b38c0f7b6fe17386928f29d5ab2e7cb2f7" +checksum = "dd65ff0de3304a013e6dfeb7324e1cd389a8a000e582e3c9c9fae82ced778e26" [[package]] name = "variant_count" @@ -16326,9 +16317,9 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", "wasm-bindgen-shared", ] @@ -16360,9 +16351,9 @@ version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -16732,9 +16723,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.32" +version = "0.5.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8434aeec7b290e8da5c3f0d628cb0eac6cabcb31d14bb74f779a08109a5914d6" +checksum = "b7520bbdec7211caa7c4e682eb1fbe07abe20cee6756b6e00f537c82c11816aa" dependencies = [ "memchr", ] @@ -16848,9 +16839,9 @@ version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] @@ -16868,9 +16859,9 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.75", + "proc-macro2 1.0.76", "quote 1.0.35", - "syn 2.0.47", + "syn 2.0.48", ] [[package]] diff --git a/config/src/config/dag_consensus_config.rs b/config/src/config/dag_consensus_config.rs index cc17a2c2069272..2011f0697ed7b5 100644 --- a/config/src/config/dag_consensus_config.rs +++ b/config/src/config/dag_consensus_config.rs @@ -2,7 +2,7 @@ use super::{ config_sanitizer::ConfigSanitizer, node_config_loader::NodeType, ChainHealthBackoffValues, - Error, NodeConfig, QuorumStoreConfig, PipelineBackpressureValues, + Error, NodeConfig, PipelineBackpressureValues, QuorumStoreConfig, }; use aptos_types::chain_id::ChainId; use serde::{Deserialize, Serialize}; diff --git a/consensus/src/dag/adapter.rs b/consensus/src/dag/adapter.rs index 498ea674194793..cd349de83141e7 100644 --- a/consensus/src/dag/adapter.rs +++ b/consensus/src/dag/adapter.rs @@ -1,12 +1,14 @@ // Copyright © Aptos Foundation // SPDX-License-Identifier: Apache-2.0 -use super::observability::counters::{NUM_NODES_PER_BLOCK, NUM_ROUNDS_PER_BLOCK}; +use super::{ + dag_store::PersistentDagStore, + observability::counters::{NUM_NODES_PER_BLOCK, NUM_ROUNDS_PER_BLOCK}, +}; use crate::{ consensusdb::{CertifiedNodeSchema, ConsensusDB, DagVoteSchema, NodeSchema}, counters::update_counters_for_committed_blocks, dag::{ - dag_store::Dag, storage::{CommitEvent, DAGStorage}, CertifiedNode, Node, NodeId, Vote, }, @@ -89,7 +91,7 @@ pub(crate) fn compute_initial_block_and_ledger_info( pub(super) struct OrderedNotifierAdapter { executor_channel: UnboundedSender, - dag: Arc>, + dag: Arc, parent_block_info: Arc>, epoch_state: Arc, ledger_info_provider: Arc>, @@ -99,7 +101,7 @@ pub(super) struct OrderedNotifierAdapter { impl OrderedNotifierAdapter { pub(super) fn new( executor_channel: UnboundedSender, - dag: Arc>, + dag: Arc, epoch_state: Arc, parent_block_info: BlockInfo, ledger_info_provider: Arc>, @@ -207,8 +209,7 @@ impl OrderedNotifier for OrderedNotifierAdapter { block_created_ts .write() .retain(|&round, _| round > commit_decision.commit_info().round()); - dag.write() - .commit_callback(commit_decision.commit_info().round()); + dag.commit_callback(commit_decision.commit_info().round()); ledger_info_provider .write() .notify_commit_proof(commit_decision); diff --git a/consensus/src/dag/bootstrap.rs b/consensus/src/dag/bootstrap.rs index 686d2211c032ff..de666bd3ca7757 100644 --- a/consensus/src/dag/bootstrap.rs +++ b/consensus/src/dag/bootstrap.rs @@ -8,7 +8,7 @@ use super::{ dag_handler::NetworkHandler, dag_network::TDAGNetworkSender, dag_state_sync::{DagStateSynchronizer, StateSyncTrigger}, - dag_store::Dag, + dag_store::PersistentDagStore, health::{ChainHealthBackoff, HealthBackoff, PipelineLatencyBasedBackpressure, TChainHealth}, order_rule::OrderRule, rb_handler::NodeBroadcastHandler, @@ -60,7 +60,7 @@ use futures_channel::{ mpsc::{UnboundedReceiver, UnboundedSender}, oneshot, }; -use std::{collections::HashMap, fmt, sync::Arc, time::Duration}; +use std::{collections::HashMap, fmt, ops::Deref, sync::Arc, time::Duration}; use tokio::{ runtime::Handle, select, @@ -70,7 +70,7 @@ use tokio_retry::strategy::ExponentialBackoff; #[derive(Clone)] struct BootstrapBaseState { - dag_store: Arc>, + dag_store: Arc, order_rule: OrderRule, ledger_info_provider: Arc, ordered_notifier: Arc, @@ -131,7 +131,7 @@ impl ActiveMode { ) -> Option { info!( LogSchema::new(LogEvent::ActiveMode) - .round(self.base_state.dag_store.read().highest_round()), + .round(self.base_state.dag_store.deref().read().highest_round()), highest_committed_round = self .base_state .ledger_info_provider @@ -497,13 +497,13 @@ impl DagBootstrapper { .saturating_sub(dag_window_size_config), ); - let dag = Arc::new(RwLock::new(Dag::new( + let dag = Arc::new(PersistentDagStore::new( self.epoch_state.clone(), self.storage.clone(), self.payload_manager.clone(), initial_round, dag_window_size_config, - ))); + )); let ordered_notifier = Arc::new(OrderedNotifierAdapter::new( self.ordered_nodes_tx.clone(), @@ -590,7 +590,7 @@ impl DagBootstrapper { ); let chain_health: Arc = ChainHealthBackoff::new( - ChainHealthBackoffConfig::new(self.config.chain_backoff_config.clone()), + ChainHealthBackoffConfig::new(self.config.health_config.chain_backoff_config.clone()), commit_history.clone(), ); let pipeline_health = PipelineLatencyBasedBackpressure::new( diff --git a/consensus/src/dag/dag_driver.rs b/consensus/src/dag/dag_driver.rs index 6c9b9141ad6e8b..dfaeafffaeb506 100644 --- a/consensus/src/dag/dag_driver.rs +++ b/consensus/src/dag/dag_driver.rs @@ -1,12 +1,11 @@ // Copyright © Aptos Foundation // SPDX-License-Identifier: Apache-2.0 -use super::health::HealthBackoff; +use super::{dag_store::PersistentDagStore, health::HealthBackoff}; use crate::{ dag::{ adapter::TLedgerInfoProvider, dag_fetcher::TFetchRequester, - dag_store::Dag, errors::DagDriverError, observability::{ counters::{self, NODE_PAYLOAD_SIZE, NUM_TXNS_PER_NODE}, @@ -28,7 +27,6 @@ use anyhow::bail; use aptos_config::config::DagPayloadConfig; use aptos_consensus_types::common::{Author, Payload, PayloadFilter}; use aptos_crypto::hash::CryptoHash; -use aptos_infallible::RwLock; use aptos_logger::{debug, error}; use aptos_reliable_broadcast::ReliableBroadcast; use aptos_time_service::{TimeService, TimeServiceTrait}; @@ -46,7 +44,7 @@ use tokio_retry::strategy::ExponentialBackoff; pub(crate) struct DagDriver { author: Author, epoch_state: Arc, - dag: Arc>, + dag: Arc, payload_client: Arc, reliable_broadcast: Arc>, time_service: TimeService, @@ -67,7 +65,7 @@ impl DagDriver { pub fn new( author: Author, epoch_state: Arc, - dag: Arc>, + dag: Arc, payload_client: Arc, reliable_broadcast: Arc>, time_service: TimeService, @@ -127,28 +125,26 @@ impl DagDriver { async fn add_node(&mut self, node: CertifiedNode) -> anyhow::Result<()> { let (highest_strong_link_round, strong_links) = { - let mut dag_writer = self.dag.write(); - - if !dag_writer.all_exists(node.parents_metadata()) { + if !self.dag.read().all_exists(node.parents_metadata()) { if let Err(err) = self.fetch_requester.request_for_certified_node(node) { error!("request to fetch failed: {}", err); } bail!(DagDriverError::MissingParents); } - dag_writer.add_node(node)?; + self.dag.add_node(node)?; + let dag = self.dag.read(); let highest_strong_links_round = - dag_writer.highest_strong_links_round(&self.epoch_state.verifier); + dag.highest_strong_links_round(&self.epoch_state.verifier); ( highest_strong_links_round, // unwrap is for round 0 - dag_writer - .get_strong_links_for_round( - highest_strong_links_round, - &self.epoch_state.verifier, - ) - .unwrap_or_default(), + dag.get_strong_links_for_round( + highest_strong_links_round, + &self.epoch_state.verifier, + ) + .unwrap_or_default(), ) }; diff --git a/consensus/src/dag/dag_fetcher.rs b/consensus/src/dag/dag_fetcher.rs index 8d6542603ca99a..bd5a7dc400c3e7 100644 --- a/consensus/src/dag/dag_fetcher.rs +++ b/consensus/src/dag/dag_fetcher.rs @@ -1,10 +1,9 @@ // Copyright © Aptos Foundation // SPDX-License-Identifier: Apache-2.0 -use super::DAGRpcResult; +use super::{dag_store::PersistentDagStore, DAGRpcResult}; use crate::dag::{ dag_network::{RpcResultWithResponder, TDAGNetworkSender}, - dag_store::Dag, errors::FetchRequestHandleError, observability::logging::{LogEvent, LogSchema}, types::{CertifiedNode, FetchResponse, Node, NodeMetadata, RemoteFetchRequest}, @@ -14,7 +13,6 @@ use anyhow::{anyhow, ensure}; use aptos_bitvec::BitVec; use aptos_config::config::DagFetcherConfig; use aptos_consensus_types::common::Author; -use aptos_infallible::RwLock; use aptos_logger::{debug, error, info}; use aptos_time_service::TimeService; use aptos_types::epoch_state::EpochState; @@ -131,7 +129,7 @@ impl LocalFetchRequest { pub struct DagFetcherService { inner: DagFetcher, - dag: Arc>, + dag: Arc, request_rx: Receiver, ordered_authors: Vec, } @@ -140,7 +138,7 @@ impl DagFetcherService { pub fn new( epoch_state: Arc, network: Arc, - dag: Arc>, + dag: Arc, time_service: TimeService, config: DagFetcherConfig, ) -> ( @@ -226,7 +224,7 @@ pub trait TDagFetcher: Send { &self, remote_request: RemoteFetchRequest, responders: Vec, - dag: Arc>, + dag: Arc, ) -> anyhow::Result<()>; } @@ -259,7 +257,7 @@ impl TDagFetcher for DagFetcher { &self, remote_request: RemoteFetchRequest, responders: Vec, - dag: Arc>, + dag: Arc, ) -> anyhow::Result<()> { debug!( LogSchema::new(LogEvent::FetchNodes), @@ -289,9 +287,8 @@ impl TDagFetcher for DagFetcher { let certified_nodes = fetch_response.certified_nodes(); // TODO: support chunk response or fallback to state sync { - let mut dag_writer = dag.write(); for node in certified_nodes.into_iter().rev() { - if let Err(e) = dag_writer.add_node(node) { + if let Err(e) = dag.add_node(node) { error!(error = ?e, "failed to add node"); } } @@ -319,12 +316,12 @@ impl TDagFetcher for DagFetcher { } pub struct FetchRequestHandler { - dag: Arc>, + dag: Arc, author_to_index: HashMap, } impl FetchRequestHandler { - pub fn new(dag: Arc>, epoch_state: Arc) -> Self { + pub fn new(dag: Arc, epoch_state: Arc) -> Self { Self { dag, author_to_index: epoch_state.verifier.address_to_validator_index().clone(), diff --git a/consensus/src/dag/dag_state_sync.rs b/consensus/src/dag/dag_state_sync.rs index ae27a952d9a2bf..1d4d73b3d267c1 100644 --- a/consensus/src/dag/dag_state_sync.rs +++ b/consensus/src/dag/dag_state_sync.rs @@ -3,7 +3,7 @@ use super::{ adapter::TLedgerInfoProvider, dag_fetcher::TDagFetcher, - dag_store::Dag, + dag_store::PersistentDagStore, storage::DAGStorage, types::{CertifiedNodeMessage, RemoteFetchRequest}, ProofNotifier, @@ -15,7 +15,6 @@ use crate::{ use anyhow::ensure; use aptos_channels::aptos_channel; use aptos_consensus_types::common::{Author, Round}; -use aptos_infallible::RwLock; use aptos_logger::{debug, error}; use aptos_time_service::TimeService; use aptos_types::{ @@ -45,7 +44,7 @@ impl fmt::Display for SyncOutcome { pub(super) struct StateSyncTrigger { epoch_state: Arc, ledger_info_provider: Arc, - dag_store: Arc>, + dag_store: Arc, proof_notifier: Arc, dag_window_size_config: Round, } @@ -54,7 +53,7 @@ impl StateSyncTrigger { pub(super) fn new( epoch_state: Arc, ledger_info_provider: Arc, - dag_store: Arc>, + dag_store: Arc, proof_notifier: Arc, dag_window_size_config: Round, ) -> Self { @@ -186,9 +185,9 @@ impl DagStateSynchronizer { pub(crate) fn build_request( &self, node: &CertifiedNodeMessage, - current_dag_store: Arc>, + current_dag_store: Arc, highest_committed_anchor_round: Round, - ) -> (RemoteFetchRequest, Vec, Arc>) { + ) -> (RemoteFetchRequest, Vec, Arc) { let commit_li = node.ledger_info(); { @@ -212,13 +211,13 @@ impl DagStateSynchronizer { .commit_info() .round() .saturating_sub(self.dag_window_size_config); - let sync_dag_store = Arc::new(RwLock::new(Dag::new_empty( + let sync_dag_store = Arc::new(PersistentDagStore::new_empty( self.epoch_state.clone(), self.storage.clone(), self.payload_manager.clone(), start_round, self.dag_window_size_config, - ))); + )); let bitmask = { sync_dag_store.read().bitmask(target_round) }; let request = RemoteFetchRequest::new( self.epoch_state.epoch, @@ -240,9 +239,9 @@ impl DagStateSynchronizer { dag_fetcher: impl TDagFetcher, request: RemoteFetchRequest, responders: Vec, - sync_dag_store: Arc>, + sync_dag_store: Arc, commit_li: LedgerInfoWithSignatures, - ) -> anyhow::Result { + ) -> anyhow::Result { match dag_fetcher .fetch(request, responders, sync_dag_store.clone()) .await @@ -256,7 +255,7 @@ impl DagStateSynchronizer { self.state_computer.sync_to(commit_li).await?; - Ok(Arc::into_inner(sync_dag_store).unwrap().into_inner()) + Ok(Arc::into_inner(sync_dag_store).unwrap()) } } diff --git a/consensus/src/dag/dag_store.rs b/consensus/src/dag/dag_store.rs index 9bd9708367f4cc..dc706265d08772 100644 --- a/consensus/src/dag/dag_store.rs +++ b/consensus/src/dag/dag_store.rs @@ -12,10 +12,12 @@ use crate::{ use anyhow::{anyhow, ensure}; use aptos_consensus_types::common::{Author, Round}; use aptos_crypto::HashValue; +use aptos_infallible::RwLock; use aptos_logger::{debug, error, warn}; use aptos_types::{epoch_state::EpochState, validator_verifier::ValidatorVerifier}; use std::{ collections::{BTreeMap, HashMap, HashSet}, + ops::Deref, sync::Arc, }; @@ -37,14 +39,12 @@ impl NodeStatus { *self = NodeStatus::Ordered(self.as_node().clone()); } } -/// Data structure that stores the DAG representation, it maintains round based index. +/// Data structure that stores the in-memory DAG representation, it maintains round based index. #[derive(Clone)] pub struct Dag { nodes_by_round: BTreeMap>>, /// Map between peer id to vector index author_to_index: HashMap, - storage: Arc, - payload_manager: Arc, start_round: Round, epoch_state: Arc, /// The window we maintain between highest committed round and initial round @@ -52,57 +52,12 @@ pub struct Dag { } impl Dag { - pub fn new( - epoch_state: Arc, - storage: Arc, - payload_manager: Arc, - start_round: Round, - window_size: u64, - ) -> Self { - let mut all_nodes = storage.get_certified_nodes().unwrap_or_default(); - all_nodes.sort_unstable_by_key(|(_, node)| node.round()); - let mut to_prune = vec![]; - // Reconstruct the continuous dag starting from start_round and gc unrelated nodes - let mut dag = Self::new_empty( - epoch_state, - storage.clone(), - payload_manager, - start_round, - window_size, - ); - for (digest, certified_node) in all_nodes { - // TODO: save the storage call in this case - if let Err(e) = dag.add_node(certified_node) { - debug!("Delete node after bootstrap due to {}", e); - to_prune.push(digest); - } - } - if let Err(e) = storage.delete_certified_nodes(to_prune) { - error!("Error deleting expired nodes: {:?}", e); - } - if dag.is_empty() { - warn!( - "[DAG] Start with empty DAG store at {}, need state sync", - dag.start_round - ); - } - dag - } - - pub fn new_empty( - epoch_state: Arc, - storage: Arc, - payload_manager: Arc, - start_round: Round, - window_size: u64, - ) -> Self { + pub fn new_empty(epoch_state: Arc, start_round: Round, window_size: u64) -> Self { let author_to_index = epoch_state.verifier.address_to_validator_index().clone(); let nodes_by_round = BTreeMap::new(); Self { nodes_by_round, author_to_index, - storage, - payload_manager, start_round, epoch_state, window_size, @@ -133,14 +88,29 @@ impl Dag { .map_or_else(|| highest_round.saturating_sub(1), |_| highest_round) } - pub fn add_node(&mut self, node: CertifiedNode) -> anyhow::Result<()> { + #[cfg(test)] + pub fn add_node_for_test(&mut self, node: CertifiedNode) -> anyhow::Result<()> { + self.validate_new_node(&node)?; + self.add_validated_node(node) + } + + fn add_validated_node(&mut self, node: CertifiedNode) -> anyhow::Result<()> { + let node = Arc::new(node); + let round_ref = self + .get_node_ref_mut(node.round(), node.author()) + .expect("must be present"); + ensure!(round_ref.is_none(), "race during insertion"); + *round_ref = Some(NodeStatus::Unordered(node.clone())); + Ok(()) + } + + fn validate_new_node(&mut self, node: &CertifiedNode) -> anyhow::Result<()> { ensure!( node.epoch() == self.epoch_state.epoch, "different epoch {}, current {}", node.epoch(), self.epoch_state.epoch ); - let node = Arc::new(node); let author = node.metadata().author(); let index = *self .author_to_index @@ -169,13 +139,6 @@ impl Dag { .entry(round) .or_insert_with(|| vec![None; self.author_to_index.len()]); ensure!(round_ref[index].is_none(), "duplicate node"); - - // mutate after all checks pass - self.storage.save_certified_node(&node)?; - debug!("Added node {}", node.id()); - round_ref[index] = Some(NodeStatus::Unordered(node.clone())); - self.payload_manager - .prefetch_payload_data(node.payload(), node.metadata().timestamp()); Ok(()) } @@ -211,10 +174,14 @@ impl Dag { round_ref[*index].as_ref() } - pub fn get_node_ref_mut(&mut self, round: Round, author: &Author) -> Option<&mut NodeStatus> { + fn get_node_ref_mut( + &mut self, + round: Round, + author: &Author, + ) -> Option<&mut Option> { let index = self.author_to_index.get(author)?; let round_ref = self.nodes_by_round.get_mut(&round)?; - round_ref[*index].as_mut() + Some(&mut round_ref[*index]) } fn get_round_iter(&self, round: Round) -> Option> { @@ -367,7 +334,7 @@ impl Dag { DagSnapshotBitmask::new(lowest_round, bitmask) } - pub(super) fn prune(&mut self) { + pub(super) fn prune(&mut self) -> BTreeMap>> { let to_keep = self.nodes_by_round.split_off(&self.start_round); let to_prune = std::mem::replace(&mut self.nodes_by_round, to_keep); debug!( @@ -375,22 +342,19 @@ impl Dag { self.start_round, to_prune.first_key_value().map(|v| v.0).unwrap() ); - let digests = to_prune - .iter() - .flat_map(|(_, round_ref)| round_ref.iter().flatten()) - .map(|node_status| *node_status.as_node().metadata().digest()) - .collect(); - if let Err(e) = self.storage.delete_certified_nodes(digests) { - error!("Error deleting expired nodes: {:?}", e); - } + to_prune } - pub fn commit_callback(&mut self, commit_round: Round) { + fn commit_callback( + &mut self, + commit_round: Round, + ) -> Option>>> { let new_start_round = commit_round.saturating_sub(3 * self.window_size); if new_start_round > self.start_round { self.start_round = new_start_round; - self.prune(); + return Some(self.prune()); } + None } pub(super) fn highest_ordered_anchor_round(&self) -> Option { @@ -408,3 +372,111 @@ impl Dag { self.nodes_by_round.is_empty() && self.start_round > 1 } } + +pub struct PersistentDagStore { + dag: RwLock, + storage: Arc, + payload_manager: Arc, +} + +impl PersistentDagStore { + pub fn new( + epoch_state: Arc, + storage: Arc, + payload_manager: Arc, + start_round: Round, + window_size: u64, + ) -> Self { + let mut all_nodes = storage.get_certified_nodes().unwrap_or_default(); + all_nodes.sort_unstable_by_key(|(_, node)| node.round()); + let mut to_prune = vec![]; + // Reconstruct the continuous dag starting from start_round and gc unrelated nodes + let dag = Self::new_empty( + epoch_state, + storage.clone(), + payload_manager, + start_round, + window_size, + ); + for (digest, certified_node) in all_nodes { + // TODO: save the storage call in this case + if let Err(e) = dag.add_node(certified_node) { + debug!("Delete node after bootstrap due to {}", e); + to_prune.push(digest); + } + } + if let Err(e) = storage.delete_certified_nodes(to_prune) { + error!("Error deleting expired nodes: {:?}", e); + } + if dag.read().is_empty() { + warn!( + "[DAG] Start with empty DAG store at {}, need state sync", + start_round + ); + } + dag + } + + pub fn new_empty( + epoch_state: Arc, + storage: Arc, + payload_manager: Arc, + start_round: Round, + window_size: u64, + ) -> Self { + let dag = Dag::new_empty(epoch_state, start_round, window_size); + Self { + dag: RwLock::new(dag), + storage, + payload_manager, + } + } + + pub fn new_for_test( + dag: Dag, + storage: Arc, + payload_manager: Arc, + ) -> Self { + Self { + dag: RwLock::new(dag), + storage, + payload_manager, + } + } + + pub fn add_node(&self, node: CertifiedNode) -> anyhow::Result<()> { + self.dag.write().validate_new_node(&node)?; + + // mutate after all checks pass + self.storage.save_certified_node(&node)?; + + debug!("Added node {}", node.id()); + + self.payload_manager + .prefetch_payload_data(node.payload(), node.metadata().timestamp()); + + self.dag.write().add_validated_node(node) + } + + pub fn commit_callback(&self, commit_round: Round) { + let to_prune = self.dag.write().commit_callback(commit_round); + if let Some(to_prune) = to_prune { + let digests = to_prune + .iter() + .flat_map(|(_, round_ref)| round_ref.iter().flatten()) + .map(|node_status| *node_status.as_node().metadata().digest()) + .collect(); + if let Err(e) = self.storage.delete_certified_nodes(digests) { + error!("Error deleting expired nodes: {:?}", e); + } + } + } +} + +impl Deref for PersistentDagStore { + type Target = RwLock; + + fn deref(&self) -> &Self::Target { + &self.dag + } +} diff --git a/consensus/src/dag/health/chain_health.rs b/consensus/src/dag/health/chain_health.rs index b16a46e8955da9..a24e5768d8e7ff 100644 --- a/consensus/src/dag/health/chain_health.rs +++ b/consensus/src/dag/health/chain_health.rs @@ -66,25 +66,25 @@ impl ChainHealthBackoff { impl TChainHealth for ChainHealthBackoff { fn get_round_backoff(&self, round: Round) -> Option { let chain_health_backoff = self.get_chain_health_backoff(round); - let backoff_duration = if let Some(value) = chain_health_backoff { + + if let Some(value) = chain_health_backoff { CHAIN_HEALTH_BACKOFF_TRIGGERED.observe(1.0); Some(Duration::from_millis(value.backoff_proposal_delay_ms)) } else { CHAIN_HEALTH_BACKOFF_TRIGGERED.observe(0.0); None - }; - backoff_duration + } } fn get_round_payload_limits(&self, round: Round) -> Option<(u64, u64)> { let chain_health_backoff = self.get_chain_health_backoff(round); - let backoff_limits = chain_health_backoff.map(|value| { + + chain_health_backoff.map(|value| { ( value.max_sending_block_txns_override, value.max_sending_block_bytes_override, ) - }); - backoff_limits + }) } fn voting_power_ratio(&self, round: Round) -> VotingPowerRatio { diff --git a/consensus/src/dag/health/mod.rs b/consensus/src/dag/health/mod.rs index 27e78f8a05d579..e67a0ae92c6ec0 100644 --- a/consensus/src/dag/health/mod.rs +++ b/consensus/src/dag/health/mod.rs @@ -3,5 +3,7 @@ mod chain_health; mod pipeline_health; pub use backoff::HealthBackoff; -pub use chain_health::{NoChainHealth, TChainHealth, ChainHealthBackoff}; -pub use pipeline_health::{PipelineLatencyBasedBackpressure, NoPipelineBackpressure, TPipelineHealth}; +pub use chain_health::{ChainHealthBackoff, NoChainHealth, TChainHealth}; +pub use pipeline_health::{ + NoPipelineBackpressure, PipelineLatencyBasedBackpressure, TPipelineHealth, +}; diff --git a/consensus/src/dag/mod.rs b/consensus/src/dag/mod.rs index 7c094354d056bd..51c025e82a49f3 100644 --- a/consensus/src/dag/mod.rs +++ b/consensus/src/dag/mod.rs @@ -13,6 +13,7 @@ mod dag_network; mod dag_state_sync; mod dag_store; mod errors; +mod health; mod observability; mod order_rule; mod rb_handler; @@ -21,7 +22,6 @@ mod storage; #[cfg(test)] mod tests; mod types; -mod health; pub use adapter::{ProofNotifier, StorageAdapter}; pub use bootstrap::DagBootstrapper; diff --git a/consensus/src/dag/order_rule.rs b/consensus/src/dag/order_rule.rs index bbc899ad2d0594..09b7d36f6c0b19 100644 --- a/consensus/src/dag/order_rule.rs +++ b/consensus/src/dag/order_rule.rs @@ -1,10 +1,11 @@ // Copyright © Aptos Foundation // SPDX-License-Identifier: Apache-2.0 +use super::dag_store::PersistentDagStore; use crate::dag::{ adapter::OrderedNotifier, anchor_election::AnchorElection, - dag_store::{Dag, NodeStatus}, + dag_store::NodeStatus, observability::{ logging::{LogEvent, LogSchema}, tracing::{observe_node, NodeStage}, @@ -24,7 +25,7 @@ pub struct OrderRule { epoch_state: Arc, // TODO: try to share order rule, instead of this Arc. lowest_unordered_anchor_round: Arc>, - dag: Arc>, + dag: Arc, anchor_election: Arc, notifier: Arc, dag_window_size_config: Round, @@ -34,7 +35,7 @@ impl OrderRule { pub fn new( epoch_state: Arc, lowest_unordered_anchor_round: Round, - dag: Arc>, + dag: Arc, anchor_election: Arc, notifier: Arc, dag_window_size_config: Round, diff --git a/consensus/src/dag/rb_handler.rs b/consensus/src/dag/rb_handler.rs index 71c33ada10c264..f6c2f35a9d95de 100644 --- a/consensus/src/dag/rb_handler.rs +++ b/consensus/src/dag/rb_handler.rs @@ -1,10 +1,10 @@ // Copyright © Aptos Foundation // SPDX-License-Identifier: Apache-2.0 +use super::{dag_store::PersistentDagStore, health::HealthBackoff}; use crate::dag::{ dag_fetcher::TFetchRequester, dag_network::RpcHandler, - dag_store::Dag, errors::NodeBroadcastHandleError, observability::{ logging::{LogEvent, LogSchema}, @@ -17,7 +17,6 @@ use crate::dag::{ use anyhow::{bail, ensure}; use aptos_config::config::DagPayloadConfig; use aptos_consensus_types::common::{Author, Round}; -use aptos_infallible::RwLock; use aptos_logger::{debug, error}; use aptos_types::{ epoch_state::EpochState, validator_signer::ValidatorSigner, validator_txn::ValidatorTransaction, @@ -25,10 +24,8 @@ use aptos_types::{ use async_trait::async_trait; use std::{collections::BTreeMap, mem, sync::Arc}; -use super::health::HealthBackoff; - pub(crate) struct NodeBroadcastHandler { - dag: Arc>, + dag: Arc, votes_by_round_peer: BTreeMap>, signer: Arc, epoch_state: Arc, @@ -41,7 +38,7 @@ pub(crate) struct NodeBroadcastHandler { impl NodeBroadcastHandler { pub fn new( - dag: Arc>, + dag: Arc, signer: Arc, epoch_state: Arc, storage: Arc, @@ -177,7 +174,10 @@ impl RpcHandler for NodeBroadcastHandler { type Response = Vote; async fn process(&mut self, node: Self::Request) -> anyhow::Result { - ensure!(!self.health_backoff.stop_voting(), NodeBroadcastHandleError::VoteRefused); + ensure!( + !self.health_backoff.stop_voting(), + NodeBroadcastHandleError::VoteRefused + ); let node = self.validate(node)?; observe_node(node.timestamp(), NodeStage::NodeReceived); diff --git a/consensus/src/dag/tests/dag_driver_tests.rs b/consensus/src/dag/tests/dag_driver_tests.rs index d2ec2d9e42c5ed..b6f27000099bae 100644 --- a/consensus/src/dag/tests/dag_driver_tests.rs +++ b/consensus/src/dag/tests/dag_driver_tests.rs @@ -7,7 +7,7 @@ use crate::{ dag_driver::DagDriver, dag_fetcher::TFetchRequester, dag_network::{RpcWithFallback, TDAGNetworkSender}, - dag_store::Dag, + dag_store::PersistentDagStore, errors::DagDriverError, health::{HealthBackoff, NoChainHealth, NoPipelineBackpressure}, order_rule::OrderRule, @@ -25,7 +25,6 @@ use crate::{ use aptos_bounded_executor::BoundedExecutor; use aptos_config::config::DagPayloadConfig; use aptos_consensus_types::common::{Author, Round}; -use aptos_infallible::RwLock; use aptos_reliable_broadcast::{RBNetworkSender, ReliableBroadcast}; use aptos_time_service::TimeService; use aptos_types::{ @@ -122,13 +121,13 @@ fn setup( let mock_ledger_info = LedgerInfo::mock_genesis(None); let mock_ledger_info = generate_ledger_info_with_sig(signers, mock_ledger_info); let storage = Arc::new(MockStorage::new_with_ledger_info(mock_ledger_info.clone())); - let dag = Arc::new(RwLock::new(Dag::new( + let dag = Arc::new(PersistentDagStore::new( epoch_state.clone(), storage.clone(), Arc::new(MockPayloadManager {}), 0, TEST_DAG_WINDOW, - ))); + )); let rb = Arc::new(ReliableBroadcast::new( signers.iter().map(|s| s.author()).collect(), @@ -148,7 +147,7 @@ fn setup( Arc::new(RoundRobinAnchorElection::new(validators)), Arc::new(TestNotifier { tx }), TEST_DAG_WINDOW as Round, - None + None, ); let fetch_requester = Arc::new(MockFetchRequester {}); diff --git a/consensus/src/dag/tests/dag_state_sync_tests.rs b/consensus/src/dag/tests/dag_state_sync_tests.rs index fbacd6b39eb93d..5b0d0900661f8b 100644 --- a/consensus/src/dag/tests/dag_state_sync_tests.rs +++ b/consensus/src/dag/tests/dag_state_sync_tests.rs @@ -6,7 +6,7 @@ use crate::{ adapter::OrderedNotifier, dag_fetcher::{FetchRequestHandler, TDagFetcher}, dag_state_sync::DagStateSynchronizer, - dag_store::Dag, + dag_store::PersistentDagStore, storage::DAGStorage, tests::{ dag_test::MockStorage, @@ -19,7 +19,6 @@ use crate::{ }; use aptos_consensus_types::common::{Author, Round}; use aptos_crypto::HashValue; -use aptos_infallible::RwLock; use aptos_reliable_broadcast::RBNetworkSender; use aptos_time_service::TimeService; use aptos_types::{ @@ -74,7 +73,7 @@ impl TDAGNetworkSender for MockDAGNetworkSender { } struct MockDagFetcher { - target_dag: Arc>, + target_dag: Arc, epoch_state: Arc, } @@ -84,17 +83,15 @@ impl TDagFetcher for MockDagFetcher { &self, remote_request: RemoteFetchRequest, _responders: Vec, - new_dag: Arc>, + new_dag: Arc, ) -> anyhow::Result<()> { let response = FetchRequestHandler::new(self.target_dag.clone(), self.epoch_state.clone()) .process(remote_request) .await .unwrap(); - let mut new_dag_writer = new_dag.write(); - for node in response.certified_nodes().into_iter().rev() { - new_dag_writer.add_node(node).unwrap() + new_dag.write().add_node_for_test(node).unwrap() } Ok(()) @@ -152,33 +149,31 @@ async fn test_dag_state_sync() { .collect::>(); let nodes = generate_dag_nodes(&virtual_dag, &validators); - let mut fast_dag = Dag::new( + let fast_dag = Arc::new(PersistentDagStore::new( epoch_state.clone(), Arc::new(MockStorage::new()), Arc::new(MockPayloadManager {}), 1, 0, - ); + )); for round_nodes in &nodes { for node in round_nodes.iter().flatten() { - fast_dag.add_node(node.clone()).unwrap(); + fast_dag.write().add_node_for_test(node.clone()).unwrap(); } } - let fast_dag = Arc::new(RwLock::new(fast_dag)); - let mut slow_dag = Dag::new( + let slow_dag = Arc::new(PersistentDagStore::new( epoch_state.clone(), Arc::new(MockStorage::new()), Arc::new(MockPayloadManager {}), 1, 0, - ); + )); for round_nodes in nodes.iter().take(SLOW_DAG_ROUNDS as usize) { for node in round_nodes.iter().flatten() { - slow_dag.add_node(node.clone()).unwrap(); + slow_dag.write().add_node_for_test(node.clone()).unwrap(); } } - let slow_dag = Arc::new(RwLock::new(slow_dag)); let li_node = nodes[LI_ROUNDS as usize - 1] .first() @@ -229,9 +224,9 @@ async fn test_dag_state_sync() { let new_dag = sync_result.unwrap(); assert_eq!( - new_dag.lowest_round(), + new_dag.read().lowest_round(), (LI_ROUNDS - TEST_DAG_WINDOW) as Round ); - assert_eq!(new_dag.highest_round(), NUM_ROUNDS as Round); - assert_none!(new_dag.highest_ordered_anchor_round(),); + assert_eq!(new_dag.read().highest_round(), NUM_ROUNDS as Round); + assert_none!(new_dag.read().highest_ordered_anchor_round(),); } diff --git a/consensus/src/dag/tests/dag_test.rs b/consensus/src/dag/tests/dag_test.rs index 7eb30e77a77dc3..ba6bfd607dc7ce 100644 --- a/consensus/src/dag/tests/dag_test.rs +++ b/consensus/src/dag/tests/dag_test.rs @@ -3,7 +3,7 @@ use super::helpers::MockPayloadManager; use crate::dag::{ - dag_store::Dag, + dag_store::PersistentDagStore, storage::{CommitEvent, DAGStorage}, tests::helpers::{new_certified_node, TEST_DAG_WINDOW}, types::{CertifiedNode, DagSnapshotBitmask, Node}, @@ -109,7 +109,12 @@ impl DAGStorage for MockStorage { } } -fn setup() -> (Vec, Arc, Dag, Arc) { +fn setup() -> ( + Vec, + Arc, + PersistentDagStore, + Arc, +) { let (signers, validator_verifier) = random_validator_verifier(4, None, false); let epoch_state = Arc::new(EpochState { epoch: 1, @@ -117,7 +122,7 @@ fn setup() -> (Vec, Arc, Dag, Arc) { }); let storage = Arc::new(MockStorage::new()); let payload_manager = Arc::new(MockPayloadManager {}); - let dag = Dag::new( + let dag = PersistentDagStore::new( epoch_state.clone(), storage.clone(), payload_manager, @@ -129,80 +134,85 @@ fn setup() -> (Vec, Arc, Dag, Arc) { #[test] fn test_dag_insertion_succeed() { - let (signers, epoch_state, mut dag, _) = setup(); + let (signers, epoch_state, dag, _) = setup(); // Round 1 - nodes 0, 1, 2 links to vec![] for signer in &signers[0..3] { let node = new_certified_node(1, signer.author(), vec![]); - assert!(dag.add_node(node).is_ok()); + assert!(dag.write().add_node_for_test(node).is_ok()); } let parents = dag + .read() .get_strong_links_for_round(1, &epoch_state.verifier) .unwrap(); // Round 2 nodes 0, 1, 2 links to 0, 1, 2 for signer in &signers[0..3] { let node = new_certified_node(2, signer.author(), parents.clone()); - assert!(dag.add_node(node).is_ok()); + assert!(dag.write().add_node_for_test(node).is_ok()); } // Round 3 nodes 1, 2 links to 0, 1, 2 let parents = dag + .read() .get_strong_links_for_round(2, &epoch_state.verifier) .unwrap(); for signer in &signers[1..3] { let node = new_certified_node(3, signer.author(), parents.clone()); - assert!(dag.add_node(node).is_ok()); + assert!(dag.write().add_node_for_test(node).is_ok()); } // not enough strong links assert!(dag + .read() .get_strong_links_for_round(3, &epoch_state.verifier) .is_none()); } #[test] fn test_dag_insertion_failure() { - let (signers, epoch_state, mut dag, _) = setup(); + let (signers, epoch_state, dag, _) = setup(); // Round 1 - nodes 0, 1, 2 links to vec![] for signer in &signers[0..3] { let node = new_certified_node(1, signer.author(), vec![]); - assert!(dag.add_node(node.clone()).is_ok()); + assert!(dag.write().add_node_for_test(node.clone()).is_ok()); // duplicate node - assert!(dag.add_node(node).is_err()); + assert!(dag.write().add_node_for_test(node).is_err()); } let missing_node = new_certified_node(1, signers[3].author(), vec![]); let mut parents = dag + .read() .get_strong_links_for_round(1, &epoch_state.verifier) .unwrap(); parents.push(missing_node.certificate()); let node = new_certified_node(2, signers[0].author(), parents.clone()); // parents not exist - assert!(dag.add_node(node).is_err()); + assert!(dag.write().add_node_for_test(node).is_err()); let node = new_certified_node(3, signers[0].author(), vec![]); // round too high - assert!(dag.add_node(node).is_err()); + assert!(dag.write().add_node_for_test(node).is_err()); let node = new_certified_node(2, signers[0].author(), parents[0..3].to_vec()); - assert!(dag.add_node(node).is_ok()); + assert!(dag.write().add_node_for_test(node).is_ok()); let node = new_certified_node(2, signers[0].author(), vec![]); // equivocation node - assert!(dag.add_node(node).is_err()); + assert!(dag.write().add_node_for_test(node).is_err()); } #[test] fn test_dag_recover_from_storage() { - let (signers, epoch_state, mut dag, storage) = setup(); + let (signers, epoch_state, dag, storage) = setup(); let mut metadatas = vec![]; for round in 1..10 { let parents = dag + .read() .get_strong_links_for_round(round, &epoch_state.verifier) .unwrap_or_default(); for signer in &signers[0..3] { @@ -211,7 +221,7 @@ fn test_dag_recover_from_storage() { assert!(dag.add_node(node).is_ok()); } } - let new_dag = Dag::new( + let new_dag = PersistentDagStore::new( epoch_state.clone(), storage.clone(), Arc::new(MockPayloadManager {}), @@ -220,7 +230,7 @@ fn test_dag_recover_from_storage() { ); for metadata in &metadatas { - assert!(new_dag.exists(metadata)); + assert!(new_dag.read().exists(metadata)); } let new_epoch_state = Arc::new(EpochState { @@ -228,7 +238,7 @@ fn test_dag_recover_from_storage() { verifier: epoch_state.verifier.clone(), }); - let _new_epoch_dag = Dag::new( + let _new_epoch_dag = PersistentDagStore::new( new_epoch_state, storage.clone(), Arc::new(MockPayloadManager {}), @@ -240,40 +250,42 @@ fn test_dag_recover_from_storage() { #[test] fn test_dag_bitmask() { - let (signers, epoch_state, mut dag, _) = setup(); + let (signers, epoch_state, dag, _) = setup(); assert_eq!( - dag.bitmask(15), + dag.read().bitmask(15), DagSnapshotBitmask::new(1, vec![vec![false; 4]; 15]) ); for round in 1..5 { let parents = dag + .read() .get_strong_links_for_round(round, &epoch_state.verifier) .unwrap_or_default(); for signer in &signers[0..3] { let node = new_certified_node(round, signer.author(), parents.clone()); - assert!(dag.add_node(node).is_ok()); + assert!(dag.write().add_node_for_test(node).is_ok()); } } let mut bitmask = vec![vec![true, true, true, false]; 4]; bitmask.resize(15, vec![false; 4]); - assert_eq!(dag.bitmask(15), DagSnapshotBitmask::new(1, bitmask)); + assert_eq!(dag.read().bitmask(15), DagSnapshotBitmask::new(1, bitmask)); // Populate the fourth author for all rounds for round in 1..5 { let parents = dag + .read() .get_strong_links_for_round(round, &epoch_state.verifier) .unwrap_or_default(); let node = new_certified_node(round, signers[3].author(), parents.clone()); - assert!(dag.add_node(node).is_ok()); + assert!(dag.write().add_node_for_test(node).is_ok()); } assert_eq!( - dag.bitmask(15), + dag.read().bitmask(15), DagSnapshotBitmask::new(5, vec![vec![false; 4]; 11]) ); assert_eq!( - dag.bitmask(6), + dag.read().bitmask(6), DagSnapshotBitmask::new(5, vec![vec![false; 4]; 2]) ); } diff --git a/consensus/src/dag/tests/fetcher_test.rs b/consensus/src/dag/tests/fetcher_test.rs index c5c18941f72a62..89c7df32c29ee4 100644 --- a/consensus/src/dag/tests/fetcher_test.rs +++ b/consensus/src/dag/tests/fetcher_test.rs @@ -3,12 +3,11 @@ use super::dag_test::MockStorage; use crate::dag::{ dag_fetcher::FetchRequestHandler, - dag_store::Dag, + dag_store::PersistentDagStore, tests::helpers::{new_certified_node, MockPayloadManager, TEST_DAG_WINDOW}, types::{DagSnapshotBitmask, FetchResponse, RemoteFetchRequest}, RpcHandler, }; -use aptos_infallible::RwLock; use aptos_types::{epoch_state::EpochState, validator_verifier::random_validator_verifier}; use claims::assert_ok_eq; use std::sync::Arc; @@ -21,13 +20,13 @@ async fn test_dag_fetcher_receiver() { verifier: validator_verifier, }); let storage = Arc::new(MockStorage::new()); - let dag = Arc::new(RwLock::new(Dag::new( + let dag = Arc::new(PersistentDagStore::new( epoch_state.clone(), storage, Arc::new(MockPayloadManager {}), 0, TEST_DAG_WINDOW, - ))); + )); let mut fetcher = FetchRequestHandler::new(dag.clone(), epoch_state); @@ -36,7 +35,7 @@ async fn test_dag_fetcher_receiver() { // Round 1 - nodes 0, 1, 2 links to vec![] for signer in &signers[0..3] { let node = new_certified_node(1, signer.author(), vec![]); - assert!(dag.write().add_node(node.clone()).is_ok()); + assert!(dag.add_node(node.clone()).is_ok()); first_round_nodes.push(node); } diff --git a/consensus/src/dag/tests/order_rule_tests.rs b/consensus/src/dag/tests/order_rule_tests.rs index 857ac8fd5fc3f6..f18148189fec11 100644 --- a/consensus/src/dag/tests/order_rule_tests.rs +++ b/consensus/src/dag/tests/order_rule_tests.rs @@ -4,7 +4,7 @@ use crate::dag::{ adapter::OrderedNotifier, anchor_election::RoundRobinAnchorElection, - dag_store::Dag, + dag_store::{Dag, PersistentDagStore}, order_rule::OrderRule, tests::{ dag_test::MockStorage, @@ -14,7 +14,7 @@ use crate::dag::{ CertifiedNode, }; use aptos_consensus_types::common::{Author, Round}; -use aptos_infallible::{Mutex, RwLock}; +use aptos_infallible::Mutex; use aptos_types::{epoch_state::EpochState, validator_verifier::random_validator_verifier}; use async_trait::async_trait; use futures_channel::mpsc::{unbounded, UnboundedReceiver, UnboundedSender}; @@ -93,7 +93,7 @@ impl OrderedNotifier for TestNotifier { fn create_order_rule( epoch_state: Arc, - dag: Arc>, + dag: Arc, ) -> (OrderRule, UnboundedReceiver>>) { let anchor_election = Arc::new(RoundRobinAnchorElection::new( epoch_state.verifier.get_ordered_account_addresses(), @@ -134,10 +134,10 @@ proptest! { epoch: 1, verifier: validator_verifier, }); - let mut dag = Dag::new(epoch_state.clone(), Arc::new(MockStorage::new()), Arc::new(MockPayloadManager{}), 0, TEST_DAG_WINDOW); + let mut dag = Dag::new_empty(epoch_state.clone(), 0, TEST_DAG_WINDOW); for round_nodes in &nodes { for node in round_nodes.iter().flatten() { - dag.add_node(node.clone()).unwrap(); + dag.add_node_for_test(node.clone()).unwrap(); } } let flatten_nodes: Vec<_> = nodes.into_iter().flatten().flatten().collect(); @@ -145,7 +145,7 @@ proptest! { rayon::scope(|s| { for seq in sequences { s.spawn(|_| { - let dag = Arc::new(RwLock::new(dag.clone())); + let dag = Arc::new(PersistentDagStore::new_for_test(dag.clone(),Arc::new(MockStorage::new()), Arc::new(MockPayloadManager {}))); let (mut order_rule, mut receiver) = create_order_rule(epoch_state.clone(), dag); for idx in seq { order_rule.process_new_node(flatten_nodes[idx].metadata()); @@ -159,7 +159,7 @@ proptest! { } }); // order produced by process_all - let dag = Arc::new(RwLock::new(dag.clone())); + let dag = Arc::new(PersistentDagStore::new_for_test(dag.clone(),Arc::new(MockStorage::new()), Arc::new(MockPayloadManager {}))); let (mut order_rule, mut receiver) = create_order_rule(epoch_state.clone(), dag); order_rule.process_all(); let mut ordered = vec![]; @@ -221,20 +221,18 @@ fn test_order_rule_basic() { epoch: 1, verifier: validator_verifier, }); - let mut dag = Dag::new( - epoch_state.clone(), - Arc::new(MockStorage::new()), - Arc::new(MockPayloadManager {}), - 0, - TEST_DAG_WINDOW, - ); + let mut dag = Dag::new_empty(epoch_state.clone(), 0, TEST_DAG_WINDOW); for round_nodes in &nodes { for node in round_nodes.iter().flatten() { - dag.add_node(node.clone()).unwrap(); + dag.add_node_for_test(node.clone()).unwrap(); } } let display = |node: &NodeMetadata| (node.round(), *author_indexes.get(node.author()).unwrap()); - let dag = Arc::new(RwLock::new(dag.clone())); + let dag = Arc::new(PersistentDagStore::new_for_test( + dag.clone(), + Arc::new(MockStorage::new()), + Arc::new(MockPayloadManager {}), + )); let (mut order_rule, mut receiver) = create_order_rule(epoch_state, dag); for node in nodes.iter().flatten().flatten() { order_rule.process_new_node(node.metadata()); diff --git a/consensus/src/dag/tests/rb_handler_tests.rs b/consensus/src/dag/tests/rb_handler_tests.rs index 87ff0b01453fac..263a3b82128ded 100644 --- a/consensus/src/dag/tests/rb_handler_tests.rs +++ b/consensus/src/dag/tests/rb_handler_tests.rs @@ -3,7 +3,7 @@ use crate::dag::{ dag_fetcher::TFetchRequester, - dag_store::Dag, + dag_store::PersistentDagStore, errors::NodeBroadcastHandleError, health::{HealthBackoff, NoChainHealth, NoPipelineBackpressure}, rb_handler::NodeBroadcastHandler, @@ -16,7 +16,6 @@ use crate::dag::{ NodeId, RpcHandler, Vote, }; use aptos_config::config::DagPayloadConfig; -use aptos_infallible::RwLock; use aptos_types::{ aggregate_signature::PartialSignatures, epoch_state::EpochState, validator_verifier::random_validator_verifier, @@ -48,13 +47,13 @@ async fn test_node_broadcast_receiver_succeed() { // Scenario: Start DAG from beginning let storage = Arc::new(MockStorage::new()); - let dag = Arc::new(RwLock::new(Dag::new( + let dag = Arc::new(PersistentDagStore::new( epoch_state.clone(), storage.clone(), Arc::new(MockPayloadManager {}), 0, TEST_DAG_WINDOW, - ))); + )); let health_backoff = HealthBackoff::new( epoch_state.clone(), @@ -106,13 +105,13 @@ async fn test_node_broadcast_receiver_failure() { .iter() .map(|signer| { let storage = Arc::new(MockStorage::new()); - let dag = Arc::new(RwLock::new(Dag::new( + let dag = Arc::new(PersistentDagStore::new( epoch_state.clone(), storage.clone(), Arc::new(MockPayloadManager {}), 0, TEST_DAG_WINDOW, - ))); + )); NodeBroadcastHandler::new( dag, @@ -192,13 +191,13 @@ async fn test_node_broadcast_receiver_storage() { }); let storage = Arc::new(MockStorage::new()); - let dag = Arc::new(RwLock::new(Dag::new( + let dag = Arc::new(PersistentDagStore::new( epoch_state.clone(), storage.clone(), Arc::new(MockPayloadManager {}), 0, TEST_DAG_WINDOW, - ))); + )); let node = new_node(1, 10, signers[0].author(), vec![]); diff --git a/consensus/src/liveness/leader_reputation.rs b/consensus/src/liveness/leader_reputation.rs index 9e4cd01b012cc2..29349b89807829 100644 --- a/consensus/src/liveness/leader_reputation.rs +++ b/consensus/src/liveness/leader_reputation.rs @@ -578,7 +578,11 @@ impl LeaderReputation { // Compute chain health metrics, and // - return participating voting power percentage for the window_for_chain_health // - update metric counters for different windows - fn compute_chain_health_and_add_metrics(&self, history: &[NewBlockEvent], round: Round) -> VotingPowerRatio { + fn compute_chain_health_and_add_metrics( + &self, + history: &[NewBlockEvent], + round: Round, + ) -> VotingPowerRatio { let candidates = self.epoch_to_proposers.get(&self.epoch).unwrap(); // use f64 counter, as total voting power is u128 let total_voting_power = self.voting_powers.iter().map(|v| *v as f64).sum();