From ec1b73a630f8c41eccd49a28888e80401498258d Mon Sep 17 00:00:00 2001 From: Philip Jenvey Date: Fri, 27 Mar 2020 13:00:40 -0700 Subject: [PATCH] wip --- tools/spanner/purge_ttl/Cargo.lock | 90 +++++++++++++++++++++++++++-- tools/spanner/purge_ttl/Cargo.toml | 1 + tools/spanner/purge_ttl/src/main.rs | 13 +++-- 3 files changed, 94 insertions(+), 10 deletions(-) diff --git a/tools/spanner/purge_ttl/Cargo.lock b/tools/spanner/purge_ttl/Cargo.lock index bae38cd3..81ab6c2f 100644 --- a/tools/spanner/purge_ttl/Cargo.lock +++ b/tools/spanner/purge_ttl/Cargo.lock @@ -150,9 +150,9 @@ dependencies = [ [[package]] name = "grpcio" -version = "0.5.0-alpha.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1463096cfc371772d59a48fbfc471e18892e197efc5867b3bd7c2e0428e97824" +checksum = "b0eb5544c0e47a603130f1159773df46eb448c5649f7b4833c51f241c4e9fcbb" dependencies = [ "futures", "grpcio-sys", @@ -163,14 +163,15 @@ dependencies = [ [[package]] name = "grpcio-sys" -version = "0.5.0-alpha.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8aebf59fdf3668edf163c1948ceca64c4ebb733d71c9055a12219d336bd5d51" +checksum = "48b1b6365d95c795aa3840b19c5364ad0a4bf82bfd48b2f9185719b9f8e614a7" dependencies = [ "bindgen", "cc", "cmake", "libc", + "libz-sys", "pkg-config", "walkdir", ] @@ -193,6 +194,17 @@ dependencies = [ "quick-error", ] +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -215,6 +227,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "libz-sys" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "log" version = "0.4.8" @@ -224,6 +248,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + [[package]] name = "memchr" version = "2.3.3" @@ -246,6 +276,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + [[package]] name = "pkg-config" version = "0.3.17" @@ -263,9 +299,9 @@ dependencies = [ [[package]] name = "protobuf" -version = "2.7.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f00e4a3cb64ecfeac2c0a73c74c68ae3439d7a6bead3870be56ad5dd2620a6f" +checksum = "71964f34fd51cf04882d7ae3325fa0794d4cad66a03d0003f38d8ae4f63ba126" [[package]] name = "purge_ttl" @@ -276,6 +312,7 @@ dependencies = [ "googleapis-raw", "grpcio", "log", + "url", ] [[package]] @@ -332,6 +369,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" +[[package]] +name = "smallvec" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" + [[package]] name = "termcolor" version = "1.1.0" @@ -350,12 +393,47 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +dependencies = [ + "matches", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" +dependencies = [ + "smallvec", +] + [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +[[package]] +name = "url" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" +dependencies = [ + "idna", + "matches", + "percent-encoding", +] + +[[package]] +name = "vcpkg" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" + [[package]] name = "version_check" version = "0.1.5" diff --git a/tools/spanner/purge_ttl/Cargo.toml b/tools/spanner/purge_ttl/Cargo.toml index fae06416..47dde83b 100644 --- a/tools/spanner/purge_ttl/Cargo.toml +++ b/tools/spanner/purge_ttl/Cargo.toml @@ -10,3 +10,4 @@ grpcio = { version = "0.5.0" } cadence = "0.19.1" log = "0.4.8" env_logger = "0.7.1" +url = "2.1" diff --git a/tools/spanner/purge_ttl/src/main.rs b/tools/spanner/purge_ttl/src/main.rs index 55318e64..0a7eec40 100644 --- a/tools/spanner/purge_ttl/src/main.rs +++ b/tools/spanner/purge_ttl/src/main.rs @@ -15,6 +15,7 @@ use googleapis_raw::spanner::v1::{ }; use grpcio::{CallOption, ChannelBuilder, ChannelCredentials, EnvBuilder, MetadataBuilder}; use log::{info, trace, warn}; +use url::Url; const SPANNER_ADDRESS: &str = "spanner.googleapis.com:443"; @@ -95,13 +96,17 @@ fn main() -> Result<(), Box> { env_logger::try_init()?; const DB_ENV: &str = "SYNC_DATABASE_URL"; - let url = env::var(DB_ENV).map_err(|_| format!("Invalid or undefined {}", DB_ENV))?; - if !url.starts_with("spanner://") { + const INVALID_DB_ENV: String = format!("Invalid {}", DB_ENV); + let db_url = env::var(DB_ENV).map_err(|_| format!("Invalid or undefined {}", DB_ENV))?; + let url = Url::parse(&db_url).map_err(|e| format!("Invalid {}: {}", DB_ENV, e))?; + eprintln!("url: {}, host: {:?}, path: {:?}", url.to_string(), url.host(), url.path()); + if url.scheme() != "spanner" { return Err(format!("Invalid {}", DB_ENV).into()); } - let database = url["spanner://".len()..].to_owned(); - info!("For {}", database); + let database = db_url["spanner://".len()..].to_owned(); + let database2 = url.host().ok_or_else(|| format!("Invalid {}", DB_ENV))?.to_string() + url.path(); + info!("For {} {}", database, database2); // Set up the gRPC environment. let env = Arc::new(EnvBuilder::new().build());