prisma / tiberius

TDS 7.2+ (Microsoft SQL Server) driver for Rust
Apache License 2.0
325 stars 119 forks source link

Timeout when connecting to DB over VPN #360

Open waywardcoder opened 2 days ago

waywardcoder commented 2 days ago

I have some code that uses bb8-tiberius and tiberius, everything works when i am inside the network where the server lives, but when connecting over VPN tiberius times out trying to create the connection. Other db tools like sqlcmd and azure data studio work. I added logging and set to TRACE, but can't see any reason why it would fail. Any assistance appreciated:

here is the code:

impl DbMigrationClient { pub async fn new() -> DbMigrationClient {

[cfg(feature = "gcp-secrets")]

    let secrets_manager: Arc<dyn SecretManager + Send + Sync> =
        Arc::new(GcpSecretManager::new().await);

    #[cfg(feature = "env-secrets")]
    let secrets_manager: Arc<dyn SecretManager + Send + Sync> =
        Arc::new(EnvSecretsManager::new().await);

    let connection_string = format!(
        "uid={2};password={3};database={1};server=tcp:{0};TrustServerCertificate=true;encrypt=true",
        secrets_manager.get_secret("SQLSERVER_NAME").await.unwrap_or_default(),
        secrets_manager.get_secret("SQLSERVER_DB").await.unwrap_or_default(), 
        secrets_manager.get_secret("SQLSERVER_USER").await.unwrap_or_default(), 
        secrets_manager.get_secret("SQLSERVER_PASSWORD").await.unwrap_or_default());

    println!("Connection String = {}", connection_string);
    let mgr = bb8_tiberius::ConnectionManager::build(connection_string.as_str()).unwrap();
    let pool = bb8::Pool::builder().max_size(12).build(mgr).await.unwrap();

    DbMigrationClient {
        client: welds::connections::mssql::connect(connection_string.as_str())
            .await
            .unwrap(),
    }
}

Here are the logs on trace

2024-10-07T18:16:58.435555Z TRACE shared::dal::dbclient: get_all_active_agents_in_state with_state="Illinois" with_status="1"

2024-10-07T18:16:58.514661Z TRACE tiberius::client::connection: Sending a packet (41 bytes) 2024-10-07T18:16:58.590501Z TRACE tiberius::tds::codec::decode: Reading a TabularResult (37 bytes) 2024-10-07T18:16:58.590640Z INFO tiberius::client::connection: Performing a TLS handshake 2024-10-07T18:16:58.590696Z WARN tiberius::client::tls_stream::native_tls_stream: Trusting the server certificate without validation. thread 'main' panicked at /Code/pts_agency_migration/shared/src/dal/dbclient.rs:350:15: called Result::unwrap() on an Err value: Database(Bb8("bb8 timeout")) stack backtrace: 0: rust_begin_unwind at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:665:5 1: core::panicking::panic_fmt at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/panicking.rs:74:14 2: core::result::unwrap_failed at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/result.rs:1679:5 3: core::result::Result<T,E>::unwrap at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/result.rs:1102:23 4: shared::dal::dbclient::DbMigrationClient::get_all_active_agents_in_state::{{closure}} at ./shared/src/dal/dbclient.rs:350:9 5: shared::dal::dbclient::DbMigrationClient::get_all_agencies_ensuring_groups_present::{{closure}} at ./shared/src/dal/dbclient.rs:247:76 6: agency_dump::dump_agent_list::{{closure}} at ./agency_dump/src/main.rs:47:10 7: agency_dump::main::{{closure}} at ./agency_dump/src/main.rs:32:84 8: tokio::runtime::park::CachedParkThread::block_on::{{closure}} at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/park.rs:281:63 9: tokio::runtime::coop::with_budget at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/coop.rs:107:5 10: tokio::runtime::coop::budget at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/coop.rs:73:5 11: tokio::runtime::park::CachedParkThread::block_on at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/park.rs:281:31 12: tokio::runtime::context::blocking::BlockingRegionGuard::block_on at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/context/blocking.rs:66:9 13: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}} at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/multi_thread/mod.rs:87:13 14: tokio::runtime::context::runtime::enter_runtime at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/context/runtime.rs:65:16 15: tokio::runtime::scheduler::multi_thread::MultiThread::block_on at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/multi_thread/mod.rs:86:9 16: tokio::runtime::runtime::Runtime::block_on_inner at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/runtime.rs:363:45 17: tokio::runtime::runtime::Runtime::block_on at /Users/chrisdupuy-admin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/runtime.rs:335:13 18: agency_dump::main at ./agency_dump/src/main.rs:37:5 19: core::ops::function::FnOnce::call_once at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/ops/function.rs:250:5 note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace.

waywardcoder commented 2 days ago

Taking BB8 out of it and using just tiberius, it doesn't seem to connect:

Error: Tls("connection closed via error")