mirror of
https://github.com/mozilla-services/syncstorage-rs.git
synced 2026-05-05 12:16:21 +02:00
fix: upgrade to latest deadpool (#1631)
which includes a fix for its incorrect metrics: https://github.com/bikeshedder/deadpool/issues/92 Closes SYNC-4522
This commit is contained in:
parent
9b033edcb0
commit
9a97b6ce1a
43
Cargo.lock
generated
43
Cargo.lock
generated
@ -609,17 +609,6 @@ dependencies = [
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "config"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19b076e143e1d9538dde65da30f8481c2a6c44040edb8e02b9bf1351edb92ce3"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"nom 5.1.3",
|
||||
"serde 1.0.203",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "config"
|
||||
version = "0.11.0"
|
||||
@ -686,15 +675,6 @@ dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-queue"
|
||||
version = "0.3.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
|
||||
dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.20"
|
||||
@ -778,14 +758,21 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deadpool"
|
||||
version = "0.7.0"
|
||||
source = "git+https://github.com/mozilla-services/deadpool?tag=deadpool-v0.7.0#4e041037f758186e62021021e130926d5302ebe8"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6541a3916932fe57768d4be0b1ffb5ec7cbf74ca8c903fdfd5c0fe8aa958f0ed"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"config 0.10.1",
|
||||
"crossbeam-queue",
|
||||
"deadpool-runtime",
|
||||
"num_cpus",
|
||||
"serde 1.0.203",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "deadpool-runtime"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b"
|
||||
dependencies = [
|
||||
"tokio",
|
||||
]
|
||||
|
||||
@ -1630,7 +1617,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-targets 0.48.5",
|
||||
"windows-targets 0.52.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2911,7 +2898,7 @@ dependencies = [
|
||||
name = "syncserver-settings"
|
||||
version = "0.17.12"
|
||||
dependencies = [
|
||||
"config 0.11.0",
|
||||
"config",
|
||||
"num_cpus",
|
||||
"serde 1.0.203",
|
||||
"slog-scope",
|
||||
|
||||
@ -43,6 +43,7 @@ diesel_logger = "0.1"
|
||||
cadence = "1.3"
|
||||
backtrace = "0.3"
|
||||
chrono = "0.4"
|
||||
deadpool = { version = "0.12", features = ["rt_tokio_1"] }
|
||||
env_logger = "0.11"
|
||||
futures = { version = "0.3", features = ["compat"] }
|
||||
futures-util = { version = "0.3", features = [
|
||||
|
||||
@ -7,11 +7,11 @@ edition.workspace = true
|
||||
|
||||
[dependencies]
|
||||
backtrace.workspace = true
|
||||
deadpool.workspace = true
|
||||
futures.workspace = true
|
||||
http.workspace = true
|
||||
thiserror.workspace = true
|
||||
|
||||
diesel = { workspace = true, features = ["mysql", "r2d2"] }
|
||||
deadpool = { git = "https://github.com/mozilla-services/deadpool", tag = "deadpool-v0.7.0" }
|
||||
diesel_migrations = { workspace = true, features = ["mysql"] }
|
||||
syncserver-common = { path = "../syncserver-common" }
|
||||
|
||||
@ -8,6 +8,7 @@ edition.workspace = true
|
||||
[dependencies]
|
||||
backtrace.workspace = true
|
||||
cadence.workspace = true
|
||||
deadpool.workspace = true
|
||||
env_logger.workspace = true
|
||||
futures.workspace = true
|
||||
http.workspace = true
|
||||
@ -16,7 +17,6 @@ thiserror.workspace = true
|
||||
|
||||
async-trait = "0.1.40"
|
||||
google-cloud-rust-raw = { version = "0.16.1", features = ["spanner"] }
|
||||
deadpool = { git = "https://github.com/mozilla-services/deadpool", tag = "deadpool-v0.7.0" }
|
||||
form_urlencoded = "1.2"
|
||||
# Some versions of OpenSSL 1.1.1 conflict with grpcio's built-in boringssl which can cause
|
||||
# syncserver to either fail to either compile, or start. In those cases, try
|
||||
@ -34,7 +34,7 @@ syncstorage-settings = { path = "../syncstorage-settings" }
|
||||
tokio = { workspace = true, features = [
|
||||
"macros",
|
||||
"sync",
|
||||
] } # pinning to 0.2.4 due to high number of dependencies (actix, bb8, deadpool, etc.)
|
||||
] }
|
||||
url = "2.1"
|
||||
uuid = { version = "1.6", features = ["serde", "v4"] }
|
||||
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
use std::{fmt, sync::Arc};
|
||||
|
||||
use async_trait::async_trait;
|
||||
use deadpool::managed::{Manager, RecycleError, RecycleResult};
|
||||
use grpcio::{EnvBuilder, Environment};
|
||||
use syncserver_common::{BlockingThreadpool, Metrics};
|
||||
@ -11,7 +10,7 @@ use super::session::{
|
||||
};
|
||||
use crate::error::DbError;
|
||||
|
||||
pub(crate) type Conn = deadpool::managed::Object<SpannerSession, DbError>;
|
||||
pub(crate) type Conn = deadpool::managed::Object<SpannerSessionManager>;
|
||||
|
||||
pub(crate) struct SpannerSessionManager {
|
||||
settings: SpannerSessionSettings,
|
||||
@ -45,8 +44,10 @@ impl SpannerSessionManager {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Manager<SpannerSession, DbError> for SpannerSessionManager {
|
||||
impl Manager for SpannerSessionManager {
|
||||
type Type = SpannerSession;
|
||||
type Error = DbError;
|
||||
|
||||
async fn create(&self) -> Result<SpannerSession, DbError> {
|
||||
let session = create_spanner_session(
|
||||
&self.settings,
|
||||
@ -58,7 +59,11 @@ impl Manager<SpannerSession, DbError> for SpannerSessionManager {
|
||||
Ok(session)
|
||||
}
|
||||
|
||||
async fn recycle(&self, conn: &mut SpannerSession) -> RecycleResult<DbError> {
|
||||
async fn recycle(
|
||||
&self,
|
||||
conn: &mut SpannerSession,
|
||||
_: &deadpool::managed::Metrics,
|
||||
) -> RecycleResult<DbError> {
|
||||
recycle_spanner_session(conn, &self.metrics)
|
||||
.await
|
||||
.map_err(RecycleError::Backend)
|
||||
|
||||
@ -3,4 +3,3 @@ mod deadpool;
|
||||
mod session;
|
||||
|
||||
pub(super) use self::deadpool::{Conn, SpannerSessionManager};
|
||||
pub(super) use self::session::SpannerSession;
|
||||
|
||||
@ -8,17 +8,12 @@ use syncstorage_settings::{Quota, Settings};
|
||||
use tokio::sync::RwLock;
|
||||
|
||||
pub(super) use super::manager::Conn;
|
||||
use super::{
|
||||
error::DbError,
|
||||
manager::{SpannerSession, SpannerSessionManager},
|
||||
models::SpannerDb,
|
||||
DbResult,
|
||||
};
|
||||
use super::{error::DbError, manager::SpannerSessionManager, models::SpannerDb, DbResult};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct SpannerDbPool {
|
||||
/// Pool of db connections
|
||||
pool: deadpool::managed::Pool<SpannerSession, DbError>,
|
||||
pool: deadpool::managed::Pool<SpannerSessionManager>,
|
||||
/// In-memory cache of collection_ids and their names
|
||||
coll_cache: Arc<CollectionCache>,
|
||||
|
||||
@ -51,8 +46,16 @@ impl SpannerDbPool {
|
||||
wait,
|
||||
..Default::default()
|
||||
};
|
||||
let config = deadpool::managed::PoolConfig { max_size, timeouts };
|
||||
let pool = deadpool::managed::Pool::from_config(manager, config);
|
||||
let config = deadpool::managed::PoolConfig {
|
||||
max_size,
|
||||
timeouts,
|
||||
..Default::default()
|
||||
};
|
||||
let pool = deadpool::managed::Pool::builder(manager)
|
||||
.config(config)
|
||||
.runtime(deadpool::Runtime::Tokio1)
|
||||
.build()
|
||||
.map_err(|e| DbError::internal(format!("Couldn't build Db Pool: {}", e)))?;
|
||||
|
||||
Ok(Self {
|
||||
pool,
|
||||
@ -72,6 +75,7 @@ impl SpannerDbPool {
|
||||
deadpool::managed::PoolError::Timeout(timeout_type) => {
|
||||
DbError::internal(format!("deadpool Timeout: {:?}", timeout_type))
|
||||
}
|
||||
_ => DbError::internal(format!("deadpool PoolError: {}", e)),
|
||||
})?;
|
||||
Ok(SpannerDb::new(
|
||||
conn,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user