Skip to content

Commit 55317eb

Browse files
DaniPopesmattsse
andauthored
chore(deps): bump http, hyper etc. to 1.0; jsonrpsee 0.23 (#7018)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
1 parent e9d8cda commit 55317eb

File tree

26 files changed

+545
-599
lines changed

26 files changed

+545
-599
lines changed

Cargo.lock

Lines changed: 367 additions & 412 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ members = [
119119
"examples/rpc-db/",
120120
"examples/txpool-tracing/",
121121
"testing/ef-tests/",
122-
"testing/testing-utils"
122+
"testing/testing-utils",
123123
]
124124
default-members = ["bin/reth"]
125125

@@ -330,9 +330,15 @@ reth-trie-parallel = { path = "crates/trie/parallel" }
330330
reth-trie-types = { path = "crates/trie/types" }
331331

332332
# revm
333-
revm = { version = "9.0.0", features = [ "std", "secp256k1", "blst", ], default-features = false }
334-
revm-primitives = { version = "4.0.0", features = [ "std", ], default-features = false }
335-
revm-inspectors = { git = "https://github.com/paradigmxyz/evm-inspectors", rev = "53aa2b2" }
333+
revm = { version = "9.0.0", features = [
334+
"std",
335+
"secp256k1",
336+
"blst",
337+
], default-features = false }
338+
revm-primitives = { version = "4.0.0", features = [
339+
"std",
340+
], default-features = false }
341+
revm-inspectors = { git = "https://github.com/paradigmxyz/revm-inspectors", rev = "5e3058a" }
336342

337343
# eth
338344
alloy-chains = "0.1.15"
@@ -341,21 +347,21 @@ alloy-dyn-abi = "0.7.2"
341347
alloy-sol-types = "0.7.2"
342348
alloy-rlp = "0.3.4"
343349
alloy-trie = "0.4"
344-
alloy-rpc-types = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
345-
alloy-rpc-types-anvil = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
346-
alloy-rpc-types-trace = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
347-
alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
348-
alloy-rpc-types-beacon = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
349-
alloy-genesis = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
350-
alloy-node-bindings = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
351-
alloy-provider = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93", default-features = false, features = [
350+
alloy-rpc-types = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
351+
alloy-rpc-types-anvil = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
352+
alloy-rpc-types-trace = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
353+
alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
354+
alloy-rpc-types-beacon = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
355+
alloy-genesis = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
356+
alloy-node-bindings = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
357+
alloy-provider = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d", default-features = false, features = [
352358
"reqwest",
353359
] }
354-
alloy-eips = { git = "https://github.com/alloy-rs/alloy", default-features = false, rev = "cc68b93" }
355-
alloy-signer = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
356-
alloy-signer-wallet = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
357-
alloy-network = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
358-
alloy-consensus = { git = "https://github.com/alloy-rs/alloy", rev = "cc68b93" }
360+
alloy-eips = { git = "https://github.com/alloy-rs/alloy", default-features = false, rev = "14ed25d" }
361+
alloy-signer = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
362+
alloy-signer-wallet = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
363+
alloy-network = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
364+
alloy-consensus = { git = "https://github.com/alloy-rs/alloy", rev = "14ed25d" }
359365

360366
# misc
361367
auto_impl = "1"
@@ -415,21 +421,25 @@ async-trait = "0.1.68"
415421
futures = "0.3.26"
416422
pin-project = "1.0.12"
417423
futures-util = "0.3.25"
418-
hyper = "0.14.25"
424+
hyper = "1.3"
425+
hyper-util = "0.1.5"
419426
reqwest = { version = "0.12", default-features = false }
420427
tower = "0.4"
421-
tower-http = "0.4"
422-
http = "0.2.8"
423-
http-body = "0.4.5"
428+
tower-http = "0.5"
424429

425430
# p2p
426431
discv5 = "0.6.0"
427432
igd-next = "0.14.3"
428433

429434
# rpc
430-
jsonrpsee = "0.22"
431-
jsonrpsee-core = "0.22"
432-
jsonrpsee-types = "0.22"
435+
jsonrpsee = "0.23"
436+
jsonrpsee-core = "0.23"
437+
jsonrpsee-types = "0.23"
438+
jsonrpsee-http-client = "0.23"
439+
440+
# http
441+
http = "1.0"
442+
http-body = "1.0"
433443

434444
# crypto
435445
secp256k1 = { version = "0.28", default-features = false, features = [

crates/consensus/debug-client/src/providers/rpc.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use alloy_eips::BlockNumberOrTag;
33
use alloy_provider::{Provider, ProviderBuilder};
44
use futures::StreamExt;
55
use reth_node_core::rpc::types::RichBlock;
6+
use reth_rpc_types::BlockTransactionsKind;
67
use tokio::sync::mpsc::Sender;
78

89
/// Block provider that fetches new blocks from an RPC endpoint using a websocket connection.
@@ -32,7 +33,7 @@ impl BlockProvider for RpcBlockProvider {
3233

3334
while let Some(block) = stream.next().await {
3435
let full_block = ws_provider
35-
.get_block_by_hash(block.header.hash.unwrap(), true)
36+
.get_block_by_hash(block.header.hash.unwrap(), BlockTransactionsKind::Full)
3637
.await
3738
.expect("failed to get block")
3839
.expect("block not found");

crates/node-core/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ serde.workspace = true
6969
serde_json.workspace = true
7070

7171
# http/rpc
72-
hyper.workspace = true
72+
http.workspace = true
73+
jsonrpsee.workspace = true
74+
tower.workspace = true
7375

7476
# tracing
7577
tracing.workspace = true

crates/node-core/src/metrics/prometheus_exporter.rs

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22
33
use crate::metrics::version_metrics::register_version_metrics;
44
use eyre::WrapErr;
5-
use hyper::{
6-
service::{make_service_fn, service_fn},
7-
Body, Request, Response, Server,
8-
};
5+
use http::Response;
96
use metrics::describe_gauge;
107
use metrics_exporter_prometheus::{PrometheusBuilder, PrometheusHandle};
118
use metrics_util::layers::{PrefixLayer, Stack};
@@ -64,29 +61,36 @@ async fn start_endpoint<F: Hook + 'static>(
6461
hook: Arc<F>,
6562
task_executor: TaskExecutor,
6663
) -> eyre::Result<()> {
67-
let make_svc = make_service_fn(move |_| {
68-
let handle = handle.clone();
69-
let hook = Arc::clone(&hook);
70-
async move {
71-
Ok::<_, Infallible>(service_fn(move |_: Request<Body>| {
64+
let listener =
65+
tokio::net::TcpListener::bind(listen_addr).await.wrap_err("Could not bind to address")?;
66+
67+
task_executor.spawn_with_graceful_shutdown_signal(|signal| async move {
68+
let mut shutdown = signal.ignore_guard();
69+
loop {
70+
let io = tokio::select! {
71+
res = listener.accept() => match res {
72+
Ok((stream, _remote_addr)) => stream,
73+
Err(err) => {
74+
tracing::error!(%err, "failed to accept connection");
75+
continue;
76+
}
77+
},
78+
_ = &mut shutdown => break,
79+
};
80+
81+
let handle = handle.clone();
82+
let hook = hook.clone();
83+
let service = tower::service_fn(move |_| {
7284
(hook)();
7385
let metrics = handle.render();
74-
async move { Ok::<_, Infallible>(Response::new(Body::from(metrics))) }
75-
}))
76-
}
77-
});
78-
79-
let server =
80-
Server::try_bind(&listen_addr).wrap_err("Could not bind to address")?.serve(make_svc);
81-
82-
task_executor.spawn_with_graceful_shutdown_signal(move |signal| async move {
83-
if let Err(error) = server
84-
.with_graceful_shutdown(async move {
85-
let _ = signal.await;
86-
})
87-
.await
88-
{
89-
tracing::error!(%error, "metrics endpoint crashed")
86+
async move { Ok::<_, Infallible>(Response::new(metrics)) }
87+
});
88+
89+
if let Err(error) =
90+
jsonrpsee::server::serve_with_graceful_shutdown(io, service, &mut shutdown).await
91+
{
92+
tracing::error!(%error, "metrics endpoint crashed")
93+
}
9094
}
9195
});
9296

crates/optimism/node/Cargo.toml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@ revm-primitives.workspace = true
3333

3434
# async
3535
async-trait.workspace = true
36-
hyper.workspace = true
37-
reqwest = { workspace = true, default-features = false, features = [
38-
"rustls-tls-native-roots",
39-
] }
36+
reqwest = { workspace = true, features = ["rustls-tls-native-roots"] }
4037
tracing.workspace = true
4138

4239
# misc

crates/optimism/node/src/rpc.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ use std::sync::{atomic::AtomicUsize, Arc};
1212
/// Error type when interacting with the Sequencer
1313
#[derive(Debug, thiserror::Error)]
1414
pub enum SequencerRpcError {
15-
/// Wrapper around a [`hyper::Error`].
16-
#[error(transparent)]
17-
HyperError(#[from] hyper::Error),
1815
/// Wrapper around an [`reqwest::Error`].
1916
#[error(transparent)]
2017
HttpError(#[from] reqwest::Error),

crates/rpc/ipc/src/server/mod.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ where
9191
/// async fn run_server() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
9292
/// let server = Builder::default().build("/tmp/my-uds");
9393
/// let mut module = RpcModule::new(());
94-
/// module.register_method("say_hello", |_, _| "lo")?;
94+
/// module.register_method("say_hello", |_, _, _| "lo")?;
9595
/// let handle = server.start(module).await?;
9696
///
9797
/// // In this example we don't care about doing shutdown so let's it run forever.
@@ -390,7 +390,7 @@ where
390390
let rpc_service = self.rpc_middleware.service(RpcService::new(
391391
self.inner.methods.clone(),
392392
max_response_body_size,
393-
self.inner.conn_id as usize,
393+
self.inner.conn_id.into(),
394394
cfg,
395395
));
396396
// an ipc connection needs to handle read+write concurrently
@@ -896,7 +896,7 @@ mod tests {
896896
let endpoint = dummy_endpoint();
897897
let server = Builder::default().max_response_body_size(100).build(&endpoint);
898898
let mut module = RpcModule::new(());
899-
module.register_method("anything", |_, _| "a".repeat(101)).unwrap();
899+
module.register_method("anything", |_, _, _| "a".repeat(101)).unwrap();
900900
let handle = server.start(module).await.unwrap();
901901
tokio::spawn(handle.stopped());
902902

@@ -911,7 +911,7 @@ mod tests {
911911
let endpoint = dummy_endpoint();
912912
let server = Builder::default().max_request_body_size(100).build(&endpoint);
913913
let mut module = RpcModule::new(());
914-
module.register_method("anything", |_, _| "succeed").unwrap();
914+
module.register_method("anything", |_, _, _| "succeed").unwrap();
915915
let handle = server.start(module).await.unwrap();
916916
tokio::spawn(handle.stopped());
917917

@@ -939,7 +939,7 @@ mod tests {
939939
let endpoint = dummy_endpoint();
940940
let server = Builder::default().max_connections(2).build(&endpoint);
941941
let mut module = RpcModule::new(());
942-
module.register_method("anything", |_, _| "succeed").unwrap();
942+
module.register_method("anything", |_, _, _| "succeed").unwrap();
943943
let handle = server.start(module).await.unwrap();
944944
tokio::spawn(handle.stopped());
945945

@@ -973,7 +973,7 @@ mod tests {
973973
let server = Builder::default().build(&endpoint);
974974
let mut module = RpcModule::new(());
975975
let msg = r#"{"jsonrpc":"2.0","id":83,"result":"0x7a69"}"#;
976-
module.register_method("eth_chainId", move |_, _| msg).unwrap();
976+
module.register_method("eth_chainId", move |_, _, _| msg).unwrap();
977977
let handle = server.start(module).await.unwrap();
978978
tokio::spawn(handle.stopped());
979979

@@ -987,7 +987,7 @@ mod tests {
987987
let endpoint = dummy_endpoint();
988988
let server = Builder::default().build(&endpoint);
989989
let mut module = RpcModule::new(());
990-
module.register_method("anything", |_, _| "ok").unwrap();
990+
module.register_method("anything", |_, _, _| "ok").unwrap();
991991
let handle = server.start(module).await.unwrap();
992992
tokio::spawn(handle.stopped());
993993

@@ -1013,7 +1013,7 @@ mod tests {
10131013
let server = Builder::default().build(&endpoint);
10141014
let mut module = RpcModule::new(());
10151015
let msg = r#"{"admin":"1.0","debug":"1.0","engine":"1.0","eth":"1.0","ethash":"1.0","miner":"1.0","net":"1.0","rpc":"1.0","txpool":"1.0","web3":"1.0"}"#;
1016-
module.register_method("rpc_modules", move |_, _| msg).unwrap();
1016+
module.register_method("rpc_modules", move |_, _, _| msg).unwrap();
10171017
let handle = server.start(module).await.unwrap();
10181018
tokio::spawn(handle.stopped());
10191019

@@ -1036,7 +1036,7 @@ mod tests {
10361036
"subscribe_hello",
10371037
"s_hello",
10381038
"unsubscribe_hello",
1039-
|_, pending, tx| async move {
1039+
|_, pending, tx, _| async move {
10401040
let rx = tx.subscribe();
10411041
let stream = BroadcastStream::new(rx);
10421042
pipe_from_stream_with_bounded_buffer(pending, stream).await?;
@@ -1088,8 +1088,8 @@ mod tests {
10881088
let mut module = RpcModule::new(());
10891089
let goodbye_msg = r#"{"jsonrpc":"2.0","id":1,"result":"goodbye"}"#;
10901090
let hello_msg = r#"{"jsonrpc":"2.0","id":2,"result":"hello"}"#;
1091-
module.register_method("say_hello", move |_, _| hello_msg).unwrap();
1092-
module.register_method("say_goodbye", move |_, _| goodbye_msg).unwrap();
1091+
module.register_method("say_hello", move |_, _, _| hello_msg).unwrap();
1092+
module.register_method("say_goodbye", move |_, _, _| goodbye_msg).unwrap();
10931093
let handle = server.start(module).await.unwrap();
10941094
tokio::spawn(handle.stopped());
10951095

crates/rpc/ipc/src/server/rpc_service.rs

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ use jsonrpsee::{
66
IdProvider,
77
},
88
types::{error::reject_too_many_subscriptions, ErrorCode, ErrorObject, Request},
9-
BoundedSubscriptions, ConnectionDetails, MethodCallback, MethodResponse, MethodSink, Methods,
10-
SubscriptionState,
9+
BoundedSubscriptions, ConnectionId, Extensions, MethodCallback, MethodResponse, MethodSink,
10+
Methods, SubscriptionState,
1111
};
1212
use std::sync::Arc;
1313

1414
/// JSON-RPC service middleware.
1515
#[derive(Clone, Debug)]
1616
pub struct RpcService {
17-
conn_id: usize,
17+
conn_id: ConnectionId,
1818
methods: Methods,
1919
max_response_body_size: usize,
2020
cfg: RpcServiceCfg,
@@ -39,7 +39,7 @@ impl RpcService {
3939
pub(crate) const fn new(
4040
methods: Methods,
4141
max_response_body_size: usize,
42-
conn_id: usize,
42+
conn_id: ConnectionId,
4343
cfg: RpcServiceCfg,
4444
) -> Self {
4545
Self { methods, max_response_body_size, conn_id, cfg }
@@ -58,38 +58,25 @@ impl<'a> RpcServiceT<'a> for RpcService {
5858
let params = req.params();
5959
let name = req.method_name();
6060
let id = req.id().clone();
61+
let extensions = Extensions::new();
6162

6263
match self.methods.method_with_name(name) {
6364
None => {
6465
let rp = MethodResponse::error(id, ErrorObject::from(ErrorCode::MethodNotFound));
6566
ResponseFuture::ready(rp)
6667
}
6768
Some((_name, method)) => match method {
68-
MethodCallback::Async(callback) => {
69-
let params = params.into_owned();
70-
let id = id.into_owned();
71-
72-
let fut = (callback)(id, params, conn_id, max_response_body_size);
73-
ResponseFuture::future(fut)
69+
MethodCallback::Sync(callback) => {
70+
let rp = (callback)(id, params, max_response_body_size, extensions);
71+
ResponseFuture::ready(rp)
7472
}
75-
MethodCallback::AsyncWithDetails(callback) => {
73+
MethodCallback::Async(callback) => {
7674
let params = params.into_owned();
7775
let id = id.into_owned();
7876

79-
// Note: Add the `Request::extensions` to the connection details when available
80-
// here.
81-
let fut = (callback)(
82-
id,
83-
params,
84-
ConnectionDetails::_new(conn_id),
85-
max_response_body_size,
86-
);
77+
let fut = (callback)(id, params, conn_id, max_response_body_size, extensions);
8778
ResponseFuture::future(fut)
8879
}
89-
MethodCallback::Sync(callback) => {
90-
let rp = (callback)(id, params, max_response_body_size);
91-
ResponseFuture::ready(rp)
92-
}
9380
MethodCallback::Subscription(callback) => {
9481
let RpcServiceCfg::CallsAndSubscriptions {
9582
bounded_subscriptions,
@@ -110,7 +97,7 @@ impl<'a> RpcServiceT<'a> for RpcService {
11097
subscription_permit: p,
11198
};
11299

113-
let fut = callback(id.clone(), params, sink, conn_state);
100+
let fut = callback(id.clone(), params, sink, conn_state, extensions);
114101
ResponseFuture::future(fut)
115102
} else {
116103
let max = bounded_subscriptions.max();
@@ -129,7 +116,7 @@ impl<'a> RpcServiceT<'a> for RpcService {
129116
return ResponseFuture::ready(rp);
130117
};
131118

132-
let rp = callback(id, params, conn_id, max_response_body_size);
119+
let rp = callback(id, params, conn_id, max_response_body_size, extensions);
133120
ResponseFuture::ready(rp)
134121
}
135122
},

0 commit comments

Comments
 (0)