Skip to content

Commit 51a7535

Browse files
authored
Merge pull request #73 from Lay3rLabs/pool-improvements
Signing client pool wrapper
2 parents 481a142 + f411014 commit 51a7535

6 files changed

Lines changed: 45 additions & 22 deletions

File tree

Cargo.lock

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

Cargo.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ members = ["packages/*", "examples/*", "faucet", "integration-test"]
33
resolver = "2"
44

55
[workspace.package]
6-
version = "0.4.1"
6+
version = "0.4.2"
77
edition = "2021"
88
license = "Apache-2.0"
99
repository = "https://github.com/Lay3rLabs/climb"
1010

1111
[workspace.dependencies]
1212
# Local
13-
layer-climb = { path = "packages/layer-climb", version = "0.4.0-alpha.6" }
14-
layer-climb-address = { path = "packages/layer-climb-address", version = "0.4.0-alpha.6" }
15-
layer-climb-cli = { path = "packages/layer-climb-cli", version = "0.4.0-alpha.6" }
16-
layer-climb-config = { path = "packages/layer-climb-config", version = "0.4.0-alpha.6" }
17-
layer-climb-core = { path = "packages/layer-climb-core", version = "0.4.0-alpha.6" }
18-
layer-climb-proto = { path = "packages/layer-climb-proto", version = "0.4.0-alpha.6" }
13+
layer-climb = { path = "packages/layer-climb", version = "0.4.2" }
14+
layer-climb-address = { path = "packages/layer-climb-address", version = "0.4.2" }
15+
layer-climb-cli = { path = "packages/layer-climb-cli", version = "0.4.2" }
16+
layer-climb-config = { path = "packages/layer-climb-config", version = "0.4.2" }
17+
layer-climb-core = { path = "packages/layer-climb-core", version = "0.4.2" }
18+
layer-climb-proto = { path = "packages/layer-climb-proto", version = "0.4.2" }
1919

2020
# General
2121
cfg-if = "1.0.0"

examples/cli/src/commands/pool.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,12 @@ impl PoolCommand {
101101
)
102102
.await?;
103103

104-
let client_pool: Pool<SigningClientPoolManager> =
104+
let client_pool = SigningClientPool::new(
105105
Pool::builder(client_pool_manager)
106106
.max_size(max_concurrent_accounts)
107107
.build()
108-
.context("Failed to create client pool")?;
108+
.context("Failed to create client pool")?,
109+
);
109110

110111
let sends = match sends {
111112
None => max_concurrent_accounts * 2,

faucet/src/handlers/status.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ impl StatusHandler {
4444
pub async fn new(state: AppState) -> Result<Self> {
4545
let max_derivation_index = state
4646
.client_pool
47+
.pool
4748
.manager()
4849
.derivation_index
4950
.load(Ordering::SeqCst);

faucet/src/state.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use layer_climb::{pool::SigningClientPoolManager, prelude::*};
1111
#[derive(Clone)]
1212
pub struct AppState {
1313
pub config: Arc<Config>,
14-
pub client_pool: Pool<SigningClientPoolManager>,
14+
pub client_pool: SigningClientPool,
1515
pub query_client: QueryClient,
1616
pub distributor_addrs: Arc<Mutex<HashMap<u32, Address>>>,
1717
}
@@ -33,9 +33,11 @@ impl AppState {
3333
)
3434
.await?;
3535

36-
let client_pool: Pool<SigningClientPoolManager> = Pool::builder(client_pool_manager)
37-
.max_size(config.concurrency)
38-
.build()?;
36+
let client_pool = SigningClientPool::new(
37+
Pool::builder(client_pool_manager)
38+
.max_size(config.concurrency)
39+
.build()?,
40+
);
3941

4042
let query_client = QueryClient::new(config.chain_config.clone(), None).await?;
4143

packages/layer-climb-core/src/pool.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ use crate::{
55
querier::{Connection, QueryClient},
66
signing::SigningClient,
77
};
8-
use anyhow::{bail, Result};
9-
use deadpool::managed::{Manager, Metrics, RecycleResult};
8+
use anyhow::{bail, Error, Result};
9+
use deadpool::managed::{Manager, Metrics, Object, PoolError, RecycleResult};
1010
use layer_climb_address::*;
1111
use layer_climb_config::ChainConfig;
1212
use tokio::sync::Mutex;
@@ -187,8 +187,27 @@ impl Manager for SigningClientPoolManager {
187187
_: &Metrics,
188188
) -> RecycleResult<anyhow::Error> {
189189
tracing::debug!("POOL RECYCLING CLIENT {}", client.addr);
190-
self.maybe_top_up(client.addr.clone()).await?;
191190

192191
Ok(())
193192
}
194193
}
194+
195+
#[derive(Clone)]
196+
pub struct SigningClientPool {
197+
pub pool: deadpool::managed::Pool<SigningClientPoolManager>,
198+
}
199+
200+
impl SigningClientPool {
201+
pub fn new(pool: deadpool::managed::Pool<SigningClientPoolManager>) -> Self {
202+
Self { pool }
203+
}
204+
205+
pub async fn get(&self) -> Result<Object<SigningClientPoolManager>, PoolError<Error>> {
206+
let client = self.pool.get().await?;
207+
self.pool
208+
.manager()
209+
.maybe_top_up(client.addr.clone())
210+
.await?;
211+
Ok(client)
212+
}
213+
}

0 commit comments

Comments
 (0)