From eb75ca35b55a5b16c8ffc6b5b47e556d25314eb3 Mon Sep 17 00:00:00 2001 From: Kyle Espinola Date: Fri, 23 Aug 2024 12:23:54 +0200 Subject: [PATCH] fix: ingest stream shutdown and requesting snapshots --- Cargo.lock | 511 ++++++++++++++++++------------------ Cargo.toml | 20 +- grpc-ingest/src/config.rs | 7 + grpc-ingest/src/grpc.rs | 1 + grpc-ingest/src/ingester.rs | 22 +- grpc-ingest/src/redis.rs | 270 ++++++++++--------- 6 files changed, 427 insertions(+), 404 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 396e8e69c..0f6b76380 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -104,9 +104,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.5" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7d5a2cecb58716e47d67d5703a249964b14c7be1ec3cad3affc295b2d1c35d" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom 0.2.10", @@ -785,9 +785,9 @@ checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", @@ -943,9 +943,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.4" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" @@ -1005,9 +1005,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] @@ -1143,6 +1143,16 @@ dependencies = [ "hashbrown 0.13.2", ] +[[package]] +name = "borsh" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +dependencies = [ + "borsh-derive 1.5.1", + "cfg_aliases", +] + [[package]] name = "borsh-derive" version = "0.9.3" @@ -1169,6 +1179,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-derive" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.66", + "syn_derive", +] + [[package]] name = "borsh-derive-internal" version = "0.9.3" @@ -1385,6 +1409,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.31" @@ -1547,15 +1577,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode", "lazy_static", "libc", "unicode-width", - "windows-sys 0.45.0", + "windows-sys 0.52.0", ] [[package]] @@ -1964,16 +1994,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "dashmap" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" -dependencies = [ - "cfg-if", - "num_cpus", -] - [[package]] name = "dashmap" version = "5.5.3" @@ -2276,18 +2296,18 @@ dependencies = [ [[package]] name = "enum-iterator" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7add3873b5dd076766ee79c8e406ad1a472c385476b9e38849f8eec24f1be689" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" dependencies = [ "enum-iterator-derive", ] [[package]] name = "enum-iterator-derive" -version = "1.2.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" +checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", @@ -2493,9 +2513,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -2529,9 +2549,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -2560,9 +2580,9 @@ checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -2829,7 +2849,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.5", + "ahash 0.8.11", ] [[package]] @@ -2838,7 +2858,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" dependencies = [ - "ahash 0.8.5", + "ahash 0.8.11", "allocator-api2", ] @@ -3020,7 +3040,7 @@ dependencies = [ "futures-util", "http", "hyper", - "rustls 0.21.7", + "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", ] @@ -3081,9 +3101,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -3272,9 +3292,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -3439,9 +3459,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libsecp256k1" @@ -4125,7 +4145,7 @@ version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -4391,9 +4411,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "percentage" @@ -4546,9 +4566,9 @@ dependencies = [ [[package]] name = "plerkle_serialization" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f832646491065468aa8e222b47d41dd5250e4be7866725bef5f0d31c64538f5f" +checksum = "69341a546676367be06201860e72bc7ebb8f228e7dcd1999aae715207ca0a816" dependencies = [ "bs58 0.4.0", "chrono", @@ -4660,6 +4680,15 @@ dependencies = [ "toml_edit 0.19.15", ] +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -4733,6 +4762,12 @@ dependencies = [ "tracing", ] +[[package]] +name = "project-root" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bccbff07d5ed689c4087d20d7307a52ab6141edeedf487c3876a55b86cf63df" + [[package]] name = "prometheus" version = "0.13.3" @@ -4877,7 +4912,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.21.7", + "rustls 0.21.12", "thiserror", "tokio", "tracing", @@ -4893,7 +4928,7 @@ dependencies = [ "rand 0.8.5", "ring 0.16.20", "rustc-hash", - "rustls 0.21.7", + "rustls 0.21.12", "rustls-native-certs", "slab", "thiserror", @@ -5049,9 +5084,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -5059,9 +5094,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -5219,12 +5254,12 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "async-compression", - "base64 0.21.4", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -5243,11 +5278,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.7", + "rustls 0.21.12", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -5447,7 +5483,7 @@ version = "0.38.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a74ee2d7c2581cd139b42447d7d9389b889bdaad3a73f1ebb16f2a3237bb19c" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys 0.4.10", @@ -5468,12 +5504,12 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.7" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.16.20", + "ring 0.17.2", "rustls-webpki", "sct", ] @@ -5496,17 +5532,17 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.4", + "base64 0.21.7", ] [[package]] name = "rustls-webpki" -version = "0.101.6" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.2", + "untrusted 0.9.0", ] [[package]] @@ -5803,9 +5839,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.19" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] @@ -5821,9 +5857,9 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.12" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" dependencies = [ "serde", ] @@ -5852,12 +5888,13 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "indexmap 2.3.0", "itoa", + "memchr", "ryu", "serde", ] @@ -5899,7 +5936,7 @@ version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270" dependencies = [ - "base64 0.21.4", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -5954,7 +5991,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" dependencies = [ - "dashmap 5.5.3", + "dashmap", "futures", "lazy_static", "log", @@ -6091,6 +6128,12 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21" +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "sized-chunks" version = "0.6.5" @@ -6112,9 +6155,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" @@ -6154,12 +6197,12 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d76c43ef61f527d719b5c6bfa5a62ebba60839739125da9e8a00fb82349afd2" +checksum = "b4185d569c062983fc2a618ae4ee6fe1a139b36bce7a25045647c49bf0020a53" dependencies = [ "Inflector", - "base64 0.21.4", + "base64 0.21.7", "bincode", "bs58 0.4.0", "bv", @@ -6179,9 +6222,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb19b9bbd92eee2d8f637026559a9fb48bd98aba534caedf070498a50c91fce8" +checksum = "c817832e71886dbea877d1aa911c9ce2e984a39081bb56ee30d4c835567827a6" dependencies = [ "chrono", "clap 2.34.0", @@ -6196,13 +6239,13 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9538e3db584a8b1e70060f1f24222b8e0429f18b607f531fb45eb826f4917265" +checksum = "7fa9cc6e8e59adf70acbf5cac21342ae8b5e41cbf05519fe5f6287e84ab40f63" dependencies = [ "async-trait", "bincode", - "dashmap 4.0.2", + "dashmap", "futures", "futures-util", "indexmap 2.3.0", @@ -6229,9 +6272,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3afd4e309d304e296765cab716fb1fd66c66ec300465c8b26f8cce763275132" +checksum = "d02fb29934427f1487d2149fe8bcb405306729b2f22a2ad616bb8ffd024cee7b" dependencies = [ "bincode", "chrono", @@ -6243,9 +6286,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92716758e8c0e1c0bc2a5ac2eb3df443a0337fd3991cd38a3b02b12c3fbd18ce" +checksum = "d8e5a2e26448b3e04ce673794994ff27f3972ec8a806c224eccc02e09f751ca5" dependencies = [ "async-trait", "bincode", @@ -6265,17 +6308,13 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1b8230474ae9f7c841060c299999124582e8d2a0448d7847720792e98cc64e" +checksum = "20a6ef2db80dceb124b7bf81cca3300804bf427d2711973fc3df450ed7dfb26d" dependencies = [ - "ahash 0.8.5", - "blake3", "block-buffer 0.10.4", "bs58 0.4.0", "bv", - "byteorder", - "cc", "either", "generic-array", "im", @@ -6286,7 +6325,6 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "serde_json", "sha2 0.10.8", "solana-frozen-abi-macro", "subtle", @@ -6295,9 +6333,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793910ab733b113b80c357f8f492dda2fabd5671c4ea03db3aa4e46b938fdbe3" +checksum = "70088de7d4067d19a7455609e2b393e6086bd847bb39c4d2bf234fc14827ef9e" dependencies = [ "proc-macro2", "quote", @@ -6307,9 +6345,9 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-interface" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f633425dc9409c6d3f019658b90bb1ad53747ed55acd45e0a18f58b95a0b89e5" +checksum = "63f1835fe954e305097c83b4ce8548e675647eef6a3ea9ec13dbfe2d6b869398" dependencies = [ "log", "solana-sdk", @@ -6319,9 +6357,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3f819af39632dc538a566c937253bf46256e4c0e60f621c6db448bc7c76294" +checksum = "b129da15193f26db62d62ae6bb9f72361f361bcdc36054be3ab8bc04cc7a4f31" dependencies = [ "env_logger 0.9.3", "lazy_static", @@ -6330,9 +6368,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb045f0235b16f7d926f6e0338db822747d61559a1368c3cb017ba6e02c516d0" +checksum = "6d195b73093a4964ba6b5943418054a5fcbba23eafdd0842fd973fcceac1a967" dependencies = [ "log", "solana-sdk", @@ -6340,9 +6378,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1af84362ad5804dc64ca88b1ca5c35bd41321e12d42c798ac06a6fbb60dd0e70" +checksum = "fe7b06860ffbf4cf4714182e1b7eb00eb3ff0bcc9cff615d05e01e488923883c" dependencies = [ "crossbeam-channel", "gethostname", @@ -6355,9 +6393,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8e640a95d317cad1322015c5a2b6a71697fd8dabebcb8dd33ed7f5a22869d12" +checksum = "9400b50b8439868a99b5fa2d961d74e37b7a6c1d5865759d0b1c906c2ad6b2a9" dependencies = [ "bincode", "clap 3.2.25", @@ -6377,11 +6415,11 @@ dependencies = [ [[package]] name = "solana-perf" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4266c4bd46620a925b8d508c26578d5559e97fcff6735fd22e39f369c3996ee1" +checksum = "b01a386e852df67031195094628851b8d239dd71fe17b721c3993277e68cb3ab" dependencies = [ - "ahash 0.8.5", + "ahash 0.8.11", "bincode", "bv", "caps", @@ -6406,20 +6444,21 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f38a870bffbe623d900c68579984671f8dfa35bbfb3309d7134de22ce8652" +checksum = "fb2b2c8babfae4cace1a25b6efa00418f3acd852cf55d7cecc0360d3c5050479" dependencies = [ "ark-bn254", "ark-ec", "ark-ff", "ark-serialize", - "base64 0.21.4", + "base64 0.21.7", "bincode", - "bitflags 2.4.0", + "bitflags 2.6.0", "blake3", "borsh 0.10.3", "borsh 0.9.3", + "borsh 1.5.1", "bs58 0.4.0", "bv", "bytemuck", @@ -6437,7 +6476,7 @@ dependencies = [ "log", "memoffset 0.9.0", "num-bigint 0.4.4", - "num-derive 0.3.3", + "num-derive 0.4.1", "num-traits", "parking_lot 0.12.1", "rand 0.8.5", @@ -6460,18 +6499,18 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490b6f65aced077e0c5e57c20f151a134458fc350905c20d7dcf3f2162eaa6f6" +checksum = "0444f9440f4459d377c41470b2eb48b527def81f3052b7a121f6aa8c7350cc52" dependencies = [ - "base64 0.21.4", + "base64 0.21.7", "bincode", "eager", "enum-iterator", "itertools 0.10.5", "libc", "log", - "num-derive 0.3.3", + "num-derive 0.4.1", "num-traits", "percentage", "rand 0.8.5", @@ -6488,9 +6527,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0dc2b26a7a9860f180ce11f69b0ff2a8bea0d4b9e97daee741b1e76565b3c82" +checksum = "0ee4a39e41e789b6f100c97d9f40c1d08381bf6e3d0e351065e542091cddb039" dependencies = [ "crossbeam-channel", "futures-util", @@ -6513,9 +6552,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727474945d51be37ffe03e7b1d6c9630da41228c7b298a8f45098c203a78ac89" +checksum = "baad755c76ee0aab8890f0ef873e61b8b3012c523d33bfa5b062fe9be8cef370" dependencies = [ "async-mutex", "async-trait", @@ -6526,7 +6565,7 @@ dependencies = [ "quinn", "quinn-proto", "rcgen", - "rustls 0.21.7", + "rustls 0.21.12", "solana-connection-cache", "solana-measure", "solana-metrics", @@ -6540,9 +6579,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853794cccf3bd1984419a594040dfed19666e5a9ad33b0906d4174bc394b22af" +checksum = "c1c2a0ccb0be7ca79e8ff0d7c786bce586433a5687ffbea522453d0b41c4bf4a" dependencies = [ "lazy_static", "num_cpus", @@ -6550,14 +6589,14 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b368f270526a5f92ec47c45a6b74ac304b62b08c169b45cf91e0d2f1703889bd" +checksum = "3d042a812537e3507e1c163c7573fc04c96e12d3eba512e3fe74c7393229fa39" dependencies = [ "console", "dialoguer", "log", - "num-derive 0.3.3", + "num-derive 0.4.1", "num-traits", "parking_lot 0.12.1", "qstring", @@ -6569,12 +6608,12 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b766876b0c56950ab530d8495ef7eeaeb79e162f03dadaffc0d6852de9e844" +checksum = "3c6f5560283bd0a6833d1bd816299785058a870fff51b0df399fdb3ce92c8484" dependencies = [ "async-trait", - "base64 0.21.4", + "base64 0.21.7", "bincode", "bs58 0.4.0", "indicatif", @@ -6595,11 +6634,11 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876b2e410cc2403ea3216893f05034b02a180431100eb831d0b67b14fca4d29f" +checksum = "2e4ca77f89caa9071acadb1eed19c28a6691fd63d0563ed927c96bf734cf1c9c" dependencies = [ - "base64 0.21.4", + "base64 0.21.7", "bs58 0.4.0", "jsonrpc-core", "reqwest", @@ -6617,9 +6656,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebdb3f02fb3cce3c967f718bc77b79433c24aa801b63dc70f374e8759b2424e4" +checksum = "42a6ea9ad81d63f18fb8b3a9b39643cc43eaf909199d67037e724562301d1df7" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -6630,15 +6669,15 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d70ab837cc79ed67df6fdb145f1ffd544f1eaa60b0757b750f4864b90498bad" +checksum = "b5e0f0def5c5af07f53d321cea7b104487b522cfff77c3cae3da361bfe956e9e" dependencies = [ "assert_matches", - "base64 0.21.4", + "base64 0.21.7", "bincode", - "bitflags 2.4.0", - "borsh 0.10.3", + "bitflags 2.6.0", + "borsh 1.5.1", "bs58 0.4.0", "bytemuck", "byteorder", @@ -6655,9 +6694,9 @@ dependencies = [ "libsecp256k1", "log", "memmap2", - "num-derive 0.3.3", + "num-derive 0.4.1", "num-traits", - "num_enum 0.6.1", + "num_enum 0.7.2", "pbkdf2 0.11.0", "qstring", "qualifier_attr", @@ -6672,6 +6711,7 @@ dependencies = [ "serde_with 2.3.3", "sha2 0.10.8", "sha3 0.10.8", + "siphasher", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-logger", @@ -6684,9 +6724,9 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9d0433c4084a3260a32ec67f6b4272c4232d15e732be542cd5dfdf0ae1e784" +checksum = "c55c196c8050834c391a34b58e3c9fd86b15452ef1feeeafa1dbeb9d2291dfec" dependencies = [ "bs58 0.4.0", "proc-macro2", @@ -6703,9 +6743,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-streamer" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d70eda40efb5bc57ad50b1ac8452485065c1adae0e701a0348b397db054e2ab5" +checksum = "749720d82c5f31f7ec326da1e0baac098201de70f0874719172a55309433b449" dependencies = [ "async-channel 1.9.0", "bytes", @@ -6724,7 +6764,8 @@ dependencies = [ "quinn-proto", "rand 0.8.5", "rcgen", - "rustls 0.21.7", + "rustls 0.21.12", + "smallvec", "solana-metrics", "solana-perf", "solana-sdk", @@ -6735,9 +6776,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3c510144695c3d1ee1f84dd9975af7f7d35c168447c484bbd35c21e903c515" +checksum = "84535de1253afb6ccc4ae6852eb013ca734c439a902ec5e4684b90ed649a37c2" dependencies = [ "bincode", "log", @@ -6750,9 +6791,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f27c8fec609179a7dfc287060df2a926c8cd89329235c4b8d78bd019a72462" +checksum = "3ff514462bb715aaea9bc5c0ee60f83ab3f91e04279337c6b07d054153b616dc" dependencies = [ "async-trait", "bincode", @@ -6774,12 +6815,12 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f58f2f864d900eddf2e21a99ebe445b6be525d597e44952f075d8237035b8e" +checksum = "670e387049812d42bdc8fcc4ff75452ff3cb00657af979a90f55f6d37dba9dd9" dependencies = [ "Inflector", - "base64 0.21.4", + "base64 0.21.7", "bincode", "borsh 0.10.3", "bs58 0.4.0", @@ -6799,9 +6840,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ead118c5d549e4345dc59cbc5d9b282164f3e5334707f186e3aa10d40e3b30" +checksum = "11183dae826f942ebd0401712c8a52367a4a6312f1cd325f304cd9551226fc8b" dependencies = [ "async-trait", "solana-connection-cache", @@ -6814,9 +6855,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532f5d631562587facc5fe88abd2e31c0d1f29012b6766c664db9f05a39fb05b" +checksum = "8e8d518e61ce22c812df23d9c61ab9bcbef4df3e3d3dcaa74a999625f11bcf07" dependencies = [ "log", "rustc_version", @@ -6830,13 +6871,13 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c684430058b0a2e733936a8851c8843a3a6316ccd5c969d39411a479d6489642" +checksum = "5743503143fb2259c41a973a78e9aeeb8e21f1b03543c3bb85449926ea692719" dependencies = [ "bincode", "log", - "num-derive 0.3.3", + "num-derive 0.4.1", "num-traits", "rustc_version", "serde", @@ -6852,12 +6893,12 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.17.28" +version = "1.18.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aef1b48d9fdb2619349d2d15942d83c99aabe995ff945d9b418176373aa823c" +checksum = "57ee07fa523b4cfcff68de774db7aa87d2da2c4357155a90bacd9a0a0af70a99" dependencies = [ "aes-gcm-siv", - "base64 0.21.4", + "base64 0.21.7", "bincode", "bytemuck", "byteorder", @@ -6866,7 +6907,7 @@ dependencies = [ "itertools 0.10.5", "lazy_static", "merlin", - "num-derive 0.3.3", + "num-derive 0.4.1", "num-traits", "rand 0.7.3", "serde", @@ -6881,9 +6922,9 @@ dependencies = [ [[package]] name = "solana_rbpf" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3" +checksum = "da5d083187e3b3f453e140f292c09186881da8a02a7b5e27f645ee26de3d9cc5" dependencies = [ "byteorder", "combine 3.8.1", @@ -7018,7 +7059,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" dependencies = [ - "base64 0.21.4", + "base64 0.21.7", "borsh 0.10.3", "bytemuck", "serde", @@ -7357,6 +7398,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -7441,18 +7494,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", @@ -7633,7 +7686,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.7", + "rustls 0.21.12", "tokio", ] @@ -7656,7 +7709,7 @@ checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", - "rustls 0.21.7", + "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", "tungstenite", @@ -7755,7 +7808,7 @@ dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.4", + "base64 0.21.7", "bytes", "flate2", "h2", @@ -7766,7 +7819,7 @@ dependencies = [ "percent-encoding", "pin-project", "prost", - "rustls 0.21.7", + "rustls 0.21.12", "rustls-native-certs", "rustls-pemfile", "tokio", @@ -8022,7 +8075,7 @@ dependencies = [ "httparse", "log", "rand 0.8.5", - "rustls 0.21.7", + "rustls 0.21.12", "sha1", "thiserror", "url", @@ -8179,9 +8232,9 @@ dependencies = [ [[package]] name = "url" -version = "2.4.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -8305,19 +8358,20 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", @@ -8342,9 +8396,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8352,9 +8406,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", @@ -8365,9 +8419,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-sys" @@ -8486,15 +8540,6 @@ dependencies = [ "windows-targets 0.48.5", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -8513,21 +8558,6 @@ dependencies = [ "windows-targets 0.52.5", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.48.5" @@ -8559,12 +8589,6 @@ dependencies = [ "windows_x86_64_msvc 0.52.5", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -8577,12 +8601,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -8595,12 +8613,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -8619,12 +8631,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -8637,12 +8643,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -8655,12 +8655,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -8673,12 +8667,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -8769,8 +8757,8 @@ dependencies = [ [[package]] name = "yellowstone-grpc-client" -version = "1.15.0+solana.1.17.28" -source = "git+https://github.com/rpcpool/yellowstone-grpc.git?tag=v1.14.1+solana.1.17.28#8fb667501cdcee0f50d8edbf5c382c97f6b4bf07" +version = "1.15.3+solana.1.18.22" +source = "git+https://github.com/rpcpool/yellowstone-grpc.git?tag=v1.15.1+solana.1.18.22#0bdedb5841d2eea663b8f2f441d37fea83e65933" dependencies = [ "bytes", "futures", @@ -8782,8 +8770,8 @@ dependencies = [ [[package]] name = "yellowstone-grpc-proto" -version = "1.14.0+solana.1.17.28" -source = "git+https://github.com/rpcpool/yellowstone-grpc.git?tag=v1.14.1+solana.1.17.28#8fb667501cdcee0f50d8edbf5c382c97f6b4bf07" +version = "1.14.2+solana.1.18.22" +source = "git+https://github.com/rpcpool/yellowstone-grpc.git?tag=v1.15.1+solana.1.18.22#0bdedb5841d2eea663b8f2f441d37fea83e65933" dependencies = [ "anyhow", "bincode", @@ -8798,8 +8786,8 @@ dependencies = [ [[package]] name = "yellowstone-grpc-tools" -version = "1.0.0-rc.11+solana.1.17.28" -source = "git+https://github.com/rpcpool/yellowstone-grpc.git?tag=v1.14.1+solana.1.17.28#8fb667501cdcee0f50d8edbf5c382c97f6b4bf07" +version = "1.0.0-rc.11+solana.1.18.22" +source = "git+https://github.com/rpcpool/yellowstone-grpc.git?tag=v1.15.1+solana.1.18.22#0bdedb5841d2eea663b8f2f441d37fea83e65933" dependencies = [ "anyhow", "async-trait", @@ -8811,6 +8799,7 @@ dependencies = [ "hyper", "json5", "lazy_static", + "project-root", "prometheus", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index ffeffdf61..8a77a8473 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -109,12 +109,12 @@ serde = "1.0.137" serde_json = "1.0.81" serde_yaml = "0.9.34" serial_test = "2.0.0" -solana-account-decoder = "~1.17" -solana-client = "~1.17" -solana-geyser-plugin-interface = "~1.17" -solana-program = "~1.17" -solana-sdk = "~1.17" -solana-transaction-status = "~1.17" +solana-account-decoder = "~1.18" +solana-client = "~1.18" +solana-geyser-plugin-interface = "~1.18" +solana-program = "~1.18" +solana-sdk = "~1.18" +solana-transaction-status = "~1.18" solana-zk-token-sdk = "1.17.16" spl-account-compression = "0.3.0" spl-associated-token-account = ">= 1.1.3, < 3.0" @@ -132,7 +132,7 @@ tokio = "1.30.0" tokio-stream = "0.1.14" topograph = { version = "0.4.0", features = [ "tokio", -], git = "https://github.com/ray-kast/topograph", sha = "5449d34ff726c2ab9f4d3a59a7070ae7bdc76027", branch = "v0.4-wip" } +], git = "https://github.com/ray-kast/topograph", branch = "v0.4-wip" } tower = "0.4.13" tower-http = "0.3.5" tracing = "0.1.35" @@ -143,9 +143,9 @@ url = "2.3.1" vergen = "8.2.1" wasi = "0.7.0" wasm-bindgen = "0.2.83" -yellowstone-grpc-client = { git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.14.1+solana.1.17.28" } # tag is geyser plugin -yellowstone-grpc-proto = { git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.14.1+solana.1.17.28" } # tag is geyser plugin -yellowstone-grpc-tools = { git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.14.1+solana.1.17.28", default-features = false } # tag is geyser plugin +yellowstone-grpc-client = { git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.15.1+solana.1.18.22" } # tag is geyser plugin +yellowstone-grpc-proto = { git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.15.1+solana.1.18.22" } # tag is geyser plugin +yellowstone-grpc-tools = { git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.15.1+solana.1.18.22", default-features = false } # tag is geyser plugin [workspace.lints.clippy] clone_on_ref_ptr = "deny" diff --git a/grpc-ingest/src/config.rs b/grpc-ingest/src/config.rs index d6ff8cc19..ebd47ea5b 100644 --- a/grpc-ingest/src/config.rs +++ b/grpc-ingest/src/config.rs @@ -124,6 +124,9 @@ pub struct ConfigGrpc { pub geyser_endpoint: String, + #[serde(default = "ConfigGrpc::default_request_snapshot")] + pub request_snapshot: bool, + #[serde( default = "ConfigGrpc::default_geyser_update_message_buffer_size", deserialize_with = "deserialize_usize_str" @@ -146,6 +149,10 @@ pub struct ConfigGrpc { } impl ConfigGrpc { + pub const fn default_request_snapshot() -> bool { + false + } + pub const fn default_max_concurrency() -> usize { 10 } diff --git a/grpc-ingest/src/grpc.rs b/grpc-ingest/src/grpc.rs index 41d94573d..5e3172794 100644 --- a/grpc-ingest/src/grpc.rs +++ b/grpc-ingest/src/grpc.rs @@ -147,6 +147,7 @@ pub async fn run_v2(config: ConfigGrpc) -> anyhow::Result<()> { .x_token(config.x_token.clone())? .connect_timeout(Duration::from_secs(10)) .timeout(Duration::from_secs(10)) + .set_x_request_snapshot(config.request_snapshot)? .connect() .await .context("failed to connect to gRPC")?; diff --git a/grpc-ingest/src/ingester.rs b/grpc-ingest/src/ingester.rs index 7af7bd44a..53f34ef1d 100644 --- a/grpc-ingest/src/ingester.rs +++ b/grpc-ingest/src/ingester.rs @@ -163,19 +163,15 @@ pub async fn run_v2(config: ConfigIngester) -> anyhow::Result<()> { let mut shutdown = create_shutdown()?; - let reporting_pool = pool.clone(); - - tokio::spawn(async move { - loop { - report_pgpool(reporting_pool.clone()); - - sleep(Duration::from_millis(100)).await; - } - }); - - tokio::select! { - Some(signal) = shutdown.next() => { - warn!("{signal} received, waiting spawned tasks..."); + loop { + tokio::select! { + _ = sleep(Duration::from_millis(100)) => { + report_pgpool(pool.clone()); + } + Some(signal) = shutdown.next() => { + warn!("{signal} received, waiting spawned tasks..."); + break; + } } } diff --git a/grpc-ingest/src/redis.rs b/grpc-ingest/src/redis.rs index 268af0113..26485f08f 100644 --- a/grpc-ingest/src/redis.rs +++ b/grpc-ingest/src/redis.rs @@ -63,7 +63,6 @@ impl IngestStreamStop { let _ = self.shutdown_tx.send(()); self.control.await?; - // self.executor.join_async().await; Ok(()) } @@ -314,7 +313,7 @@ impl<'a> } pub struct IngestStream { - config: ConfigIngestStream, + config: Arc, connection: Option, handler: Option>, } @@ -322,14 +321,14 @@ pub struct IngestStream { impl IngestStream { pub fn build() -> Self { Self { - config: ConfigIngestStream::default(), + config: Arc::new(ConfigIngestStream::default()), connection: None, handler: None, } } pub fn config(mut self, config: ConfigIngestStream) -> Self { - self.config = config; + self.config = Arc::new(config); self } @@ -349,8 +348,58 @@ impl IngestStream { self } + async fn pending( + &self, + connection: &mut MultiplexedConnection, + start: &str, + ) -> RedisResult> { + let config = Arc::clone(&self.config); + + let pending = redis::cmd("XPENDING") + .arg(&config.name) + .arg(&config.group) + .arg(start) + .arg("+") + .arg(config.batch_size) + .arg(&config.consumer) + .query_async::<_, StreamPendingCountReply>(connection) + .await?; + let ids: Vec<&str> = pending.ids.iter().map(|info| info.id.as_str()).collect(); + let opts = StreamClaimOptions::default(); + + let claimed: StreamClaimReply = connection + .xclaim_options( + &config.name, + &config.group, + &config.consumer, + 100, + &ids, + opts, + ) + .await?; + + if claimed.ids.is_empty() { + return Ok(None); + } + + Ok(Some(claimed)) + } + + async fn read(&self, connection: &mut MultiplexedConnection) -> RedisResult { + let config = &self.config; + + let opts = StreamReadOptions::default() + .group(&config.group, &config.consumer) + .count(config.batch_size) + .block(100); + + connection + .xread_options(&[&config.name], &[">"], &opts) + .await + } + pub fn start(mut self) -> anyhow::Result { - let config = Arc::new(self.config); + let config = Arc::clone(&self.config); let (shutdown_tx, shutdown_rx) = tokio::sync::oneshot::channel(); @@ -396,7 +445,7 @@ impl IngestStream { connection: connection.clone(), })?; - tokio::spawn({ + let ack = tokio::spawn({ let config = Arc::clone(&config); let mut pending = Vec::new(); @@ -442,142 +491,123 @@ impl IngestStream { ack_sender: ack_tx.clone(), })?; - let connection_report = connection.clone(); - let streams_report = vec![config.name.clone()]; + let report = vec![config.name.clone()]; - tokio::spawn(async move { - loop { - let connection = connection_report.clone(); - let streams = streams_report.clone(); - - if let Err(e) = report_xlen(connection, streams).await { - error!("redis=report_xlen err={:?}", e); - } + let control = tokio::spawn({ + let mut connection = connection.clone(); + async move { + let config = Arc::clone(&config); - sleep(Duration::from_millis(100)).await; - } - }); + debug!( + "redis=read_stream stream={} Starting read stream task", + config.name + ); - let config_read = Arc::clone(&config); - let mut connection_read = connection.clone(); + let mut shutdown_rx: tokio::sync::oneshot::Receiver<()> = shutdown_rx; - let (read_shutdown_tx, read_shutdown_rx) = tokio::sync::oneshot::channel(); + let mut start = "-".to_owned(); - tokio::spawn(async move { - debug!( - "redis=read_stream stream={} Starting read stream task", - config_read.name - ); + loop { + tokio::select! { - let mut shutdown_rx = read_shutdown_rx; + _ = &mut shutdown_rx => { + debug!( + "redis=read_stream stream={} Shutdown signal received, exiting loops", + config.name + ); + break; + }, + _ = sleep(Duration::from_millis(100)) => { + let connection = connection.clone(); - let mut start = "-".to_owned(); - loop { - if shutdown_rx.try_recv().is_ok() { - debug!( - "redis=read_stream stream={} Shutdown signal received, exiting prefetch loop", - config_read.name - ); - break; - } + if let Err(e) = report_xlen(connection, report.clone()).await { + error!("redis=report_xlen err={:?}", e); + } - if let Ok(pending) = redis::cmd("XPENDING") - .arg(&config_read.name) - .arg(&config_read.group) - .arg(&start) - .arg("+") - .arg(config_read.batch_size) - .arg(&config_read.consumer) - .query_async::<_, StreamPendingCountReply>(&mut connection_read) - .await - { - if pending.ids.is_empty() { - debug!( - "redis=XPENDING stream={} consumer={} group={} No pending messages", - config_read.name, config_read.consumer, config_read.group - ); - break; - } + debug!( + "redis=read_stream stream={} msg=waiting for pending messages", + config.name + ); + }, + claimed = self.pending(&mut connection, &start) => { + if let Ok(Some(claimed)) = claimed { + let ids = claimed.ids.clone(); + let ids: Vec<&str> = ids.iter().map(|info| info.id.as_str()).collect(); - let ids: Vec<&str> = pending.ids.iter().map(|info| info.id.as_str()).collect(); - let claim_opts = StreamClaimOptions::default(); - - let claimed: RedisResult = connection_read - .xclaim_options( - &config_read.name, - &config_read.group, - &config_read.consumer, - 20, - &ids, - claim_opts, - ) - .await; + for StreamId { id, map } in claimed.ids.into_iter() { + executor.push(IngestStreamJob::Process((id, map))); + } - if let Ok(claimed) = claimed { - for StreamId { id, map } in claimed.ids { - executor.push(IngestStreamJob::Process((id, map))); - } - } - if let Some(last_id) = pending.ids.last() { - start = last_id.id.clone(); + if let Some(last) = ids.last() { + start = last.to_string(); + } + } else { + break; + } + }, } } - } - loop { - if shutdown_rx.try_recv().is_ok() { - debug!( - "redis=read_stream stream={} Shutdown signal received, exiting read loop", - config_read.name - ); - break; - } + loop { + tokio::select! { + _ = &mut shutdown_rx => { + debug!( + "redis=read_stream stream={} Shutdown signal received, exiting read loop", + config.name + ); + break; + }, + _ = sleep(Duration::from_millis(100)) => { + let connection = connection.clone(); + + if let Err(e) = report_xlen(connection, report.clone()).await { + error!("redis=report_xlen err={:?}", e); + } - let opts = StreamReadOptions::default() - .group(&config_read.group, &config_read.consumer) - .count(config_read.batch_size) - .block(100); - - let result: RedisResult = connection_read - .xread_options(&[&config_read.name], &[">"], &opts) - .await; - - match result { - Ok(reply) => { - let count = reply.keys.len(); - debug!( - "redis=xread stream={:?} count={:?}", - &config_read.name, count - ); - - for StreamKey { key: _, ids } in reply.keys { - for StreamId { id, map } in ids { - executor.push(IngestStreamJob::Process((id, map))); + debug!( + "redis=read_stream stream={} msg=waiting for pending messages", + config.name + ); + }, + result = self.read(&mut connection) => { + match result { + Ok(reply) => { + let count = reply.keys.len(); + debug!( + "redis=xread stream={:?} count={:?}", + &config.name, count + ); + + for StreamKey { key: _, ids } in reply.keys { + for StreamId { id, map } in ids { + executor.push(IngestStreamJob::Process((id, map))); + } + } + } + Err(err) => { + error!("redis=xread stream={:?} err={:?}", &config.name, err); + } } } } - Err(err) => { - error!("redis=xread stream={:?} err={:?}", &config_read.name, err); - } } - } - }); - let control = tokio::spawn(async move { - let mut shutdown_rx: tokio::sync::oneshot::Receiver<()> = shutdown_rx; - debug!( - "redis=ingest_stream stream={} Starting ingest stream", - config.name - ); + debug!("stream={} msg=start shut down ingest stream", config.name); - tokio::select! { - _ = &mut shutdown_rx => { - info!("redis=ingest_stream stream={} Shut down ingest stream", config.name); + executor.join_async().await; - let _ = read_shutdown_tx.send(()); - let _ = ack_shutdown_tx.send(()); + debug!("stream={} msg=shut down executor", config.name); + + if let Err(e) = ack_shutdown_tx.send(()) { + error!("Failed to send shutdown signal: {:?}", e); + } + + if let Err(e) = ack.await { + error!("Error during shutdown: {:?}", e); } + + debug!("stream={} msg=shut down ack", config.name); } }); @@ -825,7 +855,7 @@ async fn run_ack( .await { Ok(_) => { - info!("Acknowledged and deleted idle messages: {:?}", ids); + debug!("Acknowledged and deleted idle messages: {:?}", ids); redis_xack_inc(&stream.stream_name, ids.len()); } Err(e) => {