diff --git a/Cargo.lock b/Cargo.lock index 0d6a7f68..00d0a8c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -465,9 +465,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82da0ea54ea533ec09d949717c6386a1c34f2d9b51c1fcc7eef8b9ce0b690a3e" +checksum = "68650b7df54f0293fd061972a0fb05aaf4fc0879d3b3d21a638a182c5c543b9f" dependencies = [ "compression-codecs", "compression-core", @@ -990,7 +990,7 @@ dependencies = [ [[package]] name = "builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "cc", "codemap", @@ -1365,7 +1365,7 @@ checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" [[package]] name = "cli" -version = "0.29.9" +version = "0.30.0" dependencies = [ "anyhow", "async-recursion", @@ -1518,7 +1518,7 @@ checksum = "55b672471b4e9f9e95499ea597ff64941a309b2cdbffcc46f2cc5e2d971fd335" [[package]] name = "common" -version = "0.29.9" +version = "0.30.0" dependencies = [ "anyhow", "async-graphql-value", @@ -1713,7 +1713,7 @@ dependencies = [ [[package]] name = "core-model" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "async-graphql-value", @@ -1724,7 +1724,7 @@ dependencies = [ [[package]] name = "core-model-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "codemap", "codemap-diagnostic", @@ -1736,7 +1736,7 @@ dependencies = [ [[package]] name = "core-plugin-interface" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "built", @@ -1750,7 +1750,7 @@ dependencies = [ [[package]] name = "core-plugin-shared" -version = "0.29.9" +version = "0.30.0" dependencies = [ "base16ct 0.3.0", "bincode 2.0.1", @@ -1767,7 +1767,7 @@ dependencies = [ [[package]] name = "core-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "async-graphql-value", @@ -1799,11 +1799,11 @@ dependencies = [ [[package]] name = "core-rest-model" -version = "0.29.9" +version = "0.30.0" [[package]] name = "core-router" -version = "0.29.9" +version = "0.30.0" dependencies = [ "core-plugin-interface", "core-plugin-shared", @@ -2365,7 +2365,7 @@ checksum = "26bf8fc351c5ed29b5c2f0cbbac1b209b74f60ecd62e675a998df72c49af5204" [[package]] name = "deno-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "core-model-builder", @@ -2376,7 +2376,7 @@ dependencies = [ [[package]] name = "deno-graphql-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "codemap", @@ -2395,7 +2395,7 @@ dependencies = [ [[package]] name = "deno-graphql-model" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "bincode 2.0.1", @@ -2407,7 +2407,7 @@ dependencies = [ [[package]] name = "deno-graphql-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "anyhow", "async-graphql-parser", @@ -2432,7 +2432,7 @@ dependencies = [ [[package]] name = "deno-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "core-plugin-interface", @@ -4269,7 +4269,7 @@ checksum = "31ae425815400e5ed474178a7a22e275a9687086a12ca63ec793ff292d8fdae8" [[package]] name = "exo-deno" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "ctor", @@ -4295,7 +4295,7 @@ dependencies = [ [[package]] name = "exo-env" -version = "0.29.9" +version = "0.30.0" dependencies = [ "dotenvy", "thiserror 2.0.18", @@ -4303,7 +4303,7 @@ dependencies = [ [[package]] name = "exo-sql" -version = "0.29.9" +version = "0.30.0" dependencies = [ "bincode 2.0.1", "bytes", @@ -4345,7 +4345,7 @@ dependencies = [ [[package]] name = "exo-wasm" -version = "0.29.9" +version = "0.30.0" dependencies = [ "anyhow", "serde_json", @@ -4950,7 +4950,7 @@ dependencies = [ [[package]] name = "graphql-router" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "async-stream", @@ -5829,7 +5829,7 @@ dependencies = [ [[package]] name = "introspection-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "async-graphql-value", @@ -5844,7 +5844,7 @@ dependencies = [ [[package]] name = "introspection-util" -version = "0.29.9" +version = "0.30.0" dependencies = [ "anyhow", "ctor", @@ -6381,7 +6381,7 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "lsp" -version = "0.29.9" +version = "0.30.0" dependencies = [ "anyhow", "builder", @@ -6472,7 +6472,7 @@ checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" [[package]] name = "mcp-bridge" -version = "0.29.9" +version = "0.30.0" dependencies = [ "anyhow", "clap", @@ -6486,7 +6486,7 @@ dependencies = [ [[package]] name = "mcp-router" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "async-stream", @@ -7827,7 +7827,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "playground-router" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "common", @@ -7909,7 +7909,7 @@ dependencies = [ [[package]] name = "postgres-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "builder", @@ -7930,7 +7930,7 @@ dependencies = [ [[package]] name = "postgres-builder-dynamic" -version = "0.29.9" +version = "0.30.0" dependencies = [ "core-plugin-interface", "postgres-builder", @@ -7938,7 +7938,7 @@ dependencies = [ [[package]] name = "postgres-core-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "builder", "codemap", @@ -7967,7 +7967,7 @@ dependencies = [ [[package]] name = "postgres-core-model" -version = "0.29.9" +version = "0.30.0" dependencies = [ "bincode 2.0.1", "builder", @@ -7987,7 +7987,7 @@ dependencies = [ [[package]] name = "postgres-core-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "base64 0.22.1", @@ -8011,7 +8011,7 @@ dependencies = [ [[package]] name = "postgres-graphql-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "core-model", "core-model-builder", @@ -8025,7 +8025,7 @@ dependencies = [ [[package]] name = "postgres-graphql-model" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "async-graphql-value", @@ -8040,7 +8040,7 @@ dependencies = [ [[package]] name = "postgres-graphql-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "async-graphql-value", @@ -8090,7 +8090,7 @@ dependencies = [ [[package]] name = "postgres-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "common", @@ -8112,7 +8112,7 @@ dependencies = [ [[package]] name = "postgres-resolver-dynamic" -version = "0.29.9" +version = "0.30.0" dependencies = [ "core-plugin-interface", "postgres-resolver", @@ -8120,7 +8120,7 @@ dependencies = [ [[package]] name = "postgres-rest-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "core-model-builder", "core-plugin-shared", @@ -8131,7 +8131,7 @@ dependencies = [ [[package]] name = "postgres-rest-model" -version = "0.29.9" +version = "0.30.0" dependencies = [ "bincode 2.0.1", "common", @@ -8147,7 +8147,7 @@ dependencies = [ [[package]] name = "postgres-rest-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "common", @@ -8160,7 +8160,7 @@ dependencies = [ [[package]] name = "postgres-rpc-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "core-model-builder", "core-plugin-shared", @@ -8171,7 +8171,7 @@ dependencies = [ [[package]] name = "postgres-rpc-model" -version = "0.29.9" +version = "0.30.0" dependencies = [ "bincode 2.0.1", "core-model", @@ -8183,7 +8183,7 @@ dependencies = [ [[package]] name = "postgres-rpc-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "common", @@ -8353,9 +8353,9 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa96cb91275ed31d6da3e983447320c4eb219ac180fa1679a0889ff32861e2d" +checksum = "3852766467df634d74f0b2d7819bf8dc483a0eb2e3b0f50f756f9cfe8b0d18d8" dependencies = [ "ar_archive_writer", "cc", @@ -8766,7 +8766,7 @@ checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "rest-router" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "common", @@ -8836,7 +8836,7 @@ dependencies = [ [[package]] name = "rpc-router" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-stream", "async-trait", @@ -9105,9 +9105,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "ryu-js" @@ -9562,7 +9562,7 @@ dependencies = [ [[package]] name = "server-actix" -version = "0.29.9" +version = "0.30.0" dependencies = [ "actix-web", "common", @@ -9580,7 +9580,7 @@ dependencies = [ [[package]] name = "server-aws-lambda" -version = "0.29.9" +version = "0.30.0" dependencies = [ "builder", "common", @@ -9601,7 +9601,7 @@ dependencies = [ [[package]] name = "server-cf-worker" -version = "0.29.9" +version = "0.30.0" dependencies = [ "common", "console_error_panic_hook", @@ -9626,7 +9626,7 @@ dependencies = [ [[package]] name = "server-common" -version = "0.29.9" +version = "0.30.0" dependencies = [ "common", "core-plugin-interface", @@ -9938,9 +9938,9 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "stacker" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1f8b29fb42aafcea4edeeb6b2f2d7ecd0d969c48b4cf0d2e64aafc471dd6e59" +checksum = "08d74a23609d509411d10e2176dc2a4346e3b4aea2e7b1869f19fdedbc71c013" dependencies = [ "cc", "cfg-if 1.0.4", @@ -10049,7 +10049,7 @@ dependencies = [ [[package]] name = "subsystem-model-builder-util" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "builder", @@ -10066,7 +10066,7 @@ dependencies = [ [[package]] name = "subsystem-model-util" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "core-model", @@ -10553,7 +10553,7 @@ dependencies = [ [[package]] name = "system-router" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "common", @@ -10654,7 +10654,7 @@ dependencies = [ [[package]] name = "testing" -version = "0.29.9" +version = "0.30.0" dependencies = [ "anyhow", "async-graphql-parser", @@ -11475,9 +11475,9 @@ checksum = "81b79ad29b5e19de4260020f8919b443b2ef0277d242ce532ec7b7a2cc8b6007" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" [[package]] name = "unicode-normalization" @@ -11900,7 +11900,7 @@ checksum = "a8145dd1593bf0fb137dbfa85b8be79ec560a447298955877804640e40c2d6ea" [[package]] name = "wasm-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "core-model-builder", @@ -11911,7 +11911,7 @@ dependencies = [ [[package]] name = "wasm-builder-dynamic" -version = "0.29.9" +version = "0.30.0" dependencies = [ "core-plugin-interface", "wasm-builder", @@ -11960,7 +11960,7 @@ dependencies = [ [[package]] name = "wasm-graphql-builder" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "core-model", @@ -11973,7 +11973,7 @@ dependencies = [ [[package]] name = "wasm-graphql-model" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "bincode 2.0.1", @@ -11985,7 +11985,7 @@ dependencies = [ [[package]] name = "wasm-graphql-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-graphql-parser", "async-trait", @@ -12001,7 +12001,7 @@ dependencies = [ [[package]] name = "wasm-resolver" -version = "0.29.9" +version = "0.30.0" dependencies = [ "async-trait", "core-plugin-interface", @@ -12015,7 +12015,7 @@ dependencies = [ [[package]] name = "wasm-resolver-dynamic" -version = "0.29.9" +version = "0.30.0" dependencies = [ "core-plugin-interface", "wasm-resolver", @@ -13436,9 +13436,9 @@ checksum = "a7948af682ccbc3342b6e9420e8c51c1fe5d7bf7756002b4a3c6cabfe96a7e3c" [[package]] name = "zmij" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445" +checksum = "4de98dfa5d5b7fef4ee834d0073d560c9ca7b6c46a71d058c48db7960f8cfaf7" [[package]] name = "zopfli" diff --git a/Cargo.toml b/Cargo.toml index 2d74731f..9bf499f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "0.29.9" +version = "0.30.0" edition = "2024" # See https://github.com/mozilla/application-services/blob/main/Cargo.toml for the reasons why we use this structure diff --git a/libs/exo-sql/src/asql/transaction_holder.rs b/libs/exo-sql/src/asql/transaction_holder.rs index c9eb5932..110bc063 100644 --- a/libs/exo-sql/src/asql/transaction_holder.rs +++ b/libs/exo-sql/src/asql/transaction_holder.rs @@ -117,7 +117,17 @@ impl TransactionState { &mut self, client_manager: &DatabaseClientManager, ) -> Result<(), DatabaseError> { - if self.client.is_none() && !self.finalized { + if self.finalized { + return Ok(()); + } + + if let Some(ref client) = self.client + && client.is_closed() + { + self.client = None; + } + + if self.client.is_none() { self.client = Some(client_manager.get_client().await?); } Ok(()) diff --git a/libs/exo-sql/src/sql/connect/database_pool.rs b/libs/exo-sql/src/sql/connect/database_pool.rs index a3aff996..1eee7a32 100644 --- a/libs/exo-sql/src/sql/connect/database_pool.rs +++ b/libs/exo-sql/src/sql/connect/database_pool.rs @@ -114,8 +114,9 @@ impl DatabasePool { config: Config, connect: impl Connect + 'static, ) -> Result { + // Validate connections when checked out so stale connections are not reused. let manager_config = ManagerConfig { - recycling_method: RecyclingMethod::Fast, + recycling_method: RecyclingMethod::Verified, }; let manager = Manager::from_connect(config, connect, manager_config);