diff --git a/Cargo.lock b/Cargo.lock index ae6af006ad..ec94c78871 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -181,7 +181,7 @@ dependencies = [ "futures-core", "getrandom 0.2.0", "instant", - "pin-project 1.0.1", + "pin-project 1.0.7", "rand 0.8.3", "tokio 1.6.1", ] @@ -1905,7 +1905,7 @@ dependencies = [ "httparse", "httpdate", "itoa", - "pin-project 1.0.1", + "pin-project 1.0.7", "socket2", "tokio 0.2.22", "tower-service", @@ -2798,6 +2798,22 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91cea1dfd50064e52db033179952d18c770cbc5dfefc8eba45d619357ba3914" +dependencies = [ + "async-trait", + "futures 0.3.15", + "js-sys", + "lazy_static", + "percent-encoding 2.1.0", + "pin-project 1.0.7", + "rand 0.8.3", + "thiserror", +] + [[package]] name = "os_str_bytes" version = "2.4.0" @@ -3015,11 +3031,11 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.1" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841" +checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" dependencies = [ - "pin-project-internal 1.0.1", + "pin-project-internal 1.0.7", ] [[package]] @@ -3035,9 +3051,9 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.0.1" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86" +checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.6", @@ -4023,6 +4039,15 @@ dependencies = [ "opaque-debug 0.3.0", ] +[[package]] +name = "sharded-slab" +version = "0.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06d5a3f5166fb5b42a5439f2eee8b9de149e235961e3eb21c5808fc3ea17ff3e" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "0.1.1" @@ -6035,30 +6060,33 @@ dependencies = [ [[package]] name = "tarpc" -version = "0.24.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e325774dd5b35d979e9f4db2b0f0d7d85dc2ff2b676a3150af56c09eafc14b07" +checksum = "82cb992a07637db1bcc0e4511d0c58c3f3a03f509d7c6cc2826f7646deac2032" dependencies = [ "anyhow", "fnv", "futures 0.3.15", "humantime", - "log 0.4.11", - "pin-project 1.0.1", - "rand 0.7.3", + "opentelemetry", + "pin-project 1.0.7", + "rand 0.8.3", "serde", "static_assertions", "tarpc-plugins", + "thiserror", "tokio 1.6.1", "tokio-serde", "tokio-util 0.6.3", + "tracing", + "tracing-opentelemetry", ] [[package]] name = "tarpc-plugins" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3240378a22b1195734e085ba71d1d4188d50f034aea82635acc430b7005afb5" +checksum = "ea80818e6c75f81d961d7426c1b938cbea6b3a51533b5ee71b61f82166b7ef3d" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.6", @@ -6151,6 +6179,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99" +[[package]] +name = "thread_local" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +dependencies = [ + "once_cell", +] + [[package]] name = "time" version = "0.1.43" @@ -6442,9 +6479,8 @@ dependencies = [ "educe", "futures-core", "futures-sink", - "pin-project 1.0.1", + "pin-project 1.0.7", "serde", - "serde_json", ] [[package]] @@ -6580,6 +6616,7 @@ dependencies = [ "futures-sink", "log 0.4.11", "pin-project-lite 0.2.4", + "slab", "tokio 1.6.1", ] @@ -6609,7 +6646,7 @@ dependencies = [ "http-body 0.4.0", "hyper 0.14.3", "percent-encoding 2.1.0", - "pin-project 1.0.1", + "pin-project 1.0.7", "prost", "prost-derive", "tokio 1.6.1", @@ -6631,7 +6668,7 @@ dependencies = [ "futures-core", "futures-util", "indexmap", - "pin-project 1.0.1", + "pin-project 1.0.7", "rand 0.8.3", "slab", "tokio 1.6.1", @@ -6655,21 +6692,22 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" -version = "0.1.18" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0aae59226cf195d8e74d4b34beae1859257efb4e5fed3f147d2dc2c7d372178" +checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "log 0.4.11", + "pin-project-lite 0.2.4", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.9" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0693bf8d6f2bf22c690fc61a9d21ac69efdbb894a17ed596b9af0f01e64b84b" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.6", @@ -6678,9 +6716,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.13" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d593f98af59ebc017c0648f0117525db358745a8894a8d684e185ba3f45954f9" +checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" dependencies = [ "lazy_static", ] @@ -6695,6 +6733,29 @@ dependencies = [ "tracing", ] +[[package]] +name = "tracing-opentelemetry" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99003208b647dae59dcefc49c98aecaa3512fbc29351685d4b9ef23a9218458e" +dependencies = [ + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abd165311cc4d7a555ad11cc77a37756df836182db0d81aac908c8184c584f40" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + [[package]] name = "traitobject" version = "0.1.0" diff --git a/banks-client/Cargo.toml b/banks-client/Cargo.toml index 8231258823..05e48b40db 100644 --- a/banks-client/Cargo.toml +++ b/banks-client/Cargo.toml @@ -18,7 +18,7 @@ mio = "0.7.11" solana-banks-interface = { path = "../banks-interface", version = "=1.8.0" } solana-program = { path = "../sdk/program", version = "=1.8.0" } solana-sdk = { path = "../sdk", version = "=1.8.0" } -tarpc = { version = "0.24.1", features = ["full"] } +tarpc = { version = "0.26.2", features = ["full"] } tokio = { version = "1", features = ["full"] } tokio-serde = { version = "0.8", features = ["bincode"] } diff --git a/banks-client/src/lib.rs b/banks-client/src/lib.rs index 5a4d36580e..e1b85fa3cb 100644 --- a/banks-client/src/lib.rs +++ b/banks-client/src/lib.rs @@ -22,11 +22,10 @@ use solana_sdk::{ }; use std::io::{self, Error, ErrorKind}; use tarpc::{ - client::{self, channel::RequestDispatch, NewClient}, + client::{self, NewClient, RequestDispatch}, context::{self, Context}, - rpc::{ClientMessage, Response}, serde_transport::tcp, - Transport, + ClientMessage, Response, Transport, }; use tokio::{net::ToSocketAddrs, time::Duration}; use tokio_serde::formats::Bincode; @@ -300,14 +299,14 @@ where C: Transport, Response> + Send + 'static, { Ok(BanksClient { - inner: TarpcClient::new(client::Config::default(), transport).spawn()?, + inner: TarpcClient::new(client::Config::default(), transport).spawn(), }) } pub async fn start_tcp_client(addr: T) -> io::Result { let transport = tcp::connect(addr, Bincode::default).await?; Ok(BanksClient { - inner: TarpcClient::new(client::Config::default(), transport).spawn()?, + inner: TarpcClient::new(client::Config::default(), transport).spawn(), }) } diff --git a/banks-interface/Cargo.toml b/banks-interface/Cargo.toml index 9b1a30cb0a..027619441f 100644 --- a/banks-interface/Cargo.toml +++ b/banks-interface/Cargo.toml @@ -13,7 +13,7 @@ edition = "2018" mio = "0.7.11" serde = { version = "1.0.126", features = ["derive"] } solana-sdk = { path = "../sdk", version = "=1.8.0" } -tarpc = { version = "0.24.1", features = ["full"] } +tarpc = { version = "0.26.2", features = ["full"] } [dev-dependencies] tokio = { version = "1", features = ["full"] } diff --git a/banks-server/Cargo.toml b/banks-server/Cargo.toml index 1fa49937fa..d0bf9ef71d 100644 --- a/banks-server/Cargo.toml +++ b/banks-server/Cargo.toml @@ -18,7 +18,7 @@ solana-banks-interface = { path = "../banks-interface", version = "=1.8.0" } solana-runtime = { path = "../runtime", version = "=1.8.0" } solana-sdk = { path = "../sdk", version = "=1.8.0" } solana-metrics = { path = "../metrics", version = "=1.8.0" } -tarpc = { version = "0.24.1", features = ["full"] } +tarpc = { version = "0.26.2", features = ["full"] } tokio = { version = "1", features = ["full"] } tokio-serde = { version = "0.8", features = ["bincode"] } tokio-stream = "0.1" diff --git a/banks-server/src/banks_server.rs b/banks-server/src/banks_server.rs index 1f1a303ac2..6b8675d0e2 100644 --- a/banks-server/src/banks_server.rs +++ b/banks-server/src/banks_server.rs @@ -1,9 +1,6 @@ use crate::send_transaction_service::{SendTransactionService, TransactionInfo}; use bincode::{deserialize, serialize}; -use futures::{ - future, - prelude::stream::{self, StreamExt}, -}; +use futures::{future, prelude::stream::StreamExt}; use solana_banks_interface::{ Banks, BanksRequest, BanksResponse, TransactionConfirmationStatus, TransactionStatus, }; @@ -30,10 +27,10 @@ use std::{ }; use tarpc::{ context::Context, - rpc::{transport::channel::UnboundedChannel, ClientMessage, Response}, serde_transport::tcp, - server::{self, Channel, Handler}, - transport, + server::{self, Channel, Incoming}, + transport::{self, channel::UnboundedChannel}, + ClientMessage, Response, }; use tokio::time::sleep; use tokio_serde::formats::Bincode; @@ -252,9 +249,7 @@ pub async fn start_local_server( ) -> UnboundedChannel, ClientMessage> { let banks_server = BanksServer::new_loopback(bank_forks, block_commitment_cache); let (client_transport, server_transport) = transport::channel::unbounded(); - let server = server::new(server::Config::default()) - .incoming(stream::once(future::ready(server_transport))) - .respond_with(banks_server.serve()); + let server = server::BaseChannel::with_defaults(server_transport).execute(banks_server.serve()); tokio::spawn(server); client_transport } @@ -287,7 +282,7 @@ pub async fn start_tcp_server( let server = BanksServer::new(bank_forks.clone(), block_commitment_cache.clone(), sender); - chan.respond_with(server.serve()).execute() + chan.execute(server.serve()) }) // Max 10 channels. .buffer_unordered(10) diff --git a/programs/bpf/Cargo.lock b/programs/bpf/Cargo.lock index 0960002dab..35a7d38081 100644 --- a/programs/bpf/Cargo.lock +++ b/programs/bpf/Cargo.lock @@ -1941,6 +1941,22 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91cea1dfd50064e52db033179952d18c770cbc5dfefc8eba45d619357ba3914" +dependencies = [ + "async-trait", + "futures 0.3.12", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.2", + "thiserror", +] + [[package]] name = "ouroboros" version = "0.5.1" @@ -2667,6 +2683,15 @@ dependencies = [ "opaque-debug 0.3.0", ] +[[package]] +name = "sharded-slab" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3" +dependencies = [ + "lazy_static", +] + [[package]] name = "signal-hook-registry" version = "1.3.0" @@ -3816,30 +3841,33 @@ dependencies = [ [[package]] name = "tarpc" -version = "0.24.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e325774dd5b35d979e9f4db2b0f0d7d85dc2ff2b676a3150af56c09eafc14b07" +checksum = "82cb992a07637db1bcc0e4511d0c58c3f3a03f509d7c6cc2826f7646deac2032" dependencies = [ "anyhow", "fnv", "futures 0.3.12", "humantime", - "log", + "opentelemetry", "pin-project", - "rand 0.7.3", + "rand 0.8.2", "serde", "static_assertions", "tarpc-plugins", + "thiserror", "tokio 1.4.0", "tokio-serde", "tokio-util", + "tracing", + "tracing-opentelemetry", ] [[package]] name = "tarpc-plugins" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3240378a22b1195734e085ba71d1d4188d50f034aea82635acc430b7005afb5" +checksum = "ea80818e6c75f81d961d7426c1b938cbea6b3a51533b5ee71b61f82166b7ef3d" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.6", @@ -3917,6 +3945,15 @@ dependencies = [ "syn 1.0.67", ] +[[package]] +name = "thread_local" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +dependencies = [ + "once_cell", +] + [[package]] name = "time" version = "0.1.43" @@ -4111,7 +4148,6 @@ dependencies = [ "futures-sink", "pin-project", "serde", - "serde_json", ] [[package]] @@ -4222,6 +4258,7 @@ dependencies = [ "futures-sink", "log", "pin-project-lite 0.2.4", + "slab", "tokio 1.4.0", ] @@ -4247,10 +4284,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" dependencies = [ "cfg-if 0.1.10", + "log", "pin-project-lite 0.1.5", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +dependencies = [ + "proc-macro2 1.0.24", + "quote 1.0.6", + "syn 1.0.67", +] + [[package]] name = "tracing-core" version = "0.1.17" @@ -4260,6 +4310,29 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "tracing-opentelemetry" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99003208b647dae59dcefc49c98aecaa3512fbc29351685d4b9ef23a9218458e" +dependencies = [ + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa5553bf0883ba7c9cbe493b085c29926bd41b66afc31ff72cf17ff4fb60dcd5" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + [[package]] name = "try-lock" version = "0.2.2"