From c5ee3250f731ea770a827e695789aca00aca31f1 Mon Sep 17 00:00:00 2001 From: Marco Neumann Date: Tue, 23 May 2023 14:17:49 +0200 Subject: [PATCH] fix: flaky `service::tests::test_log_on_panic` (#7850) * refactor: remove line number from test * refactor: clean up code * fix: flaky `service::tests::test_log_on_panic` This seems to be a really rare issue. So provoking it requires a lot of tests. This can be done (using `fish`): ```console $ while cargo with "parallel -n0 {bin} {args} ::: $(seq 10)" -- test -p service_grpc_influxrpc --lib -- --test-threads 20; echo; end ``` Fixes #7838. * fix: panic handler construction --------- Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- Cargo.lock | 487 +++++++++++++++++++------- influxdb_iox/src/commands/run/main.rs | 2 +- panic_logging/src/lib.rs | 58 ++- service_grpc_influxrpc/Cargo.toml | 1 + service_grpc_influxrpc/src/service.rs | 27 +- workspace-hack/Cargo.toml | 4 +- 6 files changed, 419 insertions(+), 160 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb6dbb46c8..78161c8135 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom", + "getrandom 0.2.9", "once_cell", "version_check", ] @@ -34,9 +34,9 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "const-random", - "getrandom", + "getrandom 0.2.9", "once_cell", "version_check", ] @@ -390,10 +390,10 @@ dependencies = [ "hashbrown 0.13.2", "num-traits", "once_cell", - "rand", + "rand 0.8.5", "regex", "snafu", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -507,7 +507,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi 0.1.19", "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -587,7 +587,7 @@ name = "backoff" version = "0.1.0" dependencies = [ "observability_deps", - "rand", + "rand 0.8.5", "snafu", "tokio", "workspace-hack", @@ -601,7 +601,7 @@ checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" dependencies = [ "addr2line", "cc", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide 0.6.2", "object", @@ -620,6 +620,15 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f1e31e207a6b8fb791a38ea3105e6cb541f55e4d029902d3039a4ad07cc4105" +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -659,7 +668,7 @@ dependencies = [ "arrayref", "arrayvec", "cc", - "cfg-if", + "cfg-if 1.0.0", "constant_time_eq", "digest", ] @@ -765,7 +774,7 @@ dependencies = [ "parking_lot 0.12.1", "pdatastructs", "proptest", - "rand", + "rand 0.8.5", "tokio", "tokio-util", "trace", @@ -787,6 +796,12 @@ dependencies = [ "jobserver", ] +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" @@ -803,7 +818,7 @@ dependencies = [ "num-integer", "num-traits", "serde", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -900,7 +915,7 @@ dependencies = [ "trace", "trace_exporters", "trogging", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -967,7 +982,7 @@ checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" dependencies = [ "error-code", "str-buf", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -984,7 +999,7 @@ checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" dependencies = [ "atty", "lazy_static", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1022,14 +1037,14 @@ dependencies = [ "observability_deps", "parquet_file", "predicate", - "rand", + "rand 0.8.5", "schema", "sharder", "test_helpers", "tokio", "tokio-util", "tracker", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -1055,7 +1070,7 @@ dependencies = [ "schema", "tokio", "tracker", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -1065,7 +1080,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.8.15", ] [[package]] @@ -1099,8 +1114,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57ab2224a0311582eb03adba4caaf18644f7b1f10a760803a803b9b605187fc7" dependencies = [ "console-api", - "crossbeam-channel", - "crossbeam-utils", + "crossbeam-channel 0.5.8", + "crossbeam-utils 0.8.15", "futures", "hdrhistogram", "humantime", @@ -1133,7 +1148,7 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" dependencies = [ - "getrandom", + "getrandom 0.2.9", "once_cell", "proc-macro-hack", "tiny-keccak", @@ -1157,7 +1172,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c76f98bdfc7f66172e6c7065f981ebb576ffc903fe4c0561d9f0c2509226dc6" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -1190,7 +1205,7 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -1249,14 +1264,24 @@ dependencies = [ "cc", ] +[[package]] +name = "crossbeam-channel" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +dependencies = [ + "crossbeam-utils 0.7.2", + "maybe-uninit", +] + [[package]] name = "crossbeam-channel" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ - "cfg-if", - "crossbeam-utils", + "cfg-if 1.0.0", + "crossbeam-utils 0.8.15", ] [[package]] @@ -1265,9 +1290,9 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crossbeam-epoch", - "crossbeam-utils", + "crossbeam-utils 0.8.15", ] [[package]] @@ -1277,8 +1302,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" dependencies = [ "autocfg", - "cfg-if", - "crossbeam-utils", + "cfg-if 1.0.0", + "crossbeam-utils 0.8.15", "memoffset 0.8.0", "scopeguard", ] @@ -1289,8 +1314,19 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ - "cfg-if", - "crossbeam-utils", + "cfg-if 1.0.0", + "crossbeam-utils 0.8.15", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "lazy_static", ] [[package]] @@ -1299,7 +1335,7 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -1355,7 +1391,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "hashbrown 0.12.3", "lock_api", "once_cell", @@ -1380,7 +1416,7 @@ dependencies = [ "sqlx", "test_helpers", "thiserror", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -1420,7 +1456,7 @@ dependencies = [ "parquet", "percent-encoding", "pin-project-lite", - "rand", + "rand 0.8.5", "smallvec", "sqlparser 0.33.0", "tempfile", @@ -1428,7 +1464,7 @@ dependencies = [ "tokio-stream", "tokio-util", "url", - "uuid", + "uuid 1.3.3", "xz2", "zstd 0.12.3+zstd.1.5.2", ] @@ -1459,7 +1495,7 @@ dependencies = [ "log", "object_store", "parking_lot 0.12.1", - "rand", + "rand 0.8.5", "tempfile", "url", ] @@ -1517,11 +1553,11 @@ dependencies = [ "md-5", "paste", "petgraph", - "rand", + "rand 0.8.5", "regex", "sha2", "unicode-segmentation", - "uuid", + "uuid 1.3.3", ] [[package]] @@ -1546,7 +1582,7 @@ dependencies = [ "arrow", "datafusion-common", "paste", - "rand", + "rand 0.8.5", ] [[package]] @@ -1585,7 +1621,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" dependencies = [ - "uuid", + "uuid 1.3.3", ] [[package]] @@ -1628,7 +1664,7 @@ checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", "redox_users", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1675,7 +1711,7 @@ version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -1745,7 +1781,7 @@ version = "3.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ae6b3d9530211fb3b12a95374b8b0823be812f53d09e18c5675c0146b09642" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "rustix", "windows-sys 0.48.0", ] @@ -1756,7 +1792,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "redox_syscall 0.2.16", "windows-sys 0.48.0", @@ -1771,7 +1807,7 @@ dependencies = [ "cc", "lazy_static", "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1856,6 +1892,22 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + [[package]] name = "futures" version = "0.3.28" @@ -1980,7 +2032,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -2013,15 +2065,26 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] @@ -2462,7 +2525,7 @@ dependencies = [ "test_helpers", "tokio", "url", - "uuid", + "uuid 1.3.3", ] [[package]] @@ -2559,7 +2622,7 @@ dependencies = [ "tonic", "trace_exporters", "trogging", - "uuid", + "uuid 1.3.3", "wal", "wal_inspect", "workspace-hack", @@ -2580,7 +2643,7 @@ dependencies = [ "influxdb-line-protocol", "insta", "prost", - "rand", + "rand 0.8.5", "reqwest", "schema", "serde_json", @@ -2611,7 +2674,7 @@ dependencies = [ "hex", "integer-encoding", "observability_deps", - "rand", + "rand 0.8.5", "snafu", "snap", "test_helpers", @@ -2641,7 +2704,7 @@ dependencies = [ "backoff", "bytes", "criterion", - "crossbeam-utils", + "crossbeam-utils 0.8.15", "data_types", "datafusion", "datafusion_util", @@ -2670,7 +2733,7 @@ dependencies = [ "pin-project", "predicate", "prost", - "rand", + "rand 0.8.5", "schema", "service_grpc_catalog", "sharder", @@ -2681,7 +2744,7 @@ dependencies = [ "tokio-util", "tonic", "trace", - "uuid", + "uuid 1.3.3", "wal", "workspace-hack", ] @@ -2761,7 +2824,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -2781,6 +2844,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + [[package]] name = "iox_catalog" version = "0.1.0" @@ -2799,7 +2871,7 @@ dependencies = [ "parking_lot 0.12.1", "paste", "pretty_assertions", - "rand", + "rand 0.8.5", "serde", "snafu", "sqlx", @@ -2808,7 +2880,7 @@ dependencies = [ "test_helpers", "thiserror", "tokio", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -2829,7 +2901,7 @@ dependencies = [ "mutable_batch", "mutable_batch_lp", "parquet_file", - "rand", + "rand 0.8.5", "regex", "schema", "serde", @@ -2840,7 +2912,7 @@ dependencies = [ "toml", "tracing", "tracing-subscriber", - "uuid", + "uuid 1.3.3", ] [[package]] @@ -2948,7 +3020,7 @@ dependencies = [ "parquet_file", "predicate", "schema", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -3135,6 +3207,25 @@ dependencies = [ "workspace-hack", ] +[[package]] +name = "ipc-channel" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cb1d9211085f0ea6f1379d944b93c4d07e8207aa3bcf49f37eda12b85081887" +dependencies = [ + "bincode", + "crossbeam-channel 0.4.4", + "fnv", + "lazy_static", + "libc", + "mio 0.6.23", + "rand 0.7.3", + "serde", + "tempfile", + "uuid 0.8.2", + "winapi 0.3.9", +] + [[package]] name = "ipnet" version = "2.7.2" @@ -3186,6 +3277,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -3307,7 +3408,7 @@ version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -3368,6 +3469,12 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + [[package]] name = "md-5" version = "0.10.5" @@ -3459,6 +3566,25 @@ dependencies = [ "adler", ] +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + [[package]] name = "mio" version = "0.8.6" @@ -3467,10 +3593,22 @@ checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.45.0", ] +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + [[package]] name = "mockito" version = "1.0.2" @@ -3483,7 +3621,7 @@ dependencies = [ "hyper", "lazy_static", "log", - "rand", + "rand 0.8.5", "regex", "serde_json", "serde_urlencoded", @@ -3509,7 +3647,7 @@ dependencies = [ "iox_time", "itertools", "mutable_batch_lp", - "rand", + "rand 0.8.5", "schema", "snafu", "workspace-hack", @@ -3562,6 +3700,17 @@ dependencies = [ "prost", ] +[[package]] +name = "net2" +version = "0.2.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d0df99cfcd2530b2e694f6e17e7f37b8e26bb23983ac530c0c97408837c631" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + [[package]] name = "nix" version = "0.26.2" @@ -3569,7 +3718,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.0", "libc", "memoffset 0.7.1", "pin-utils", @@ -3599,7 +3748,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ "overload", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -3732,7 +3881,7 @@ dependencies = [ "parking_lot 0.12.1", "percent-encoding", "quick-xml 0.28.2", - "rand", + "rand 0.8.5", "reqwest", "ring", "rustls-pemfile", @@ -3815,7 +3964,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -3861,12 +4010,12 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "instant", "libc", "redox_syscall 0.2.16", "smallvec", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -3875,7 +4024,7 @@ version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "redox_syscall 0.2.16", "smallvec", @@ -3941,7 +4090,7 @@ dependencies = [ "thiserror", "thrift", "tokio", - "uuid", + "uuid 1.3.3", "workspace-hack", "zstd 0.12.3+zstd.1.5.2", ] @@ -4112,7 +4261,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" dependencies = [ "phf_shared", - "rand", + "rand 0.8.5", ] [[package]] @@ -4169,7 +4318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "196ded5d4be535690899a4631cc9f18cdc41b7ebf24a79400f46f48e49a11059" dependencies = [ "backtrace", - "cfg-if", + "cfg-if 1.0.0", "findshlibs", "inferno", "libc", @@ -4281,13 +4430,26 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "procspawn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5a680d772408c77498b0339175746b5dae18724b26877b919e6ecabb680e83" +dependencies = [ + "ctor", + "findshlibs", + "ipc-channel", + "libc", + "serde", +] + [[package]] name = "prometheus" version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "fnv", "lazy_static", "memchr", @@ -4307,8 +4469,8 @@ dependencies = [ "lazy_static", "num-traits", "quick-error 2.0.1", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax 0.6.29", "rusty-fork", @@ -4410,7 +4572,7 @@ dependencies = [ "pin-project", "predicate", "prost", - "rand", + "rand 0.8.5", "schema", "service_common", "service_grpc_catalog", @@ -4426,7 +4588,7 @@ dependencies = [ "trace_exporters", "trace_http", "tracker", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -4489,6 +4651,19 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + [[package]] name = "rand" version = "0.8.5" @@ -4496,8 +4671,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] @@ -4507,7 +4692,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", ] [[package]] @@ -4516,7 +4710,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.9", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", ] [[package]] @@ -4525,7 +4728,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -4544,9 +4747,9 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ - "crossbeam-channel", + "crossbeam-channel 0.5.8", "crossbeam-deque", - "crossbeam-utils", + "crossbeam-utils 0.8.15", "num_cpus", ] @@ -4574,7 +4777,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom", + "getrandom 0.2.9", "redox_syscall 0.2.16", "thiserror", ] @@ -4673,7 +4876,7 @@ dependencies = [ "spin 0.5.2", "untrusted", "web-sys", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -4686,7 +4889,7 @@ dependencies = [ "base64 0.21.1", "bytes", "criterion", - "crossbeam-utils", + "crossbeam-utils 0.8.15", "data_types", "dml", "flate2", @@ -4709,7 +4912,7 @@ dependencies = [ "paste", "pretty_assertions", "proptest", - "rand", + "rand 0.8.5", "schema", "serde", "serde_json", @@ -4826,7 +5029,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfc8644681285d1fb67a467fb3021bfea306b99b4146b166a1fe3ada965eece" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.0", "clipboard-win", "fd-lock", "libc", @@ -4837,7 +5040,7 @@ dependencies = [ "unicode-segmentation", "unicode-width", "utf8parse", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -4978,7 +5181,7 @@ dependencies = [ "observability_deps", "tokio", "tonic", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -5033,6 +5236,7 @@ dependencies = [ "parking_lot 0.12.1", "pin-project", "predicate", + "procspawn", "prost", "query_functions", "regex", @@ -5085,7 +5289,7 @@ dependencies = [ "parquet_file", "tokio", "tonic", - "uuid", + "uuid 1.3.3", "workspace-hack", ] @@ -5119,7 +5323,7 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest", ] @@ -5130,7 +5334,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest", ] @@ -5154,7 +5358,7 @@ dependencies = [ "mutable_batch", "mutable_batch_lp", "parking_lot 0.12.1", - "rand", + "rand 0.8.5", "siphasher", "test_helpers", "workspace-hack", @@ -5231,7 +5435,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -5338,7 +5542,7 @@ dependencies = [ "once_cell", "paste", "percent-encoding", - "rand", + "rand 0.8.5", "rustls 0.20.8", "rustls-pemfile", "serde", @@ -5352,7 +5556,7 @@ dependencies = [ "thiserror", "tokio-stream", "url", - "uuid", + "uuid 1.3.3", "webpki-roots 0.22.6", "whoami", ] @@ -5364,7 +5568,7 @@ dependencies = [ "dotenvy", "either", "futures", - "rand", + "rand 0.8.5", "sqlx", "tokio", "workspace-hack", @@ -5475,7 +5679,7 @@ dependencies = [ "debugid", "memmap2", "stable_deref_trait", - "uuid", + "uuid 1.3.3", ] [[package]] @@ -5529,7 +5733,7 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "fastrand", "redox_syscall 0.3.5", "rustix", @@ -5582,7 +5786,7 @@ dependencies = [ "once_cell", "parking_lot 0.12.1", "prost", - "rand", + "rand 0.8.5", "regex", "reqwest", "snafu", @@ -5627,7 +5831,7 @@ version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "once_cell", ] @@ -5717,7 +5921,7 @@ dependencies = [ "autocfg", "bytes", "libc", - "mio", + "mio 0.8.6", "num_cpus", "parking_lot 0.12.1", "pin-project-lite", @@ -5912,7 +6116,7 @@ dependencies = [ "indexmap", "pin-project", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -5959,7 +6163,7 @@ dependencies = [ "chrono", "observability_deps", "parking_lot 0.12.1", - "rand", + "rand 0.8.5", "workspace-hack", ] @@ -6005,7 +6209,7 @@ version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "log", "pin-project-lite", "tracing-attributes", @@ -6121,7 +6325,7 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "static_assertions", ] @@ -6205,13 +6409,22 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.9", +] + [[package]] name = "uuid" version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" dependencies = [ - "getrandom", + "getrandom 0.2.9", ] [[package]] @@ -6306,6 +6519,12 @@ dependencies = [ "try-lock", ] +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -6318,7 +6537,7 @@ version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "wasm-bindgen-macro", ] @@ -6343,7 +6562,7 @@ version = "0.4.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "wasm-bindgen", "web-sys", @@ -6450,6 +6669,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + [[package]] name = "winapi" version = "0.3.9" @@ -6460,6 +6685,12 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -6472,7 +6703,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -6637,7 +6868,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -6657,7 +6888,7 @@ dependencies = [ "bytes", "cc", "chrono", - "crossbeam-utils", + "crossbeam-utils 0.8.15", "crypto-common", "datafusion", "datafusion-optimizer", @@ -6674,7 +6905,7 @@ dependencies = [ "futures-sink", "futures-task", "futures-util", - "getrandom", + "getrandom 0.2.9", "hashbrown 0.13.2", "heck", "indexmap", @@ -6699,8 +6930,8 @@ dependencies = [ "proptest", "prost", "prost-types", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "regex", "regex-syntax 0.7.1", "reqwest", @@ -6729,9 +6960,9 @@ dependencies = [ "tracing-log", "tracing-subscriber", "url", - "uuid", + "uuid 1.3.3", "webpki", - "winapi", + "winapi 0.3.9", "windows-sys 0.45.0", "windows-sys 0.48.0", "zstd 0.12.3+zstd.1.5.2", @@ -6739,6 +6970,16 @@ dependencies = [ "zstd-sys", ] +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "xz2" version = "0.1.7" diff --git a/influxdb_iox/src/commands/run/main.rs b/influxdb_iox/src/commands/run/main.rs index 49c92c580d..e83bd26751 100644 --- a/influxdb_iox/src/commands/run/main.rs +++ b/influxdb_iox/src/commands/run/main.rs @@ -107,7 +107,7 @@ pub async fn main( // lifetime of the program - this is actually a good thing, as it prevents // the panic handler from being removed while unwinding a panic (which in // turn, causes a panic - see #548) - let f = SendPanicsToTracing::new().with_metrics(&metrics); + let f = SendPanicsToTracing::new_with_metrics(&metrics); std::mem::forget(f); // Register jemalloc metrics diff --git a/panic_logging/src/lib.rs b/panic_logging/src/lib.rs index 44a31a61ec..846d68ba85 100644 --- a/panic_logging/src/lib.rs +++ b/panic_logging/src/lib.rs @@ -36,31 +36,31 @@ pub struct SendPanicsToTracing { impl SendPanicsToTracing { pub fn new() -> Self { - let current_panic_hook: PanicFunctionPtr = Arc::new(panic::take_hook()); - let old_panic_hook = Some(Arc::clone(¤t_panic_hook)); - panic::set_hook(Box::new(move |info| { - let panic_type = PanicType::classify(info); - tracing_panic_hook(¤t_panic_hook, info, panic_type) - })); - - Self { old_panic_hook } + Self::new_inner(None) } /// Configure this panic handler to emit a panic count metric. /// /// The metric is named `thread_panic_count_total` and is incremented each /// time the panic handler is invoked. - pub fn with_metrics(self, metrics: &metric::Registry) -> Self { - let metric = Metrics::new(metrics); + pub fn new_with_metrics(metrics: &metric::Registry) -> Self { + let metrics = Metrics::new(metrics); + Self::new_inner(Some(metrics)) + } - let old_hook = Arc::clone(self.old_panic_hook.as_ref().expect("no hook set")); + fn new_inner(metrics: Option) -> Self { + let current_panic_hook: PanicFunctionPtr = Arc::new(panic::take_hook()); + let old_panic_hook = Some(Arc::clone(¤t_panic_hook)); panic::set_hook(Box::new(move |info| { let panic_type = PanicType::classify(info); - metric.inc(panic_type); - tracing_panic_hook(&old_hook, info, panic_type); + if let Some(metrics) = &metrics { + metrics.inc(panic_type); + } + error!(panic_type=panic_type.name(), panic_info=%info, "Thread panic"); + current_panic_hook(info); })); - self + Self { old_panic_hook } } } @@ -104,19 +104,6 @@ impl Drop for SendPanicsToTracing { } } -fn tracing_panic_hook( - other_hook: &PanicFunctionPtr, - panic_info: &PanicInfo<'_>, - panic_type: PanicType, -) { - // Attempt to replicate the standard format: - error!(panic_type=panic_type.name(), panic_info=%panic_info, "Thread panic"); - - // Call into the previous panic function (typically the standard - // panic function) - other_hook(panic_info) -} - /// Ensure panics are fatal events by exiting the process with an exit code of /// 1 after calling the existing panic handler, if any. pub fn make_panics_fatal() { @@ -225,7 +212,7 @@ mod tests { let metrics = metric::Registry::default(); let capture = Arc::new(TracingCapture::new()); - let _guard = SendPanicsToTracing::new().with_metrics(&metrics); + let guard = SendPanicsToTracing::new_with_metrics(&metrics); assert_count(&metrics, "offset_overflow", 0); assert_count(&metrics, "unknown", 0); @@ -255,14 +242,23 @@ mod tests { .join() .expect_err("wat"); + drop(guard); + let capture2 = Arc::clone(&capture); + std::thread::spawn(move || { + capture2.register_in_current_thread(); + panic!("no guard"); + }) + .join() + .expect_err("wat"); + assert_count(&metrics, "offset_overflow", 2); assert_count(&metrics, "unknown", 1); assert_eq!( capture.to_string(), - "level = ERROR; message = Thread panic; panic_type = \"unknown\"; panic_info = panicked at 'it's bananas', panic_logging/src/lib.rs:236:13; \ - \nlevel = ERROR; message = Thread panic; panic_type = \"offset_overflow\"; panic_info = panicked at 'offset', panic_logging/src/lib.rs:244:13; \ - \nlevel = ERROR; message = Thread panic; panic_type = \"offset_overflow\"; panic_info = panicked at 'offset overflow', panic_logging/src/lib.rs:253:13; ", + "level = ERROR; message = Thread panic; panic_type = \"unknown\"; panic_info = panicked at 'it's bananas', panic_logging/src/lib.rs:223:13; \ + \nlevel = ERROR; message = Thread panic; panic_type = \"offset_overflow\"; panic_info = panicked at 'offset', panic_logging/src/lib.rs:231:13; \ + \nlevel = ERROR; message = Thread panic; panic_type = \"offset_overflow\"; panic_info = panicked at 'offset overflow', panic_logging/src/lib.rs:240:13; ", ); } } diff --git a/service_grpc_influxrpc/Cargo.toml b/service_grpc_influxrpc/Cargo.toml index d2d4ee8e8e..6f47198c85 100644 --- a/service_grpc_influxrpc/Cargo.toml +++ b/service_grpc_influxrpc/Cargo.toml @@ -42,6 +42,7 @@ datafusion_util = { path = "../datafusion_util" } influxdb_storage_client = { path = "../influxdb_storage_client" } metric = { path = "../metric" } panic_logging = { path = "../panic_logging" } +procspawn = { version = "0.10", default-features = false, features = ["test-support", "safe-shared-libraries"] } test_helpers = { path = "../test_helpers" } trace_http = { path = "../trace_http" } service_grpc_testing = { path = "../service_grpc_testing" } diff --git a/service_grpc_influxrpc/src/service.rs b/service_grpc_influxrpc/src/service.rs index 7b1ba3f5fc..2308593165 100644 --- a/service_grpc_influxrpc/src/service.rs +++ b/service_grpc_influxrpc/src/service.rs @@ -2649,8 +2649,29 @@ mod tests { grpc_request_metric_has_count(&fixture, "MeasurementTagValues", "server_error", 1); } - #[tokio::test] - async fn test_log_on_panic() { + procspawn::enable_test_support!(); + + #[test] + fn test_log_on_panic() { + // libtest (i.e. the standard library test fixture) sets panic hooks. This will race w/ our own panic hooks. To + // prevent that, we spawn a dedicated process with its own panic hooks that is isolated from the remaining + // tests. + + procspawn::spawn((), |_| { + // do NOT write to stdout (default behavior) + std::panic::set_hook(Box::new(|_| {})); + + let rt = tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap(); + rt.block_on(test_log_on_panic_inner()); + }) + .join() + .unwrap(); + } + + async fn test_log_on_panic_inner() { // Send a message to a route that causes a panic and ensure: // 1. We don't use up all executors 2. The panic message // message ends up in the log system @@ -2687,7 +2708,7 @@ mod tests { // Note we don't include the actual line / column in the // expected panic message to avoid needing to update the test // whenever the source code file changed. - let expected_error = "'This is a test panic', service_grpc_testing/src/lib.rs:18:9"; + let expected_error = "'This is a test panic', service_grpc_testing/src/lib.rs:"; assert_contains!(captured_logs, expected_error); // Ensure that panics don't exhaust the tokio executor by diff --git a/workspace-hack/Cargo.toml b/workspace-hack/Cargo.toml index a811c676ce..31d5b0fb28 100644 --- a/workspace-hack/Cargo.toml +++ b/workspace-hack/Cargo.toml @@ -199,7 +199,7 @@ once_cell = { version = "1", default-features = false, features = ["unstable"] } rustls = { version = "0.21", features = ["dangerous_configuration"] } scopeguard = { version = "1" } webpki = { version = "0.22", default-features = false, features = ["std"] } -winapi = { version = "0.3", default-features = false, features = ["basetsd", "consoleapi", "errhandlingapi", "fileapi", "handleapi", "impl-debug", "impl-default", "knownfolders", "minwinbase", "minwindef", "ntsecapi", "ntstatus", "objbase", "processenv", "shellapi", "shlobj", "std", "stringapiset", "synchapi", "timezoneapi", "winbase", "wincon", "winerror", "winnt", "winreg", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] } +winapi = { version = "0.3", default-features = false, features = ["basetsd", "consoleapi", "errhandlingapi", "fileapi", "handleapi", "impl-debug", "impl-default", "ioapiset", "knownfolders", "libloaderapi", "memoryapi", "minwinbase", "minwindef", "namedpipeapi", "ntsecapi", "ntstatus", "objbase", "processenv", "processthreadsapi", "psapi", "shellapi", "shlobj", "std", "stringapiset", "synchapi", "timezoneapi", "winbase", "wincon", "winerror", "winnt", "winreg", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] } windows-sys-53888c27b7ba5cf4 = { package = "windows-sys", version = "0.45", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_WindowsProgramming", "Win32_UI_Input_KeyboardAndMouse"] } windows-sys-c8eced492e86ede7 = { package = "windows-sys", version = "0.48", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Shell"] } @@ -207,7 +207,7 @@ windows-sys-c8eced492e86ede7 = { package = "windows-sys", version = "0.48", feat once_cell = { version = "1", default-features = false, features = ["unstable"] } scopeguard = { version = "1" } webpki = { version = "0.22", default-features = false, features = ["std"] } -winapi = { version = "0.3", default-features = false, features = ["basetsd", "consoleapi", "errhandlingapi", "fileapi", "handleapi", "impl-debug", "impl-default", "knownfolders", "minwinbase", "minwindef", "ntsecapi", "ntstatus", "objbase", "processenv", "shellapi", "shlobj", "std", "stringapiset", "synchapi", "timezoneapi", "winbase", "wincon", "winerror", "winnt", "winreg", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] } +winapi = { version = "0.3", default-features = false, features = ["basetsd", "consoleapi", "errhandlingapi", "fileapi", "handleapi", "impl-debug", "impl-default", "ioapiset", "knownfolders", "libloaderapi", "memoryapi", "minwinbase", "minwindef", "namedpipeapi", "ntsecapi", "ntstatus", "objbase", "processenv", "processthreadsapi", "psapi", "shellapi", "shlobj", "std", "stringapiset", "synchapi", "timezoneapi", "winbase", "wincon", "winerror", "winnt", "winreg", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] } windows-sys-53888c27b7ba5cf4 = { package = "windows-sys", version = "0.45", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_WindowsProgramming", "Win32_UI_Input_KeyboardAndMouse"] } windows-sys-c8eced492e86ede7 = { package = "windows-sys", version = "0.48", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Shell"] }