diff --git a/Cargo.lock b/Cargo.lock index 777b329452..38e212302d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,9 +66,9 @@ dependencies = [ [[package]] name = "alloc-no-stdlib" -version = "2.0.1" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192ec435945d87bc2f70992b4d818154b5feede43c09fb7592146374eac90a6" +checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3" [[package]] name = "alloc-stdlib" @@ -126,9 +126,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrow" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06d2bd50fddbdcecd832742b388228eec02eb3aabd33144ef46f6bc5420bf662" +checksum = "ddf189dff0c7e0f40588fc25adbe5bb6837b82fc61bb7cadf5d76de030f710bb" dependencies = [ "bitflags", "chrono", @@ -150,19 +150,19 @@ dependencies = [ [[package]] name = "arrow-flight" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628b4735031e1d5e41c7c1f210ad233ab942adcf155edcba05c3e6d762062349" +checksum = "947ab99b9dc270706b1a4bd8109628416dc52348f1645075fcc19fe6b9819055" dependencies = [ "arrow", "base64 0.13.0", "bytes", "proc-macro2", - "prost", - "prost-derive", + "prost 0.8.0", + "prost-derive 0.8.0", "tokio", - "tonic", - "tonic-build", + "tonic 0.5.0", + "tonic-build 0.5.1", ] [[package]] @@ -191,9 +191,9 @@ dependencies = [ [[package]] name = "assert_cmd" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d20831bd004dda4c7c372c19cdabff369f794a95e955b3f13fe460e3e1ae95f" +checksum = "c98233c6673d8601ab23e77eb38f999c51100d46c5703b17288c57fddf3a1ffe" dependencies = [ "bstr", "doc-comment", @@ -409,9 +409,9 @@ dependencies = [ [[package]] name = "brotli" -version = "3.3.0" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f29919120f08613aadcd4383764e00526fc9f18b6c0895814faeed0dd78613e" +checksum = "71cb90ade945043d3d53597b2fc359bb063db8ade2bcffe7997351d0756e9d50" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -420,9 +420,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1052e1c3b8d4d80eb84a8b94f0a1498797b5fb96314c001156a1c761940ef4ec" +checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -727,9 +727,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -847,7 +847,7 @@ dependencies = [ [[package]] name = "datafusion" version = "4.0.0-SNAPSHOT" -source = "git+https://github.com/apache/arrow-datafusion.git?rev=2bcf04017d710a6b8684617e81a64c9db1184f5c#2bcf04017d710a6b8684617e81a64c9db1184f5c" +source = "git+https://github.com/apache/arrow-datafusion.git?rev=a5a58c4f23720eda63b02a6cad2902b715288db6#a5a58c4f23720eda63b02a6cad2902b715288db6" dependencies = [ "ahash 0.7.4", "arrow", @@ -1287,15 +1287,15 @@ dependencies = [ "num_cpus", "observability_deps", "proc-macro2", - "prost", - "prost-build", - "prost-types", + "prost 0.8.0", + "prost-build 0.8.0", + "prost-types 0.8.0", "regex", "serde", "serde_json", "thiserror", - "tonic", - "tonic-build", + "tonic 0.5.0", + "tonic-build 0.5.1", ] [[package]] @@ -1348,8 +1348,8 @@ version = "0.1.0" dependencies = [ "bytes", "chrono", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "serde", ] @@ -1363,15 +1363,15 @@ dependencies = [ "grpc-router-test-gen", "observability_deps", "paste 1.0.5", - "prost", - "prost-build", - "prost-types", + "prost 0.8.0", + "prost-build 0.8.0", + "prost-types 0.8.0", "thiserror", "tokio", "tokio-stream", "tokio-util", - "tonic", - "tonic-build", + "tonic 0.5.0", + "tonic-build 0.5.1", "tonic-reflection", ] @@ -1379,11 +1379,11 @@ dependencies = [ name = "grpc-router-test-gen" version = "0.1.0" dependencies = [ - "prost", - "prost-build", - "prost-types", - "tonic", - "tonic-build", + "prost 0.8.0", + "prost-build 0.8.0", + "prost-types 0.8.0", + "tonic 0.5.0", + "tonic-build 0.5.1", ] [[package]] @@ -1541,6 +1541,18 @@ dependencies = [ "webpki", ] +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1657,7 +1669,7 @@ dependencies = [ "pprof", "predicates 1.0.8", "prettytable-rs", - "prost", + "prost 0.8.0", "query", "rand 0.8.4", "rdkafka", @@ -1680,10 +1692,10 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", - "tonic", + "tonic 0.5.0", "tonic-health", "tonic-reflection", - "tracing-opentelemetry", + "tracing-opentelemetry 0.12.0", "tracker", "trogging", "uuid", @@ -1701,13 +1713,13 @@ dependencies = [ "generated_types", "http", "hyper", - "prost", + "prost 0.8.0", "rand 0.8.4", "serde", "serde_json", "thiserror", "tokio", - "tonic", + "tonic 0.5.0", ] [[package]] @@ -1795,18 +1807,18 @@ checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "jobserver" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" +checksum = "f5ca711fd837261e14ec9e674f092cbb931d3fa1482b017ae59328ddc6f3212b" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.51" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" +checksum = "ce791b7ca6638aae45be056e068fc756d871eb3b3b10b8efa62d1c9cec616752" dependencies = [ "wasm-bindgen", ] @@ -2308,9 +2320,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5adf0198d427ee515335639f275e806ca01acf9f07d7cf14bb36a10532a6169" +checksum = "ee2c8fd66061a707503d515639b8af10fd3807a5b5ee6959f7ff1bd303634bd5" dependencies = [ "derivative", "num_enum_derive", @@ -2318,9 +2330,9 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1def5a3f69d4707d8a040b12785b98029a39e8c610ae685c7f6265669767482" +checksum = "474fd1d096da3ad17084694eebed40ba09c4a36c5255cd772bd8b98859cc562e" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2385,7 +2397,7 @@ dependencies = [ name = "observability_deps" version = "0.1.0" dependencies = [ - "opentelemetry", + "opentelemetry 0.15.0", "tracing", "tracing-subscriber", ] @@ -2451,6 +2463,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91cea1dfd50064e52db033179952d18c770cbc5dfefc8eba45d619357ba3914" dependencies = [ "async-trait", + "futures", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project 1.0.8", + "rand 0.8.4", + "thiserror", +] + +[[package]] +name = "opentelemetry" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff27b33e30432e7b9854936693ca103d8591b0501f7ae9f633de48cda3bf2a67" +dependencies = [ + "async-trait", + "crossbeam-channel", "dashmap", "fnv", "futures", @@ -2466,13 +2495,13 @@ dependencies = [ [[package]] name = "opentelemetry-jaeger" -version = "0.12.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd4984441954f9ebbe3eebdfc6fd4fa95be6400d403171228779b949f3cd918" +checksum = "09a9fc8192722e7daa0c56e59e2336b797122fb8598383dcb11c8852733b435c" dependencies = [ "async-trait", "lazy_static", - "opentelemetry", + "opentelemetry 0.15.0", "thiserror", "thrift", "tokio", @@ -2480,27 +2509,28 @@ dependencies = [ [[package]] name = "opentelemetry-otlp" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c19adec09e1d86bdc72cbc2dea6d7276d90d6d50ad430842446382a4ef440b" +checksum = "c42168ec1ee8fe85f36600c41196963eb075ccdd0aaac947119f1f562c0804dd" dependencies = [ "async-trait", "futures", - "opentelemetry", - "prost", + "http", + "opentelemetry 0.15.0", + "prost 0.7.0", "thiserror", "tokio", - "tonic", - "tonic-build", + "tonic 0.4.3", + "tonic-build 0.4.2", ] [[package]] name = "opentelemetry-prometheus" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7162eac03f0bf5edbe2f2d4f44279904f62c779cd1c8260456446db2e1bf200d" +checksum = "e06ddda4790151e8b494f9bb32720fce23722d7f395f81383b9b2934bb6356a0" dependencies = [ - "opentelemetry", + "opentelemetry 0.15.0", "prometheus", "protobuf", ] @@ -2595,9 +2625,9 @@ dependencies = [ [[package]] name = "parquet" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9297cb17ef7287f6105685d230abbb2b37247657edf2b4a99271088e7d5b0ddd" +checksum = "db54d10313f64ea22e1fe0332864abefb19aa1c322bfbc67999ff743aebf868d" dependencies = [ "arrow", "base64 0.13.0", @@ -2645,7 +2675,7 @@ dependencies = [ "parquet", "parquet-format", "persistence_windows", - "prost", + "prost 0.8.0", "query", "snafu", "tempfile", @@ -2820,9 +2850,9 @@ dependencies = [ [[package]] name = "pprof" -version = "0.4.4" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7600124d694d855283caf9f333befe2abce090833bb638009aeddd9e156dee" +checksum = "c9fb4eee2f2c4f7d48fe5a33008dececbc405d0e58d2a94afe742d4f175bc401" dependencies = [ "backtrace", "inferno", @@ -2831,9 +2861,9 @@ dependencies = [ "log", "nix", "parking_lot", - "prost", - "prost-build", - "prost-derive", + "prost 0.8.0", + "prost-build 0.8.0", + "prost-derive 0.8.0", "symbolic-demangle", "tempfile", "thiserror", @@ -2976,7 +3006,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.7.0", +] + +[[package]] +name = "prost" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020" +dependencies = [ + "bytes", + "prost-derive 0.8.0", ] [[package]] @@ -2991,10 +3031,28 @@ dependencies = [ "log", "multimap", "petgraph", - "prost", - "prost-types", + "prost 0.7.0", + "prost-types 0.7.0", "tempfile", - "which 4.2.1", + "which 4.2.2", +] + +[[package]] +name = "prost-build" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" +dependencies = [ + "bytes", + "heck", + "itertools 0.10.1", + "log", + "multimap", + "petgraph", + "prost 0.8.0", + "prost-types 0.8.0", + "tempfile", + "which 4.2.2", ] [[package]] @@ -3010,6 +3068,19 @@ dependencies = [ "syn", ] +[[package]] +name = "prost-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba" +dependencies = [ + "anyhow", + "itertools 0.10.1", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "prost-types" version = "0.7.0" @@ -3017,7 +3088,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb" dependencies = [ "bytes", - "prost", + "prost 0.7.0", +] + +[[package]] +name = "prost-types" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b" +dependencies = [ + "bytes", + "prost 0.8.0", ] [[package]] @@ -3553,7 +3634,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.3", + "semver 1.0.4", ] [[package]] @@ -3680,9 +3761,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f3aac57ee7f3272d8395c6e4f502f434f0e289fcd62876f70daa008c20dcabe" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" [[package]] name = "semver-parser" @@ -3692,9 +3773,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.126" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8" dependencies = [ "serde_derive", ] @@ -3723,9 +3804,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc" dependencies = [ "proc-macro2", "quote", @@ -3734,9 +3815,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.65" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c5e91e4240b46c4c19219d6cc84784444326131a4210f496f948d5cc827a29" +checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" dependencies = [ "indexmap", "itoa", @@ -3862,9 +3943,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3" +checksum = "740223c51853f3145fe7c90360d2d4232f2b62e3449489c207eccde818979982" dependencies = [ "lazy_static", ] @@ -4374,6 +4455,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "tokio-io-timeout" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90c49f106be240de154571dd31fbe48acb10ba6c6dd6f6517ad603abffa42de9" +dependencies = [ + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-macros" version = "1.3.0" @@ -4458,8 +4549,8 @@ dependencies = [ "hyper", "percent-encoding", "pin-project 1.0.8", - "prost", - "prost-derive", + "prost 0.7.0", + "prost-derive 0.7.0", "tokio", "tokio-stream", "tokio-util", @@ -4469,6 +4560,37 @@ dependencies = [ "tracing-futures", ] +[[package]] +name = "tonic" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584f064fdfc50017ec39162d5aebce49912f1eb16fd128e04b7f4ce4907c7e5" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.0", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project 1.0.8", + "prost 0.8.0", + "prost-derive 0.8.0", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + [[package]] name = "tonic-build" version = "0.4.2" @@ -4476,39 +4598,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c695de27302f4697191dda1c7178131a8cb805463dda02864acb80fe1322fdcf" dependencies = [ "proc-macro2", - "prost-build", + "prost-build 0.7.0", + "quote", + "syn", +] + +[[package]] +name = "tonic-build" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d12faebbe071b06f486be82cc9318350814fdd07fcb28f3690840cd770599283" +dependencies = [ + "proc-macro2", + "prost-build 0.8.0", "quote", "syn", ] [[package]] name = "tonic-health" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee731ed39b584aa7fadc723eca93608c3de6ad316531d594632a2c85d28c4e59" +checksum = "14e6de0a7a1b27d9899031b01b83eb09fdc36f3fe8e6254a81840006a463c6d5" dependencies = [ "async-stream", "bytes", - "prost", + "prost 0.8.0", "tokio", "tokio-stream", - "tonic", - "tonic-build", + "tonic 0.5.0", + "tonic-build 0.5.1", ] [[package]] name = "tonic-reflection" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56498d20188550337ea6c48ecf59d11646382dbfcd61051fb98c1093cfae3c21" +checksum = "8249761575cfef2635c3df0aa9f09d8e42d53ff0f7c21739ff2b37dd3343d827" dependencies = [ "bytes", - "prost", - "prost-types", + "prost 0.8.0", + "prost-types 0.8.0", "tokio", "tokio-stream", - "tonic", - "tonic-build", + "tonic 0.5.0", + "tonic-build 0.5.1", ] [[package]] @@ -4592,7 +4726,19 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99003208b647dae59dcefc49c98aecaa3512fbc29351685d4b9ef23a9218458e" dependencies = [ - "opentelemetry", + "opentelemetry 0.13.0", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c47440f2979c4cd3138922840eec122e3c0ba2148bc290f756bd7fd60fc97fff" +dependencies = [ + "opentelemetry 0.15.0", "tracing", "tracing-core", "tracing-subscriber", @@ -4663,7 +4809,7 @@ dependencies = [ "structopt", "synchronized-writer", "thiserror", - "tracing-opentelemetry", + "tracing-opentelemetry 0.14.0", ] [[package]] @@ -4811,9 +4957,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" +checksum = "b608ecc8f4198fe8680e2ed18eccab5f0cd4caaf3d83516fa5fb2e927fda2586" dependencies = [ "cfg-if", "serde", @@ -4823,9 +4969,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" +checksum = "580aa3a91a63d23aac5b6b267e2d13cb4f363e31dce6c352fca4752ae12e479f" dependencies = [ "bumpalo", "lazy_static", @@ -4838,9 +4984,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.24" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1" +checksum = "16646b21c3add8e13fdb8f20172f8a28c3dbf62f45406bcff0233188226cfe0c" dependencies = [ "cfg-if", "js-sys", @@ -4850,9 +4996,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" +checksum = "171ebf0ed9e1458810dfcb31f2e766ad6b3a89dbda42d8901f2b268277e5f09c" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4860,9 +5006,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" +checksum = "6c2657dd393f03aa2a659c25c6ae18a13a4048cebd220e147933ea837efc589f" dependencies = [ "proc-macro2", "quote", @@ -4873,15 +5019,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" +checksum = "2e0c4a743a309662d45f4ede961d7afa4ba4131a59a639f29b0069c3798bbcc2" [[package]] name = "web-sys" -version = "0.3.51" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" +checksum = "01c70a82d842c9979078c772d4a1344685045f1a5628f677c2b2eab4dd7d2696" dependencies = [ "js-sys", "wasm-bindgen", @@ -4917,9 +5063,9 @@ dependencies = [ [[package]] name = "which" -version = "4.2.1" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc009ab82a2afc94b9e467ab4214aee9cad1356cd9191264203d7d72006e00d" +checksum = "ea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9" dependencies = [ "either", "lazy_static", diff --git a/Cargo.toml b/Cargo.toml index c4474dedb2..29fed27181 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,15 +91,15 @@ http = "0.2.0" hyper = "0.14" libc = { version = "0.2" } once_cell = { version = "1.4.0", features = ["parking_lot"] } -opentelemetry-jaeger = { version = "0.12", features = ["tokio"] } -opentelemetry-otlp = "0.6" +opentelemetry-jaeger = { version = "0.14", features = ["tokio"] } +opentelemetry-otlp = "0.8" parking_lot = "0.11.1" itertools = "0.10.1" parquet = "5.0" # used by arrow/datafusion anyway prettytable-rs = "0.8" -pprof = { version = "^0.4", default-features = false, features = ["flamegraph", "protobuf"] } -prost = "0.7" +pprof = { version = "^0.5", default-features = false, features = ["flamegraph", "protobuf"] } +prost = "0.8" # Forked to upgrade hyper and tokio routerify = { git = "https://github.com/influxdata/routerify", rev = "274e250" } rustyline = "8.0" @@ -114,9 +114,9 @@ tikv-jemalloc-ctl = "0.4.0" tokio = { version = "1.0", features = ["macros", "rt-multi-thread", "parking_lot", "signal"] } tokio-stream = { version = "0.1.2", features = ["net"] } tokio-util = { version = "0.6.3" } -tonic = "0.4.0" -tonic-health = "0.3.0" -tonic-reflection = "0.1.0" +tonic = "0.5.0" +tonic-health = "0.4.0" +tonic-reflection = "0.2.0" tracing-opentelemetry = { version = "0.12", default-features = false } uuid = { version = "0.8", features = ["v4"] } diff --git a/datafusion/Cargo.toml b/datafusion/Cargo.toml index a68f42d78a..956f072d0e 100644 --- a/datafusion/Cargo.toml +++ b/datafusion/Cargo.toml @@ -9,4 +9,4 @@ description = "Re-exports datafusion at a specific version" # Rename to workaround doctest bug # Turn off optional datafusion features (function packages) -upstream = { git = "https://github.com/apache/arrow-datafusion.git", rev="2bcf04017d710a6b8684617e81a64c9db1184f5c", default-features = false, package = "datafusion" } +upstream = { git = "https://github.com/apache/arrow-datafusion.git", rev="a5a58c4f23720eda63b02a6cad2902b715288db6", default-features = false, package = "datafusion" } diff --git a/generated_types/Cargo.toml b/generated_types/Cargo.toml index aa8743c3ea..2644d173cc 100644 --- a/generated_types/Cargo.toml +++ b/generated_types/Cargo.toml @@ -14,13 +14,13 @@ futures = "0.3" google_types = { path = "../google_types" } observability_deps = { path = "../observability_deps" } num_cpus = "1.13.0" -prost = "0.7" -prost-types = "0.7" +prost = "0.8" +prost-types = "0.8" regex = "1.4" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.44" thiserror = "1.0.23" -tonic = "0.4" +tonic = "0.5" [dev-dependencies] chrono = { version = "0.4", features = ["serde"] } @@ -28,5 +28,5 @@ chrono = { version = "0.4", features = ["serde"] } [build-dependencies] # In alphabetical order # Pin specific version of the tonic-build dependencies to match arrow proc-macro2 = "=1.0.27" -tonic-build = "0.4" -prost-build = "0.7" +tonic-build = "0.5" +prost-build = "0.8" diff --git a/google_types/Cargo.toml b/google_types/Cargo.toml index a5bb9e9ca4..cca54af075 100644 --- a/google_types/Cargo.toml +++ b/google_types/Cargo.toml @@ -8,8 +8,8 @@ edition = "2018" [dependencies] # In alphabetical order bytes = { version = "1.0", features = ["serde"] } chrono = "0.4" -prost = "0.7" +prost = "0.8" serde = { version = "1.0", features = ["derive"] } [build-dependencies] # In alphabetical order -prost-build = "0.7" +prost-build = "0.8" diff --git a/grpc-router/Cargo.toml b/grpc-router/Cargo.toml index 48c504a67e..4593a21608 100644 --- a/grpc-router/Cargo.toml +++ b/grpc-router/Cargo.toml @@ -10,19 +10,19 @@ cache_loader_async = {version = "0.1.0", features = ["ttl-cache"] } futures = "0.3" observability_deps = { path = "../observability_deps" } paste = "1.0.5" -prost = "0.7" -prost-types = "0.7" +prost = "0.8" +prost-types = "0.8" thiserror = "1.0.23" tokio = { version = "1.0", features = ["macros", "rt-multi-thread", "parking_lot", "signal"] } tokio-stream = { version = "0.1.2", features = ["net"] } tokio-util = { version = "0.6.3" } -tonic = "0.4" -tonic-reflection = "0.1.0" +tonic = "0.5" +tonic-reflection = "0.2.0" [build-dependencies] paste = "1.0.5" -prost-build = "0.7" -tonic-build = "0.4" +prost-build = "0.8" +tonic-build = "0.5" [dev-dependencies] grpc-router-test-gen = { path = "./grpc-router-test-gen" } diff --git a/grpc-router/grpc-router-test-gen/Cargo.toml b/grpc-router/grpc-router-test-gen/Cargo.toml index 18f046070c..d3546ba504 100644 --- a/grpc-router/grpc-router-test-gen/Cargo.toml +++ b/grpc-router/grpc-router-test-gen/Cargo.toml @@ -6,10 +6,10 @@ edition = "2018" description = "Protobuf used in test for the grpc-router crate; need to be in a separate create because of linter limitations" [dependencies] -tonic = "0.4" -prost = "0.7" -prost-types = "0.7" +tonic = "0.5" +prost = "0.8" +prost-types = "0.8" [build-dependencies] -tonic-build = "0.4" -prost-build = "0.7" +tonic-build = "0.5" +prost-build = "0.8" diff --git a/influxdb_iox_client/Cargo.toml b/influxdb_iox_client/Cargo.toml index 0ef03eebb3..fc7449c849 100644 --- a/influxdb_iox_client/Cargo.toml +++ b/influxdb_iox_client/Cargo.toml @@ -19,13 +19,13 @@ arrow-flight = { version = "5.0", optional = true} futures-util = { version = "0.3.1", optional = true } http = "0.2.3" hyper = "0.14" -prost = "0.7" +prost = "0.8" rand = "0.8.3" serde = "1.0.118" serde_json = { version = "1.0.44", optional = true } thiserror = "1.0.23" tokio = { version = "1.0", features = ["macros"] } -tonic = { version = "0.4.0" } +tonic = { version = "0.5.0" } [dev-dependencies] # In alphabetical order serde_json = "1.0" diff --git a/metrics/Cargo.toml b/metrics/Cargo.toml index 2bc3bce9d9..82f894787e 100644 --- a/metrics/Cargo.toml +++ b/metrics/Cargo.toml @@ -17,10 +17,9 @@ edition = "2018" dashmap = { version = "4.0.1" } hashbrown = "0.11" observability_deps = { path = "../observability_deps" } -opentelemetry-prometheus = "0.6" +opentelemetry-prometheus = "0.8" parking_lot = "0.11.1" prometheus = "0.12" snafu = "0.6" [dev-dependencies] # In alphabetical order - diff --git a/observability_deps/Cargo.toml b/observability_deps/Cargo.toml index 16656e790c..fac39724b8 100644 --- a/observability_deps/Cargo.toml +++ b/observability_deps/Cargo.toml @@ -6,6 +6,6 @@ edition = "2018" description = "Observability ecosystem dependencies for InfluxDB IOx, to ensure consistent versions and unified updates" [dependencies] # In alphabetical order -opentelemetry = { version = "0.13", default-features = false, features = ["trace", "metrics", "rt-tokio"] } +opentelemetry = { version = "0.15", default-features = false, features = ["trace", "metrics", "rt-tokio"] } tracing = { version = "0.1", features = ["max_level_trace", "release_max_level_debug"] } tracing-subscriber = { version = "0.2", default-features = false, features = ["env-filter", "smallvec", "chrono", "parking_lot", "registry", "fmt", "ansi", "json"] } diff --git a/parquet_file/Cargo.toml b/parquet_file/Cargo.toml index 98177ffc62..dfd6f858c9 100644 --- a/parquet_file/Cargo.toml +++ b/parquet_file/Cargo.toml @@ -24,7 +24,7 @@ parquet = "5.0" parquet-format = "2.6" parking_lot = "0.11.1" persistence_windows = { path = "../persistence_windows" } -prost = "0.7" +prost = "0.8" query = { path = "../query" } snafu = "0.6" tempfile = "3.1.0" diff --git a/src/influxdb_ioxd/rpc.rs b/src/influxdb_ioxd/rpc.rs index 7ad26560bc..1cc5014be9 100644 --- a/src/influxdb_ioxd/rpc.rs +++ b/src/influxdb_ioxd/rpc.rs @@ -5,11 +5,11 @@ use snafu::{ResultExt, Snafu}; use tokio::net::TcpListener; use tokio_stream::wrappers::TcpListenerStream; use tokio_util::sync::CancellationToken; +use tonic::codegen::InterceptedService; use tonic::transport::NamedService; -use crate::influxdb_ioxd::serving_readiness::{ServingReadiness, ServingReadinessState}; +use crate::influxdb_ioxd::serving_readiness::ServingReadiness; use server::{ApplicationState, ConnectionManager, Server}; -use tonic::{Interceptor, Status}; pub mod error; mod flight; @@ -38,36 +38,28 @@ fn service_name(_: &S) -> &'static str { S::NAME } -/// Adds a gRPC service to ServiceBuilder `builder` while registering it to the HealthReporter `health_reporter`. +/// Adds a gRPC service to the builder, and registers it with the +/// health reporter macro_rules! add_service { - ($builder:ident, $health_reporter:ident, $status:expr, $($tail:tt)* ) => {{ - add_service!(@internal $ builder, $health_reporter, $status, $($tail)* ); - $builder - }}; - (@internal $builder:ident, $health_reporter:ident, $status:expr, [ $($svc:expr),* $(,)*] $(,)*) => { - $( - let service = $svc; - $health_reporter.set_service_status(service_name(&service), $status).await; - let $builder = $builder.add_service(service); - )* + ($builder:ident, $health_reporter:expr, $svc:expr) => { + let service = $svc; + let status = tonic_health::ServingStatus::Serving; + $health_reporter + .set_service_status(service_name(&service), status) + .await; + let $builder = $builder.add_service(service); }; } -/// Implements the gRPC interceptor that returns SERVICE_UNAVAILABLE gRPC status -/// if the service is not ready. -#[derive(Debug, Clone)] -pub struct ServingReadinessInterceptor(ServingReadiness); - -impl From for Interceptor { - fn from(serving_readiness: ServingReadinessInterceptor) -> Self { - let interceptor = move |req| match serving_readiness.0.get() { - ServingReadinessState::Unavailable => { - Err(Status::unavailable("service not ready to serve")) - } - ServingReadinessState::Serving => Ok(req), - }; - interceptor.into() - } +/// Adds a gRPC service to the builder gated behind the serving +/// readiness check, and registers it with the health reporter +macro_rules! add_gated_service { + ($builder:ident, $health_reporter:expr, $serving_readiness:expr, $svc:expr) => { + let service = $svc; + let interceptor = $serving_readiness.clone().into_interceptor(); + let service = InterceptedService::new(service, interceptor); + add_service!($builder, $health_reporter, service); + }; } /// Instantiate a server listening on the specified address @@ -92,32 +84,54 @@ where .build() .context(ReflectionError)?; - let serving_gate = ServingReadinessInterceptor(serving_readiness.clone()); - let mut builder = tonic::transport::Server::builder(); - let builder = add_service!( + + // important that this one is NOT gated so that it can answer health requests + add_service!(builder, health_reporter, health_service); + add_service!(builder, health_reporter, reflection_service); + add_service!(builder, health_reporter, testing::make_server()); + add_gated_service!( builder, health_reporter, - tonic_health::ServingStatus::Serving, - [ - health_service, - reflection_service, - testing::make_server(), - storage::make_server( - Arc::clone(&server), - Arc::clone(application.metric_registry()), - serving_gate.clone(), - ), - flight::make_server(Arc::clone(&server), serving_gate.clone()), - write::make_server(Arc::clone(&server), serving_gate.clone()), - write_pb::make_server(Arc::clone(&server), serving_gate.clone()), - management::make_server( - Arc::clone(&application), - Arc::clone(&server), - serving_readiness.clone() - ), - operations::make_server(Arc::clone(application.job_registry())), - ], + serving_readiness, + storage::make_server( + Arc::clone(&server), + Arc::clone(application.metric_registry()), + ) + ); + add_gated_service!( + builder, + health_reporter, + serving_readiness, + flight::make_server(Arc::clone(&server)) + ); + add_gated_service!( + builder, + health_reporter, + serving_readiness, + write::make_server(Arc::clone(&server)) + ); + add_gated_service!( + builder, + health_reporter, + serving_readiness, + write_pb::make_server(Arc::clone(&server)) + ); + // Also important this is not behind a readiness check (as it is + // used to change the check!) + add_service!( + builder, + health_reporter, + management::make_server( + Arc::clone(&application), + Arc::clone(&server), + serving_readiness.clone() + ) + ); + add_service!( + builder, + health_reporter, + operations::make_server(Arc::clone(application.job_registry())) ); builder diff --git a/src/influxdb_ioxd/rpc/flight.rs b/src/influxdb_ioxd/rpc/flight.rs index 073227bb23..3c80e63237 100644 --- a/src/influxdb_ioxd/rpc/flight.rs +++ b/src/influxdb_ioxd/rpc/flight.rs @@ -6,7 +6,7 @@ use observability_deps::tracing::{info, warn}; use query::exec::ExecutorType; use serde::Deserialize; use snafu::{OptionExt, ResultExt, Snafu}; -use tonic::{Interceptor, Request, Response, Streaming}; +use tonic::{Request, Response, Streaming}; use arrow::{ array::{make_array, ArrayRef, MutableArrayData}, @@ -124,14 +124,11 @@ struct FlightService { server: Arc>, } -pub fn make_server( - server: Arc>, - interceptor: impl Into, -) -> FlightServer +pub fn make_server(server: Arc>) -> FlightServer where M: ConnectionManager + Send + Sync + Debug + 'static, { - FlightServer::with_interceptor(FlightService { server }, interceptor) + FlightServer::new(FlightService { server }) } #[tonic::async_trait] diff --git a/src/influxdb_ioxd/rpc/storage.rs b/src/influxdb_ioxd/rpc/storage.rs index 2b27bec0c6..e65c0bcedc 100644 --- a/src/influxdb_ioxd/rpc/storage.rs +++ b/src/influxdb_ioxd/rpc/storage.rs @@ -18,7 +18,6 @@ use generated_types::storage_server::{Storage, StorageServer}; use metrics::{MetricRegistry, RedMetric}; use query::DatabaseStore; use std::sync::Arc; -use tonic::Interceptor; /// Concrete implementation of the gRPC InfluxDB Storage Service API #[derive(Debug)] @@ -30,15 +29,11 @@ struct StorageService { pub fn make_server( db_store: Arc, metrics_registry: Arc, - interceptor: impl Into, ) -> StorageServer { - StorageServer::with_interceptor( - StorageService { - db_store, - metrics: Metrics::new(metrics_registry), - }, - interceptor, - ) + StorageServer::new(StorageService { + db_store, + metrics: Metrics::new(metrics_registry), + }) } // These are the metrics associated with the gRPC server. diff --git a/src/influxdb_ioxd/rpc/storage/service.rs b/src/influxdb_ioxd/rpc/storage/service.rs index ee0bef7187..100fb119a6 100644 --- a/src/influxdb_ioxd/rpc/storage/service.rs +++ b/src/influxdb_ioxd/rpc/storage/service.rs @@ -1161,7 +1161,6 @@ where #[cfg(test)] mod tests { - use super::super::super::ServingReadinessInterceptor; use super::super::id::Id; use super::*; @@ -1175,8 +1174,6 @@ mod tests { }; use test_helpers::{assert_contains, tag_key_bytes_to_strings, tracing::TracingCapture}; - use tonic::Code; - use futures::prelude::*; use generated_types::{ @@ -1185,7 +1182,6 @@ mod tests { Window as RPCWindow, }; - use crate::influxdb_ioxd::serving_readiness::ServingReadinessState; use generated_types::google::protobuf::Any; use prost::Message; use tokio_stream::wrappers::TcpListenerStream; @@ -1902,8 +1898,8 @@ mod tests { panic!("Unexpected success: {:?}", response); } Err(status) => { - assert_eq!(status.code(), Code::Cancelled); - assert_contains!(status.message(), "stream no longer needed"); + assert_eq!(status.code(), tonic::Code::Unknown); + assert_contains!(status.message(), "transport error"); } }; @@ -2819,7 +2815,6 @@ mod tests { .add_service(crate::influxdb_ioxd::rpc::storage::make_server( Arc::clone(&test_storage), test_storage.metrics_registry.registry(), - ServingReadinessInterceptor(ServingReadinessState::Serving.into()), )); let server = async move { diff --git a/src/influxdb_ioxd/rpc/write.rs b/src/influxdb_ioxd/rpc/write.rs index 9723f056e0..14b4e498ec 100644 --- a/src/influxdb_ioxd/rpc/write.rs +++ b/src/influxdb_ioxd/rpc/write.rs @@ -6,7 +6,7 @@ use influxdb_line_protocol::parse_lines; use observability_deps::tracing::debug; use server::{ConnectionManager, Server}; use std::fmt::Debug; -use tonic::{Interceptor, Response}; +use tonic::Response; use super::error::default_server_error_handler; @@ -80,10 +80,9 @@ where /// Instantiate the write service pub fn make_server( server: Arc>, - interceptor: impl Into, ) -> write_service_server::WriteServiceServer where M: ConnectionManager + Send + Sync + Debug + 'static, { - write_service_server::WriteServiceServer::with_interceptor(WriteService { server }, interceptor) + write_service_server::WriteServiceServer::new(WriteService { server }) } diff --git a/src/influxdb_ioxd/rpc/write_pb.rs b/src/influxdb_ioxd/rpc/write_pb.rs index f2face2393..be37c00f28 100644 --- a/src/influxdb_ioxd/rpc/write_pb.rs +++ b/src/influxdb_ioxd/rpc/write_pb.rs @@ -34,13 +34,9 @@ where pub fn make_server( server: Arc>, - interceptor: impl Into, ) -> write_service_server::WriteServiceServer where M: ConnectionManager + Send + Sync + Debug + 'static, { - write_service_server::WriteServiceServer::with_interceptor( - PBWriteService { server }, - interceptor, - ) + write_service_server::WriteServiceServer::new(PBWriteService { server }) } diff --git a/src/influxdb_ioxd/serving_readiness.rs b/src/influxdb_ioxd/serving_readiness.rs index c560dffa66..e5ca482268 100644 --- a/src/influxdb_ioxd/serving_readiness.rs +++ b/src/influxdb_ioxd/serving_readiness.rs @@ -3,6 +3,8 @@ use std::sync::{ Arc, }; +use tonic::{Request, Status}; + #[derive(Debug, Clone)] pub enum ServingReadinessState { Unavailable, @@ -57,6 +59,19 @@ impl ServingReadiness { pub fn set(&self, state: ServingReadinessState) { self.0.store(state.into(), Ordering::SeqCst) } + + /// Implements the gRPC interceptor that returns SERVICE_UNAVAILABLE gRPC status + /// if the service is not ready. + pub fn into_interceptor( + self, + ) -> impl FnMut(Request<()>) -> Result, Status> + Clone { + move |req| match self.get() { + ServingReadinessState::Unavailable => { + Err(Status::unavailable("service not ready to serve")) + } + ServingReadinessState::Serving => Ok(req), + } + } } impl From> for ServingReadiness { diff --git a/trogging/Cargo.toml b/trogging/Cargo.toml index fe3c1efccc..044c1ab752 100644 --- a/trogging/Cargo.toml +++ b/trogging/Cargo.toml @@ -10,13 +10,12 @@ description = "(TR)acing and l(OGGING) configuration" [dependencies] logfmt = { path = "../logfmt" } observability_deps = { path = "../observability_deps" } -opentelemetry-jaeger = { version = "0.12", features = ["tokio"] } -opentelemetry-otlp = "0.6" +opentelemetry-jaeger = { version = "0.14", features = ["tokio"] } +opentelemetry-otlp = "0.8" thiserror = "1.0.23" -tracing-opentelemetry = { version = "0.12", default-features = false } +tracing-opentelemetry = { version = "0.14", default-features = false } structopt = { version = "0.3.21", optional = true } [dev-dependencies] synchronized-writer = "1" regex = "1" -