diff --git a/Cargo.lock b/Cargo.lock index 393e1e4..24e0c10 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,13 +4,14 @@ version = 3 [[package]] name = "actix" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f728064aca1c318585bf4bb04ffcfac9e75e508ab4e8b1bd9ba5dfe04e2cbed5" +checksum = "cba56612922b907719d4a01cf11c8d5b458e7d3dba946d0435f20f58d6795ed2" dependencies = [ + "actix-macros", "actix-rt", "actix_derive", - "bitflags 1.3.2", + "bitflags 2.4.1", "bytes", "crossbeam-channel", "futures-core", @@ -33,7 +34,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] @@ -49,71 +50,85 @@ dependencies = [ [[package]] name = "actix_derive" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d44b8fee1ced9671ba043476deddef739dd0959bf77030b26b738cc591737a7" +checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.43", ] [[package]] -name = "aho-corasick" -version = "1.0.1" +name = "addr2line" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -122,14 +137,14 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcd04a72664a65fb9adeae7ced0c98efd68a2b7a45adda8319b3bb36538404b8" dependencies = [ - "serde 1.0.163", + "serde 1.0.193", ] [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "c9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9" [[package]] name = "arc-swap" @@ -162,18 +177,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] name = "async-trait" -version = "0.1.68" +version = "0.1.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] @@ -214,7 +229,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustversion", - "serde 1.0.163", + "serde 1.0.193", "sync_wrapper", "tower", "tower-layer", @@ -238,6 +253,21 @@ dependencies = [ "tower-service", ] +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base64" version = "0.13.1" @@ -246,9 +276,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.1" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1e31e207a6b8fb791a38ea3105e6cb541f55e4d029902d3039a4ad07cc4105" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "bincode" @@ -256,7 +286,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "serde 1.0.163", + "serde 1.0.193", ] [[package]] @@ -286,21 +316,30 @@ version = "4.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da78b32057b8fdfc352504708feeba7216dcd65a2c9ab02978cbd288d1279b6c" dependencies = [ - "serde 1.0.163", + "serde 1.0.193", "utf8-width", ] [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -310,45 +349,43 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.3.0" +version = "4.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93aae7a4192245f70fe75dd9157fc7b4a5bf53e88d30bd4396f7d8f9284d5acc" +checksum = "dcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056d" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.0" +version = "4.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f423e341edefb78c9caba2d9c7f7687d0e72e89df3ce3394554754393ac3990" +checksum = "fb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9" dependencies = [ "anstream", "anstyle", - "bitflags 1.3.2", "clap_lex", "strsim", ] [[package]] name = "clap_derive" -version = "4.3.0" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "191d9573962933b4027f932c600cd252ce27a8ad5979418fe78e43c07996f27b" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -379,7 +416,7 @@ dependencies = [ "lazy_static", "nom", "rust-ini", - "serde 1.0.163", + "serde 1.0.193", "serde-hjson", "serde_json", "toml", @@ -394,9 +431,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "cpufeatures" -version = "0.2.7" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -409,9 +446,9 @@ checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff" [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "82a9b73a36529d9c47029b9fb3a6f0ea3cc916a261195352ba19e770fc1748b2" dependencies = [ "cfg-if", "crossbeam-utils", @@ -419,9 +456,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" dependencies = [ "cfg-if", ] @@ -471,6 +508,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", + "serde 1.0.193", +] + [[package]] name = "dcache" version = "0.1.0" @@ -484,8 +535,10 @@ dependencies = [ "byteorder", "clap", "config", + "dashmap", "derive_builder 0.11.2", "derive_more", + "futures", "futures-util", "lazy_static", "libmcaptcha", @@ -493,12 +546,13 @@ dependencies = [ "openraft", "pretty_env_logger 0.4.0", "prost", - "serde 1.0.163", + "serde 1.0.193", "serde_json", "tokio", "tokio-stream", "tonic", "tonic-build", + "tower-service", "tracing", "tracing-subscriber", "url", @@ -640,12 +694,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fixedbitset" @@ -661,18 +712,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -685,9 +736,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -695,15 +746,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -712,38 +763,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -769,9 +820,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "libc", @@ -779,10 +830,16 @@ dependencies = [ ] [[package]] -name = "h2" -version = "0.3.19" +name = "gimli" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "h2" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -790,7 +847,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.1.0", "slab", "tokio", "tokio-util", @@ -826,18 +883,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "home" @@ -850,9 +898,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -861,9 +909,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -878,9 +926,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -899,9 +947,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -914,7 +962,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.5", "tokio", "tower-service", "tracing", @@ -941,9 +989,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -969,36 +1017,15 @@ dependencies = [ "hashbrown 0.14.3", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix 0.37.19", - "windows-sys 0.48.0", + "hermit-abi 0.3.3", + "rustix", + "windows-sys 0.52.0", ] [[package]] @@ -1012,9 +1039,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "lazy_static" @@ -1044,7 +1071,7 @@ checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libmcaptcha" version = "0.2.4" -source = "git+https://github.com/mcaptcha/libmcaptcha?branch=feat-dcache#d543e58bb8222bceb811db0ebb62094970b1f4e2" +source = "git+https://github.com/mcaptcha/libmcaptcha?branch=feat-dcache#21486a055caba380258f771bb19853ec040c9f55" dependencies = [ "actix", "crossbeam-channel", @@ -1056,7 +1083,7 @@ dependencies = [ "pretty_env_logger 0.5.0", "rand", "redis", - "serde 1.0.163", + "serde 1.0.193", "serde_json", "tokio", ] @@ -1067,12 +1094,6 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.12" @@ -1081,9 +1102,9 @@ checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -1091,12 +1112,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "maplit" @@ -1110,7 +1128,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] @@ -1128,15 +1146,15 @@ dependencies = [ "bincode", "derive_builder 0.12.0", "num", - "serde 1.0.163", + "serde 1.0.193", "sha2", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -1145,15 +1163,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "mio" -version = "0.8.6" +name = "miniz_oxide" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", - "log", "wasi", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -1185,38 +1211,38 @@ dependencies = [ [[package]] name = "num" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ "num-bigint", "num-complex", "num-integer", "num-iter", "num-rational", - "num-traits 0.2.15", + "num-traits 0.2.17", ] [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.15", - "serde 1.0.163", + "num-traits 0.2.17", + "serde 1.0.193", ] [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ - "num-traits 0.2.15", - "serde 1.0.163", + "num-traits 0.2.17", + "serde 1.0.193", ] [[package]] @@ -1226,7 +1252,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", - "num-traits 0.2.15", + "num-traits 0.2.17", ] [[package]] @@ -1237,7 +1263,7 @@ checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.15", + "num-traits 0.2.17", ] [[package]] @@ -1248,8 +1274,8 @@ checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.15", - "serde 1.0.163", + "num-traits 0.2.17", + "serde 1.0.193", ] [[package]] @@ -1258,33 +1284,42 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.15", + "num-traits 0.2.17", ] [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.3", "libc", ] [[package]] -name = "once_cell" -version = "1.17.1" +name = "object" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openraft" @@ -1301,7 +1336,7 @@ dependencies = [ "maplit", "pin-utils", "rand", - "serde 1.0.163", + "serde 1.0.193", "thiserror", "tokio", "tracing", @@ -1326,22 +1361,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall", "smallvec", - "windows-sys 0.45.0", + "windows-targets 0.48.5", ] [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" @@ -1355,29 +1390,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.0" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.0" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -1413,19 +1448,19 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.9" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9825a04601d60621feed79c4e6b56d65db77cdca55cef43b46b0de1096d1c282" +checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ "proc-macro2", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] name = "proc-macro2" -version = "1.0.58" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" +checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" dependencies = [ "unicode-ident", ] @@ -1457,7 +1492,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.16", + "syn 2.0.43", "tempfile", "which", ] @@ -1472,7 +1507,7 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] @@ -1492,9 +1527,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.27" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -1560,7 +1595,7 @@ dependencies = [ "rand", "ryu", "sha1_smol", - "socket2", + "socket2 0.4.10", "tokio", "tokio-retry", "tokio-util", @@ -1569,31 +1604,23 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.8.2" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1a59b5d8e97dee33696bf13c5ba8ab85341c002922fba050069326b9c498974" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.2", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -1605,6 +1632,17 @@ dependencies = [ "regex-syntax 0.6.29", ] +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + [[package]] name = "regex-syntax" version = "0.6.29" @@ -1613,9 +1651,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rust-ini" @@ -1623,6 +1661,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustc_version" version = "0.4.0" @@ -1632,20 +1676,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.37.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - [[package]] name = "rustix" version = "0.38.28" @@ -1655,7 +1685,7 @@ dependencies = [ "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.12", + "linux-raw-sys", "windows-sys 0.52.0", ] @@ -1667,9 +1697,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "scheduled-thread-pool" @@ -1682,15 +1712,15 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" @@ -1700,9 +1730,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.163" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -1721,24 +1751,24 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.163" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", - "serde 1.0.163", + "serde 1.0.193", ] [[package]] @@ -1749,9 +1779,9 @@ checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1760,9 +1790,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -1778,29 +1808,39 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", ] +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -1826,9 +1866,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.16" +version = "2.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" +checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" dependencies = [ "proc-macro2", "quote", @@ -1843,44 +1883,44 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "tempfile" -version = "3.5.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", - "rustix 0.37.19", - "windows-sys 0.45.0", + "redox_syscall", + "rustix", + "windows-sys 0.52.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] @@ -1910,11 +1950,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.1" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", "mio", @@ -1922,7 +1962,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] @@ -1939,13 +1979,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] @@ -1972,9 +2012,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -1990,7 +2030,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "serde 1.0.163", + "serde 1.0.193", ] [[package]] @@ -2002,7 +2042,7 @@ dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.1", + "base64 0.21.5", "bytes", "h2", "http", @@ -2030,7 +2070,7 @@ dependencies = [ "proc-macro2", "prost-build", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] @@ -2067,11 +2107,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -2080,20 +2119,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.43", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -2111,20 +2150,20 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -2140,27 +2179,27 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -2173,21 +2212,21 @@ dependencies = [ [[package]] name = "url" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", "percent-encoding", - "serde 1.0.163", + "serde 1.0.193", ] [[package]] name = "utf8-width" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" +checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" [[package]] name = "utf8parse" @@ -2197,9 +2236,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.3.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" dependencies = [ "getrandom", ] @@ -2218,11 +2257,10 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -2241,7 +2279,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.28", + "rustix", ] [[package]] @@ -2262,9 +2300,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -2275,22 +2313,13 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -2304,32 +2333,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -2349,15 +2363,9 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" @@ -2367,15 +2375,9 @@ checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" @@ -2385,15 +2387,9 @@ checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" @@ -2403,15 +2399,9 @@ checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" @@ -2421,15 +2411,9 @@ checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" @@ -2439,15 +2423,9 @@ checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" @@ -2457,15 +2435,9 @@ checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" diff --git a/Cargo.toml b/Cargo.toml index e5e6d72..230b782 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,8 +13,8 @@ openraft = { version = "0.8.8", features = ["serde", "single-term-leader"]} #libmcaptcha = { path="/src/atm/code/mcaptcha/libmcaptcha", features=["full"] } libmcaptcha = { git = "https://github.com/mcaptcha/libmcaptcha", branch = "feat-dcache", features = ["full"]} tracing = { version = "0.1.37", features = ["log"] } -serde_json = "1.0.96" -serde = { version = "1.0.163", features = ["derive"] } +serde_json = "1" +serde = { version = "1", features = ["derive"] } byteorder = "1.4.3" futures-util = { version = "0.3.17", default-features = false, features = ["std"] } lazy_static = "1.4.0" @@ -26,7 +26,7 @@ derive_more = "0.99.17" url = { version = "2.2.2", features = ["serde"]} async-trait = "0.1.36" clap = { version = "4.1.11", features = ["derive", "env"] } -tokio = { version = "1.0", default-features = false, features = ["sync", "macros", "rt-multi-thread"] } +tokio = { version = "1.0", default-features = false, features = ["sync", "macros", "rt-multi-thread", "time"] } tracing-subscriber = { version = "0.3.0", features = ["env-filter"] } actix = "0.13.0" tonic = { version = "0.10.2", features = ["transport", "channel"] } @@ -34,6 +34,9 @@ prost = "0.12.3" tokio-stream = "0.1.14" async-stream = "0.3.5" actix-rt = "2.9.0" +futures = "0.3.30" +tower-service = "0.3.2" +dashmap = { version = "5.5.3", features = ["serde"] } [build-dependencies] @@ -44,3 +47,6 @@ tonic-build = "0.10.2" base64 = "0.13.0" anyhow = "1.0.63" maplit = "1.0.2" + +#[profile.release] +#debug = true diff --git a/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/exceptions_1703860236.8946772.csv b/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/exceptions_1703860236.8946772.csv new file mode 100644 index 0000000..5e0e870 --- /dev/null +++ b/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/exceptions_1703860236.8946772.csv @@ -0,0 +1 @@ +Count,Message,Traceback,Nodes diff --git a/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/failures_1703860234.043255.csv b/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/failures_1703860234.043255.csv new file mode 100644 index 0000000..f87ff75 --- /dev/null +++ b/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/failures_1703860234.043255.csv @@ -0,0 +1 @@ +Method,Name,Error,Occurrences diff --git a/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/report_1703860240.2841291.html b/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/report_1703860240.2841291.html new file mode 100644 index 0000000..6993866 --- /dev/null +++ b/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/report_1703860240.2841291.html @@ -0,0 +1,592 @@ + + + + Test Report for locustfile.py + + + + +
+

Locust Test Report

+ +
+ +

During: 2023-12-29 14:29:09 - 2023-12-29 14:29:46

+

Target Host: localhost:9001

+

Script: locustfile.py

+
+ +
+

Request Statistics

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodName# Requests# FailsAverage (ms)Min (ms)Max (ms)Average size (bytes)RPSFailures/s
grpc/dcache.DcacheService/PipelineDcacheOps34800104858421499995.70.0
Aggregated34800104858421499995.70.0
+
+ +
+

Response Time Statistics

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodName50%ile (ms)60%ile (ms)70%ile (ms)80%ile (ms)90%ile (ms)95%ile (ms)99%ile (ms)100%ile (ms)
grpc/dcache.DcacheService/PipelineDcacheOps9899100100100110360840
Aggregated9899100100100110360840
+
+ + + + + + +
+

Charts

+
+ + +
+

Final ratio

+
+
+ +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/requests_1703860193.7302322.csv b/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/requests_1703860193.7302322.csv new file mode 100644 index 0000000..7b0f07a --- /dev/null +++ b/bench/results/v2/grpc-conn-pool-post-bottleneck/pipeline/requests_1703860193.7302322.csv @@ -0,0 +1,3 @@ +Type,Name,Request Count,Failure Count,Median Response Time,Average Response Time,Min Response Time,Max Response Time,Average Content Size,Requests/s,Failures/s,50%,66%,75%,80%,90%,95%,98%,99%,99.9%,99.99%,100% +grpc,/dcache.DcacheService/PipelineDcacheOps,3480,0,98,104.35343347919283,85.40578499378171,842.1087349997833,14999.985632183909,95.67244900465325,0.0,98,99,100,100,100,110,120,360,840,840,840 +,Aggregated,3480,0,98,104.35343347919283,85.40578499378171,842.1087349997833,14999.985632183909,95.67244900465325,0.0,98,99,100,100,100,110,120,360,840,840,840 diff --git a/bench/results/v2/grpc-conn-pool-post-bottleneck/single/exceptions_1703860337.049019.csv b/bench/results/v2/grpc-conn-pool-post-bottleneck/single/exceptions_1703860337.049019.csv new file mode 100644 index 0000000..5e0e870 --- /dev/null +++ b/bench/results/v2/grpc-conn-pool-post-bottleneck/single/exceptions_1703860337.049019.csv @@ -0,0 +1 @@ +Count,Message,Traceback,Nodes diff --git a/bench/results/v2/grpc-conn-pool-post-bottleneck/single/failures_1703860334.665045.csv b/bench/results/v2/grpc-conn-pool-post-bottleneck/single/failures_1703860334.665045.csv new file mode 100644 index 0000000..f87ff75 --- /dev/null +++ b/bench/results/v2/grpc-conn-pool-post-bottleneck/single/failures_1703860334.665045.csv @@ -0,0 +1 @@ +Method,Name,Error,Occurrences diff --git a/bench/results/v2/grpc-conn-pool-post-bottleneck/single/report_1703860343.117871.html b/bench/results/v2/grpc-conn-pool-post-bottleneck/single/report_1703860343.117871.html new file mode 100644 index 0000000..15d3abd --- /dev/null +++ b/bench/results/v2/grpc-conn-pool-post-bottleneck/single/report_1703860343.117871.html @@ -0,0 +1,592 @@ + + + + Test Report for locustfile.py + + + + +
+

Locust Test Report

+ +
+ +

During: 2023-12-29 14:31:23 - 2023-12-29 14:32:01

+

Target Host: localhost:9001

+

Script: locustfile.py

+
+ +
+

Request Statistics

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodName# Requests# FailsAverage (ms)Min (ms)Max (ms)Average size (bytes)RPSFailures/s
grpc/dcache.DcacheService/AddVisitor1861090743119104816.30.0
Aggregated1861090743119104816.30.0
+
+ +
+

Response Time Statistics

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodName50%ile (ms)60%ile (ms)70%ile (ms)80%ile (ms)90%ile (ms)95%ile (ms)99%ile (ms)100%ile (ms)
grpc/dcache.DcacheService/AddVisitor798184899397110120
Aggregated798184899397110120
+
+ + + + + + +
+

Charts

+
+ + +
+

Final ratio

+
+
+ +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/bench/results/v2/grpc-conn-pool-post-bottleneck/single/requests_1703860327.963138.csv b/bench/results/v2/grpc-conn-pool-post-bottleneck/single/requests_1703860327.963138.csv new file mode 100644 index 0000000..4747b0f --- /dev/null +++ b/bench/results/v2/grpc-conn-pool-post-bottleneck/single/requests_1703860327.963138.csv @@ -0,0 +1,3 @@ +Type,Name,Request Count,Failure Count,Median Response Time,Average Response Time,Min Response Time,Max Response Time,Average Content Size,Requests/s,Failures/s,50%,66%,75%,80%,90%,95%,98%,99%,99.9%,99.99%,100% +grpc,/dcache.DcacheService/AddVisitor,186109,0,79,74.60541254397303,3.7561320059467107,119.94536400015932,10.999731340236098,4816.33283284295,0.0,79,83,86,89,93,97,100,110,120,120,120 +,Aggregated,186109,0,79,74.60541254397303,3.7561320059467107,119.94536400015932,10.999731340236098,4816.33283284295,0.0,79,83,86,89,93,97,100,110,120,120,120 diff --git a/bench/results/v2/libmcaptcha-bottleneck/problem/flamegraph.svg b/bench/results/v2/libmcaptcha-bottleneck/problem/flamegraph.svg new file mode 100644 index 0000000..0ca1f87 --- /dev/null +++ b/bench/results/v2/libmcaptcha-bottleneck/problem/flamegraph.svg @@ -0,0 +1,491 @@ +Flame Graph Reset ZoomSearch [ld-linux-x86-64.so.2] (1 samples, 0.05%)[ld-linux-x86-64.so.2] (1 samples, 0.05%)[ld-linux-x86-64.so.2] (1 samples, 0.05%)[ld-linux-x86-64.so.2] (6 samples, 0.29%)[unknown] (4 samples, 0.19%)[unknown] (3 samples, 0.14%)[unknown] (3 samples, 0.14%)[unknown] (2 samples, 0.10%)[unknown] (1 samples, 0.05%)[ld-linux-x86-64.so.2] (7 samples, 0.33%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (9 samples, 0.43%)[unknown] (8 samples, 0.38%)[unknown] (6 samples, 0.29%)[unknown] (1 samples, 0.05%)_setjmp (1 samples, 0.05%)std::panic::catch_unwind (2 samples, 0.10%)std::panicking::try (2 samples, 0.10%)std::panicking::try::do_call (2 samples, 0.10%)<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (2 samples, 0.10%)std::thread::Builder::spawn_unchecked_::_{{closure}}::_{{closure}} (2 samples, 0.10%)std::sys_common::backtrace::__rust_begin_short_backtrace (2 samples, 0.10%)libmcaptcha::queue::RunnerThread::spawn::_{{closure}} (2 samples, 0.10%)libmcaptcha::queue::RunnerThread::run (2 samples, 0.10%)crossbeam_channel::channel::Receiver<T>::recv (2 samples, 0.10%)crossbeam_channel::flavors::list::Channel<T>::recv (1 samples, 0.05%)crossbeam_channel::context::Context::with (1 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.05%)crossbeam_channel::context::Context::with::CONTEXT::__getit (1 samples, 0.05%)std::sys::common::thread_local::fast_local::Key<T>::get (1 samples, 0.05%)std::sys::common::thread_local::fast_local::Key<T>::try_initialize (1 samples, 0.05%)std::sys::common::thread_local::lazy::LazyKeyInner<T>::initialize (1 samples, 0.05%)crossbeam_channel::context::Context::with::CONTEXT::__getit::_{{closure}} (1 samples, 0.05%)crossbeam_channel::context::Context::with::CONTEXT::__init (1 samples, 0.05%)crossbeam_channel::context::Context::new (1 samples, 0.05%)pthread_attr_getstack (1 samples, 0.05%)core::ops::function::FnOnce::call_once{{vtable.shim}} (5 samples, 0.24%)std::thread::Builder::spawn_unchecked_::_{{closure}} (4 samples, 0.19%)std::sys::unix::thread::guard::current (2 samples, 0.10%)pthread_getattr_np (1 samples, 0.05%)malloc (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)__mmap (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)__mmap (3 samples, 0.14%)[unknown] (3 samples, 0.14%)[unknown] (3 samples, 0.14%)[unknown] (3 samples, 0.14%)[libc.so.6] (24 samples, 1.14%)[libc.so.6] (24 samples, 1.14%)std::sys::unix::thread::Thread::new::thread_start (13 samples, 0.62%)std::sys::unix::stack_overflow::imp::make_handler (7 samples, 0.33%)sigaltstack (4 samples, 0.19%)[unknown] (4 samples, 0.19%)[unknown] (4 samples, 0.19%)[unknown] (3 samples, 0.14%)[unknown] (2 samples, 0.10%)[libc.so.6] (1 samples, 0.05%)<hyper::proto::h2::server::H2Stream<F,B> as core::future::future::Future>::poll (4 samples, 0.19%)hyper::proto::h2::server::H2Stream<F,B>::poll2 (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll (4 samples, 0.19%)<tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll (4 samples, 0.19%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (4 samples, 0.19%)<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (4 samples, 0.19%)<tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll (4 samples, 0.19%)<axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll (4 samples, 0.19%)<tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (4 samples, 0.19%)<F as futures_core::future::TryFuture>::try_poll (4 samples, 0.19%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (4 samples, 0.19%)<F as futures_core::future::TryFuture>::try_poll (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::_{{closure}} (4 samples, 0.19%)tonic::server::grpc::Grpc<T>::unary::_{{closure}} (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::PipelineDcacheOpsSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::DcacheBatchRequest>>::call::_{{closure}} (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::pipeline_dcache_ops::_{{closure}} (4 samples, 0.19%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}} (4 samples, 0.19%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}}::_{{closure}} (4 samples, 0.19%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}} (4 samples, 0.19%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}}::_{{closure}} (1 samples, 0.05%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (1 samples, 0.05%)core::option::Option<T>::as_ref (1 samples, 0.05%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (1 samples, 0.05%)tokio::sync::oneshot::Inner<T>::poll_recv (1 samples, 0.05%)tokio::runtime::coop::poll_proceed (1 samples, 0.05%)tokio::sync::mpsc::chan::Tx<T,S>::send (1 samples, 0.05%)tokio::sync::mpsc::chan::Chan<T,S>::send (1 samples, 0.05%)<tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll (3 samples, 0.14%)<tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll (3 samples, 0.14%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (3 samples, 0.14%)<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (3 samples, 0.14%)<tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll (3 samples, 0.14%)<axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll (3 samples, 0.14%)<tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll (3 samples, 0.14%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.14%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (3 samples, 0.14%)<F as futures_core::future::TryFuture>::try_poll (3 samples, 0.14%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (3 samples, 0.14%)<F as futures_core::future::TryFuture>::try_poll (3 samples, 0.14%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.14%)<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::_{{closure}} (3 samples, 0.14%)tonic::server::grpc::Grpc<T>::unary::_{{closure}} (3 samples, 0.14%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.14%)<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::PipelineDcacheOpsSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::DcacheBatchRequest>>::call::_{{closure}} (3 samples, 0.14%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.14%)<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::pipeline_dcache_ops::_{{closure}} (3 samples, 0.14%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}} (3 samples, 0.14%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}}::_{{closure}} (3 samples, 0.14%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}} (3 samples, 0.14%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}}::_{{closure}} (3 samples, 0.14%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (2 samples, 0.10%)tokio::sync::task::atomic_waker::AtomicWaker::wake (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (1 samples, 0.05%)core::sync::atomic::AtomicUsize::fetch_or (1 samples, 0.05%)core::sync::atomic::atomic_or (1 samples, 0.05%)<tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll (1 samples, 0.05%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (1 samples, 0.05%)<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (1 samples, 0.05%)<tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll (1 samples, 0.05%)<axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll (1 samples, 0.05%)<tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (1 samples, 0.05%)<F as futures_core::future::TryFuture>::try_poll (1 samples, 0.05%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (1 samples, 0.05%)<F as futures_core::future::TryFuture>::try_poll (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::_{{closure}} (1 samples, 0.05%)tonic::server::grpc::Grpc<T>::unary::_{{closure}} (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::PipelineDcacheOpsSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::DcacheBatchRequest>>::call::_{{closure}} (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::pipeline_dcache_ops::_{{closure}} (1 samples, 0.05%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}} (1 samples, 0.05%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}}::_{{closure}} (1 samples, 0.05%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}} (1 samples, 0.05%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}}::_{{closure}} (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (1 samples, 0.05%)tokio::sync::mpsc::chan::Tx<T,S>::send (1 samples, 0.05%)tokio::sync::mpsc::chan::Chan<T,S>::send (1 samples, 0.05%)tokio::sync::mpsc::list::Tx<T>::push (1 samples, 0.05%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (1 samples, 0.05%)core::ptr::drop_in_place<openraft::metrics::raft_metrics::RaftMetrics<u64,openraft::node::BasicNode>> (2 samples, 0.10%)core::ptr::drop_in_place<core::option::Option<alloc::collections::btree::map::BTreeMap<u64,core::option::Option<openraft::log_id::LogId<u64>>>>> (2 samples, 0.10%)core::ptr::drop_in_place<alloc::collections::btree::map::BTreeMap<u64,core::option::Option<openraft::log_id::LogId<u64>>>> (2 samples, 0.10%)<alloc::collections::btree::map::BTreeMap<K,V,A> as core::ops::drop::Drop>::drop (2 samples, 0.10%)core::mem::drop (2 samples, 0.10%)core::ptr::drop_in_place<alloc::collections::btree::map::IntoIter<u64,core::option::Option<openraft::log_id::LogId<u64>>>> (2 samples, 0.10%)<alloc::collections::btree::map::IntoIter<K,V,A> as core::ops::drop::Drop>::drop (2 samples, 0.10%)alloc::collections::btree::map::IntoIter<K,V,A>::dying_next (2 samples, 0.10%)alloc::collections::btree::navigate::LazyLeafRange<alloc::collections::btree::node::marker::Dying,K,V>::deallocating_end (1 samples, 0.05%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Dying,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::deallocating_end (1 samples, 0.05%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Dying,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::deallocate_and_ascend (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)cfree (1 samples, 0.05%)tokio::loom::std::parking_lot::RwLock<T>::write (1 samples, 0.05%)lock_api::rwlock::RwLock<R,T>::write (1 samples, 0.05%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_exclusive (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::flush_metrics (4 samples, 0.19%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::report_metrics (4 samples, 0.19%)tokio::sync::watch::Sender<T>::send (4 samples, 0.19%)tokio::sync::watch::Sender<T>::send_replace (2 samples, 0.10%)tokio::sync::watch::Sender<T>::send_modify (2 samples, 0.10%)tokio::sync::watch::Sender<T>::send_if_modified (2 samples, 0.10%)tokio::sync::watch::big_notify::BigNotify::notify_waiters (1 samples, 0.05%)tokio::sync::notify::Notify::notify_waiters (1 samples, 0.05%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::util::linked_list::LinkedList<tokio::sync::notify::Waiter,tokio::sync::notify::Waiter>>> (1 samples, 0.05%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::util::linked_list::LinkedList<tokio::sync::notify::Waiter,tokio::sync::notify::Waiter>>> (1 samples, 0.05%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_api_msg::_{{closure}} (3 samples, 0.14%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_api_msg::_{{closure}}::_{{closure}} (3 samples, 0.14%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::write_entry (3 samples, 0.14%)openraft::engine::handler::leader_handler::LeaderHandler<C>::leader_append_entries (2 samples, 0.10%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::initiate_replication (2 samples, 0.10%)openraft::progress::entry::ProgressEntry<NID>::next_send (2 samples, 0.10%)openraft::progress::inflight::Inflight<NID>::is_none (1 samples, 0.05%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (1 samples, 0.05%)<openraft::progress::inflight::Inflight<NID> as core::cmp::PartialEq>::eq (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_notify (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_replication_progress (1 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_progress (1 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_success_progress (1 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_matching (1 samples, 0.05%)alloc::collections::btree::map::BTreeMap<K,V,A>::insert (1 samples, 0.05%)alloc::collections::btree::map::entry::VacantEntry<K,V,A>::insert (1 samples, 0.05%)openraft::engine::engine_impl::Engine<C>::get_leader_handler_or_reject (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_api_msg::_{{closure}} (3 samples, 0.14%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_api_msg::_{{closure}}::_{{closure}} (3 samples, 0.14%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::write_entry (3 samples, 0.14%)openraft::engine::handler::leader_handler::LeaderHandler<C>::leader_append_entries (1 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::initiate_replication (1 samples, 0.05%)tracing_core::dispatcher::has_been_set (1 samples, 0.05%)core::sync::atomic::AtomicBool::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}} (3 samples, 0.14%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}}::_{{closure}} (1 samples, 0.05%)tracing_core::metadata::LevelFilter::current (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.10%)openraft::storage::log_store_ext::RaftLogReaderExt::get_log_entries::_{{closure}} (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::RaftLogReader<C>>::try_get_log_entries::_{{closure}} (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}} (3 samples, 0.14%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}}::_{{closure}} (3 samples, 0.14%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)cfree (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (7 samples, 0.33%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (7 samples, 0.33%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::inc_num_messages (1 samples, 0.05%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_raft_msg::_{{closure}} (12 samples, 0.57%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (9 samples, 0.43%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (9 samples, 0.43%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command (2 samples, 0.10%)alloc::boxed::Box<T>::pin (2 samples, 0.10%)alloc::boxed::Box<T>::new (2 samples, 0.10%)alloc::alloc::exchange_malloc (2 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.10%)alloc::alloc::Global::alloc_impl (2 samples, 0.10%)alloc::alloc::alloc (2 samples, 0.10%)malloc (2 samples, 0.10%)[libc.so.6] (1 samples, 0.05%)<alloc::collections::btree::map::Values<K,V> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)<alloc::collections::btree::map::Iter<K,V> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)<core::option::Option<openraft::log_id::LogId<NID>> as openraft::log_id::log_id_option_ext::LogIdOptionExt>::next_index (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)alloc::collections::btree::map::BTreeMap<K,V,A>::get (1 samples, 0.05%)core::option::Option<T>::as_ref (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)alloc::sync::Arc<T>::new (1 samples, 0.05%)alloc::boxed::Box<T>::new (1 samples, 0.05%)alloc::alloc::exchange_malloc (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}} (4 samples, 0.19%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}}::_{{closure}} (4 samples, 0.19%)tokio::sync::oneshot::channel (3 samples, 0.14%)tokio::sync::oneshot::State::new (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (10 samples, 0.48%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (10 samples, 0.48%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}} (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}}::_{{closure}} (1 samples, 0.05%)openraft::core::sm::Handle<C>::send (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (1 samples, 0.05%)tokio::sync::mpsc::chan::Tx<T,S>::send (1 samples, 0.05%)tokio::sync::mpsc::chan::Chan<T,S>::send (1 samples, 0.05%)tokio::sync::mpsc::list::Tx<T>::push (1 samples, 0.05%)tokio::sync::mpsc::block::Block<T>::write (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.05%)tokio::sync::mpsc::block::Block<T>::write::_{{closure}} (1 samples, 0.05%)core::ptr::write (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (2 samples, 0.10%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command (3 samples, 0.14%)alloc::boxed::Box<T>::pin (3 samples, 0.14%)alloc::boxed::Box<T>::new (3 samples, 0.14%)alloc::alloc::exchange_malloc (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (2 samples, 0.10%)alloc::alloc::dealloc (2 samples, 0.10%)cfree (2 samples, 0.10%)[libc.so.6] (1 samples, 0.05%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (36 samples, 1.71%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::main::_{{closure}} (36 samples, 1.71%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (36 samples, 1.71%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}} (36 samples, 1.71%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}}::_{{closure}} (36 samples, 1.71%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}} (36 samples, 1.71%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}}::_{{closure}} (36 samples, 1.71%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (16 samples, 0.76%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (16 samples, 0.76%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<core::option::Option<openraft::engine::command::Command<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (3 samples, 0.14%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<core::option::Option<openraft::engine::command::Command<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (3 samples, 0.14%)core::ptr::drop_in_place<<openraft::core::raft_core::RaftCore<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>> as openraft::runtime::RaftRuntime<dcache::DcacheTypeConfig>>::run_command::{{closure}}> (1 samples, 0.05%)tonic::codec::decode::Streaming<T>::decode_chunk (1 samples, 0.05%)<tonic::codec::prost::ProstDecoder<U> as tonic::codec::Decoder>::decode (1 samples, 0.05%)prost::message::Message::decode (1 samples, 0.05%)prost::message::Message::merge (1 samples, 0.05%)<&mut T as bytes::buf::buf_impl::Buf>::has_remaining (1 samples, 0.05%)<tokio_stream::stream_ext::try_next::TryNext<St> as core::future::future::Future>::poll (4 samples, 0.19%)<tokio_stream::stream_ext::next::Next<St> as core::future::future::Future>::poll (4 samples, 0.19%)<&mut S as futures_core::stream::Stream>::poll_next (4 samples, 0.19%)<core::pin::Pin<P> as futures_core::stream::Stream>::poll_next (4 samples, 0.19%)<tonic::codec::decode::Streaming<T> as futures_core::stream::Stream>::poll_next (4 samples, 0.19%)tonic::codec::decode::StreamingInner::poll_data (3 samples, 0.14%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (3 samples, 0.14%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (3 samples, 0.14%)<http_body::combinators::map_data::MapData<B,F> as http_body::Body>::poll_data (3 samples, 0.14%)<hyper::body::body::Body as http_body::Body>::poll_data (2 samples, 0.10%)hyper::body::body::Body::poll_eof (1 samples, 0.05%)hyper::body::body::Body::poll_inner (1 samples, 0.05%)hyper::proto::h2::ping::Recorder::record_data (1 samples, 0.05%)core::ptr::drop_in_place<bytes::bytes_mut::BytesMut> (1 samples, 0.05%)cfree (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)core::task::wake::Waker::wake (1 samples, 0.05%)tokio::runtime::task::waker::wake_by_val (1 samples, 0.05%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (1 samples, 0.05%)tokio::runtime::task::raw::RawTask::schedule (1 samples, 0.05%)tokio::runtime::task::raw::schedule (1 samples, 0.05%)tokio::runtime::task::core::Header::get_scheduler (1 samples, 0.05%)core::ptr::mut_ptr::<impl *mut T>::add (1 samples, 0.05%)core::ptr::drop_in_place<h2::proto::streams::stream::Stream> (1 samples, 0.05%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (1 samples, 0.05%)core::ptr::drop_in_place<core::task::wake::Waker> (1 samples, 0.05%)<core::task::wake::Waker as core::ops::drop::Drop>::drop (1 samples, 0.05%)tokio::runtime::task::waker::drop_waker (1 samples, 0.05%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::drop_reference (1 samples, 0.05%)tokio::runtime::task::state::State::ref_dec (1 samples, 0.05%)core::ptr::drop_in_place<h2::share::FlowControl> (5 samples, 0.24%)core::ptr::drop_in_place<h2::proto::streams::streams::OpaqueStreamRef> (5 samples, 0.24%)<h2::proto::streams::streams::OpaqueStreamRef as core::ops::drop::Drop>::drop (5 samples, 0.24%)h2::proto::streams::streams::drop_stream_ref (5 samples, 0.24%)h2::proto::streams::counts::Counts::transition (3 samples, 0.14%)h2::proto::streams::counts::Counts::transition_after (3 samples, 0.14%)h2::proto::streams::store::Ptr::remove (2 samples, 0.10%)slab::Slab<T>::remove (1 samples, 0.05%)slab::Slab<T>::try_remove (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)core::ptr::drop_in_place<tonic::codec::decode::Streaming<dcache::protobuf::dcache::RaftReply>> (7 samples, 0.33%)core::ptr::drop_in_place<tonic::codec::decode::StreamingInner> (7 samples, 0.33%)core::ptr::drop_in_place<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>> (6 samples, 0.29%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>>> (6 samples, 0.29%)core::ptr::drop_in_place<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>> (6 samples, 0.29%)core::ptr::drop_in_place<http_body::combinators::map_err::MapErr<http_body::combinators::map_data::MapData<hyper::body::body::Body,tonic::codec::decode::Streaming<dcache::protobuf::dcache::RaftReply>::new<hyper::body::body::Body,tonic::codec::prost::ProstDecoder<dcache::protobuf::dcache::RaftReply>>::{{closure}}>,tonic::codec::decode::Streaming<dcache::protobuf::dcache::RaftReply>::new<hyper::body::body::Body,tonic::codec::prost::ProstDecoder<dcache::protobuf::dcache::RaftReply>>::{{closure}}>> (6 samples, 0.29%)core::ptr::drop_in_place<http_body::combinators::map_data::MapData<hyper::body::body::Body,tonic::codec::decode::Streaming<dcache::protobuf::dcache::RaftReply>::new<hyper::body::body::Body,tonic::codec::prost::ProstDecoder<dcache::protobuf::dcache::RaftReply>>::{{closure}}>> (6 samples, 0.29%)core::ptr::drop_in_place<hyper::body::body::Body> (6 samples, 0.29%)core::ptr::drop_in_place<hyper::body::body::Kind> (6 samples, 0.29%)core::ptr::drop_in_place<h2::share::RecvStream> (6 samples, 0.29%)h2::proto::streams::streams::OpaqueStreamRef::clear_recv_buffer (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (1 samples, 0.05%)tokio::sync::mpsc::chan::Tx<T,S>::send (1 samples, 0.05%)tokio::sync::mpsc::chan::Chan<T,S>::send (1 samples, 0.05%)tokio::sync::mpsc::list::Tx<T>::push (1 samples, 0.05%)tokio::sync::oneshot::channel (1 samples, 0.05%)tokio::sync::oneshot::State::new (1 samples, 0.05%)<T as tonic::client::service::GrpcService<ReqBody>>::call (3 samples, 0.14%)<tonic::transport::channel::Channel as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::call (3 samples, 0.14%)<tower::buffer::service::Buffer<T,Request> as tower_service::Service<Request>>::call (3 samples, 0.14%)tracing::span::Span::current (1 samples, 0.05%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>,tower::buffer::error::ServiceError>>>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>,tower::buffer::error::ServiceError>>>> (1 samples, 0.05%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)alloc::sync::Arc<T,A>::drop_slow (1 samples, 0.05%)core::ptr::drop_in_place<tokio::sync::oneshot::Inner<core::result::Result<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>,tower::buffer::error::ServiceError>>> (1 samples, 0.05%)<tokio::sync::oneshot::Inner<T> as core::ops::drop::Drop>::drop (1 samples, 0.05%)tokio::sync::oneshot::Task::drop_task (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.05%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (2 samples, 0.10%)tokio::sync::oneshot::Inner<T>::poll_recv (1 samples, 0.05%)tokio::sync::oneshot::Task::set_task (1 samples, 0.05%)<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (2 samples, 0.10%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (1 samples, 0.05%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (1 samples, 0.05%)<tonic::transport::service::reconnect::ResponseFuture<F> as core::future::future::Future>::poll (1 samples, 0.05%)core::task::poll::Poll<core::result::Result<T,E>>::map_err (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)core::ptr::drop_in_place<tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>> (1 samples, 0.05%)<tonic::transport::channel::ResponseFuture as core::future::future::Future>::poll (8 samples, 0.38%)<tower::buffer::future::ResponseFuture<F> as core::future::future::Future>::poll (8 samples, 0.38%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (6 samples, 0.29%)<core::pin::Pin<P> as core::future::future::Future>::poll (5 samples, 0.24%)<core::pin::Pin<P> as core::future::future::Future>::poll (5 samples, 0.24%)<tonic::transport::service::add_origin::AddOrigin<T> as tower_service::Service<http::request::Request<ReqBody>>>::call::_{{closure}} (5 samples, 0.24%)core::ptr::drop_in_place<tonic::transport::service::grpc_timeout::ResponseFuture<tower::util::either::Either<tower::limit::concurrency::future::ResponseFuture<tower::util::either::Either<tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>,tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>>>,tower::util::either::Either<tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>,tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>>>>> (2 samples, 0.10%)core::ptr::drop_in_place<tower::util::either::Either<tower::limit::concurrency::future::ResponseFuture<tower::util::either::Either<tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>,tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>>>,tower::util::either::Either<tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>,tonic::transport::service::reconnect::ResponseFuture<hyper::client::conn::ResponseFuture>>>> (1 samples, 0.05%)core::ptr::drop_in_place<tonic::transport::channel::ResponseFuture> (1 samples, 0.05%)core::ptr::drop_in_place<tower::buffer::future::ResponseFuture<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>> (1 samples, 0.05%)core::ptr::drop_in_place<tower::buffer::future::ResponseState<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>> (1 samples, 0.05%)core::ptr::drop_in_place<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>> (1 samples, 0.05%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>> (1 samples, 0.05%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>> (1 samples, 0.05%)_ZN4core3ptr1980drop_in_place$LT$$LT$tonic..transport..service..add_origin..AddOrigin$LT$tonic..transport..service..user_agent..UserAgent$LT$tonic..transport..service..grpc_timeout..GrpcTimeout$LT$tower..util..either..Either$LT$tower..limit..concurrency..service..ConcurrencyLimit$LT$tower..util..either..Either$LT$tower..limit..rate..service..RateLimit$LT$tonic..transport..service..reconnect..Reconnect$LT$hyper..client..service..Connect$LT$tonic..transport..service..connector..Connector$LT$hyper..client..connect..http..HttpConnector$GT$$C$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$C$http..uri..Uri$GT$$C$http..uri..Uri$GT$$GT$$C$tonic..transport..service..reconnect..Reconnect$LT$hyper..client..service..Connect$LT$tonic..transport..service..connector..Connector$LT$hyper..client..connect..http..HttpConnector$GT$$C$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$C$http..uri..Uri$GT$$C$http..uri..Uri$GT$$GT$$GT$$C$tower..util..either..Either$LT$tower..limit..rate..service..RateLimit$LT$tonic..transport..service..reconnect..Reconnect$LT$hyper..client..service..Connect$LT$tonic..transport..service..connector..Connector$LT$hyper..client..connect..http..HttpConnector$GT$$C$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$C$http..uri..Uri$GT$$C$http..uri..Uri$GT$$GT$$C$tonic..transport..service..reconnect..Reconnect$LT$hyper..client..service..Connect$LT$tonic..transport..service..connector..Connector$LT$hyper..client..connect..http..HttpConnector$GT$$C$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$C$http..uri..Uri$GT$$C$http..uri..Uri$GT$$GT$$GT$$GT$$GT$$GT$$u20$as$u20$tower_service..Service$LT$http..request..Request$LT$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$GT$$GT$$GT$..call..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1163c7b8f84eb2deE (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)http::response::Response<T>::map (2 samples, 0.10%)tonic::client::grpc::Grpc<T>::create_response::_{{closure}} (2 samples, 0.10%)tonic::codec::decode::Streaming<T>::new (2 samples, 0.10%)bytes::bytes_mut::BytesMut::with_capacity (2 samples, 0.10%)alloc::vec::Vec<T>::with_capacity (2 samples, 0.10%)alloc::vec::Vec<T,A>::with_capacity_in (2 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (2 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::allocate_in (2 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.10%)alloc::alloc::Global::alloc_impl (2 samples, 0.10%)alloc::alloc::alloc (2 samples, 0.10%)malloc (2 samples, 0.10%)[libc.so.6] (2 samples, 0.10%)[libc.so.6] (2 samples, 0.10%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (1 samples, 0.05%)http::header::map::HeaderMap<T>::find (1 samples, 0.05%)tonic::codec::compression::CompressionEncoding::from_encoding_header (3 samples, 0.14%)http::header::map::HeaderMap<T>::get (3 samples, 0.14%)http::header::map::HeaderMap<T>::get2 (3 samples, 0.14%)<&str as http::header::map::as_header_name::Sealed>::find (3 samples, 0.14%)http::header::name::HdrName::from_bytes (3 samples, 0.14%)http::header::name::uninit_u8_array (2 samples, 0.10%)core::iter::traits::iterator::Iterator::for_each (1 samples, 0.05%)core::iter::traits::iterator::Iterator::fold (1 samples, 0.05%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (1 samples, 0.05%)http::header::name::parse_hdr::_{{closure}} (1 samples, 0.05%)tonic::client::grpc::Grpc<T>::create_response (10 samples, 0.48%)tonic::status::Status::from_header_map (4 samples, 0.19%)http::header::map::HeaderMap<T>::get (2 samples, 0.10%)http::header::map::HeaderMap<T>::get2 (2 samples, 0.10%)<&str as http::header::map::as_header_name::Sealed>::find (2 samples, 0.10%)http::header::name::HdrName::from_bytes (2 samples, 0.10%)http::header::name::parse_hdr (2 samples, 0.10%)core::slice::<impl [T]>::contains (1 samples, 0.05%)<u8 as core::slice::cmp::SliceContains>::slice_contains (1 samples, 0.05%)core::slice::memchr::memchr (1 samples, 0.05%)core::slice::memchr::memchr_naive (1 samples, 0.05%)http::header::map::HeaderMap<T>::insert (1 samples, 0.05%)<http::header::name::HeaderName as http::header::map::into_header_name::Sealed>::insert (1 samples, 0.05%)http::header::map::HeaderMap<T>::insert2 (1 samples, 0.05%)http::header::map::Pos::resolve (1 samples, 0.05%)http::header::map::Pos::is_some (1 samples, 0.05%)http::header::map::Pos::is_none (1 samples, 0.05%)http::header::value::HeaderValue::from_static (1 samples, 0.05%)http::header::value::is_visible_ascii (1 samples, 0.05%)http::uri::Uri::from_parts (1 samples, 0.05%)http::header::name::parse_hdr (2 samples, 0.10%)core::iter::traits::iterator::Iterator::for_each (2 samples, 0.10%)core::iter::traits::iterator::Iterator::fold (2 samples, 0.10%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (2 samples, 0.10%)http::header::name::parse_hdr::_{{closure}} (2 samples, 0.10%)tonic::client::grpc::Grpc<T>::streaming::_{{closure}} (28 samples, 1.33%)tonic::client::grpc::GrpcConfig::prepare_request (6 samples, 0.29%)tonic::request::Request<T>::into_http (3 samples, 0.14%)tonic::metadata::map::MetadataMap::into_sanitized_headers (3 samples, 0.14%)http::header::map::HeaderMap<T>::remove (3 samples, 0.14%)<&str as http::header::map::as_header_name::Sealed>::find (3 samples, 0.14%)http::header::name::HdrName::from_bytes (3 samples, 0.14%)http::header::name::uninit_u8_array (1 samples, 0.05%)tonic::codec::decode::StreamingInner::poll_data (1 samples, 0.05%)core::ptr::drop_in_place<tonic::status::Status> (1 samples, 0.05%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (1 samples, 0.05%)http::header::map::HeaderMap<T>::find (1 samples, 0.05%)<http::header::name::HeaderName as core::cmp::PartialEq<http::header::name::HdrName>>::eq (1 samples, 0.05%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (1 samples, 0.05%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (1 samples, 0.05%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)tonic::codec::decode::Streaming<T>::trailers::_{{closure}} (5 samples, 0.24%)tonic::codec::decode::Streaming<T>::message::_{{closure}} (5 samples, 0.24%)<core::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (5 samples, 0.24%)tonic::codec::decode::Streaming<T>::message::_{{closure}}::_{{closure}} (5 samples, 0.24%)<tonic::codec::decode::Streaming<T> as futures_core::stream::Stream>::poll_next (5 samples, 0.24%)tonic::codec::decode::StreamingInner::poll_response (4 samples, 0.19%)tonic::status::infer_grpc_status (4 samples, 0.19%)tonic::status::Status::from_header_map (3 samples, 0.14%)core::option::Option<T>::map (3 samples, 0.14%)tonic::status::Status::from_header_map::_{{closure}} (2 samples, 0.10%)http::header::map::HeaderMap<T>::remove (2 samples, 0.10%)<&str as http::header::map::as_header_name::Sealed>::find (2 samples, 0.10%)http::header::name::HdrName::from_bytes (2 samples, 0.10%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (1 samples, 0.05%)core::ptr::drop_in_place<http::header::map::IntoIter<http::header::value::HeaderValue>> (1 samples, 0.05%)<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (46 samples, 2.19%)<..openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}} (46 samples, 2.19%)o..openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}}::_{{closure}} (46 samples, 2.19%)o..openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}} (46 samples, 2.19%)o..openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}}::_{{closure}} (46 samples, 2.19%)o..<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll (46 samples, 2.19%)<..<core::pin::Pin<P> as core::future::future::Future>::poll (46 samples, 2.19%)<..openraft::network::network::RaftNetwork::append_entries::_{{closure}} (46 samples, 2.19%)o..<core::pin::Pin<P> as core::future::future::Future>::poll (46 samples, 2.19%)<..<dcache::network::raft_network_impl::DcacheNetworkConnection as openraft::network::network::RaftNetwork<dcache::DcacheTypeConfig>>::send_append_entries::_{{closure}} (46 samples, 2.19%)<..dcache::network::raft_network_impl::DcacheNetwork::send_rpc::_{{closure}} (46 samples, 2.19%)d..dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<T>::append_entries::_{{closure}} (46 samples, 2.19%)d..tonic::client::grpc::Grpc<T>::unary::_{{closure}} (46 samples, 2.19%)t..tonic::client::grpc::Grpc<T>::client_streaming::_{{closure}} (46 samples, 2.19%)t..tonic::metadata::map::MetadataMap::merge (2 samples, 0.10%)<http::header::map::HeaderMap<T> as core::iter::traits::collect::Extend<(core::option::Option<http::header::name::HeaderName>,T)>>::extend (2 samples, 0.10%)http::header::map::HeaderMap<T>::entry2 (1 samples, 0.05%)http::header::map::HeaderMap<T>::reserve_one (1 samples, 0.05%)http::header::map::Danger::is_yellow (1 samples, 0.05%)__vdso_clock_gettime (2 samples, 0.10%)[unknown] (2 samples, 0.10%)dcache::start_example_raft_node::_{{closure}} (4 samples, 0.19%)<tokio::runtime::task::join::JoinHandle<T> as core::future::future::Future>::poll (2 samples, 0.10%)tokio::runtime::task::raw::RawTask::try_read_output (1 samples, 0.05%)<alloc::sync::Arc<T,A> as core::ops::deref::Deref>::deref (1 samples, 0.05%)alloc::sync::Arc<T,A>::inner (1 samples, 0.05%)core::ptr::non_null::NonNull<T>::as_ref (1 samples, 0.05%)core::option::Option<T>::or_else (2 samples, 0.10%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}} (2 samples, 0.10%)tokio::runtime::scheduler::current_thread::Handle::pop (2 samples, 0.10%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<core::option::Option<alloc::collections::vec_deque::VecDeque<tokio::runtime::task::Notified<alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>>>>> (1 samples, 0.05%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,core::option::Option<alloc::collections::vec_deque::VecDeque<tokio::runtime::task::Notified<alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>>>>> (1 samples, 0.05%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (1 samples, 0.05%)core::ptr::drop_in_place<core::task::poll::Poll<core::result::Result<(),std::io::error::Error>>> (1 samples, 0.05%)main::main::_{{closure}} (1 samples, 0.05%)tokio::runtime::context::disallow_block_in_place (1 samples, 0.05%)std::thread::local::LocalKey<T>::with (1 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.05%)tokio::runtime::context::CONTEXT::__getit (1 samples, 0.05%)std::sys::common::thread_local::fast_local::Key<T>::get (1 samples, 0.05%)std::sys::common::thread_local::lazy::LazyKeyInner<T>::get (1 samples, 0.05%)core::option::Option<T>::as_ref (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::do_register (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::do_register::catch_unwind (1 samples, 0.05%)std::panic::catch_unwind (1 samples, 0.05%)std::panicking::try (1 samples, 0.05%)std::panicking::try::do_call (1 samples, 0.05%)<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::do_register::_{{closure}} (1 samples, 0.05%)<&core::task::wake::Waker as tokio::sync::task::atomic_waker::WakerRef>::into_waker (1 samples, 0.05%)<core::task::wake::Waker as core::clone::Clone>::clone (1 samples, 0.05%)tokio::util::wake::clone_arc_raw (1 samples, 0.05%)tokio::util::wake::inc_ref_count (1 samples, 0.05%)<core::mem::manually_drop::ManuallyDrop<T> as core::clone::Clone>::clone (1 samples, 0.05%)<alloc::sync::Arc<T,A> as core::clone::Clone>::clone (1 samples, 0.05%)core::sync::atomic::AtomicUsize::fetch_add (1 samples, 0.05%)core::sync::atomic::atomic_add (1 samples, 0.05%)<actix::context::Context<A> as actix::actor::AsyncContext<A>>::waiting (14 samples, 0.67%)actix::contextimpl::ContextParts<A>::waiting (14 samples, 0.67%)smallvec::SmallVec<A>::is_empty (14 samples, 0.67%)smallvec::SmallVec<A>::len (14 samples, 0.67%)smallvec::SmallVec<A>::triple (14 samples, 0.67%)smallvec::SmallVec<A>::spilled (13 samples, 0.62%)core::task::poll::Poll<T>::map (19 samples, 0.90%)core::ptr::drop_in_place<tokio::time::sleep::Sleep::poll_elapsed::{{closure}}> (19 samples, 0.90%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (19 samples, 0.90%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop (19 samples, 0.90%)tokio::runtime::context::budget (9 samples, 0.43%)std::thread::local::LocalKey<T>::try_with (9 samples, 0.43%)tokio::runtime::context::CONTEXT::__getit (9 samples, 0.43%)std::sys::common::thread_local::fast_local::Key<T>::get (9 samples, 0.43%)std::sys::common::thread_local::lazy::LazyKeyInner<T>::get (8 samples, 0.38%)core::option::Option<T>::as_ref (8 samples, 0.38%)tokio::runtime::context::CONTEXT::__getit (24 samples, 1.14%)std::sys::common::thread_local::fast_local::Key<T>::get (24 samples, 1.14%)std::sys::common::thread_local::lazy::LazyKeyInner<T>::get (24 samples, 1.14%)core::option::Option<T>::as_ref (24 samples, 1.14%)core::cell::Cell<T>::set (71 samples, 3.38%)cor..core::cell::Cell<T>::replace (71 samples, 3.38%)cor..core::mem::replace (71 samples, 3.38%)cor..core::ptr::write (71 samples, 3.38%)cor..tokio::runtime::coop::poll_proceed (114 samples, 5.43%)tokio::..tokio::runtime::context::budget (114 samples, 5.43%)tokio::..std::thread::local::LocalKey<T>::try_with (114 samples, 5.43%)std::th..tokio::runtime::context::budget::_{{closure}} (90 samples, 4.29%)tokio..tokio::runtime::coop::poll_proceed::_{{closure}} (90 samples, 4.29%)tokio..tokio::runtime::coop::Budget::decrement (19 samples, 0.90%)tokio::runtime::time::entry::StateCell::read_state (1 samples, 0.05%)core::sync::atomic::AtomicUsize::compare_exchange (41 samples, 1.95%)c..core::sync::atomic::atomic_compare_exchange (41 samples, 1.95%)c..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (4 samples, 0.19%)tokio::sync::task::atomic_waker::AtomicWaker::do_register::_{{closure}} (4 samples, 0.19%)core::option::Option<T>::take (4 samples, 0.19%)core::mem::replace (4 samples, 0.19%)core::ptr::read (4 samples, 0.19%)<&core::task::wake::Waker as tokio::sync::task::atomic_waker::WakerRef>::into_waker (151 samples, 7.19%)<&core::ta..<core::task::wake::Waker as core::clone::Clone>::clone (151 samples, 7.19%)<core::tas..tokio::runtime::task::waker::clone_waker (130 samples, 6.19%)tokio::r..tokio::runtime::task::state::State::ref_inc (107 samples, 5.10%)tokio:..core::sync::atomic::AtomicUsize::fetch_add (15 samples, 0.71%)core::sync::atomic::atomic_add (15 samples, 0.71%)tokio::runtime::time::entry::StateCell::poll (768 samples, 36.57%)tokio::runtime::time::entry::StateCell::polltokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (765 samples, 36.43%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_r..tokio::sync::task::atomic_waker::AtomicWaker::do_register (703 samples, 33.48%)tokio::sync::task::atomic_waker::AtomicWaker::do_regis..tokio::sync::task::atomic_waker::AtomicWaker::do_register::catch_unwind (385 samples, 18.33%)tokio::sync::task::atomic_wak..std::panic::catch_unwind (385 samples, 18.33%)std::panic::catch_unwindstd::panicking::try (385 samples, 18.33%)std::panicking::trystd::panicking::try::do_call (385 samples, 18.33%)std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (385 samples, 18.33%)<core::panic::unwind_safe::As..tokio::sync::task::atomic_waker::AtomicWaker::do_register::_{{closure}} (385 samples, 18.33%)tokio::sync::task::atomic_wak..core::mem::drop (234 samples, 11.14%)core::mem::dropcore::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (234 samples, 11.14%)core::ptr::drop_..core::ptr::drop_in_place<core::task::wake::Waker> (233 samples, 11.10%)core::ptr::drop_..<core::task::wake::Waker as core::ops::drop::Drop>::drop (233 samples, 11.10%)<core::task::wak..tokio::runtime::task::waker::drop_waker (203 samples, 9.67%)tokio::runtime..tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::drop_reference (177 samples, 8.43%)tokio::runti..tokio::runtime::task::state::State::ref_dec (176 samples, 8.38%)tokio::runti..core::sync::atomic::AtomicUsize::fetch_sub (23 samples, 1.10%)core::sync::atomic::atomic_sub (23 samples, 1.10%)tokio::runtime::driver::Handle::time (9 samples, 0.43%)core::option::Option<T>::expect (9 samples, 0.43%)tokio::runtime::time::entry::TimerEntry::driver (27 samples, 1.29%)tokio::runtime::scheduler::Handle::driver (18 samples, 0.86%)<tokio::time::sleep::Sleep as core::future::future::Future>::poll (1,061 samples, 50.52%)<tokio::time::sleep::Sleep as core::future::future::Future>::polltokio::time::sleep::Sleep::poll_elapsed (983 samples, 46.81%)tokio::time::sleep::Sleep::poll_elapsedtokio::runtime::time::entry::TimerEntry::poll_elapsed (849 samples, 40.43%)tokio::runtime::time::entry::TimerEntry::poll_elapsedtokio::runtime::time::handle::Handle::is_shutdown (16 samples, 0.76%)tokio::runtime::time::Inner::is_shutdown (16 samples, 0.76%)core::sync::atomic::AtomicBool::load (16 samples, 0.76%)<libmcaptcha::master::embedded::counter::Counter as actix::handler::Handler<libmcaptcha::master::embedded::counter::AddVisitor>>::handle::_{{closure}} (1,225 samples, 58.33%)<libmcaptcha::master::embedded::counter::Counter as actix::handler::Handler<libmcaptcha::master:..tokio::time::sleep::sleep (1 samples, 0.05%)tokio::time::instant::Instant::now (1 samples, 0.05%)tokio::time::instant::variant::now (1 samples, 0.05%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (1 samples, 0.05%)clock_gettime (1 samples, 0.05%)__vdso_clock_gettime (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)<libmcaptcha::master::embedded::master::Master as actix::handler::Handler<libmcaptcha::master::embedded::master::CleanUp>>::handle::_{{closure}} (1 samples, 0.05%)<tokio::time::sleep::Sleep as core::future::future::Future>::poll (1 samples, 0.05%)tokio::time::sleep::Sleep::poll_elapsed (1 samples, 0.05%)tokio::runtime::time::entry::TimerEntry::poll_elapsed (1 samples, 0.05%)tokio::runtime::time::entry::StateCell::poll (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::do_register (1 samples, 0.05%)core::sync::atomic::AtomicUsize::compare_exchange (1 samples, 0.05%)core::sync::atomic::atomic_compare_exchange (1 samples, 0.05%)__rust_dealloc (1 samples, 0.05%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::sync::oneshot::Inner<libmcaptcha::master::AddVisitorResult>>>> (2 samples, 0.10%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<libmcaptcha::master::AddVisitorResult>>> (2 samples, 0.10%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.10%)cfree (1 samples, 0.05%)core::result::Result<T,E>::unwrap_or (1 samples, 0.05%)core::ptr::drop_in_place<core::task::poll::Poll<tokio::runtime::coop::RestoreOnPending>> (1 samples, 0.05%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (1 samples, 0.05%)tokio::runtime::coop::poll_proceed (3 samples, 0.14%)tokio::runtime::context::budget (1 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.05%)tokio::runtime::context::budget::_{{closure}} (1 samples, 0.05%)tokio::runtime::coop::poll_proceed::_{{closure}} (1 samples, 0.05%)core::cell::Cell<T>::get (1 samples, 0.05%)tokio::sync::oneshot::State::is_closed (1 samples, 0.05%)<actix::address::message::MsgRequest<S,M> as core::future::future::Future>::poll (7 samples, 0.33%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (7 samples, 0.33%)tokio::sync::oneshot::Inner<T>::poll_recv (5 samples, 0.24%)tokio::sync::oneshot::State::load (1 samples, 0.05%)<core::pin::Pin<P> as actix::fut::future::ActorFuture<A>>::poll (1,324 samples, 63.05%)<core::pin::Pin<P> as actix::fut::future::ActorFuture<A>>::poll<actix::fut::future::FutureWrap<F,A> as actix::fut::future::ActorFuture<A>>::poll (1,324 samples, 63.05%)<actix::fut::future::FutureWrap<F,A> as actix::fut::future::ActorFuture<A>>::poll<libmcaptcha::master::embedded::master::Master as actix::handler::Handler<libmcaptcha::master::messages::AddVisitor>>::handle::_{{closure}} (10 samples, 0.48%)actix::address::Addr<A>::send (2 samples, 0.10%)actix::address::channel::AddressSender<A>::send (1 samples, 0.05%)tokio::sync::oneshot::channel (1 samples, 0.05%)alloc::sync::Arc<T>::new (1 samples, 0.05%)alloc::boxed::Box<T>::new (1 samples, 0.05%)alloc::alloc::exchange_malloc (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)<smallvec::SmallVec<A> as core::ops::index::Index<I>>::index (19 samples, 0.90%)<smallvec::SmallVec<A> as core::ops::deref::Deref>::deref (19 samples, 0.90%)smallvec::SmallVec<A>::triple (19 samples, 0.90%)<smallvec::SmallVec<A> as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.05%)smallvec::SmallVec<A>::triple_mut (1 samples, 0.05%)smallvec::SmallVec<A>::spilled (1 samples, 0.05%)<smallvec::SmallVec<A> as core::ops::index::IndexMut<I>>::index_mut (19 samples, 0.90%)core::slice::index::<impl core::ops::index::IndexMut<I> for [T]>::index_mut (18 samples, 0.86%)<usize as core::slice::index::SliceIndex<[T]>>::index_mut (18 samples, 0.86%)actix::contextimpl::ContextFlags::contains (1 samples, 0.05%)actix::contextimpl::ContextFut<A,C>::alive (1 samples, 0.05%)smallvec::SmallVec<A>::drain (1 samples, 0.05%)core::slice::<impl [T]>::iter (1 samples, 0.05%)core::slice::iter::Iter<T>::new (1 samples, 0.05%)core::ptr::const_ptr::<impl *const T>::add (1 samples, 0.05%)actix::contextimpl::ContextFut<A,C>::merge (3 samples, 0.14%)smallvec::SmallVec<A>::is_empty (1 samples, 0.05%)smallvec::SmallVec<A>::len (1 samples, 0.05%)smallvec::SmallVec<A>::triple (1 samples, 0.05%)smallvec::SmallVec<A>::spilled (1 samples, 0.05%)actix::address::channel::decode_state (1 samples, 0.05%)actix::address::channel::AddressReceiver<A>::next_message (3 samples, 0.14%)actix::address::queue::Queue<T>::pop_spin (1 samples, 0.05%)actix::address::queue::Queue<T>::pop (1 samples, 0.05%)core::mem::drop (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<actix::address::queue::Node<actix::address::envelope::Envelope<libmcaptcha::cache::hashcache::HashCache>>>> (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)cfree (1 samples, 0.05%)<actix::address::channel::AddressReceiver<A> as futures_core::stream::Stream>::poll_next (4 samples, 0.19%)futures_core::task::__internal::atomic_waker::AtomicWaker::register (1 samples, 0.05%)<core::task::wake::Waker as core::clone::Clone>::clone (1 samples, 0.05%)tokio::runtime::task::waker::clone_waker (1 samples, 0.05%)tokio::sync::oneshot::State::is_rx_task_set (1 samples, 0.05%)<actix::handler::MessageResult<M> as actix::handler::MessageResponse<A,M>>::handle (3 samples, 0.14%)<core::option::Option<tokio::sync::oneshot::Sender<M>> as actix::handler::OneshotSend<M>>::send (3 samples, 0.14%)tokio::sync::oneshot::Sender<T>::send (3 samples, 0.14%)tokio::sync::oneshot::Inner<T>::complete (3 samples, 0.14%)tokio::sync::oneshot::Task::with_task (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (1 samples, 0.05%)tokio::sync::oneshot::Task::with_task::_{{closure}} (1 samples, 0.05%)core::ops::function::FnOnce::call_once (1 samples, 0.05%)core::task::wake::Waker::wake_by_ref (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::_<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule::_{{closure}} (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::Core::push_task (1 samples, 0.05%)alloc::collections::vec_deque::VecDeque<T,A>::push_back (1 samples, 0.05%)alloc::collections::vec_deque::VecDeque<T,A>::is_full (1 samples, 0.05%)<libmcaptcha::master::embedded::counter::Counter as actix::handler::Handler<libmcaptcha::master::embedded::counter::AddVisitor>>::handle (1 samples, 0.05%)<F as actix::fut::future::WrapFuture<A>>::into_actor (1 samples, 0.05%)actix::fut::future::wrap_future (1 samples, 0.05%)<actix::context::Context<A> as actix::actor::AsyncContext<A>>::spawn (1 samples, 0.05%)actix::contextimpl::ContextParts<A>::spawn (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<actix::address::envelope::Envelope<A> as actix::address::envelope::EnvelopeProxy<A>>::handle (9 samples, 0.43%)<actix::address::envelope::SyncEnvelopeProxy<M> as actix::address::envelope::EnvelopeProxy<A>>::handle (9 samples, 0.43%)<libmcaptcha::master::embedded::master::Master as actix::handler::Handler<libmcaptcha::master::messages::AddVisitor>>::handle (3 samples, 0.14%)libmcaptcha::master::embedded::master::Master::get_site (1 samples, 0.05%)<actix::address::Addr<A> as core::clone::Clone>::clone (1 samples, 0.05%)<actix::address::channel::AddressSender<A> as core::clone::Clone>::clone (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)actix::mailbox::Mailbox<A>::poll (15 samples, 0.71%)core::ptr::drop_in_place<actix::address::envelope::Envelope<libmcaptcha::master::embedded::master::Master>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn actix::address::envelope::EnvelopeProxy<libmcaptcha::master::embedded::master::Master>+core::marker::Send>> (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)cfree (1 samples, 0.05%)smallvec::SmallVec<A>::is_empty (19 samples, 0.90%)smallvec::SmallVec<A>::len (19 samples, 0.90%)smallvec::SmallVec<A>::triple (19 samples, 0.90%)smallvec::SmallVec<A>::spilled (14 samples, 0.67%)tokio::runtime::coop::budget (1,486 samples, 70.76%)tokio::runtime::coop::budgettokio::runtime::coop::with_budget (1,486 samples, 70.76%)tokio::runtime::coop::with_budgettokio::task::local::LocalSet::tick::_{{closure}} (1,486 samples, 70.76%)tokio::task::local::LocalSet::tick::_{{closure}}tokio::runtime::task::LocalNotified<S>::run (1,486 samples, 70.76%)tokio::runtime::task::LocalNotified<S>::runtokio::runtime::task::raw::RawTask::poll (1,486 samples, 70.76%)tokio::runtime::task::raw::RawTask::polltokio::runtime::task::harness::Harness<T,S>::poll (1,486 samples, 70.76%)tokio::runtime::task::harness::Harness<T,S>::polltokio::runtime::task::harness::Harness<T,S>::poll_inner (1,486 samples, 70.76%)tokio::runtime::task::harness::Harness<T,S>::poll_innertokio::runtime::task::harness::poll_future (1,486 samples, 70.76%)tokio::runtime::task::harness::poll_futurestd::panic::catch_unwind (1,486 samples, 70.76%)std::panic::catch_unwindstd::panicking::try (1,486 samples, 70.76%)std::panicking::trystd::panicking::try::do_call (1,486 samples, 70.76%)std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (1,486 samples, 70.76%)<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_oncetokio::runtime::task::harness::poll_future::_{{closure}} (1,486 samples, 70.76%)tokio::runtime::task::harness::poll_future::_{{closure}}tokio::runtime::task::core::Core<T,S>::poll (1,486 samples, 70.76%)tokio::runtime::task::core::Core<T,S>::polltokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1,486 samples, 70.76%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_muttokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (1,486 samples, 70.76%)tokio::runtime::task::core::Core<T,S>::poll::_{{closure}}<actix::contextimpl::ContextFut<A,C> as core::future::future::Future>::poll (1,486 samples, 70.76%)<actix::contextimpl::ContextFut<A,C> as core::future::future::Future>::pollsmallvec::SmallVec<A>::len (13 samples, 0.62%)smallvec::SmallVec<A>::triple (13 samples, 0.62%)smallvec::SmallVec<A>::spilled (13 samples, 0.62%)tokio::runtime::scheduler::current_thread::Context::enter (1,490 samples, 70.95%)tokio::runtime::scheduler::current_thread::Context::entertokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}} (1,490 samples, 70.95%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}}tokio::runtime::coop::budget (1,490 samples, 70.95%)tokio::runtime::coop::budgettokio::runtime::coop::with_budget (1,490 samples, 70.95%)tokio::runtime::coop::with_budgettokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}}::_{{closure}} (1,490 samples, 70.95%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}}::_{{closure}}<core::pin::Pin<P> as core::future::future::Future>::poll (1,490 samples, 70.95%)<core::pin::Pin<P> as core::future::future::Future>::polltokio::task::local::LocalSet::run_until::_{{closure}} (1,490 samples, 70.95%)tokio::task::local::LocalSet::run_until::_{{closure}}<tokio::task::local::RunUntil<T> as core::future::future::Future>::poll (1,490 samples, 70.95%)<tokio::task::local::RunUntil<T> as core::future::future::Future>::polltokio::task::local::LocalSet::with (1,490 samples, 70.95%)tokio::task::local::LocalSet::withstd::thread::local::LocalKey<T>::with (1,490 samples, 70.95%)std::thread::local::LocalKey<T>::withstd::thread::local::LocalKey<T>::try_with (1,490 samples, 70.95%)std::thread::local::LocalKey<T>::try_withtokio::task::local::LocalSet::with::_{{closure}} (1,490 samples, 70.95%)tokio::task::local::LocalSet::with::_{{closure}}<tokio::task::local::RunUntil<T> as core::future::future::Future>::poll::_{{closure}} (1,490 samples, 70.95%)<tokio::task::local::RunUntil<T> as core::future::future::Future>::poll::_{{closure}}tokio::task::local::LocalSet::tick (1,487 samples, 70.81%)tokio::task::local::LocalSet::ticktokio::task::local::LocalSet::next_task (1 samples, 0.05%)core::option::Option<T>::map (1 samples, 0.05%)tokio::task::local::LocalSet::next_task::_{{closure}} (1 samples, 0.05%)tokio::task::local::LocalState::assert_owner (1 samples, 0.05%)tokio::runtime::task::list::LocalOwnedTasks<S>::assert_owner (1 samples, 0.05%)mio::event::events::Events::iter (1 samples, 0.05%)[libc.so.6] (2 samples, 0.10%)epoll_wait (9 samples, 0.43%)[unknown] (6 samples, 0.29%)[unknown] (5 samples, 0.24%)[unknown] (5 samples, 0.24%)[unknown] (4 samples, 0.19%)[unknown] (3 samples, 0.14%)_ZN5tokio7runtime2io6Driver4turn17hfbde6590a6d907daE.llvm.17295210767541486778 (13 samples, 0.62%)mio::poll::Poll::poll (11 samples, 0.52%)mio::sys::unix::selector::epoll::Selector::select (1 samples, 0.05%)core::option::Option<T>::map (1 samples, 0.05%)mio::sys::unix::selector::epoll::Selector::select::_{{closure}} (1 samples, 0.05%)<core::time::Duration as core::ops::arith::Add>::add (1 samples, 0.05%)core::time::Duration::checked_add (1 samples, 0.05%)core::num::<impl u64>::checked_add (1 samples, 0.05%)core::num::<impl u64>::overflowing_add (1 samples, 0.05%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (2 samples, 0.10%)clock_gettime (2 samples, 0.10%)__vdso_clock_gettime (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)std::time::Instant::now (1 samples, 0.05%)<mio::event::events::Iter as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)core::slice::<impl [T]>::get (1 samples, 0.05%)<usize as core::slice::index::SliceIndex<[T]>>::get (1 samples, 0.05%)tokio::runtime::io::scheduled_io::ScheduledIo::set_readiness (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)tokio::util::wake_list::WakeList::push (1 samples, 0.05%)tokio::runtime::task::raw::RawTask::schedule (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule (1 samples, 0.05%)_ZN5tokio7runtime4time6Driver13park_internal17h1c8250dee3ada576E.llvm.7411028577671797591 (22 samples, 1.05%)tokio::runtime::io::Driver::turn (6 samples, 0.29%)tokio::runtime::io::Driver::dispatch (4 samples, 0.19%)tokio::runtime::io::scheduled_io::ScheduledIo::wake (3 samples, 0.14%)tokio::util::wake_list::WakeList::wake_all (2 samples, 0.10%)core::task::wake::Waker::wake (2 samples, 0.10%)tokio::runtime::task::waker::wake_by_val (2 samples, 0.10%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (2 samples, 0.10%)tokio::runtime::task::state::State::transition_to_notified_by_val (1 samples, 0.05%)tokio::runtime::task::state::State::fetch_update_action (1 samples, 0.05%)tokio::runtime::task::state::State::load (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)tokio::runtime::time::<impl tokio::runtime::time::handle::Handle>::process_at_time (1 samples, 0.05%)core::ptr::drop_in_place<[core::option::Option<core::task::wake::Waker>: 32]> (1 samples, 0.05%)tokio::loom::std::parking_lot::Mutex<T>::lock (1 samples, 0.05%)lock_api::mutex::Mutex<R,T>::lock (1 samples, 0.05%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (1 samples, 0.05%)tokio::runtime::time::source::TimeSource::instant_to_tick (1 samples, 0.05%)tokio::time::instant::Instant::checked_duration_since (1 samples, 0.05%)std::time::Instant::checked_duration_since (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::Context::park (31 samples, 1.48%)tokio::runtime::time::Driver::park_internal (8 samples, 0.38%)tokio::runtime::time::source::TimeSource::now (7 samples, 0.33%)tokio::time::clock::Clock::now (6 samples, 0.29%)tokio::time::clock::now (6 samples, 0.29%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (6 samples, 0.29%)clock_gettime (5 samples, 0.24%)__vdso_clock_gettime (5 samples, 0.24%)[unknown] (4 samples, 0.19%)[unknown] (4 samples, 0.19%)[unknown] (4 samples, 0.19%)[unknown] (3 samples, 0.14%)[unknown] (3 samples, 0.14%)[unknown] (2 samples, 0.10%)core::ptr::drop_in_place<core::result::Result<tokio::runtime::coop::with_budget::ResetGuard,std::thread::local::AccessError>> (1 samples, 0.05%)core::ptr::drop_in_place<tokio::runtime::coop::with_budget::ResetGuard> (1 samples, 0.05%)tokio::runtime::task::harness::Harness<T,S>::poll (1 samples, 0.05%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (1 samples, 0.05%)tokio::runtime::task::core::Core<T,S>::poll (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.05%)tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (1 samples, 0.05%)core::ptr::drop_in_place<tokio::runtime::task::core::TaskIdGuard> (1 samples, 0.05%)hyper::proto::h2::client::conn_task::_{{closure}} (1 samples, 0.05%)<futures_util::future::select::Select<A,B> as core::future::future::Future>::poll (1 samples, 0.05%)futures_util::future::future::FutureExt::poll_unpin (1 samples, 0.05%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (1 samples, 0.05%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (1 samples, 0.05%)<F as futures_core::future::TryFuture>::try_poll (1 samples, 0.05%)<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (1 samples, 0.05%)<h2::client::Connection<T,B> as core::future::future::Future>::poll (1 samples, 0.05%)h2::proto::connection::Connection<T,P,B>::poll (1 samples, 0.05%)h2::proto::streams::streams::Streams<B,P>::poll_complete (1 samples, 0.05%)h2::proto::streams::streams::Inner::poll_complete (1 samples, 0.05%)<core::task::wake::Waker as core::clone::Clone>::clone (1 samples, 0.05%)h2::proto::streams::prioritize::Prioritize::poll_complete (1 samples, 0.05%)h2::codec::framed_write::FramedWrite<T,B>::flush (1 samples, 0.05%)h2::codec::framed_write::Encoder<B>::unset_frame (1 samples, 0.05%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write (1 samples, 0.05%)mio::io_source::IoSource<T>::do_io (1 samples, 0.05%)mio::sys::unix::IoSourceState::do_io (1 samples, 0.05%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write::_{{closure}} (1 samples, 0.05%)<&std::net::tcp::TcpStream as std::io::Write>::write (1 samples, 0.05%)std::sys_common::net::TcpStream::write (1 samples, 0.05%)__send (1 samples, 0.05%)[unknown] (1 samples, 0.05%)h2::client::SendRequest<B>::poll_ready (1 samples, 0.05%)core::result::Result<T,E>::map (1 samples, 0.05%)h2::client::SendRequest<B>::send_request::_{{closure}} (1 samples, 0.05%)h2::proto::streams::streams::StreamRef<B>::clone_to_opaque (1 samples, 0.05%)<h2::proto::streams::streams::OpaqueStreamRef as core::clone::Clone>::clone (1 samples, 0.05%)<alloc::sync::Arc<T,A> as core::clone::Clone>::clone (1 samples, 0.05%)core::result::Result<T,E>::map_err (1 samples, 0.05%)core::ptr::drop_in_place<http::extensions::Extensions> (2 samples, 0.10%)core::ptr::drop_in_place<core::option::Option<alloc::boxed::Box<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>>>> (2 samples, 0.10%)core::ptr::drop_in_place<alloc::boxed::Box<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>>> (2 samples, 0.10%)core::ptr::drop_in_place<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>> (2 samples, 0.10%)core::ptr::drop_in_place<hashbrown::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>> (2 samples, 0.10%)core::ptr::drop_in_place<hashbrown::raw::RawTable<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>)>> (2 samples, 0.10%)cfree (2 samples, 0.10%)<T as core::convert::Into<U>>::into (1 samples, 0.05%)<bytes::bytes::Bytes as core::convert::From<alloc::vec::Vec<u8>>>::from (1 samples, 0.05%)h2::client::Peer::convert_send_message (4 samples, 0.19%)h2::frame::headers::Pseudo::request (2 samples, 0.10%)h2::hpack::header::BytesStr::from (2 samples, 0.10%)bytes::bytes::Bytes::copy_from_slice (2 samples, 0.10%)alloc::slice::<impl [T]>::to_vec (1 samples, 0.05%)alloc::slice::<impl [T]>::to_vec_in (1 samples, 0.05%)alloc::slice::hack::to_vec (1 samples, 0.05%)<T as alloc::slice::hack::ConvertVec>::to_vec (1 samples, 0.05%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (1 samples, 0.05%)core::intrinsics::copy_nonoverlapping (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.05%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.05%)<h2::proto::streams::store::Store as core::ops::index::IndexMut<h2::proto::streams::store::Key>>::index_mut (1 samples, 0.05%)slab::Slab<T>::get_mut (1 samples, 0.05%)h2::proto::streams::buffer::Deque::push_back (1 samples, 0.05%)slab::Slab<T>::insert (1 samples, 0.05%)slab::Slab<T>::insert_at (1 samples, 0.05%)h2::proto::streams::prioritize::Prioritize::queue_frame (4 samples, 0.19%)h2::proto::streams::prioritize::Prioritize::schedule_send (1 samples, 0.05%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (1 samples, 0.05%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (1 samples, 0.05%)http::header::map::HeaderMap<T>::find (1 samples, 0.05%)http::header::map::hash_elem_using (1 samples, 0.05%)<http::header::name::HdrName as core::hash::Hash>::hash (1 samples, 0.05%)<http::header::name::Repr<T> as core::hash::Hash>::hash (1 samples, 0.05%)<http::header::name::MaybeLower as core::hash::Hash>::hash (1 samples, 0.05%)<fnv::FnvHasher as core::hash::Hasher>::write (1 samples, 0.05%)core::num::<impl u64>::wrapping_mul (1 samples, 0.05%)h2::proto::streams::send::Send::send_headers (8 samples, 0.38%)h2::proto::streams::send::Send::check_headers (3 samples, 0.14%)http::header::map::HeaderMap<T>::contains_key (3 samples, 0.14%)<&str as http::header::map::as_header_name::Sealed>::find (3 samples, 0.14%)http::header::name::HdrName::from_bytes (3 samples, 0.14%)http::header::name::parse_hdr (2 samples, 0.10%)core::iter::traits::iterator::Iterator::for_each (1 samples, 0.05%)core::iter::traits::iterator::Iterator::fold (1 samples, 0.05%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (1 samples, 0.05%)http::header::name::parse_hdr::_{{closure}} (1 samples, 0.05%)indexmap::map::IndexMap<K,V,S>::insert (2 samples, 0.10%)indexmap::map::IndexMap<K,V,S>::insert_full (2 samples, 0.10%)indexmap::map::core::IndexMapCore<K,V>::insert_full (2 samples, 0.10%)indexmap::map::core::IndexMapCore<K,V>::push (1 samples, 0.05%)h2::proto::streams::store::Store::insert (3 samples, 0.14%)slab::Slab<T>::insert (1 samples, 0.05%)slab::Slab<T>::insert_at (1 samples, 0.05%)h2::client::SendRequest<B>::send_request (18 samples, 0.86%)h2::proto::streams::streams::Streams<B,P>::send_request (16 samples, 0.76%)h2::proto::streams::streams::OpaqueStreamRef::new (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)tokio::sync::mpsc::list::Rx<T>::pop (2 samples, 0.10%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (4 samples, 0.19%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (4 samples, 0.19%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (5 samples, 0.24%)tokio::sync::mpsc::chan::Rx<T,S>::recv (5 samples, 0.24%)tokio::runtime::coop::poll_proceed (1 samples, 0.05%)hyper::client::dispatch::Receiver<T,U>::poll_recv (7 samples, 0.33%)want::Taker::want (2 samples, 0.10%)want::Taker::signal (2 samples, 0.10%)<T as core::convert::Into<U>>::into (2 samples, 0.10%)want::<impl core::convert::From<want::State> for usize>::from (1 samples, 0.05%)<core::pin::Pin<P> as http_body::Body>::is_end_stream (1 samples, 0.05%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::is_end_stream (1 samples, 0.05%)<core::pin::Pin<P> as http_body::Body>::is_end_stream (1 samples, 0.05%)<tonic::codec::encode::EncodeBody<S> as http_body::Body>::is_end_stream (1 samples, 0.05%)bytes::bytes_mut::BytesMut::is_empty (1 samples, 0.05%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (3 samples, 0.14%)<tonic::codec::encode::EncodeBody<S> as http_body::Body>::poll_data (3 samples, 0.14%)<tonic::codec::encode::EncodedBytes<T,U> as futures_core::stream::Stream>::poll_next (3 samples, 0.14%)tonic::codec::encode::encode_item (2 samples, 0.10%)<tonic::codec::prost::ProstEncoder<T> as tonic::codec::Encoder>::encode (2 samples, 0.10%)prost::message::Message::encode (2 samples, 0.10%)<dcache::protobuf::dcache::RaftRequest as prost::message::Message>::encode_raw (1 samples, 0.05%)prost::encoding::string::encode (1 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_slice (1 samples, 0.05%)core::intrinsics::copy_nonoverlapping (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Entered> (1 samples, 0.05%)<tracing::span::Entered as core::ops::drop::Drop>::drop (1 samples, 0.05%)tracing::span::Span::do_exit (1 samples, 0.05%)core::option::Option<T>::as_ref (1 samples, 0.05%)h2::proto::streams::prioritize::Prioritize::assign_connection_capacity (1 samples, 0.05%)h2::share::SendStream<B>::reserve_capacity (4 samples, 0.19%)h2::proto::streams::streams::StreamRef<B>::reserve_capacity (4 samples, 0.19%)h2::proto::streams::prioritize::Prioritize::reserve_capacity (4 samples, 0.19%)h2::proto::streams::prioritize::Prioritize::try_assign_capacity (2 samples, 0.10%)core::ptr::drop_in_place<tracing::span::Span> (1 samples, 0.05%)core::ptr::drop_in_place<core::option::Option<tracing::span::Inner>> (1 samples, 0.05%)<std::sync::mutex::MutexGuard<T> as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.05%)core::cell::UnsafeCell<T>::get (1 samples, 0.05%)h2::frame::data::Data<T>::new (1 samples, 0.05%)h2::frame::stream_id::StreamId::is_zero (1 samples, 0.05%)h2::frame::data::Data<T>::set_end_stream (1 samples, 0.05%)h2::frame::data::DataFlags::unset_end_stream (1 samples, 0.05%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.05%)<hyper::proto::h2::SendBuf<B> as bytes::buf::buf_impl::Buf>::remaining (1 samples, 0.05%)core::cmp::PartialOrd::gt (2 samples, 0.10%)<h2::proto::streams::flow_control::Window as core::cmp::PartialOrd<usize>>::partial_cmp (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (18 samples, 0.86%)<hyper::proto::h2::PipeToSendStream<S> as core::future::future::Future>::poll (18 samples, 0.86%)h2::share::SendStream<B>::send_data (8 samples, 0.38%)h2::proto::streams::streams::StreamRef<B>::send_data (8 samples, 0.38%)h2::proto::streams::counts::Counts::transition (7 samples, 0.33%)h2::proto::streams::streams::StreamRef<B>::send_data::_{{closure}} (7 samples, 0.33%)h2::proto::streams::send::Send::send_data (5 samples, 0.24%)h2::proto::streams::prioritize::Prioritize::send_data (5 samples, 0.24%)h2::proto::streams::prioritize::Prioritize::try_assign_capacity (1 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Entered> (1 samples, 0.05%)<tracing::span::Entered as core::ops::drop::Drop>::drop (1 samples, 0.05%)tracing::span::Span::do_exit (1 samples, 0.05%)tracing_core::dispatcher::has_been_set (1 samples, 0.05%)core::sync::atomic::AtomicBool::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)cfree (2 samples, 0.10%)[libc.so.6] (1 samples, 0.05%)h2::proto::streams::counts::Counts::transition_after (1 samples, 0.05%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (1 samples, 0.05%)<h2::proto::streams::store::Store as core::ops::index::Index<h2::proto::streams::store::Key>>::index (1 samples, 0.05%)core::option::Option<T>::filter (1 samples, 0.05%)<h2::proto::streams::store::Store as core::ops::index::Index<h2::proto::streams::store::Key>>::index::_{{closure}} (1 samples, 0.05%)<h2::frame::stream_id::StreamId as core::cmp::PartialEq>::eq (1 samples, 0.05%)h2::proto::streams::counts::Counts::transition (2 samples, 0.10%)h2::proto::streams::stream::Stream::is_pending_reset_expiration (1 samples, 0.05%)core::option::Option<T>::is_some (1 samples, 0.05%)core::ptr::drop_in_place<h2::share::SendStream<hyper::proto::h2::SendBuf<bytes::bytes::Bytes>>> (3 samples, 0.14%)core::ptr::drop_in_place<h2::proto::streams::streams::StreamRef<hyper::proto::h2::SendBuf<bytes::bytes::Bytes>>> (3 samples, 0.14%)core::ptr::drop_in_place<h2::proto::streams::streams::OpaqueStreamRef> (3 samples, 0.14%)<h2::proto::streams::streams::OpaqueStreamRef as core::ops::drop::Drop>::drop (3 samples, 0.14%)h2::proto::streams::streams::drop_stream_ref (3 samples, 0.14%)std::sync::mutex::Mutex<T>::lock (1 samples, 0.05%)std::sync::mutex::MutexGuard<T>::new (1 samples, 0.05%)std::sync::poison::Flag::guard (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.14%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (2 samples, 0.10%)alloc::alloc::dealloc (2 samples, 0.10%)cfree (2 samples, 0.10%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (27 samples, 1.29%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (27 samples, 1.29%)futures_util::future::future::map::_::<impl futures_util::future::future::map::Map<Fut,F>>::project_replace (9 samples, 0.43%)core::ptr::drop_in_place<(pin_project_lite::__private::UnsafeDropInPlaceGuard<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>>,())> (9 samples, 0.43%)core::ptr::drop_in_place<pin_project_lite::__private::UnsafeDropInPlaceGuard<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>>> (9 samples, 0.43%)<pin_project_lite::__private::UnsafeDropInPlaceGuard<T> as core::ops::drop::Drop>::drop (9 samples, 0.43%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>> (7 samples, 0.33%)core::ptr::drop_in_place<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>> (7 samples, 0.33%)core::ptr::drop_in_place<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>> (7 samples, 0.33%)core::ptr::drop_in_place<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>> (4 samples, 0.19%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>>> (4 samples, 0.19%)core::ptr::drop_in_place<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>> (4 samples, 0.19%)core::ptr::drop_in_place<tonic::codec::encode::EncodeBody<tonic::codec::encode::EncodedBytes<tonic::codec::prost::ProstEncoder<dcache::protobuf::dcache::RaftRequest>,tokio_stream::stream_ext::map::Map<tokio_stream::once::Once<dcache::protobuf::dcache::RaftRequest>,core::result::Result<dcache::protobuf::dcache::RaftRequest,tonic::status::Status>::Ok>>>> (1 samples, 0.05%)tokio::runtime::scheduler::Handle::current (1 samples, 0.05%)tokio::runtime::scheduler::Handle::spawn (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::Handle::spawn (1 samples, 0.05%)tokio::runtime::task::list::OwnedTasks<S>::bind (1 samples, 0.05%)tokio::util::linked_list::LinkedList<L,<L as tokio::util::linked_list::Link>::Target>::push_front (1 samples, 0.05%)<tokio::runtime::task::Task<S> as tokio::util::linked_list::Link>::pointers (1 samples, 0.05%)tokio::runtime::task::core::Trailer::addr_of_owned (1 samples, 0.05%)hyper::proto::h2::client::ClientTask<B>::poll_pipe (31 samples, 1.48%)<tonic::transport::service::executor::TokioExec as hyper::rt::Executor<F>>::execute (3 samples, 0.14%)tokio::task::spawn::spawn (3 samples, 0.14%)tokio::task::spawn::spawn_inner (3 samples, 0.14%)tokio::runtime::task::id::Id::next (1 samples, 0.05%)core::sync::atomic::AtomicU64::fetch_add (1 samples, 0.05%)core::sync::atomic::atomic_add (1 samples, 0.05%)core::option::Option<T>::map (1 samples, 0.05%)hyper::proto::h2::strip_connection_headers::_{{closure}} (1 samples, 0.05%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::ne (1 samples, 0.05%)core::cmp::PartialEq::ne (1 samples, 0.05%)<http::header::value::HeaderValue as core::cmp::PartialEq<str>>::eq (1 samples, 0.05%)<bytes::bytes::Bytes as core::cmp::PartialEq<&T>>::eq (1 samples, 0.05%)<bytes::bytes::Bytes as core::cmp::PartialEq<[u8]>>::eq (1 samples, 0.05%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (1 samples, 0.05%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (1 samples, 0.05%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<hyper::client::service::Connect<C,B,T> as tower_service::Service<T>>::call::_{{closure}}::_{{closure}} (65 samples, 3.10%)<hy..<hyper::client::conn::Connection<T,B> as core::future::future::Future>::poll (64 samples, 3.05%)<hy..<hyper::client::conn::ProtoClient<T,B> as core::future::future::Future>::poll (64 samples, 3.05%)<hy..<hyper::proto::h2::client::ClientTask<B> as core::future::future::Future>::poll (64 samples, 3.05%)<hy..hyper::proto::h2::strip_connection_headers (6 samples, 0.29%)http::header::map::HeaderMap<T>::remove (3 samples, 0.14%)<&http::header::name::HeaderName as http::header::map::as_header_name::Sealed>::find (3 samples, 0.14%)http::header::map::HeaderMap<T>::find (3 samples, 0.14%)http::header::map::hash_elem_using (3 samples, 0.14%)<http::header::name::HeaderName as core::hash::Hash>::hash (2 samples, 0.10%)<http::header::name::Repr<T> as core::hash::Hash>::hash (2 samples, 0.10%)<http::header::name::Custom as core::hash::Hash>::hash (2 samples, 0.10%)<fnv::FnvHasher as core::hash::Hasher>::write (2 samples, 0.10%)core::num::<impl u64>::wrapping_mul (1 samples, 0.05%)<T as core::convert::Into<U>>::into (3 samples, 0.14%)<http::uri::Parts as core::convert::From<http::uri::Uri>>::from (3 samples, 0.14%)<http::header::value::HeaderValue as core::clone::Clone>::clone (1 samples, 0.05%)<bytes::bytes::Bytes as core::clone::Clone>::clone (1 samples, 0.05%)bytes::bytes::static_clone (1 samples, 0.05%)bytes::bytes::Bytes::from_static (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (2 samples, 0.10%)tokio::sync::task::atomic_waker::AtomicWaker::wake (2 samples, 0.10%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (2 samples, 0.10%)core::sync::atomic::AtomicUsize::fetch_or (2 samples, 0.10%)core::sync::atomic::atomic_or (2 samples, 0.10%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::call (4 samples, 0.19%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::call (4 samples, 0.19%)<tonic::transport::service::reconnect::Reconnect<M,Target> as tower_service::Service<Request>>::call (4 samples, 0.19%)<hyper::client::conn::SendRequest<B> as tower_service::Service<http::request::Request<B>>>::call (4 samples, 0.19%)hyper::client::conn::SendRequest<B>::send_request (4 samples, 0.19%)hyper::client::dispatch::Sender<T,U>::send (4 samples, 0.19%)tokio::sync::oneshot::channel (2 samples, 0.10%)alloc::sync::Arc<T>::new (1 samples, 0.05%)alloc::boxed::Box<T>::new (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<tonic::transport::service::grpc_timeout::GrpcTimeout<S> as tower_service::Service<http::request::Request<ReqBody>>>::call (5 samples, 0.24%)tonic::transport::service::grpc_timeout::try_parse_grpc_timeout (1 samples, 0.05%)http::header::map::HeaderMap<T>::get (1 samples, 0.05%)http::header::map::HeaderMap<T>::get2 (1 samples, 0.05%)<&str as http::header::map::as_header_name::Sealed>::find (1 samples, 0.05%)http::header::name::HdrName::from_bytes (1 samples, 0.05%)http::header::name::parse_hdr (1 samples, 0.05%)core::iter::traits::iterator::Iterator::for_each (1 samples, 0.05%)core::iter::traits::iterator::Iterator::fold (1 samples, 0.05%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (1 samples, 0.05%)http::header::name::parse_hdr::_{{closure}} (1 samples, 0.05%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::call (13 samples, 0.62%)<tower::util::map_future::MapFuture<S,F> as tower_service::Service<R>>::call (12 samples, 0.57%)<tonic::transport::service::add_origin::AddOrigin<T> as tower_service::Service<http::request::Request<ReqBody>>>::call (12 samples, 0.57%)<tonic::transport::service::user_agent::UserAgent<T> as tower_service::Service<http::request::Request<ReqBody>>>::call (9 samples, 0.43%)http::header::map::HeaderMap<T>::insert (2 samples, 0.10%)<http::header::name::HeaderName as http::header::map::into_header_name::Sealed>::insert (2 samples, 0.10%)http::header::map::HeaderMap<T>::insert2 (2 samples, 0.10%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::poll_ready (1 samples, 0.05%)<tonic::transport::service::connection::Connection as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::poll_ready (1 samples, 0.05%)<tower::util::boxed::sync::BoxService<T,U,E> as tower_service::Service<T>>::poll_ready (1 samples, 0.05%)<alloc::boxed::Box<S> as tower_service::Service<Request>>::poll_ready (1 samples, 0.05%)<tower::util::map_future::MapFuture<S,F> as tower_service::Service<R>>::poll_ready (1 samples, 0.05%)<tonic::transport::service::add_origin::AddOrigin<T> as tower_service::Service<http::request::Request<ReqBody>>>::poll_ready (1 samples, 0.05%)<tonic::transport::service::user_agent::UserAgent<T> as tower_service::Service<http::request::Request<ReqBody>>>::poll_ready (1 samples, 0.05%)<tonic::transport::service::grpc_timeout::GrpcTimeout<S> as tower_service::Service<http::request::Request<ReqBody>>>::poll_ready (1 samples, 0.05%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::poll_ready (1 samples, 0.05%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::poll_ready (1 samples, 0.05%)<tonic::transport::service::reconnect::Reconnect<M,Target> as tower_service::Service<Request>>::poll_ready (1 samples, 0.05%)[libc.so.6] (2 samples, 0.10%)[libc.so.6] (1 samples, 0.05%)<tokio::sync::mpsc::unbounded::Semaphore as tokio::sync::mpsc::chan::Semaphore>::add_permit (1 samples, 0.05%)tokio::sync::mpsc::block::Block<T>::read (2 samples, 0.10%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (2 samples, 0.10%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (2 samples, 0.10%)core::ptr::read (2 samples, 0.10%)[libc.so.6] (2 samples, 0.10%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (5 samples, 0.24%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (5 samples, 0.24%)tokio::sync::mpsc::list::Rx<T>::pop (3 samples, 0.14%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (8 samples, 0.38%)tokio::sync::mpsc::chan::Rx<T,S>::recv (8 samples, 0.38%)tokio::runtime::coop::poll_proceed (3 samples, 0.14%)tokio::runtime::context::budget (1 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.05%)tokio::runtime::context::budget::_{{closure}} (1 samples, 0.05%)tokio::runtime::coop::poll_proceed::_{{closure}} (1 samples, 0.05%)tokio::runtime::coop::Budget::decrement (1 samples, 0.05%)<tower::buffer::worker::Worker<T,Request> as core::future::future::Future>::poll (28 samples, 1.33%)tower::buffer::worker::Worker<T,Request>::poll_next_msg (11 samples, 0.52%)tokio::sync::oneshot::Sender<T>::is_closed (1 samples, 0.05%)tokio::sync::oneshot::State::load (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)http::response::Response<T>::map (1 samples, 0.05%)hyper::proto::h2::client::ClientTask<B>::poll_pipe::_{{closure}}::_{{closure}} (1 samples, 0.05%)hyper::body::body::Body::h2 (1 samples, 0.05%)<T as futures_util::fns::FnOnce1<A>>::call_once (2 samples, 0.10%)hyper::proto::h2::client::ClientTask<B>::poll_pipe::_{{closure}} (2 samples, 0.10%)hyper::headers::content_length_parse_all (1 samples, 0.05%)http::header::map::HeaderMap<T>::get_all (1 samples, 0.05%)<http::header::name::HeaderName as http::header::map::as_header_name::Sealed>::find (1 samples, 0.05%)http::header::map::HeaderMap<T>::find (1 samples, 0.05%)http::header::map::hash_elem_using (1 samples, 0.05%)<http::header::name::HeaderName as core::hash::Hash>::hash (1 samples, 0.05%)<http::header::name::Repr<T> as core::hash::Hash>::hash (1 samples, 0.05%)<http::header::name::StandardHeader as core::hash::Hash>::hash (1 samples, 0.05%)core::hash::impls::<impl core::hash::Hash for isize>::hash (1 samples, 0.05%)core::hash::Hasher::write_isize (1 samples, 0.05%)core::hash::Hasher::write_usize (1 samples, 0.05%)<fnv::FnvHasher as core::hash::Hasher>::write (1 samples, 0.05%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (1 samples, 0.05%)<h2::client::ResponseFuture as core::future::future::Future>::poll (2 samples, 0.10%)h2::proto::streams::streams::OpaqueStreamRef::poll_response (1 samples, 0.05%)h2::proto::streams::recv::Recv::poll_response (1 samples, 0.05%)h2::proto::streams::buffer::Deque::pop_front (1 samples, 0.05%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (7 samples, 0.33%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (7 samples, 0.33%)futures_util::future::future::map::_::<impl futures_util::future::future::map::Map<Fut,F>>::project_replace (2 samples, 0.10%)core::ptr::drop_in_place<(pin_project_lite::__private::UnsafeDropInPlaceGuard<h2::client::ResponseFuture>,())> (2 samples, 0.10%)core::ptr::drop_in_place<pin_project_lite::__private::UnsafeDropInPlaceGuard<h2::client::ResponseFuture>> (2 samples, 0.10%)<pin_project_lite::__private::UnsafeDropInPlaceGuard<T> as core::ops::drop::Drop>::drop (2 samples, 0.10%)core::ptr::drop_in_place<h2::client::ResponseFuture> (2 samples, 0.10%)core::ptr::drop_in_place<h2::proto::streams::streams::OpaqueStreamRef> (2 samples, 0.10%)<h2::proto::streams::streams::OpaqueStreamRef as core::ops::drop::Drop>::drop (2 samples, 0.10%)h2::proto::streams::streams::drop_stream_ref (2 samples, 0.10%)h2::proto::streams::counts::Counts::transition (2 samples, 0.10%)h2::proto::streams::counts::Counts::transition_after (1 samples, 0.05%)hyper::client::dispatch::Callback<T,U>::poll_canceled (2 samples, 0.10%)tokio::sync::oneshot::Sender<T>::poll_closed (2 samples, 0.10%)core::ptr::drop_in_place<core::result::Result<(),core::result::Result<http::response::Response<hyper::body::body::Body>,hyper::error::Error>>> (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)core::ptr::drop_in_place<hyper::error::Error> (2 samples, 0.10%)core::ptr::drop_in_place<alloc::boxed::Box<hyper::error::ErrorImpl>> (2 samples, 0.10%)core::ptr::drop_in_place<hyper::error::ErrorImpl> (2 samples, 0.10%)core::ptr::drop_in_place<core::option::Option<alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>> (2 samples, 0.10%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>> (2 samples, 0.10%)core::ptr::drop_in_place<<alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send> as core::convert::From<alloc::string::String>>::from::StringError> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::string::String> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (1 samples, 0.05%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::current_memory (1 samples, 0.05%)core::ptr::drop_in_place<hyper::client::dispatch::Callback<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,http::response::Response<hyper::body::body::Body>>> (3 samples, 0.14%)<hyper::client::dispatch::Callback<T,U> as core::ops::drop::Drop>::drop (3 samples, 0.14%)hyper::error::Error::with (1 samples, 0.05%)<T as core::convert::Into<U>>::into (1 samples, 0.05%)<alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send> as core::convert::From<&str>>::from (1 samples, 0.05%)<alloc::string::String as core::convert::From<&str>>::from (1 samples, 0.05%)alloc::str::<impl alloc::borrow::ToOwned for str>::to_owned (1 samples, 0.05%)alloc::slice::<impl alloc::borrow::ToOwned for [T]>::to_owned (1 samples, 0.05%)alloc::slice::<impl [T]>::to_vec (1 samples, 0.05%)alloc::slice::<impl [T]>::to_vec_in (1 samples, 0.05%)alloc::slice::hack::to_vec (1 samples, 0.05%)<T as alloc::slice::hack::ConvertVec>::to_vec (1 samples, 0.05%)alloc::vec::Vec<T,A>::with_capacity_in (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::allocate_in (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)hyper::client::dispatch::Callback<T,U>::send_when::_{{closure}} (14 samples, 0.67%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (14 samples, 0.67%)hyper::client::dispatch::Callback<T,U>::send_when::_{{closure}}::_{{closure}} (14 samples, 0.67%)hyper::client::dispatch::Callback<T,U>::send (5 samples, 0.24%)tokio::sync::oneshot::Sender<T>::send (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.05%)tokio::sync::oneshot::Sender<T>::send::_{{closure}} (1 samples, 0.05%)futures_channel::mpsc::State::is_closed (1 samples, 0.05%)futures_channel::mpsc::Receiver<T>::next_message (2 samples, 0.10%)futures_channel::mpsc::decode_state (1 samples, 0.05%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (3 samples, 0.14%)<futures_util::stream::stream::into_future::StreamFuture<St> as core::future::future::Future>::poll (3 samples, 0.14%)futures_util::stream::stream::StreamExt::poll_next_unpin (3 samples, 0.14%)<futures_channel::mpsc::Receiver<T> as futures_core::stream::Stream>::poll_next (3 samples, 0.14%)futures_core::task::__internal::atomic_waker::AtomicWaker::register (1 samples, 0.05%)core::task::wake::Waker::will_wake (1 samples, 0.05%)<core::task::wake::RawWaker as core::cmp::PartialEq>::eq (1 samples, 0.05%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (1 samples, 0.05%)<core::task::wake::RawWakerVTable as core::cmp::PartialEq>::eq (1 samples, 0.05%)<core::task::poll::Poll<core::option::Option<core::result::Result<T,E>>> as core::ops::try_trait::Try>::branch (1 samples, 0.05%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (1 samples, 0.05%)tokio_util::codec::length_delimited::LengthDelimitedCodec::decode_data (1 samples, 0.05%)<tokio_util::codec::length_delimited::LengthDelimitedCodec as tokio_util::codec::decoder::Decoder>::decode (3 samples, 0.14%)tokio_util::codec::length_delimited::LengthDelimitedCodec::decode_head (1 samples, 0.05%)bytes::buf::buf_impl::Buf::get_uint (1 samples, 0.05%)bytes::bytes_mut::BytesMut::reserve (1 samples, 0.05%)core::result::Result<T,E>::map_err (1 samples, 0.05%)core::task::poll::Poll<core::result::Result<T,E>>::map_err (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read (3 samples, 0.14%)mio::io_source::IoSource<T>::do_io (3 samples, 0.14%)mio::sys::unix::IoSourceState::do_io (3 samples, 0.14%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read::_{{closure}} (3 samples, 0.14%)<&std::net::tcp::TcpStream as std::io::Read>::read (3 samples, 0.14%)std::sys_common::net::TcpStream::read (3 samples, 0.14%)std::sys::unix::net::Socket::read (3 samples, 0.14%)std::sys::unix::net::Socket::recv_with_flags (3 samples, 0.14%)recv (3 samples, 0.14%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (1 samples, 0.05%)<tokio_util::codec::framed_read::FramedRead<T,D> as futures_core::stream::Stream>::poll_next (12 samples, 0.57%)<tokio_util::codec::framed_impl::FramedImpl<T,U,R> as futures_core::stream::Stream>::poll_next (12 samples, 0.57%)tokio_util::util::poll_read_buf (4 samples, 0.19%)<h2::codec::framed_write::FramedWrite<T,B> as tokio::io::async_read::AsyncRead>::poll_read (4 samples, 0.19%)tokio::io::poll_evented::PollEvented<E>::poll_read (4 samples, 0.19%)tokio::runtime::io::registration::Registration::poll_read_ready (1 samples, 0.05%)tokio::runtime::io::registration::Registration::poll_ready (1 samples, 0.05%)tokio::runtime::io::scheduled_io::ScheduledIo::poll_readiness (1 samples, 0.05%)tokio::runtime::io::Direction::mask (1 samples, 0.05%)bytes::bytes_mut::BytesMut::split_to (1 samples, 0.05%)h2::frame::data::Data::load (1 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Span> (1 samples, 0.05%)http::header::map::HeaderMap<T>::insert_entry (1 samples, 0.05%)alloc::vec::Vec<T,A>::push (1 samples, 0.05%)core::ptr::write (1 samples, 0.05%)h2::frame::headers::HeaderBlock::load::_{{closure}} (4 samples, 0.19%)http::header::map::HeaderMap<T>::append (4 samples, 0.19%)<http::header::name::HeaderName as http::header::map::into_header_name::Sealed>::append (4 samples, 0.19%)http::header::map::HeaderMap<T>::append2 (4 samples, 0.19%)http::header::map::HeaderMap<T>::reserve_one (2 samples, 0.10%)alloc::vec::from_elem (2 samples, 0.10%)<T as alloc::vec::spec_from_elem::SpecFromElem>::from_elem (2 samples, 0.10%)alloc::vec::Vec<T,A>::with_capacity_in (2 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (2 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::allocate_in (2 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.10%)alloc::alloc::Global::alloc_impl (2 samples, 0.10%)alloc::alloc::alloc (2 samples, 0.10%)__rust_alloc (1 samples, 0.05%)h2::hpack::decoder::Decoder::decode_indexed (2 samples, 0.10%)h2::hpack::decoder::Table::get (2 samples, 0.10%)<h2::hpack::header::Header<T> as core::clone::Clone>::clone (2 samples, 0.10%)<http::header::value::HeaderValue as core::clone::Clone>::clone (1 samples, 0.05%)h2::hpack::decoder::Decoder::decode_literal (1 samples, 0.05%)h2::hpack::header::Name::into_entry (1 samples, 0.05%)core::ptr::drop_in_place<bytes::bytes::Bytes> (2 samples, 0.10%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (2 samples, 0.10%)bytes::bytes_mut::shared_v_drop (2 samples, 0.10%)<core::sync::atomic::AtomicPtr<T> as bytes::loom::sync::atomic::AtomicMut<T>>::with_mut (2 samples, 0.10%)h2::codec::framed_read::decode_frame (16 samples, 0.76%)h2::frame::headers::Headers::load_hpack (12 samples, 0.57%)h2::frame::headers::HeaderBlock::load (12 samples, 0.57%)h2::hpack::decoder::Decoder::decode (12 samples, 0.57%)h2::hpack::decoder::consume (3 samples, 0.14%)h2::hpack::decoder::take (1 samples, 0.05%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (1 samples, 0.05%)bytes::bytes_mut::BytesMut::set_start (1 samples, 0.05%)<h2::codec::Codec<T,B> as futures_core::stream::Stream>::poll_next (31 samples, 1.48%)<h2::codec::framed_read::FramedRead<T> as futures_core::stream::Stream>::poll_next (31 samples, 1.48%)tracing_core::dispatcher::has_been_set (1 samples, 0.05%)core::sync::atomic::AtomicBool::load (1 samples, 0.05%)h2::proto::connection::Connection<T,P,B>::poll_go_away (3 samples, 0.14%)h2::proto::go_away::GoAway::send_pending_go_away (3 samples, 0.14%)h2::proto::go_away::GoAway::should_close_now (2 samples, 0.10%)core::option::Option<T>::is_none (1 samples, 0.05%)core::option::Option<T>::is_some (1 samples, 0.05%)h2::proto::settings::Settings::poll_send (1 samples, 0.05%)h2::proto::connection::Connection<T,P,B>::poll_ready (2 samples, 0.10%)h2::proto::streams::streams::Streams<B,P>::send_pending_refusal (1 samples, 0.05%)core::ptr::drop_in_place<std::sync::mutex::MutexGuard<h2::proto::streams::streams::Inner>> (1 samples, 0.05%)<std::sync::mutex::MutexGuard<T> as core::ops::drop::Drop>::drop (1 samples, 0.05%)std::sys::unix::locks::futex_mutex::Mutex::unlock (1 samples, 0.05%)h2::proto::connection::ConnectionInner<P,B>::as_dyn (2 samples, 0.10%)h2::proto::streams::streams::Streams<B,P>::as_dyn (2 samples, 0.10%)<h2::client::Peer as h2::proto::peer::Peer>::dyn (2 samples, 0.10%)[libc.so.6] (1 samples, 0.05%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.05%)<h2::proto::streams::store::Store as core::ops::index::IndexMut<h2::proto::streams::store::Key>>::index_mut (1 samples, 0.05%)slab::Slab<T>::get_mut (1 samples, 0.05%)h2::proto::streams::counts::Counts::transition (2 samples, 0.10%)h2::proto::streams::streams::Inner::recv_data::_{{closure}} (2 samples, 0.10%)h2::proto::streams::recv::Recv::recv_data (2 samples, 0.10%)h2::proto::streams::recv::Recv::consume_connection_window (1 samples, 0.05%)h2::proto::streams::store::Store::find_mut (1 samples, 0.05%)h2::proto::streams::streams::DynStreams<B>::recv_data (4 samples, 0.19%)h2::proto::streams::streams::Inner::recv_data (4 samples, 0.19%)std::sync::mutex::Mutex<T>::lock (1 samples, 0.05%)std::sync::mutex::MutexGuard<T>::new (1 samples, 0.05%)std::sync::poison::Flag::guard (1 samples, 0.05%)h2::proto::connection::Connection<T,P,B>::poll2 (48 samples, 2.29%)h..h2::proto::connection::DynConnection<B>::recv_frame (8 samples, 0.38%)h2::proto::streams::streams::DynStreams<B>::recv_headers (1 samples, 0.05%)h2::proto::streams::streams::Inner::recv_headers (1 samples, 0.05%)h2::proto::streams::store::Store::find_entry (1 samples, 0.05%)indexmap::map::IndexMap<K,V,S>::entry (1 samples, 0.05%)indexmap::map::core::raw::<impl indexmap::map::core::IndexMapCore<K,V>>::entry (1 samples, 0.05%)hashbrown::raw::inner::RawTable<T,A>::find (1 samples, 0.05%)hashbrown::raw::inner::RawTableInner<A>::find_inner (1 samples, 0.05%)<hyper::proto::h2::SendBuf<B> as bytes::buf::buf_impl::Buf>::remaining (1 samples, 0.05%)<h2::proto::streams::prioritize::Prioritized<B> as bytes::buf::buf_impl::Buf>::remaining (2 samples, 0.10%)<bytes::buf::take::Take<T> as bytes::buf::buf_impl::Buf>::remaining (2 samples, 0.10%)core::cmp::min (1 samples, 0.05%)core::cmp::Ord::min (1 samples, 0.05%)core::cmp::min_by (1 samples, 0.05%)h2::frame::data::Data<T>::encode_chunk (1 samples, 0.05%)h2::frame::head::Head::encode (1 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_u32 (1 samples, 0.05%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put_slice (1 samples, 0.05%)bytes::bytes_mut::BytesMut::extend_from_slice (1 samples, 0.05%)core::intrinsics::copy_nonoverlapping (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)h2::frame::headers::EncodingHeaderBlock::encode (1 samples, 0.05%)h2::frame::head::Head::encode (1 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_uint (1 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_slice (1 samples, 0.05%)core::intrinsics::copy_nonoverlapping (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)h2::codec::Codec<T,B>::buffer (5 samples, 0.24%)h2::codec::framed_write::FramedWrite<T,B>::buffer (5 samples, 0.24%)h2::codec::framed_write::Encoder<B>::buffer (5 samples, 0.24%)h2::frame::headers::Headers::encode (2 samples, 0.10%)h2::frame::headers::HeaderBlock::into_encoding (1 samples, 0.05%)h2::hpack::encoder::Encoder::encode (1 samples, 0.05%)<tonic::transport::service::io::BoxedIo as tokio::io::async_write::AsyncWrite>::poll_flush (1 samples, 0.05%)<core::pin::Pin<P> as tokio::io::async_write::AsyncWrite>::poll_flush (1 samples, 0.05%)core::pin::Pin<P>::as_mut (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.05%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write (2 samples, 0.10%)mio::io_source::IoSource<T>::do_io (2 samples, 0.10%)mio::sys::unix::IoSourceState::do_io (2 samples, 0.10%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write::_{{closure}} (2 samples, 0.10%)<&std::net::tcp::TcpStream as std::io::Write>::write (2 samples, 0.10%)std::sys_common::net::TcpStream::write (1 samples, 0.05%)__send (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)h2::codec::Codec<T,B>::flush (5 samples, 0.24%)h2::codec::framed_write::FramedWrite<T,B>::flush (5 samples, 0.24%)h2::codec::framed_write::write (4 samples, 0.19%)<tonic::transport::service::io::BoxedIo as tokio::io::async_write::AsyncWrite>::poll_write (4 samples, 0.19%)<core::pin::Pin<P> as tokio::io::async_write::AsyncWrite>::poll_write (3 samples, 0.14%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write (3 samples, 0.14%)tokio::net::tcp::stream::TcpStream::poll_write_priv (3 samples, 0.14%)tokio::io::poll_evented::PollEvented<E>::poll_write (3 samples, 0.14%)tokio::runtime::io::registration::Registration::poll_write_ready (1 samples, 0.05%)tokio::runtime::io::registration::Registration::poll_ready (1 samples, 0.05%)tokio::runtime::io::scheduled_io::ScheduledIo::poll_readiness (1 samples, 0.05%)tokio::runtime::io::Direction::mask (1 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Span> (1 samples, 0.05%)<bytes::buf::chain::Chain<T,U> as bytes::buf::buf_impl::Buf>::advance (1 samples, 0.05%)__send (4 samples, 0.19%)[unknown] (3 samples, 0.14%)[unknown] (3 samples, 0.14%)[unknown] (3 samples, 0.14%)[unknown] (3 samples, 0.14%)[unknown] (2 samples, 0.10%)[unknown] (1 samples, 0.05%)h2::codec::Codec<T,B>::poll_ready (9 samples, 0.43%)h2::codec::framed_write::FramedWrite<T,B>::poll_ready (9 samples, 0.43%)h2::codec::framed_write::FramedWrite<T,B>::flush (9 samples, 0.43%)h2::codec::framed_write::write (7 samples, 0.33%)<tonic::transport::service::io::BoxedIo as tokio::io::async_write::AsyncWrite>::poll_write (6 samples, 0.29%)<core::pin::Pin<P> as tokio::io::async_write::AsyncWrite>::poll_write (6 samples, 0.29%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write (6 samples, 0.29%)tokio::net::tcp::stream::TcpStream::poll_write_priv (5 samples, 0.24%)tokio::io::poll_evented::PollEvented<E>::poll_write (5 samples, 0.24%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write (5 samples, 0.24%)mio::io_source::IoSource<T>::do_io (5 samples, 0.24%)mio::sys::unix::IoSourceState::do_io (5 samples, 0.24%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write::_{{closure}} (5 samples, 0.24%)<&std::net::tcp::TcpStream as std::io::Write>::write (5 samples, 0.24%)std::sys_common::net::TcpStream::write (5 samples, 0.24%)std::sys::unix::cvt (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Entered> (1 samples, 0.05%)<tracing::span::Entered as core::ops::drop::Drop>::drop (1 samples, 0.05%)tracing::span::Span::do_exit (1 samples, 0.05%)tracing_core::dispatcher::has_been_set (1 samples, 0.05%)core::sync::atomic::AtomicBool::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)h2::frame::data::Data<T>::map (1 samples, 0.05%)h2::proto::streams::prioritize::Prioritize::pop_frame::_{{closure}} (1 samples, 0.05%)h2::proto::streams::flow_control::FlowControl::window_size (1 samples, 0.05%)h2::proto::streams::flow_control::Window::as_size (1 samples, 0.05%)h2::proto::streams::state::State::is_scheduled_reset (1 samples, 0.05%)h2::proto::streams::prioritize::Prioritize::pop_frame (8 samples, 0.38%)tracing::span::Span::in_scope (1 samples, 0.05%)tracing::span::Span::enter (1 samples, 0.05%)tracing::span::Span::do_enter (1 samples, 0.05%)tracing_core::dispatcher::has_been_set (1 samples, 0.05%)core::sync::atomic::AtomicBool::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (195 samples, 9.29%)<core::pin::P..hyper::proto::h2::client::conn_task::_{{closure}} (88 samples, 4.19%)hyper..<futures_util::future::select::Select<A,B> as core::future::future::Future>::poll (86 samples, 4.10%)<fut..futures_util::future::future::FutureExt::poll_unpin (85 samples, 4.05%)futu..<futures_util::future::try_future::MapErr<Fut,F> as core::future::future::Future>::poll (82 samples, 3.90%)<fut..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (82 samples, 3.90%)<fut..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (82 samples, 3.90%)<fut..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (81 samples, 3.86%)<fut..<F as futures_core::future::TryFuture>::try_poll (81 samples, 3.86%)<F a..<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (81 samples, 3.86%)<fut..<h2::client::Connection<T,B> as core::future::future::Future>::poll (81 samples, 3.86%)<h2:..h2::proto::connection::Connection<T,P,B>::poll (81 samples, 3.86%)h2::..h2::proto::streams::streams::Streams<B,P>::poll_complete (32 samples, 1.52%)h2::proto::streams::streams::Inner::poll_complete (32 samples, 1.52%)h2::proto::streams::send::Send::poll_complete (31 samples, 1.48%)h2::proto::streams::prioritize::Prioritize::poll_complete (30 samples, 1.43%)h2::proto::streams::prioritize::Prioritize::schedule_pending_open (2 samples, 0.10%)h2::proto::streams::counts::Counts::can_inc_num_send_streams (1 samples, 0.05%)<alloc::vec::drain::Drain<T,A> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)core::option::Option<T>::map (1 samples, 0.05%)<alloc::vec::drain::Drain<T,A> as core::iter::traits::iterator::Iterator>::next::_{{closure}} (1 samples, 0.05%)core::ptr::read (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (5 samples, 0.24%)<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::PipelineDcacheOpsSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::DcacheBatchRequest>>::call::_{{closure}} (5 samples, 0.24%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::pipeline_dcache_ops::_{{closure}} (4 samples, 0.19%)alloc::vec::Vec<T,A>::push (1 samples, 0.05%)core::ptr::write (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (12 samples, 0.57%)<tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll (12 samples, 0.57%)<tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll (12 samples, 0.57%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (10 samples, 0.48%)<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (10 samples, 0.48%)<tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll (10 samples, 0.48%)<axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll (10 samples, 0.48%)<tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll (10 samples, 0.48%)<core::pin::Pin<P> as core::future::future::Future>::poll (9 samples, 0.43%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (9 samples, 0.43%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (8 samples, 0.38%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (8 samples, 0.38%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (8 samples, 0.38%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (8 samples, 0.38%)<F as futures_core::future::TryFuture>::try_poll (8 samples, 0.38%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (8 samples, 0.38%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (8 samples, 0.38%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (8 samples, 0.38%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (8 samples, 0.38%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (8 samples, 0.38%)<F as futures_core::future::TryFuture>::try_poll (8 samples, 0.38%)<core::pin::Pin<P> as core::future::future::Future>::poll (8 samples, 0.38%)<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::_{{closure}} (8 samples, 0.38%)tonic::server::grpc::Grpc<T>::unary::_{{closure}} (6 samples, 0.29%)tonic::server::grpc::Grpc<T>::map_request_unary::_{{closure}} (1 samples, 0.05%)<tokio_stream::stream_ext::try_next::TryNext<St> as core::future::future::Future>::poll (1 samples, 0.05%)<tokio_stream::stream_ext::next::Next<St> as core::future::future::Future>::poll (1 samples, 0.05%)<&mut S as futures_core::stream::Stream>::poll_next (1 samples, 0.05%)<core::pin::Pin<P> as futures_core::stream::Stream>::poll_next (1 samples, 0.05%)<tonic::codec::decode::Streaming<T> as futures_core::stream::Stream>::poll_next (1 samples, 0.05%)tonic::codec::decode::Streaming<T>::decode_chunk (1 samples, 0.05%)<tonic::codec::prost::ProstDecoder<U> as tonic::codec::Decoder>::decode (1 samples, 0.05%)prost::message::Message::decode (1 samples, 0.05%)prost::message::Message::merge (1 samples, 0.05%)<dcache::protobuf::dcache::DcacheBatchRequest as prost::message::Message>::merge_field (1 samples, 0.05%)prost::encoding::message::merge_repeated (1 samples, 0.05%)prost::encoding::message::merge (1 samples, 0.05%)prost::encoding::merge_loop (1 samples, 0.05%)prost::encoding::message::merge::_{{closure}} (1 samples, 0.05%)<dcache::protobuf::dcache::DcacheRequest as prost::message::Message>::merge_field (1 samples, 0.05%)dcache::protobuf::dcache::dcache_request::DcacheRequest::merge (1 samples, 0.05%)prost::encoding::message::merge (1 samples, 0.05%)prost::encoding::merge_loop (1 samples, 0.05%)prost::encoding::message::merge::_{{closure}} (1 samples, 0.05%)<dcache::protobuf::dcache::CaptchaId as prost::message::Message>::merge_field (1 samples, 0.05%)prost::encoding::string::merge (1 samples, 0.05%)prost::encoding::bytes::merge_one_copy (1 samples, 0.05%)<dcache::protobuf::dcache::AddVisitorResult as prost::message::Message>::encode_raw (1 samples, 0.05%)prost::encoding::uint32::encode (1 samples, 0.05%)prost::encoding::encode_varint (1 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_u8 (1 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_slice (1 samples, 0.05%)<tonic::codec::buffer::EncodeBuf as bytes::buf::buf_mut::BufMut>::advance_mut (1 samples, 0.05%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::advance_mut (1 samples, 0.05%)<hyper::proto::h2::PipeToSendStream<S> as core::future::future::Future>::poll (2 samples, 0.10%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (2 samples, 0.10%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (2 samples, 0.10%)<tonic::transport::server::recover_error::MaybeEmptyBody<B> as http_body::Body>::poll_data (2 samples, 0.10%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (2 samples, 0.10%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (2 samples, 0.10%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (2 samples, 0.10%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (2 samples, 0.10%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (2 samples, 0.10%)<tonic::codec::encode::EncodeBody<S> as http_body::Body>::poll_data (2 samples, 0.10%)<tonic::codec::encode::EncodedBytes<T,U> as futures_core::stream::Stream>::poll_next (2 samples, 0.10%)tonic::codec::encode::encode_item (2 samples, 0.10%)<tonic::codec::prost::ProstEncoder<T> as tonic::codec::Encoder>::encode (2 samples, 0.10%)prost::message::Message::encode (2 samples, 0.10%)<dcache::protobuf::dcache::DcacheBatchResponse as prost::message::Message>::encode_raw (2 samples, 0.10%)prost::encoding::message::encode (2 samples, 0.10%)<dcache::protobuf::dcache::DcacheResponse as prost::message::Message>::encode_raw (2 samples, 0.10%)dcache::protobuf::dcache::dcache_response::DcacheResponse::encode (1 samples, 0.05%)prost::encoding::message::encode (1 samples, 0.05%)prost::encoding::encode_key (1 samples, 0.05%)prost::encoding::encode_varint (1 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_u8 (1 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_slice (1 samples, 0.05%)<&mut T as bytes::buf::buf_mut::BufMut>::remaining_mut (1 samples, 0.05%)<tonic::codec::buffer::EncodeBuf as bytes::buf::buf_mut::BufMut>::remaining_mut (1 samples, 0.05%)<&mut T as bytes::buf::buf_mut::BufMut>::remaining_mut (1 samples, 0.05%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::remaining_mut (1 samples, 0.05%)bytes::bytes_mut::BytesMut::len (1 samples, 0.05%)<hyper::proto::h2::server::H2Stream<F,B> as core::future::future::Future>::poll (15 samples, 0.71%)hyper::proto::h2::server::H2Stream<F,B>::poll2 (15 samples, 0.71%)h2::server::SendResponse<B>::poll_reset (1 samples, 0.05%)h2::proto::streams::streams::StreamRef<B>::poll_reset (1 samples, 0.05%)h2::proto::streams::send::Send::poll_reset (1 samples, 0.05%)h2::proto::streams::stream::Stream::wait_send (1 samples, 0.05%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (1 samples, 0.05%)core::ptr::drop_in_place<tokio::runtime::task::core::TaskIdGuard> (1 samples, 0.05%)<tokio::runtime::task::core::TaskIdGuard as core::ops::drop::Drop>::drop (1 samples, 0.05%)tokio::runtime::context::set_current_task_id (1 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.05%)tokio::runtime::context::set_current_task_id::_{{closure}} (1 samples, 0.05%)core::cell::Cell<T>::replace (1 samples, 0.05%)core::mem::replace (1 samples, 0.05%)core::ptr::write (1 samples, 0.05%)tokio::sync::mpsc::block::Block<T>::write (1 samples, 0.05%)tokio::sync::mpsc::block::Block<T>::set_ready (1 samples, 0.05%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (1 samples, 0.05%)dcache::network::raft_network_impl::DcacheNetwork::send_rpc::_{{closure}}::_{{closure}} (3 samples, 0.14%)tokio::sync::mpsc::bounded::Sender<T>::send::_{{closure}} (3 samples, 0.14%)tokio::sync::mpsc::bounded::Permit<T>::send (2 samples, 0.10%)tokio::sync::mpsc::chan::Tx<T,S>::send (2 samples, 0.10%)tokio::sync::mpsc::chan::Chan<T,S>::send (2 samples, 0.10%)tokio::sync::mpsc::list::Tx<T>::push (2 samples, 0.10%)tokio::sync::mpsc::list::Tx<T>::find_block (1 samples, 0.05%)tokio::runtime::task::harness::poll_future (222 samples, 10.57%)tokio::runtime:..std::panic::catch_unwind (221 samples, 10.52%)std::panic::cat..std::panicking::try (221 samples, 10.52%)std::panicking:..std::panicking::try::do_call (221 samples, 10.52%)std::panicking:..<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (221 samples, 10.52%)<core::panic::u..tokio::runtime::task::harness::poll_future::_{{closure}} (221 samples, 10.52%)tokio::runtime:..tokio::runtime::task::core::Core<T,S>::poll (221 samples, 10.52%)tokio::runtime:..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (220 samples, 10.48%)tokio::loom::st..tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (220 samples, 10.48%)tokio::runtime:..tokio::runtime::task::core::TaskIdGuard::enter (3 samples, 0.14%)tokio::runtime::scheduler::current_thread::Context::run_task (231 samples, 11.00%)tokio::runtime::..tokio::runtime::scheduler::current_thread::Context::enter (231 samples, 11.00%)tokio::runtime::..tokio::runtime::scheduler::current_thread::Context::run_task::_{{closure}} (231 samples, 11.00%)tokio::runtime::..tokio::runtime::coop::budget (231 samples, 11.00%)tokio::runtime::..tokio::runtime::coop::with_budget (231 samples, 11.00%)tokio::runtime::..tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}} (230 samples, 10.95%)tokio::runtime::..tokio::runtime::task::LocalNotified<S>::run (230 samples, 10.95%)tokio::runtime::..tokio::runtime::task::harness::Harness<T,S>::poll (230 samples, 10.95%)tokio::runtime::..tokio::runtime::task::harness::Harness<T,S>::poll_inner (229 samples, 10.90%)tokio::runtime::..tokio::runtime::task::waker::waker_ref (2 samples, 0.10%)tokio::runtime::task::waker::raw_waker (2 samples, 0.10%)main::main (1,759 samples, 83.76%)main::mainactix_rt::system::SystemRunner::block_on (1,759 samples, 83.76%)actix_rt::system::SystemRunner::block_onactix_rt::runtime::Runtime::block_on (1,759 samples, 83.76%)actix_rt::runtime::Runtime::block_ontokio::task::local::LocalSet::block_on (1,759 samples, 83.76%)tokio::task::local::LocalSet::block_ontokio::runtime::runtime::Runtime::block_on (1,759 samples, 83.76%)tokio::runtime::runtime::Runtime::block_ontokio::runtime::scheduler::current_thread::CurrentThread::block_on (1,759 samples, 83.76%)tokio::runtime::scheduler::current_thread::CurrentThread::block_ontokio::runtime::scheduler::current_thread::CoreGuard::block_on (1,759 samples, 83.76%)tokio::runtime::scheduler::current_thread::CoreGuard::block_ontokio::runtime::scheduler::current_thread::CoreGuard::enter (1,759 samples, 83.76%)tokio::runtime::scheduler::current_thread::CoreGuard::entertokio::macros::scoped_tls::ScopedKey<T>::set (1,759 samples, 83.76%)tokio::macros::scoped_tls::ScopedKey<T>::settokio::runtime::scheduler::current_thread::CoreGuard::enter::_{{closure}} (1,759 samples, 83.76%)tokio::runtime::scheduler::current_thread::CoreGuard::enter::_{{closure}}tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}} (1,759 samples, 83.76%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}tokio::runtime::task::list::OwnedTasks<S>::assert_owner (1 samples, 0.05%)core::ptr::drop_in_place<dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>>::{{closure}}::{{closure}}> (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}} (3 samples, 0.14%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}}::_{{closure}} (3 samples, 0.14%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.14%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftLogStorage<C>>::append::_{{closure}} (3 samples, 0.14%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.14%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log::_{{closure}} (3 samples, 0.14%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log::_{{closure}}::_{{closure}} (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}} (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}}::_{{closure}} (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)openraft::storage::log_store_ext::RaftLogReaderExt::get_log_entries::_{{closure}} (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::RaftLogReader<C>>::try_get_log_entries::_{{closure}} (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}} (1 samples, 0.05%)core::iter::traits::iterator::Iterator::collect (1 samples, 0.05%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (1 samples, 0.05%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (1 samples, 0.05%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (1 samples, 0.05%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)core::option::Option<T>::map (1 samples, 0.05%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once (1 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}}::_{{closure}} (1 samples, 0.05%)<openraft::entry::Entry<C> as core::clone::Clone>::clone (1 samples, 0.05%)<openraft::entry::payload::EntryPayload<C> as core::clone::Clone>::clone (1 samples, 0.05%)<dcache::store::DcacheRequest as core::clone::Clone>::clone (1 samples, 0.05%)<alloc::string::String as core::clone::Clone>::clone (1 samples, 0.05%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (1 samples, 0.05%)alloc::slice::<impl [T]>::to_vec_in (1 samples, 0.05%)alloc::slice::hack::to_vec (1 samples, 0.05%)<T as alloc::slice::hack::ConvertVec>::to_vec (1 samples, 0.05%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (1 samples, 0.05%)core::intrinsics::copy_nonoverlapping (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<openraft::progress::VecProgress<ID,V,P,QS> as openraft::progress::Progress<ID,V,P,QS>>::update_with (1 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_matching::_{{closure}} (1 samples, 0.05%)openraft::progress::entry::ProgressEntry<NID>::update_matching (1 samples, 0.05%)openraft::progress::inflight::Inflight<NID>::ack (1 samples, 0.05%)openraft::progress::inflight::Inflight<NID>::assert_my_id (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_raft_msg::_{{closure}} (6 samples, 0.29%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (6 samples, 0.29%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (6 samples, 0.29%)<core::pin::Pin<P> as core::future::future::Future>::poll (6 samples, 0.29%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (6 samples, 0.29%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_local_progress (2 samples, 0.10%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_matching (2 samples, 0.10%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::try_commit_granted (1 samples, 0.05%)openraft::engine::engine_output::EngineOutput<C>::push_command (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log::_{{closure}} (1 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log::_{{closure}}::_{{closure}} (1 samples, 0.05%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<openraft::entry::Entry<dcache::DcacheTypeConfig>>> (1 samples, 0.05%)<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)__rust_alloc (1 samples, 0.05%)dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log (2 samples, 0.10%)alloc::boxed::Box<T>::pin (2 samples, 0.10%)alloc::boxed::Box<T>::new (2 samples, 0.10%)alloc::alloc::exchange_malloc (2 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.10%)alloc::alloc::Global::alloc_impl (2 samples, 0.10%)alloc::alloc::alloc (2 samples, 0.10%)malloc (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}} (5 samples, 0.24%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}}::_{{closure}} (5 samples, 0.24%)<core::pin::Pin<P> as core::future::future::Future>::poll (5 samples, 0.24%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftLogStorage<C>>::append::_{{closure}} (5 samples, 0.24%)openraft::storage::callback::LogFlushed<NID>::log_io_completed (1 samples, 0.05%)tokio::sync::oneshot::Sender<T>::send (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}} (2 samples, 0.10%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}}::_{{closure}} (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.10%)openraft::storage::log_store_ext::RaftLogReaderExt::get_log_entries::_{{closure}} (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.10%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::RaftLogReader<C>>::try_get_log_entries::_{{closure}} (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}} (1 samples, 0.05%)core::iter::traits::iterator::Iterator::collect (1 samples, 0.05%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (1 samples, 0.05%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (1 samples, 0.05%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (1 samples, 0.05%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)core::option::Option<T>::map (1 samples, 0.05%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once (1 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}}::_{{closure}} (1 samples, 0.05%)<openraft::entry::Entry<C> as core::clone::Clone>::clone (1 samples, 0.05%)<openraft::entry::payload::EntryPayload<C> as core::clone::Clone>::clone (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}}::_{{closure}} (14 samples, 0.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}} (14 samples, 0.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}}::_{{closure}} (14 samples, 0.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (8 samples, 0.38%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (8 samples, 0.38%)<core::pin::Pin<P> as core::future::future::Future>::poll (8 samples, 0.38%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (8 samples, 0.38%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_local_progress (1 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_matching (1 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::try_commit_granted (1 samples, 0.05%)openraft::raft_state::RaftState<NID,N>::update_committed (1 samples, 0.05%)<T as tonic::client::service::GrpcService<ReqBody>>::call (1 samples, 0.05%)<tonic::transport::channel::Channel as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::call (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (2 samples, 0.10%)tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (2 samples, 0.10%)<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (2 samples, 0.10%)openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}} (2 samples, 0.10%)openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}}::_{{closure}} (2 samples, 0.10%)openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}} (2 samples, 0.10%)openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}}::_{{closure}} (2 samples, 0.10%)<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.10%)openraft::network::network::RaftNetwork::append_entries::_{{closure}} (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.10%)<dcache::network::raft_network_impl::DcacheNetworkConnection as openraft::network::network::RaftNetwork<dcache::DcacheTypeConfig>>::send_append_entries::_{{closure}} (2 samples, 0.10%)dcache::network::raft_network_impl::DcacheNetwork::send_rpc::_{{closure}} (2 samples, 0.10%)dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<T>::append_entries::_{{closure}} (2 samples, 0.10%)tonic::client::grpc::Grpc<T>::unary::_{{closure}} (2 samples, 0.10%)tonic::client::grpc::Grpc<T>::client_streaming::_{{closure}} (2 samples, 0.10%)tonic::client::grpc::Grpc<T>::streaming::_{{closure}} (2 samples, 0.10%)core::ptr::drop_in_place<tonic::transport::channel::ResponseFuture> (1 samples, 0.05%)core::ptr::drop_in_place<tower::buffer::future::ResponseFuture<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>> (1 samples, 0.05%)core::ptr::drop_in_place<tower::buffer::future::ResponseState<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>> (1 samples, 0.05%)core::ptr::drop_in_place<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>> (1 samples, 0.05%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>> (1 samples, 0.05%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>> (1 samples, 0.05%)_ZN4core3ptr1980drop_in_place$LT$$LT$tonic..transport..service..add_origin..AddOrigin$LT$tonic..transport..service..user_agent..UserAgent$LT$tonic..transport..service..grpc_timeout..GrpcTimeout$LT$tower..util..either..Either$LT$tower..limit..concurrency..service..ConcurrencyLimit$LT$tower..util..either..Either$LT$tower..limit..rate..service..RateLimit$LT$tonic..transport..service..reconnect..Reconnect$LT$hyper..client..service..Connect$LT$tonic..transport..service..connector..Connector$LT$hyper..client..connect..http..HttpConnector$GT$$C$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$C$http..uri..Uri$GT$$C$http..uri..Uri$GT$$GT$$C$tonic..transport..service..reconnect..Reconnect$LT$hyper..client..service..Connect$LT$tonic..transport..service..connector..Connector$LT$hyper..client..connect..http..HttpConnector$GT$$C$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$C$http..uri..Uri$GT$$C$http..uri..Uri$GT$$GT$$GT$$C$tower..util..either..Either$LT$tower..limit..rate..service..RateLimit$LT$tonic..transport..service..reconnect..Reconnect$LT$hyper..client..service..Connect$LT$tonic..transport..service..connector..Connector$LT$hyper..client..connect..http..HttpConnector$GT$$C$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$C$http..uri..Uri$GT$$C$http..uri..Uri$GT$$GT$$C$tonic..transport..service..reconnect..Reconnect$LT$hyper..client..service..Connect$LT$tonic..transport..service..connector..Connector$LT$hyper..client..connect..http..HttpConnector$GT$$C$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$C$http..uri..Uri$GT$$C$http..uri..Uri$GT$$GT$$GT$$GT$$GT$$GT$$u20$as$u20$tower_service..Service$LT$http..request..Request$LT$http_body..combinators..box_body..UnsyncBoxBody$LT$bytes..bytes..Bytes$C$tonic..status..Status$GT$$GT$$GT$$GT$..call..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1163c7b8f84eb2deE (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::Context::enter (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}} (1 samples, 0.05%)tokio::runtime::coop::budget (1 samples, 0.05%)tokio::runtime::coop::with_budget (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}}::_{{closure}} (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)tokio::task::local::LocalSet::run_until::_{{closure}} (1 samples, 0.05%)<tokio::task::local::RunUntil<T> as core::future::future::Future>::poll (1 samples, 0.05%)tokio::task::local::LocalSet::with (1 samples, 0.05%)std::thread::local::LocalKey<T>::with (1 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.05%)tokio::task::local::LocalSet::with::_{{closure}} (1 samples, 0.05%)<tokio::task::local::RunUntil<T> as core::future::future::Future>::poll::_{{closure}} (1 samples, 0.05%)main::main::_{{closure}} (1 samples, 0.05%)clap_builder::derive::Parser::parse (1 samples, 0.05%)clap_builder::builder::command::Command::get_matches (1 samples, 0.05%)clap_builder::builder::command::Command::get_matches_from (1 samples, 0.05%)clap_builder::builder::command::Command::try_get_matches_from_mut (1 samples, 0.05%)clap_builder::builder::command::Command::_do_parse (1 samples, 0.05%)clap_builder::parser::parser::Parser::get_matches_with (1 samples, 0.05%)clap_builder::parser::parser::Parser::parse_opt_value (1 samples, 0.05%)clap_builder::parser::parser::Parser::resolve_pending (1 samples, 0.05%)clap_builder::parser::parser::Parser::react (1 samples, 0.05%)clap_builder::parser::parser::Parser::start_custom_arg (1 samples, 0.05%)clap_builder::parser::arg_matcher::ArgMatcher::start_custom_arg (1 samples, 0.05%)_ZN73_$LT$P$u20$as$u20$clap_builder..builder..value_parser..AnyValueParser$GT$7type_id17haafe12ffe0823396E.llvm.15344364224847515406 (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)h2::proto::streams::counts::Counts::transition_after (1 samples, 0.05%)h2::proto::streams::store::Ptr::unlink (1 samples, 0.05%)indexmap::map::IndexMap<K,V,S>::swap_remove (1 samples, 0.05%)indexmap::map::IndexMap<K,V,S>::swap_remove_full (1 samples, 0.05%)indexmap::map::IndexMap<K,V,S>::hash (1 samples, 0.05%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (1 samples, 0.05%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (1 samples, 0.05%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (1 samples, 0.05%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (1 samples, 0.05%)<h2::proto::streams::store::Store as core::ops::index::IndexMut<h2::proto::streams::store::Key>>::index_mut (1 samples, 0.05%)slab::Slab<T>::get_mut (1 samples, 0.05%)h2::proto::streams::state::State::recv_open (2 samples, 0.10%)h2::proto::streams::recv::Recv::recv_headers (4 samples, 0.19%)h2::proto::streams::stream::Stream::notify_recv (1 samples, 0.05%)core::task::wake::Waker::wake (1 samples, 0.05%)tokio::runtime::task::waker::wake_by_val (1 samples, 0.05%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (1 samples, 0.05%)tokio::runtime::task::raw::RawTask::schedule (1 samples, 0.05%)tokio::runtime::task::raw::schedule (1 samples, 0.05%)tokio::runtime::task::core::Header::get_scheduler (1 samples, 0.05%)core::ptr::mut_ptr::<impl *mut T>::add (1 samples, 0.05%)h2::proto::connection::Connection<T,P,B>::poll2 (7 samples, 0.33%)h2::proto::connection::DynConnection<B>::recv_frame (7 samples, 0.33%)h2::proto::streams::streams::DynStreams<B>::recv_headers (7 samples, 0.33%)h2::proto::streams::streams::Inner::recv_headers (7 samples, 0.33%)h2::proto::streams::counts::Counts::transition (7 samples, 0.33%)h2::proto::streams::streams::Inner::recv_headers::_{{closure}} (5 samples, 0.24%)h2::proto::streams::recv::Recv::recv_trailers (1 samples, 0.05%)h2::proto::streams::state::State::recv_close (1 samples, 0.05%)h2::hpack::encoder::encode_int (2 samples, 0.10%)bytes::buf::buf_mut::BufMut::put_u8 (2 samples, 0.10%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put_slice (2 samples, 0.10%)bytes::bytes_mut::BytesMut::extend_from_slice (1 samples, 0.05%)bytes::bytes_mut::BytesMut::reserve (1 samples, 0.05%)bytes::bytes_mut::BytesMut::reserve_inner (1 samples, 0.05%)alloc::vec::Vec<T,A>::reserve (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::grow_amortized (1 samples, 0.05%)alloc::raw_vec::finish_grow (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::grow (1 samples, 0.05%)alloc::alloc::Global::grow_impl (1 samples, 0.05%)alloc::alloc::realloc (1 samples, 0.05%)realloc (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)h2::hpack::encoder::Encoder::encode_header (4 samples, 0.19%)h2::hpack::header::Header::value_slice (1 samples, 0.05%)h2::hpack::header::Header<core::option::Option<http::header::name::HeaderName>>::reify (1 samples, 0.05%)h2::hpack::table::Table::index_dynamic (1 samples, 0.05%)h2::hpack::table::Table::index_occupied (1 samples, 0.05%)<bytes::bytes::Bytes as core::cmp::PartialEq>::eq (1 samples, 0.05%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (1 samples, 0.05%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (1 samples, 0.05%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)h2::hpack::table::Table::index (2 samples, 0.10%)h2::hpack::table::index_static (1 samples, 0.05%)h2::codec::Codec<T,B>::buffer (9 samples, 0.43%)h2::codec::framed_write::FramedWrite<T,B>::buffer (9 samples, 0.43%)h2::codec::framed_write::Encoder<B>::buffer (9 samples, 0.43%)h2::frame::headers::Headers::encode (9 samples, 0.43%)h2::frame::headers::HeaderBlock::into_encoding (9 samples, 0.43%)h2::hpack::encoder::Encoder::encode (9 samples, 0.43%)tracing::__macro_support::__disabled_span (1 samples, 0.05%)tracing::span::Span::new_disabled (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)h2::proto::streams::buffer::Deque::pop_front (3 samples, 0.14%)slab::Slab<T>::remove (2 samples, 0.10%)slab::Slab<T>::try_remove (2 samples, 0.10%)core::mem::replace (1 samples, 0.05%)core::ptr::read (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)h2::proto::streams::store::Queue<N>::pop (2 samples, 0.10%)core::option::Option<T>::is_none (1 samples, 0.05%)core::option::Option<T>::is_some (1 samples, 0.05%)h2::proto::streams::store::Queue<N>::push (1 samples, 0.05%)h2::proto::streams::store::Ptr::key (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (23 samples, 1.10%)hyper::proto::h2::client::conn_task::_{{closure}} (23 samples, 1.10%)<futures_util::future::select::Select<A,B> as core::future::future::Future>::poll (23 samples, 1.10%)futures_util::future::future::FutureExt::poll_unpin (23 samples, 1.10%)<futures_util::future::try_future::MapErr<Fut,F> as core::future::future::Future>::poll (23 samples, 1.10%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (23 samples, 1.10%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (23 samples, 1.10%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (23 samples, 1.10%)<F as futures_core::future::TryFuture>::try_poll (23 samples, 1.10%)<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (23 samples, 1.10%)<h2::client::Connection<T,B> as core::future::future::Future>::poll (23 samples, 1.10%)h2::proto::connection::Connection<T,P,B>::poll (23 samples, 1.10%)h2::proto::streams::streams::Streams<B,P>::poll_complete (16 samples, 0.76%)h2::proto::streams::streams::Inner::poll_complete (16 samples, 0.76%)h2::proto::streams::send::Send::poll_complete (16 samples, 0.76%)h2::proto::streams::prioritize::Prioritize::poll_complete (16 samples, 0.76%)h2::proto::streams::prioritize::Prioritize::pop_frame (7 samples, 0.33%)tracing::span::Span::in_scope (1 samples, 0.05%)h2::proto::streams::prioritize::Prioritize::pop_frame::_{{closure}} (1 samples, 0.05%)h2::proto::streams::stream::Stream::send_data (1 samples, 0.05%)h2::proto::streams::flow_control::FlowControl::send_data (1 samples, 0.05%)<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::AddLearnerSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::Learner>>::call::_{{closure}} (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::add_learner::_{{closure}} (1 samples, 0.05%)<T as core::convert::Into<U>>::into (1 samples, 0.05%)dcache::protobuf::<impl core::convert::From<core::result::Result<T,E>> for dcache::protobuf::dcache::RaftReply>::from (1 samples, 0.05%)serde_json::ser::to_string (1 samples, 0.05%)serde_json::ser::to_vec (1 samples, 0.05%)serde_json::ser::to_writer (1 samples, 0.05%)openraft::raft::_::<impl serde::ser::Serialize for openraft::raft::ClientWriteResponse<C>>::serialize (1 samples, 0.05%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (1 samples, 0.05%)openraft::log_id::_::<impl serde::ser::Serialize for openraft::log_id::LogId<NID>>::serialize (1 samples, 0.05%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (1 samples, 0.05%)serde::ser::SerializeMap::serialize_entry (1 samples, 0.05%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_key (1 samples, 0.05%)serde::ser::impls::<impl serde::ser::Serialize for str>::serialize (1 samples, 0.05%)<serde_json::ser::MapKeySerializer<W,F> as serde::ser::Serializer>::serialize_str (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (1 samples, 0.05%)serde_json::ser::format_escaped_str (1 samples, 0.05%)serde_json::ser::format_escaped_str_contents (1 samples, 0.05%)<hyper::proto::h2::server::H2Stream<F,B> as core::future::future::Future>::poll (4 samples, 0.19%)hyper::proto::h2::server::H2Stream<F,B>::poll2 (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll (4 samples, 0.19%)<tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll (4 samples, 0.19%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (4 samples, 0.19%)<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (4 samples, 0.19%)<tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll (4 samples, 0.19%)<axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll (4 samples, 0.19%)<tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (4 samples, 0.19%)<F as futures_core::future::TryFuture>::try_poll (4 samples, 0.19%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (4 samples, 0.19%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (4 samples, 0.19%)<F as futures_core::future::TryFuture>::try_poll (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::_{{closure}} (4 samples, 0.19%)tonic::server::grpc::Grpc<T>::unary::_{{closure}} (4 samples, 0.19%)<core::pin::Pin<P> as core::future::future::Future>::poll (4 samples, 0.19%)<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::PipelineDcacheOpsSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::DcacheBatchRequest>>::call::_{{closure}} (3 samples, 0.14%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.14%)<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::pipeline_dcache_ops::_{{closure}} (3 samples, 0.14%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}} (3 samples, 0.14%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}}::_{{closure}} (2 samples, 0.10%)<hyper::server::server::new_svc::NewSvcTask<I,N,S,E,W> as core::future::future::Future>::poll (1 samples, 0.05%)<hyper::server::conn::upgrades::UpgradeableConnection<I,S,E> as core::future::future::Future>::poll (1 samples, 0.05%)<hyper::server::conn::ProtoServer<T,B,S,E> as core::future::future::Future>::poll (1 samples, 0.05%)<hyper::proto::h2::server::Server<T,S,B,E> as core::future::future::Future>::poll (1 samples, 0.05%)hyper::proto::h2::server::Serving<T,B>::poll_server (1 samples, 0.05%)hyper::body::body::Body::h2 (1 samples, 0.05%)h2::proto::streams::streams::OpaqueStreamRef::is_end_stream (1 samples, 0.05%)std::collections::hash::map::HashMap<K,V,S>::insert (2 samples, 0.10%)hashbrown::map::HashMap<K,V,S,A>::insert (2 samples, 0.10%)hashbrown::map::make_hash (1 samples, 0.05%)core::hash::BuildHasher::hash_one (1 samples, 0.05%)core::hash::impls::<impl core::hash::Hash for &T>::hash (1 samples, 0.05%)core::hash::impls::<impl core::hash::Hash for u64>::hash (1 samples, 0.05%)core::hash::Hasher::write_u64 (1 samples, 0.05%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (1 samples, 0.05%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write (1 samples, 0.05%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (1 samples, 0.05%)dcache::network::management::HealthMetrics::spawn::_{{closure}}::_{{closure}} (5 samples, 0.24%)tokio::sync::mpsc::bounded::Receiver<T>::recv::_{{closure}} (2 samples, 0.10%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (2 samples, 0.10%)tokio::sync::mpsc::bounded::Receiver<T>::recv::_{{closure}}::_{{closure}} (2 samples, 0.10%)tokio::sync::mpsc::chan::Rx<T,S>::recv (2 samples, 0.10%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (2 samples, 0.10%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (1 samples, 0.05%)tokio::sync::mpsc::list::Rx<T>::pop (1 samples, 0.05%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (1 samples, 0.05%)tokio::runtime::scheduler::current_thread::CurrentThread::block_on (37 samples, 1.76%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on (37 samples, 1.76%)tokio::runtime::scheduler::current_thread::CoreGuard::enter (37 samples, 1.76%)tokio::macros::scoped_tls::ScopedKey<T>::set (37 samples, 1.76%)tokio::runtime::scheduler::current_thread::CoreGuard::enter::_{{closure}} (37 samples, 1.76%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}} (37 samples, 1.76%)tokio::runtime::scheduler::current_thread::Context::run_task (36 samples, 1.71%)tokio::runtime::scheduler::current_thread::Context::enter (36 samples, 1.71%)tokio::runtime::scheduler::current_thread::Context::run_task::_{{closure}} (36 samples, 1.71%)tokio::runtime::coop::budget (36 samples, 1.71%)tokio::runtime::coop::with_budget (36 samples, 1.71%)tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}} (36 samples, 1.71%)tokio::runtime::task::LocalNotified<S>::run (36 samples, 1.71%)tokio::runtime::task::harness::Harness<T,S>::poll (36 samples, 1.71%)tokio::runtime::task::harness::Harness<T,S>::poll_inner (36 samples, 1.71%)tokio::runtime::task::harness::poll_future (36 samples, 1.71%)std::panic::catch_unwind (36 samples, 1.71%)std::panicking::try (36 samples, 1.71%)std::panicking::try::do_call (36 samples, 1.71%)<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (36 samples, 1.71%)tokio::runtime::task::harness::poll_future::_{{closure}} (36 samples, 1.71%)tokio::runtime::task::core::Core<T,S>::poll (36 samples, 1.71%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (36 samples, 1.71%)tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (36 samples, 1.71%)openraft::core::sm::Worker<C,SM>::do_spawn::_{{closure}} (3 samples, 0.14%)openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}} (1 samples, 0.05%)openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}}::_{{closure}} (1 samples, 0.05%)<hyper::server::server::new_svc::NewSvcTask<I,N,S,E,W> as core::future::future::Future>::poll (1 samples, 0.05%)<hyper::server::conn::upgrades::UpgradeableConnection<I,S,E> as core::future::future::Future>::poll (1 samples, 0.05%)<hyper::server::conn::ProtoServer<T,B,S,E> as core::future::future::Future>::poll (1 samples, 0.05%)<hyper::proto::h2::server::Server<T,S,B,E> as core::future::future::Future>::poll (1 samples, 0.05%)hyper::proto::h2::server::Serving<T,B>::poll_server (1 samples, 0.05%)h2::server::Connection<T,B>::poll_accept (1 samples, 0.05%)h2::server::Connection<T,B>::poll_closed (1 samples, 0.05%)h2::proto::connection::Connection<T,P,B>::poll (1 samples, 0.05%)h2::proto::connection::Connection<T,P,B>::poll2 (1 samples, 0.05%)<h2::codec::Codec<T,B> as futures_core::stream::Stream>::poll_next (1 samples, 0.05%)<h2::codec::framed_read::FramedRead<T> as futures_core::stream::Stream>::poll_next (1 samples, 0.05%)<tokio_util::codec::framed_read::FramedRead<T,D> as futures_core::stream::Stream>::poll_next (1 samples, 0.05%)<tokio_util::codec::framed_impl::FramedImpl<T,U,R> as futures_core::stream::Stream>::poll_next (1 samples, 0.05%)<tokio_util::codec::length_delimited::LengthDelimitedCodec as tokio_util::codec::decoder::Decoder>::decode (1 samples, 0.05%)tokio_util::codec::length_delimited::LengthDelimitedCodec::decode_head (1 samples, 0.05%)bytes::bytes_mut::BytesMut::reserve (1 samples, 0.05%)bytes::bytes_mut::BytesMut::reserve_inner (1 samples, 0.05%)alloc::vec::Vec<T,A>::reserve (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::grow_amortized (1 samples, 0.05%)alloc::raw_vec::finish_grow (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::grow (1 samples, 0.05%)alloc::alloc::Global::grow_impl (1 samples, 0.05%)alloc::alloc::realloc (1 samples, 0.05%)realloc (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)tokio::runtime::context::budget (1 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.05%)tokio::runtime::context::budget::_{{closure}} (1 samples, 0.05%)tokio::runtime::coop::poll_proceed::_{{closure}} (1 samples, 0.05%)core::cell::Cell<T>::get (1 samples, 0.05%)<&mut F as core::future::future::Future>::poll (2 samples, 0.10%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (2 samples, 0.10%)tokio::sync::oneshot::Inner<T>::poll_recv (2 samples, 0.10%)tokio::runtime::coop::poll_proceed (2 samples, 0.10%)tokio::runtime::coop::Budget::unconstrained (1 samples, 0.05%)<tokio::sync::mpsc::unbounded::Semaphore as tokio::sync::mpsc::chan::Semaphore>::add_permit (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (1 samples, 0.05%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (1 samples, 0.05%)core::ptr::read (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (4 samples, 0.19%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (4 samples, 0.19%)tokio::sync::mpsc::list::Rx<T>::pop (3 samples, 0.14%)tokio::sync::mpsc::block::Block<T>::read (2 samples, 0.10%)tokio::sync::mpsc::block::is_ready (1 samples, 0.05%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (8 samples, 0.38%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}}::_{{closure}}::_{{closure}} (7 samples, 0.33%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}} (5 samples, 0.24%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (5 samples, 0.24%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}}::_{{closure}} (5 samples, 0.24%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (5 samples, 0.24%)tokio::sync::mpsc::chan::Rx<T,S>::recv (5 samples, 0.24%)tokio::runtime::coop::poll_proceed (1 samples, 0.05%)tokio::runtime::context::budget (1 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.05%)tokio::runtime::context::budget::_{{closure}} (1 samples, 0.05%)tokio::runtime::coop::poll_proceed::_{{closure}} (1 samples, 0.05%)core::cell::Cell<T>::set (1 samples, 0.05%)core::cell::Cell<T>::replace (1 samples, 0.05%)core::mem::replace (1 samples, 0.05%)core::ptr::write (1 samples, 0.05%)[libc.so.6] (2 samples, 0.10%)alloc::collections::btree::append::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::bulk_push (1 samples, 0.05%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>::push (1 samples, 0.05%)core::mem::maybe_uninit::MaybeUninit<T>::write (1 samples, 0.05%)core::iter::traits::iterator::Iterator::collect (2 samples, 0.10%)<alloc::collections::btree::map::BTreeMap<K,V> as core::iter::traits::collect::FromIterator<(K,V)>>::from_iter (2 samples, 0.10%)alloc::collections::btree::map::BTreeMap<K,V,A>::bulk_build_from_sorted_iter (2 samples, 0.10%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::new (1 samples, 0.05%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::Leaf>::new_leaf (1 samples, 0.05%)alloc::collections::btree::node::LeafNode<K,V>::new (1 samples, 0.05%)alloc::boxed::Box<T,A>::new_uninit_in (1 samples, 0.05%)alloc::boxed::Box<T,A>::try_new_uninit_in (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::current_leader (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::flush_metrics (5 samples, 0.24%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::report_metrics (3 samples, 0.14%)openraft::vote::leader_id::leader_id_std::LeaderId<NID>::get_term (1 samples, 0.05%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove (1 samples, 0.05%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove_entry (1 samples, 0.05%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_entry (1 samples, 0.05%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_kv (1 samples, 0.05%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,alloc::collections::btree::node::marker::KV>>::remove_kv_tracking (1 samples, 0.05%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_apply_result (3 samples, 0.14%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<openraft::core::raft_core::ApplyingEntry<u64,openraft::node::BasicNode>>> (2 samples, 0.10%)cfree (2 samples, 0.10%)[libc.so.6] (1 samples, 0.05%)openraft::engine::engine_impl::Engine<C>::replication_handler (1 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::try_purge_log (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_replication_progress (3 samples, 0.14%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_progress (2 samples, 0.10%)openraft::progress::entry::ProgressEntry<NID>::next_send (1 samples, 0.05%)openraft::raft_state::log_state_reader::LogStateReader::prev_log_id (1 samples, 0.05%)<openraft::raft_state::RaftState<NID,N> as openraft::raft_state::log_state_reader::LogStateReader<NID>>::get_log_id (1 samples, 0.05%)openraft::engine::log_id_list::LogIdList<NID>::get (1 samples, 0.05%)core::slice::<impl [T]>::binary_search_by (1 samples, 0.05%)openraft::raft_state::io_state::IOState<NID>::update_applied (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_notify (9 samples, 0.43%)tracing_core::metadata::LevelFilter::current (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_api_msg::_{{closure}} (1 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Span> (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_raft_msg::_{{closure}} (5 samples, 0.24%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::try_recv (3 samples, 0.14%)tokio::sync::mpsc::chan::Rx<T,S>::try_recv (3 samples, 0.14%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (3 samples, 0.14%)tokio::sync::mpsc::chan::Rx<T,S>::try_recv::_{{closure}} (3 samples, 0.14%)tokio::sync::mpsc::list::Rx<T>::try_pop (2 samples, 0.10%)tokio::sync::mpsc::list::Rx<T>::pop (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (35 samples, 1.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::main::_{{closure}} (35 samples, 1.67%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (35 samples, 1.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}} (35 samples, 1.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}}::_{{closure}} (35 samples, 1.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}} (35 samples, 1.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}}::_{{closure}} (35 samples, 1.67%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (3 samples, 0.14%)[libc.so.6] (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (2 samples, 0.10%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}} (2 samples, 0.10%)core::iter::traits::iterator::Iterator::collect (2 samples, 0.10%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (2 samples, 0.10%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (2 samples, 0.10%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (2 samples, 0.10%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.10%)core::option::Option<T>::map (2 samples, 0.10%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once (2 samples, 0.10%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}}::_{{closure}} (2 samples, 0.10%)<openraft::entry::Entry<C> as core::clone::Clone>::clone (2 samples, 0.10%)<openraft::entry::payload::EntryPayload<C> as core::clone::Clone>::clone (2 samples, 0.10%)<dcache::store::DcacheRequest as core::clone::Clone>::clone (1 samples, 0.05%)<alloc::string::String as core::clone::Clone>::clone (1 samples, 0.05%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (1 samples, 0.05%)alloc::slice::<impl [T]>::to_vec_in (1 samples, 0.05%)alloc::slice::hack::to_vec (1 samples, 0.05%)<T as alloc::slice::hack::ConvertVec>::to_vec (1 samples, 0.05%)alloc::vec::Vec<T,A>::with_capacity_in (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::allocate_in (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)core::ptr::drop_in_place<dcache::network::raft_network_impl::DcacheNetwork::send_rpc<openraft::raft::AppendEntriesRequest<dcache::DcacheTypeConfig>,openraft::raft::AppendEntriesResponse<u64>,openraft::error::RaftError<u64>>::{{closure}}> (1 samples, 0.05%)<tokio::sync::mpsc::bounded::Sender<T> as core::clone::Clone>::clone (1 samples, 0.05%)<tokio::sync::mpsc::chan::Tx<T,S> as core::clone::Clone>::clone (1 samples, 0.05%)core::ptr::drop_in_place<dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<tonic::transport::channel::Channel>> (1 samples, 0.05%)core::ptr::drop_in_place<tonic::client::grpc::Grpc<tonic::transport::channel::Channel>> (1 samples, 0.05%)core::ptr::drop_in_place<tonic::transport::channel::Channel> (1 samples, 0.05%)core::ptr::drop_in_place<tower::buffer::service::Buffer<tower::util::either::Either<tonic::transport::service::connection::Connection,tower::util::boxed::sync::BoxService<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>>,http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>> (1 samples, 0.05%)core::ptr::drop_in_place<tokio::sync::mpsc::unbounded::UnboundedSender<tower::buffer::message::Message<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>>> (1 samples, 0.05%)core::ptr::drop_in_place<tokio::sync::mpsc::chan::Tx<tower::buffer::message::Message<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>,tokio::sync::mpsc::unbounded::Semaphore>> (1 samples, 0.05%)<tokio::sync::mpsc::chan::Tx<T,S> as core::ops::drop::Drop>::drop (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<&mut W as core::fmt::Write>::write_str (1 samples, 0.05%)<&T as core::fmt::Display>::fmt (1 samples, 0.05%)alloc::vec::Vec<T,A>::reserve (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::grow_amortized (1 samples, 0.05%)alloc::raw_vec::finish_grow (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::grow (1 samples, 0.05%)alloc::alloc::Global::grow_impl (1 samples, 0.05%)alloc::alloc::realloc (1 samples, 0.05%)realloc (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)alloc::fmt::format (4 samples, 0.19%)core::option::Option<T>::map_or_else (4 samples, 0.19%)alloc::fmt::format::_{{closure}} (4 samples, 0.19%)alloc::fmt::format::format_inner (4 samples, 0.19%)core::fmt::Write::write_fmt (4 samples, 0.19%)core::fmt::write (4 samples, 0.19%)core::fmt::rt::Argument::fmt (3 samples, 0.14%)<&mut W as core::fmt::Write>::write_str (2 samples, 0.10%)<alloc::string::String as core::fmt::Write>::write_str (2 samples, 0.10%)alloc::string::String::push_str (2 samples, 0.10%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.10%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.10%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.10%)core::intrinsics::copy_nonoverlapping (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)core::ptr::drop_in_place<alloc::string::String> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (1 samples, 0.05%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)cfree (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)<dcache::network::raft_network_impl::ChannelManager as dcache::pool::ItemManager>::check::_{{closure}} (1 samples, 0.05%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (1 samples, 0.05%)<dcache::network::raft_network_impl::ChannelManager as dcache::pool::ItemManager>::check::_{{closure}}::_{{closure}} (1 samples, 0.05%)<tonic::transport::channel::Channel as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::poll_ready (1 samples, 0.05%)<dcache::network::raft_network_impl::ChannelManager as dcache::pool::ItemManager>::check (1 samples, 0.05%)alloc::boxed::Box<T>::pin (1 samples, 0.05%)alloc::boxed::Box<T>::new (1 samples, 0.05%)alloc::alloc::exchange_malloc (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<tonic::transport::channel::Channel,tonic::transport::error::Error>+core::marker::Send>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<tonic::transport::channel::Channel,tonic::transport::error::Error>+core::marker::Send>> (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)cfree (1 samples, 0.05%)core::ptr::drop_in_place<tokio::sync::mutex::MutexGuard<core::option::Option<tonic::transport::channel::Channel>>> (1 samples, 0.05%)<tokio::sync::mutex::MutexGuard<T> as core::ops::drop::Drop>::drop (1 samples, 0.05%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (1 samples, 0.05%)core::option::Option<T>::unwrap_or_else (1 samples, 0.05%)hashbrown::map::make_hash (1 samples, 0.05%)core::hash::BuildHasher::hash_one (1 samples, 0.05%)core::hash::impls::<impl core::hash::Hash for &T>::hash (1 samples, 0.05%)<alloc::string::String as core::hash::Hash>::hash (1 samples, 0.05%)core::hash::impls::<impl core::hash::Hash for str>::hash (1 samples, 0.05%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write_str (1 samples, 0.05%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write_str (1 samples, 0.05%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write_str (1 samples, 0.05%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (1 samples, 0.05%)dcache::pool::Pool<Mgr>::get_pool_item (2 samples, 0.10%)std::collections::hash::map::HashMap<K,V,S>::get (2 samples, 0.10%)hashbrown::map::HashMap<K,V,S,A>::get (2 samples, 0.10%)hashbrown::map::HashMap<K,V,S,A>::get_inner (2 samples, 0.10%)hashbrown::raw::RawTable<T,A>::get (1 samples, 0.05%)hashbrown::raw::RawTable<T,A>::find (1 samples, 0.05%)hashbrown::raw::RawTableInner<A>::find_inner (1 samples, 0.05%)<hashbrown::raw::bitmask::BitMaskIter as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)dcache::pool::Pool<Mgr>::get::_{{closure}} (7 samples, 0.33%)tokio::sync::mutex::Mutex<T>::lock::_{{closure}} (1 samples, 0.05%)tokio::sync::mutex::Mutex<T>::lock::_{{closure}}::_{{closure}} (1 samples, 0.05%)tokio::sync::mutex::Mutex<T>::acquire::_{{closure}} (1 samples, 0.05%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (1 samples, 0.05%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)dcache::network::raft_network_impl::DcacheNetwork::make_client::_{{closure}} (14 samples, 0.67%)dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<T>::new (1 samples, 0.05%)tonic::client::grpc::Grpc<T>::new (1 samples, 0.05%)<http::uri::Uri as core::default::Default>::default (1 samples, 0.05%)http::uri::path::PathAndQuery::slash (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)core::option::Option<T>::ok_or_else (1 samples, 0.05%)tonic::client::grpc::Grpc<T>::unary::_{{closure}} (3 samples, 0.14%)tonic::client::grpc::Grpc<T>::client_streaming::_{{closure}} (3 samples, 0.14%)tonic::client::grpc::Grpc<T>::streaming::_{{closure}} (1 samples, 0.05%)dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<T>::append_entries::_{{closure}} (5 samples, 0.24%)tonic::extensions::Extensions::insert (1 samples, 0.05%)http::extensions::Extensions::insert (1 samples, 0.05%)std::collections::hash::map::HashMap<K,V,S>::insert (1 samples, 0.05%)hashbrown::map::HashMap<K,V,S,A>::insert (1 samples, 0.05%)hashbrown::raw::RawTable<T,A>::find_or_find_insert_slot (1 samples, 0.05%)hashbrown::raw::RawTable<T,A>::reserve (1 samples, 0.05%)hashbrown::raw::RawTable<T,A>::reserve_rehash (1 samples, 0.05%)hashbrown::raw::RawTableInner<A>::reserve_rehash_inner (1 samples, 0.05%)hashbrown::raw::RawTableInner<A>::resize_inner (1 samples, 0.05%)serde_json::de::from_trait (4 samples, 0.19%)openraft::raft::_::<impl serde::de::Deserialize for openraft::raft::AppendEntriesResponse<NID>>::deserialize (3 samples, 0.14%)<&mut serde_json::de::Deserializer<R> as serde::de::Deserializer>::deserialize_enum (3 samples, 0.14%)<openraft::raft::_::<impl serde::de::Deserialize for openraft::raft::AppendEntriesResponse<NID>>::deserialize::__Visitor<NID> as serde::de::Visitor>::visit_enum (3 samples, 0.14%)serde::de::EnumAccess::variant (2 samples, 0.10%)<serde_json::de::UnitVariantAccess<R> as serde::de::EnumAccess>::variant_seed (2 samples, 0.10%)<core::marker::PhantomData<T> as serde::de::DeserializeSeed>::deserialize (2 samples, 0.10%)<openraft::raft::_::<impl serde::de::Deserialize for openraft::raft::AppendEntriesResponse<NID>>::deserialize::__Field as serde::de::Deserialize>::deserialize (1 samples, 0.05%)<&mut serde_json::de::Deserializer<R> as serde::de::Deserializer>::deserialize_identifier (1 samples, 0.05%)<&mut serde_json::de::Deserializer<R> as serde::de::Deserializer>::deserialize_str (1 samples, 0.05%)<serde_json::read::StrRead as serde_json::read::Read>::parse_str (1 samples, 0.05%)serde_json::de::from_str (6 samples, 0.29%)serde_json::read::StrRead::new (1 samples, 0.05%)alloc::vec::Vec<T>::with_capacity (1 samples, 0.05%)alloc::vec::Vec<T,A>::with_capacity_in (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::allocate_in (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)serde::ser::impls::<impl serde::ser::Serialize for core::option::Option<T>>::serialize (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_some (1 samples, 0.05%)serde::ser::impls::<impl serde::ser::Serialize for u64>::serialize (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_u64 (1 samples, 0.05%)serde_json::ser::Formatter::write_u64 (1 samples, 0.05%)itoa::Buffer::format (1 samples, 0.05%)itoa::<impl itoa::private::Sealed for u64>::write (1 samples, 0.05%)openraft::vote::vote::_::<impl serde::ser::Serialize for openraft::vote::vote::Vote<NID>>::serialize (2 samples, 0.10%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (2 samples, 0.10%)openraft::vote::leader_id::leader_id_std::_::<impl serde::ser::Serialize for openraft::vote::leader_id::leader_id_std::LeaderId<NID>>::serialize (2 samples, 0.10%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (2 samples, 0.10%)serde::ser::SerializeMap::serialize_entry (2 samples, 0.10%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_value (2 samples, 0.10%)serde::ser::impls::<impl serde::ser::Serialize for u64>::serialize (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_u64 (1 samples, 0.05%)serde_json::ser::Formatter::write_u64 (1 samples, 0.05%)std::io::impls::<impl std::io::Write for &mut W>::write_all (1 samples, 0.05%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (1 samples, 0.05%)alloc::vec::Vec<T,A>::extend_from_slice (1 samples, 0.05%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (1 samples, 0.05%)alloc::vec::Vec<T,A>::append_elements (1 samples, 0.05%)core::intrinsics::copy_nonoverlapping (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_struct (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_map (1 samples, 0.05%)serde_json::ser::Formatter::begin_object (1 samples, 0.05%)std::io::impls::<impl std::io::Write for &mut W>::write_all (1 samples, 0.05%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (1 samples, 0.05%)alloc::vec::Vec<T,A>::extend_from_slice (1 samples, 0.05%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (1 samples, 0.05%)alloc::vec::Vec<T,A>::append_elements (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_struct (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_map (1 samples, 0.05%)serde_json::ser::Formatter::begin_object (1 samples, 0.05%)std::io::impls::<impl std::io::Write for &mut W>::write_all (1 samples, 0.05%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (1 samples, 0.05%)alloc::vec::Vec<T,A>::extend_from_slice (1 samples, 0.05%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (1 samples, 0.05%)alloc::vec::Vec<T,A>::append_elements (1 samples, 0.05%)alloc::vec::Vec<T,A>::reserve (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::grow_amortized (1 samples, 0.05%)alloc::raw_vec::finish_grow (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::grow (1 samples, 0.05%)alloc::alloc::Global::grow_impl (1 samples, 0.05%)alloc::alloc::realloc (1 samples, 0.05%)realloc (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)openraft::log_id::_::<impl serde::ser::Serialize for openraft::log_id::LogId<NID>>::serialize (2 samples, 0.10%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (1 samples, 0.05%)serde::ser::SerializeMap::serialize_entry (1 samples, 0.05%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_key (1 samples, 0.05%)serde::ser::impls::<impl serde::ser::Serialize for str>::serialize (1 samples, 0.05%)<serde_json::ser::MapKeySerializer<W,F> as serde::ser::Serializer>::serialize_str (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (1 samples, 0.05%)serde_json::ser::format_escaped_str (1 samples, 0.05%)serde_json::ser::format_escaped_str_contents (1 samples, 0.05%)serde_json::ser::Formatter::write_string_fragment (1 samples, 0.05%)std::io::impls::<impl std::io::Write for &mut W>::write_all (1 samples, 0.05%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (1 samples, 0.05%)alloc::vec::Vec<T,A>::extend_from_slice (1 samples, 0.05%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (1 samples, 0.05%)alloc::vec::Vec<T,A>::append_elements (1 samples, 0.05%)core::intrinsics::copy_nonoverlapping (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_key (1 samples, 0.05%)serde::ser::impls::<impl serde::ser::Serialize for str>::serialize (1 samples, 0.05%)<serde_json::ser::MapKeySerializer<W,F> as serde::ser::Serializer>::serialize_str (1 samples, 0.05%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (1 samples, 0.05%)serde_json::ser::format_escaped_str (1 samples, 0.05%)serde_json::ser::format_escaped_str_contents (1 samples, 0.05%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.05%)serde_json::ser::to_string (13 samples, 0.62%)serde_json::ser::to_vec (13 samples, 0.62%)serde_json::ser::to_writer (12 samples, 0.57%)openraft::raft::_::<impl serde::ser::Serialize for openraft::raft::AppendEntriesRequest<C>>::serialize (12 samples, 0.57%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (12 samples, 0.57%)serde::ser::SerializeMap::serialize_entry (10 samples, 0.48%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_value (10 samples, 0.48%)serde::ser::impls::<impl serde::ser::Serialize for alloc::vec::Vec<T>>::serialize (10 samples, 0.48%)serde::ser::Serializer::collect_seq (10 samples, 0.48%)core::iter::traits::iterator::Iterator::try_for_each (10 samples, 0.48%)core::iter::traits::iterator::Iterator::try_fold (10 samples, 0.48%)core::iter::traits::iterator::Iterator::try_for_each::call::_{{closure}} (10 samples, 0.48%)serde::ser::Serializer::collect_seq::_{{closure}} (10 samples, 0.48%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeSeq>::serialize_element (10 samples, 0.48%)serde::ser::impls::<impl serde::ser::Serialize for &T>::serialize (10 samples, 0.48%)openraft::entry::_::<impl serde::ser::Serialize for openraft::entry::Entry<C>>::serialize (10 samples, 0.48%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (8 samples, 0.38%)serde::ser::SerializeMap::serialize_entry (6 samples, 0.29%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_value (4 samples, 0.19%)openraft::entry::payload::_::<impl serde::ser::Serialize for openraft::entry::payload::EntryPayload<C>>::serialize (4 samples, 0.19%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_newtype_variant (4 samples, 0.19%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (4 samples, 0.19%)serde_json::ser::format_escaped_str (4 samples, 0.19%)serde_json::ser::format_escaped_str_contents (4 samples, 0.19%)serde_json::ser::Formatter::write_string_fragment (4 samples, 0.19%)std::io::impls::<impl std::io::Write for &mut W>::write_all (4 samples, 0.19%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (4 samples, 0.19%)alloc::vec::Vec<T,A>::extend_from_slice (4 samples, 0.19%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (4 samples, 0.19%)alloc::vec::Vec<T,A>::append_elements (4 samples, 0.19%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.19%)alloc::raw_vec::RawVec<T,A>::reserve (4 samples, 0.19%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (3 samples, 0.14%)alloc::raw_vec::RawVec<T,A>::grow_amortized (3 samples, 0.14%)alloc::raw_vec::finish_grow (3 samples, 0.14%)<alloc::alloc::Global as core::alloc::Allocator>::grow (3 samples, 0.14%)alloc::alloc::Global::grow_impl (3 samples, 0.14%)alloc::alloc::realloc (3 samples, 0.14%)realloc (3 samples, 0.14%)[libc.so.6] (3 samples, 0.14%)[libc.so.6] (3 samples, 0.14%)[libc.so.6] (1 samples, 0.05%)tokio::task::spawn::spawn (1 samples, 0.05%)tokio::task::spawn::spawn_inner (1 samples, 0.05%)tokio::runtime::handle::Handle::current (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (44 samples, 2.10%)<..<dcache::network::raft_network_impl::DcacheNetworkConnection as openraft::network::network::RaftNetwork<dcache::DcacheTypeConfig>>::send_append_entries::_{{closure}} (44 samples, 2.10%)<..dcache::network::raft_network_impl::DcacheNetwork::send_rpc::_{{closure}} (43 samples, 2.05%)d..tonic::response::Response<T>::into_inner (1 samples, 0.05%)core::ptr::drop_in_place<tonic::metadata::map::MetadataMap> (1 samples, 0.05%)core::ptr::drop_in_place<http::header::map::HeaderMap> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::vec::Vec<http::header::map::Bucket<http::header::value::HeaderValue>>> (1 samples, 0.05%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)core::ptr::drop_in_place<[http::header::map::Bucket<http::header::value::HeaderValue>]> (1 samples, 0.05%)core::ptr::drop_in_place<http::header::map::Bucket<http::header::value::HeaderValue>> (1 samples, 0.05%)core::ptr::drop_in_place<http::header::value::HeaderValue> (1 samples, 0.05%)core::ptr::drop_in_place<bytes::bytes::Bytes> (1 samples, 0.05%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (1 samples, 0.05%)bytes::bytes::shared_drop (1 samples, 0.05%)<core::sync::atomic::AtomicPtr<T> as bytes::loom::sync::atomic::AtomicMut<T>>::with_mut (1 samples, 0.05%)<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll (48 samples, 2.29%)<..<core::pin::Pin<P> as core::future::future::Future>::poll (48 samples, 2.29%)<..openraft::network::network::RaftNetwork::append_entries::_{{closure}} (48 samples, 2.29%)o..[libc.so.6] (2 samples, 0.10%)tokio::runtime::task::waker::wake_by_val (1 samples, 0.05%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (1 samples, 0.05%)tokio::runtime::task::raw::RawTask::schedule (1 samples, 0.05%)tokio::runtime::task::raw::schedule (1 samples, 0.05%)tokio::runtime::task::core::Header::get_scheduler (1 samples, 0.05%)<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (52 samples, 2.48%)<t..openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}} (52 samples, 2.48%)op..openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}}::_{{closure}} (52 samples, 2.48%)op..openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}} (52 samples, 2.48%)op..openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}}::_{{closure}} (52 samples, 2.48%)op..openraft::replication::ReplicationCore<C,N,LS>::update_matching (2 samples, 0.10%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (2 samples, 0.10%)tokio::sync::mpsc::chan::Tx<T,S>::send (2 samples, 0.10%)tokio::sync::mpsc::chan::Chan<T,S>::send (2 samples, 0.10%)tokio::sync::task::atomic_waker::AtomicWaker::wake (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (1 samples, 0.05%)core::sync::atomic::AtomicUsize::fetch_or (1 samples, 0.05%)core::sync::atomic::atomic_or (1 samples, 0.05%)<tracing_core::metadata::Level as core::cmp::PartialOrd<tracing_core::metadata::LevelFilter>>::le (1 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Span> (1 samples, 0.05%)<actix::address::message::MsgRequest<S,M> as core::future::future::Future>::poll (2 samples, 0.10%)core::option::Option<T>::take (1 samples, 0.05%)core::mem::replace (1 samples, 0.05%)core::ptr::read (1 samples, 0.05%)<libmcaptcha::master::messages::AddVisitor as core::clone::Clone>::clone (1 samples, 0.05%)<alloc::string::String as core::clone::Clone>::clone (1 samples, 0.05%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (1 samples, 0.05%)alloc::slice::<impl [T]>::to_vec_in (1 samples, 0.05%)alloc::slice::hack::to_vec (1 samples, 0.05%)<T as alloc::slice::hack::ConvertVec>::to_vec (1 samples, 0.05%)alloc::vec::Vec<T,A>::with_capacity_in (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (1 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::allocate_in (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)__rust_alloc (1 samples, 0.05%)<actix::context::Context<A> as actix::address::envelope::ToEnvelope<A,M>>::pack (1 samples, 0.05%)actix::address::envelope::Envelope<A>::new (1 samples, 0.05%)alloc::boxed::Box<T>::new (1 samples, 0.05%)alloc::alloc::exchange_malloc (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)actix::address::channel::AddressSender<A>::inc_num_messages (1 samples, 0.05%)actix::address::channel::encode_state (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)actix::address::channel::AddressSender<A>::queue_push_and_signal (6 samples, 0.29%)tokio::runtime::task::waker::wake_by_val (6 samples, 0.29%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (6 samples, 0.29%)tokio::runtime::task::raw::RawTask::schedule (6 samples, 0.29%)tokio::task::local::Shared::schedule (6 samples, 0.29%)std::thread::local::LocalKey<T>::with (6 samples, 0.29%)std::thread::local::LocalKey<T>::try_with (6 samples, 0.29%)tokio::task::local::Shared::schedule::_{{closure}} (6 samples, 0.29%)tokio::sync::task::atomic_waker::AtomicWaker::wake (6 samples, 0.29%)core::task::wake::Waker::wake (6 samples, 0.29%)<tokio::runtime::scheduler::current_thread::Handle as tokio::util::wake::Wake>::wake (6 samples, 0.29%)<tokio::runtime::scheduler::current_thread::Handle as tokio::util::wake::Wake>::wake_by_ref (6 samples, 0.29%)tokio::runtime::driver::Handle::unpark (6 samples, 0.29%)tokio::runtime::driver::IoHandle::unpark (6 samples, 0.29%)tokio::runtime::io::Handle::unpark (6 samples, 0.29%)mio::sys::unix::waker::eventfd::Waker::wake (6 samples, 0.29%)<&std::fs::File as std::io::Write>::write (6 samples, 0.29%)std::sys::unix::fs::File::write (6 samples, 0.29%)std::sys::unix::fd::FileDesc::write (6 samples, 0.29%)write (6 samples, 0.29%)[unknown] (4 samples, 0.19%)[unknown] (3 samples, 0.14%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)[unknown] (2 samples, 0.10%)alloc::sync::Arc<T>::new (1 samples, 0.05%)alloc::boxed::Box<T>::new (1 samples, 0.05%)alloc::alloc::exchange_malloc (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (1 samples, 0.05%)alloc::alloc::Global::alloc_impl (1 samples, 0.05%)alloc::alloc::alloc (1 samples, 0.05%)malloc (1 samples, 0.05%)actix::address::Addr<A>::send (10 samples, 0.48%)actix::address::channel::AddressSender<A>::send (10 samples, 0.48%)tokio::sync::oneshot::channel (2 samples, 0.10%)tokio::sync::oneshot::State::new (1 samples, 0.05%)alloc::vec::Vec<T>::with_capacity (2 samples, 0.10%)alloc::vec::Vec<T,A>::with_capacity_in (2 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (2 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::allocate_in (2 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.10%)alloc::alloc::Global::alloc_impl (2 samples, 0.10%)alloc::alloc::alloc (2 samples, 0.10%)malloc (2 samples, 0.10%)[libc.so.6] (2 samples, 0.10%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::apply_to_state_machine::_{{closure}}::_{{closure}} (18 samples, 0.86%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (1 samples, 0.05%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}}::_{{closure}} (1 samples, 0.05%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (1 samples, 0.05%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (1 samples, 0.05%)tokio::runtime::task::core::Core<T,S>::poll (110 samples, 5.24%)tokio:..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (110 samples, 5.24%)tokio:..tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (110 samples, 5.24%)tokio:..openraft::core::sm::Worker<C,SM>::do_spawn::_{{closure}} (22 samples, 1.05%)openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}} (22 samples, 1.05%)openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}}::_{{closure}} (22 samples, 1.05%)openraft::core::sm::Worker<C,SM>::apply::_{{closure}} (22 samples, 1.05%)openraft::core::sm::Worker<C,SM>::apply::_{{closure}}::_{{closure}} (22 samples, 1.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (22 samples, 1.05%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftStateMachine<C>>::apply::_{{closure}} (22 samples, 1.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (22 samples, 1.05%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::apply_to_state_machine::_{{closure}} (22 samples, 1.05%)tracing::__macro_support::__disabled_span (1 samples, 0.05%)tracing::span::Span::new_disabled (1 samples, 0.05%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (1 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::main::_{{closure}} (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)openraft::replication::ReplicationCore<C,N,LS>::process_event (1 samples, 0.05%)core::cell::Cell<T>::get (1 samples, 0.05%)openraft::replication::ReplicationCore<C,N,LS>::try_drain_events::_{{closure}} (3 samples, 0.14%)openraft::replication::ReplicationCore<C,N,LS>::try_drain_events::_{{closure}}::_{{closure}} (3 samples, 0.14%)futures_util::future::future::FutureExt::now_or_never (2 samples, 0.10%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}} (2 samples, 0.10%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (2 samples, 0.10%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}}::_{{closure}} (2 samples, 0.10%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (2 samples, 0.10%)tokio::sync::mpsc::chan::Rx<T,S>::recv (2 samples, 0.10%)tokio::runtime::coop::poll_proceed (2 samples, 0.10%)tokio::runtime::context::budget (2 samples, 0.10%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.10%)tokio::runtime::context::budget::_{{closure}} (2 samples, 0.10%)tokio::runtime::coop::poll_proceed::_{{closure}} (2 samples, 0.10%)core::cell::Cell<T>::set (1 samples, 0.05%)core::cell::Cell<T>::replace (1 samples, 0.05%)core::mem::replace (1 samples, 0.05%)core::ptr::write (1 samples, 0.05%)openraft::replication::ReplicationCore<C,N,LS>::drain_events::_{{closure}}::_{{closure}} (5 samples, 0.24%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}} (1 samples, 0.05%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}}::_{{closure}} (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (1 samples, 0.05%)tokio::sync::mpsc::chan::Rx<T,S>::recv (1 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.05%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (1 samples, 0.05%)openraft::replication::ReplicationCore<C,N,LS>::drain_events::_{{closure}} (6 samples, 0.29%)tracing::__macro_support::__disabled_span (1 samples, 0.05%)tracing::span::Span::new_disabled (1 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Span> (1 samples, 0.05%)<tracing::span::Span as core::ops::drop::Drop>::drop (1 samples, 0.05%)alloc::collections::btree::map::BTreeMap<K,V,A>::range (2 samples, 0.10%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::range_search (2 samples, 0.10%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::find_leaf_edges_spanning_range (2 samples, 0.10%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree_for_bifurcation (2 samples, 0.10%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_lower_bound_index (2 samples, 0.10%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (2 samples, 0.10%)core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (2 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.14%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}} (3 samples, 0.14%)tokio::sync::rwlock::RwLock<T>::read::_{{closure}} (1 samples, 0.05%)tokio::sync::rwlock::RwLock<T>::read::_{{closure}}::_{{closure}} (1 samples, 0.05%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (1 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (1 samples, 0.05%)openraft::network::network::RaftNetwork::append_entries::_{{closure}} (1 samples, 0.05%)tokio::runtime::time::<impl tokio::runtime::time::handle::Handle>::reregister (1 samples, 0.05%)tokio::runtime::time::wheel::Wheel::insert (1 samples, 0.05%)tokio::runtime::time::wheel::level::Level::add_entry (1 samples, 0.05%)tokio::util::linked_list::LinkedList<L,<L as tokio::util::linked_list::Link>::Target>::push_front (1 samples, 0.05%)<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll::_{{closure}} (2 samples, 0.10%)<tokio::time::sleep::Sleep as core::future::future::Future>::poll (2 samples, 0.10%)tokio::time::sleep::Sleep::poll_elapsed (2 samples, 0.10%)tokio::runtime::time::entry::TimerEntry::poll_elapsed (2 samples, 0.10%)tokio::runtime::time::entry::StateCell::poll (1 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (1 samples, 0.05%)<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll (5 samples, 0.24%)[libc.so.6] (1 samples, 0.05%)core::ptr::drop_in_place<tokio::time::timeout::Timeout<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<openraft::raft::AppendEntriesResponse<u64>,openraft::error::RPCError<u64,openraft::node::BasicNode,openraft::error::RaftError<u64>>>+core::marker::Send>>>> (1 samples, 0.05%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<openraft::raft::AppendEntriesResponse<u64>,openraft::error::RPCError<u64,openraft::node::BasicNode,openraft::error::RaftError<u64>>>+core::marker::Send>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<openraft::raft::AppendEntriesResponse<u64>,openraft::error::RPCError<u64,openraft::node::BasicNode,openraft::error::RaftError<u64>>>+core::marker::Send>> (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)cfree (1 samples, 0.05%)openraft::replication::ReplicationCore<C,N,LS>::update_matching (1 samples, 0.05%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (1 samples, 0.05%)clock_gettime (1 samples, 0.05%)__vdso_clock_gettime (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)tokio::time::timeout::timeout (1 samples, 0.05%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (1 samples, 0.05%)clock_gettime (1 samples, 0.05%)__vdso_clock_gettime (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)[unknown] (1 samples, 0.05%)<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (24 samples, 1.14%)openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}} (24 samples, 1.14%)openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}}::_{{closure}} (24 samples, 1.14%)openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}} (17 samples, 0.81%)openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}}::_{{closure}} (16 samples, 0.76%)tracing_core::metadata::LevelFilter::current (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)cfree (2 samples, 0.10%)core::ptr::drop_in_place<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>> (3 samples, 0.14%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.14%)core::ptr::drop_in_place<[openraft::entry::Entry<dcache::DcacheTypeConfig>]> (3 samples, 0.14%)core::ptr::drop_in_place<openraft::entry::Entry<dcache::DcacheTypeConfig>> (1 samples, 0.05%)core::ptr::drop_in_place<openraft::entry::payload::EntryPayload<dcache::DcacheTypeConfig>> (1 samples, 0.05%)openraft::core::sm::Worker<C,SM>::apply::_{{closure}} (7 samples, 0.33%)openraft::core::sm::Worker<C,SM>::apply::_{{closure}}::_{{closure}} (7 samples, 0.33%)<core::pin::Pin<P> as core::future::future::Future>::poll (6 samples, 0.29%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftStateMachine<C>>::apply::_{{closure}} (6 samples, 0.29%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<dcache::store::DcacheResponse>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (1 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<dcache::store::DcacheResponse>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (1 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.05%)alloc::alloc::dealloc (1 samples, 0.05%)cfree (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)[libc.so.6] (1 samples, 0.05%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}} (4 samples, 0.19%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (4 samples, 0.19%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}}::_{{closure}} (4 samples, 0.19%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (4 samples, 0.19%)tokio::sync::mpsc::chan::Rx<T,S>::recv (4 samples, 0.19%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (4 samples, 0.19%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (3 samples, 0.14%)tokio::sync::mpsc::list::Rx<T>::pop (3 samples, 0.14%)tokio::sync::mpsc::list::Rx<T>::reclaim_blocks (2 samples, 0.10%)core::cmp::PartialEq::ne (2 samples, 0.10%)<core::ptr::non_null::NonNull<T> as core::cmp::PartialEq>::eq (2 samples, 0.10%)tokio::sync::mpsc::chan::Tx<T,S>::send (1 samples, 0.05%)tokio::sync::mpsc::chan::Chan<T,S>::send (1 samples, 0.05%)tokio::runtime::task::waker::wake_by_val (1 samples, 0.05%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (1 samples, 0.05%)tokio::runtime::task::raw::RawTask::schedule (1 samples, 0.05%)tokio::runtime::task::raw::schedule (1 samples, 0.05%)tokio::runtime::task::core::Header::get_scheduler (1 samples, 0.05%)openraft::core::sm::Worker<C,SM>::do_spawn::_{{closure}} (15 samples, 0.71%)openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}} (15 samples, 0.71%)openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}}::_{{closure}} (15 samples, 0.71%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (2 samples, 0.10%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::inc_num_messages (1 samples, 0.05%)core::sync::atomic::AtomicUsize::load (1 samples, 0.05%)core::sync::atomic::atomic_load (1 samples, 0.05%)all (2,100 samples, 100%)main (2,100 samples, 100.00%)main[unknown] (2,069 samples, 98.52%)[unknown]tokio::runtime::task::harness::Harness<T,S>::poll (41 samples, 1.95%)t..tokio::runtime::task::harness::Harness<T,S>::poll_inner (41 samples, 1.95%)t..tokio::runtime::task::harness::poll_future (41 samples, 1.95%)t..std::panic::catch_unwind (41 samples, 1.95%)s..std::panicking::try (41 samples, 1.95%)s..std::panicking::try::do_call (41 samples, 1.95%)s..<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (41 samples, 1.95%)<..tokio::runtime::task::harness::poll_future::_{{closure}} (41 samples, 1.95%)t..tokio::runtime::task::core::Core<T,S>::poll (41 samples, 1.95%)t..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (41 samples, 1.95%)t..tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (41 samples, 1.95%)t..tokio::runtime::task::core::TaskIdGuard::enter (1 samples, 0.05%) \ No newline at end of file diff --git a/bench/results/v2/libmcaptcha-bottleneck/solution/flamegraph.svg b/bench/results/v2/libmcaptcha-bottleneck/solution/flamegraph.svg new file mode 100644 index 0000000..f44d5b4 --- /dev/null +++ b/bench/results/v2/libmcaptcha-bottleneck/solution/flamegraph.svg @@ -0,0 +1,491 @@ +Flame Graph Reset ZoomSearch [[stack]] (2 samples, 0.02%)__vdso_clock_gettime (2 samples, 0.02%)[unknown] (2 samples, 0.02%)[ld-linux-x86-64.so.2] (2 samples, 0.02%)[ld-linux-x86-64.so.2] (2 samples, 0.02%)[ld-linux-x86-64.so.2] (2 samples, 0.02%)[ld-linux-x86-64.so.2] (6 samples, 0.05%)[unknown] (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (2 samples, 0.02%)[unknown] (2 samples, 0.02%)[ld-linux-x86-64.so.2] (8 samples, 0.06%)[unknown] (2 samples, 0.02%)[unknown] (10 samples, 0.08%)[unknown] (8 samples, 0.06%)[unknown] (5 samples, 0.04%)[unknown] (2 samples, 0.02%)__mmap (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (2 samples, 0.02%)core::ops::function::FnOnce::call_once{{vtable.shim}} (5 samples, 0.04%)std::thread::Builder::spawn_unchecked_::_{{closure}} (5 samples, 0.04%)std::sys::unix::thread::guard::current (5 samples, 0.04%)pthread_getattr_np (5 samples, 0.04%)malloc (5 samples, 0.04%)[libc.so.6] (5 samples, 0.04%)[libc.so.6] (5 samples, 0.04%)[libc.so.6] (4 samples, 0.03%)__mmap (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (2 samples, 0.02%)[libc.so.6] (24 samples, 0.19%)[libc.so.6] (24 samples, 0.19%)std::sys::unix::thread::Thread::new::thread_start (13 samples, 0.11%)std::sys::unix::stack_overflow::imp::make_handler (8 samples, 0.06%)sigaltstack (5 samples, 0.04%)[unknown] (5 samples, 0.04%)[unknown] (5 samples, 0.04%)[unknown] (5 samples, 0.04%)[unknown] (4 samples, 0.03%)<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call (3 samples, 0.02%)alloc::boxed::Box<T>::pin (2 samples, 0.02%)alloc::boxed::Box<T>::new (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)[libc.so.6] (73 samples, 0.59%)core::ptr::drop_in_place<openraft::raft::Raft<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::call_core<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>::{{closure}}::{{closure}}> (6 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Span> (6 samples, 0.05%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)[libc.so.6] (4 samples, 0.03%)core::ptr::drop_in_place<core::result::Result<(),tokio::sync::mpsc::error::SendError<openraft::raft::RaftMsg<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>>>> (6 samples, 0.05%)core::ptr::drop_in_place<tokio::sync::oneshot::Receiver<core::result::Result<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>>> (2 samples, 0.02%)<tokio::sync::oneshot::Receiver<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)core::result::Result<T,E>::map_err (9 samples, 0.07%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}}::_{{closure}} (81 samples, 0.66%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (4 samples, 0.03%)<hyper::proto::h2::server::H2Stream<F,B> as core::future::future::Future>::poll (211 samples, 1.71%)hyper::proto::h2::server::H2Stream<F,B>::poll2 (211 samples, 1.71%)<core::pin::Pin<P> as core::future::future::Future>::poll (211 samples, 1.71%)<tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll (211 samples, 1.71%)<tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll (211 samples, 1.71%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (211 samples, 1.71%)<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (211 samples, 1.71%)<tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll (211 samples, 1.71%)<axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll (211 samples, 1.71%)<tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll (211 samples, 1.71%)<core::pin::Pin<P> as core::future::future::Future>::poll (211 samples, 1.71%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (211 samples, 1.71%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (211 samples, 1.71%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (211 samples, 1.71%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (211 samples, 1.71%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (211 samples, 1.71%)<F as futures_core::future::TryFuture>::try_poll (211 samples, 1.71%)<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (211 samples, 1.71%)<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (211 samples, 1.71%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (211 samples, 1.71%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (211 samples, 1.71%)<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (211 samples, 1.71%)<F as futures_core::future::TryFuture>::try_poll (211 samples, 1.71%)<core::pin::Pin<P> as core::future::future::Future>::poll (211 samples, 1.71%)<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::_{{closure}} (211 samples, 1.71%)tonic::server::grpc::Grpc<T>::unary::_{{closure}} (211 samples, 1.71%)<core::pin::Pin<P> as core::future::future::Future>::poll (211 samples, 1.71%)<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::PipelineDcacheOpsSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::DcacheBatchRequest>>::call::_{{closure}} (211 samples, 1.71%)<core::pin::Pin<P> as core::future::future::Future>::poll (211 samples, 1.71%)<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::pipeline_dcache_ops::_{{closure}} (211 samples, 1.71%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}} (211 samples, 1.71%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}}::_{{closure}} (211 samples, 1.71%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}} (211 samples, 1.71%)<axum::routing::path_router::PathRouter<S,B,_> as core::clone::Clone>::clone (2 samples, 0.02%)<std::collections::hash::map::HashMap<K,V,S> as core::clone::Clone>::clone (2 samples, 0.02%)<hashbrown::map::HashMap<K,V,S,A> as core::clone::Clone>::clone (2 samples, 0.02%)<hashbrown::raw::RawTable<T,A> as core::clone::Clone>::clone (2 samples, 0.02%)<T as hyper::service::http::HttpService<B1>>::call (4 samples, 0.03%)<tower::util::boxed::sync::BoxService<T,U,E> as tower_service::Service<T>>::call (4 samples, 0.03%)<alloc::boxed::Box<S> as tower_service::Service<Request>>::call (4 samples, 0.03%)<tower::util::map_future::MapFuture<S,F> as tower_service::Service<R>>::call (4 samples, 0.03%)<tower::util::map_request::MapRequest<S,F> as tower_service::Service<R1>>::call (4 samples, 0.03%)<tonic::transport::server::Svc<S> as tower_service::Service<http::request::Request<hyper::body::body::Body>>>::call (4 samples, 0.03%)<tonic::transport::server::recover_error::RecoverError<S> as tower_service::Service<R>>::call (4 samples, 0.03%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::call (4 samples, 0.03%)<tonic::transport::service::grpc_timeout::GrpcTimeout<S> as tower_service::Service<http::request::Request<ReqBody>>>::call (4 samples, 0.03%)<tonic::transport::service::router::Routes as tower_service::Service<http::request::Request<hyper::body::body::Body>>>::call (4 samples, 0.03%)<axum::routing::Router<(),B> as tower_service::Service<http::request::Request<B>>>::call (4 samples, 0.03%)axum::routing::Router<S,B>::call_with_state (4 samples, 0.03%)axum::routing::path_router::PathRouter<S,B,_>::call_with_state (2 samples, 0.02%)h2::codec::Codec<T,B>::buffer (4 samples, 0.03%)h2::codec::framed_write::FramedWrite<T,B>::buffer (4 samples, 0.03%)h2::codec::framed_write::Encoder<B>::buffer (4 samples, 0.03%)h2::frame::headers::Headers::encode (4 samples, 0.03%)h2::frame::headers::HeaderBlock::into_encoding (4 samples, 0.03%)h2::hpack::encoder::Encoder::encode (3 samples, 0.02%)h2::proto::streams::counts::Counts::transition_after (3 samples, 0.02%)<hyper::server::server::new_svc::NewSvcTask<I,N,S,E,W> as core::future::future::Future>::poll (13 samples, 0.11%)<hyper::server::conn::upgrades::UpgradeableConnection<I,S,E> as core::future::future::Future>::poll (13 samples, 0.11%)<hyper::server::conn::ProtoServer<T,B,S,E> as core::future::future::Future>::poll (13 samples, 0.11%)<hyper::proto::h2::server::Server<T,S,B,E> as core::future::future::Future>::poll (13 samples, 0.11%)hyper::proto::h2::server::Serving<T,B>::poll_server (13 samples, 0.11%)h2::server::Connection<T,B>::poll_accept (9 samples, 0.07%)h2::server::Connection<T,B>::poll_closed (9 samples, 0.07%)h2::proto::connection::Connection<T,P,B>::poll (9 samples, 0.07%)h2::proto::streams::streams::Streams<B,P>::poll_complete (8 samples, 0.06%)h2::proto::streams::streams::Inner::poll_complete (8 samples, 0.06%)h2::proto::streams::send::Send::poll_complete (8 samples, 0.06%)h2::proto::streams::prioritize::Prioritize::poll_complete (8 samples, 0.06%)h2::proto::streams::prioritize::Prioritize::pop_frame (4 samples, 0.03%)core::ptr::drop_in_place<tracing::span::Span> (4 samples, 0.03%)<tracing::span::Span as core::ops::drop::Drop>::drop (4 samples, 0.03%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (3 samples, 0.02%)core::mem::drop (4 samples, 0.03%)core::ptr::drop_in_place<alloc::sync::Weak<tokio::sync::oneshot::Inner<core::result::Result<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>>,&alloc::alloc::Global>> (4 samples, 0.03%)<alloc::sync::Weak<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)tokio::io::interest::Interest::is_readable (3 samples, 0.02%)tokio::runtime::task::waker::drop_waker (4 samples, 0.03%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::drop_reference (4 samples, 0.03%)tokio::runtime::task::state::State::ref_dec (4 samples, 0.03%)tokio::sync::oneshot::State::is_tx_task_set (5 samples, 0.04%)<tokio::sync::oneshot::Inner<T> as core::ops::drop::Drop>::drop (15 samples, 0.12%)tokio::sync::oneshot::mut_load (2 samples, 0.02%)alloc::sync::Arc<T,A>::drop_slow (22 samples, 0.18%)core::ptr::drop_in_place<tokio::sync::oneshot::Inner<core::result::Result<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>>> (18 samples, 0.15%)core::ptr::drop_in_place<tokio::loom::std::unsafe_cell::UnsafeCell<core::option::Option<core::result::Result<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>>>> (3 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>>>>> (40 samples, 0.32%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>>>> (40 samples, 0.32%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (40 samples, 0.32%)cfree (12 samples, 0.10%)[libc.so.6] (4 samples, 0.03%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (4 samples, 0.03%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop (4 samples, 0.03%)tokio::runtime::context::budget (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::runtime::context::budget::_{{closure}} (2 samples, 0.02%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop::_{{closure}} (2 samples, 0.02%)core::cell::Cell<T>::set (2 samples, 0.02%)core::cell::Cell<T>::replace (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::ptr::write (2 samples, 0.02%)tokio::io::interest::Interest::is_readable (5 samples, 0.04%)tokio::io::interest::Interest::is_writable (8 samples, 0.06%)core::result::Result<T,E>::unwrap_or (5 samples, 0.04%)core::ptr::drop_in_place<core::task::poll::Poll<tokio::runtime::coop::RestoreOnPending>> (2 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (2 samples, 0.02%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::cell::Cell<T>::set (28 samples, 0.23%)core::cell::Cell<T>::replace (28 samples, 0.23%)core::mem::replace (28 samples, 0.23%)core::ptr::write (28 samples, 0.23%)tokio::runtime::context::budget (36 samples, 0.29%)std::thread::local::LocalKey<T>::try_with (36 samples, 0.29%)tokio::runtime::context::budget::_{{closure}} (35 samples, 0.28%)tokio::runtime::coop::poll_proceed::_{{closure}} (35 samples, 0.28%)tokio::runtime::coop::Budget::decrement (5 samples, 0.04%)tokio::runtime::coop::poll_proceed (49 samples, 0.40%)tokio::sync::oneshot::State::is_closed (3 samples, 0.02%)tokio::sync::oneshot::State::load (3 samples, 0.02%)tokio::sync::oneshot::State::set_rx_task (8 samples, 0.06%)core::sync::atomic::AtomicUsize::fetch_or (8 samples, 0.06%)core::sync::atomic::atomic_or (8 samples, 0.06%)<core::task::wake::Waker as core::clone::Clone>::clone (5 samples, 0.04%)tokio::runtime::task::waker::clone_waker (5 samples, 0.04%)tokio::runtime::task::state::State::ref_inc (3 samples, 0.02%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (162 samples, 1.31%)tokio::sync::oneshot::Inner<T>::poll_recv (113 samples, 0.92%)tokio::sync::oneshot::Task::set_task (9 samples, 0.07%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (6 samples, 0.05%)tokio::sync::oneshot::Task::set_task::_{{closure}} (6 samples, 0.05%)[libc.so.6] (8 samples, 0.06%)tokio::runtime::context::with_scheduler (6 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (6 samples, 0.05%)tokio::runtime::context::with_scheduler::_{{closure}} (6 samples, 0.05%)tokio::runtime::context::scoped::Scoped<T>::with (6 samples, 0.05%)tokio::runtime::scheduler::current_thread::_<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule::_{{closure}} (5 samples, 0.04%)tokio::runtime::scheduler::current_thread::Core::push_task (5 samples, 0.04%)alloc::collections::vec_deque::VecDeque<T,A>::push_back (5 samples, 0.04%)alloc::collections::vec_deque::VecDeque<T,A>::is_full (2 samples, 0.02%)tokio::runtime::task::raw::RawTask::schedule (10 samples, 0.08%)tokio::runtime::task::raw::schedule (4 samples, 0.03%)tokio::runtime::task::core::Header::get_scheduler (4 samples, 0.03%)tokio::runtime::task::state::State::load (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)tokio::runtime::task::waker::wake_by_val (18 samples, 0.15%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (18 samples, 0.15%)tokio::runtime::task::state::State::transition_to_notified_by_val (8 samples, 0.06%)tokio::runtime::task::state::State::fetch_update_action (7 samples, 0.06%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (31 samples, 0.25%)tokio::sync::mpsc::block::Block<T>::write::_{{closure}} (31 samples, 0.25%)core::ptr::write (31 samples, 0.25%)[libc.so.6] (31 samples, 0.25%)tokio::sync::mpsc::block::Block<T>::write (34 samples, 0.28%)tokio::sync::mpsc::block::Block<T>::set_ready (3 samples, 0.02%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (3 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_add (2 samples, 0.02%)core::sync::atomic::atomic_add (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::tx_release (2 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::tx_release::_{{closure}} (2 samples, 0.02%)tokio::sync::mpsc::list::Tx<T>::push (54 samples, 0.44%)tokio::sync::mpsc::list::Tx<T>::find_block (15 samples, 0.12%)tokio::sync::mpsc::block::start_index (4 samples, 0.03%)tokio::sync::mpsc::chan::Tx<T,S>::send (88 samples, 0.71%)tokio::sync::mpsc::chan::Chan<T,S>::send (88 samples, 0.71%)tokio::sync::task::atomic_waker::AtomicWaker::wake (16 samples, 0.13%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (9 samples, 0.07%)core::sync::atomic::AtomicUsize::fetch_or (9 samples, 0.07%)core::sync::atomic::atomic_or (9 samples, 0.07%)core::sync::atomic::AtomicUsize::compare_exchange (6 samples, 0.05%)core::sync::atomic::atomic_compare_exchange (6 samples, 0.05%)<tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<tower::util::either::Either<A,B> as core::future::future::Future>::poll (281 samples, 2.28%)<..<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll (281 samples, 2.28%)<..<axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll (281 samples, 2.28%)<..<tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll (281 samples, 2.28%)<..<core::pin::Pin<P> as core::future::future::Future>::poll (281 samples, 2.28%)<..<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (281 samples, 2.28%)<..<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (281 samples, 2.28%)<..<F as futures_core::future::TryFuture>::try_poll (281 samples, 2.28%)<..<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (281 samples, 2.28%)<..<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (281 samples, 2.28%)<..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (281 samples, 2.28%)<..<F as futures_core::future::TryFuture>::try_poll (281 samples, 2.28%)<..<core::pin::Pin<P> as core::future::future::Future>::poll (281 samples, 2.28%)<..<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::_{{closure}} (281 samples, 2.28%)<..tonic::server::grpc::Grpc<T>::unary::_{{closure}} (281 samples, 2.28%)t..<core::pin::Pin<P> as core::future::future::Future>::poll (281 samples, 2.28%)<..<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::PipelineDcacheOpsSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::DcacheBatchRequest>>::call::_{{closure}} (281 samples, 2.28%)<..<core::pin::Pin<P> as core::future::future::Future>::poll (281 samples, 2.28%)<..<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::pipeline_dcache_ops::_{{closure}} (281 samples, 2.28%)<..openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}} (281 samples, 2.28%)o..openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}}::_{{closure}} (281 samples, 2.28%)o..openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}} (281 samples, 2.28%)o..openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}}::_{{closure}} (277 samples, 2.25%)o..tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (115 samples, 0.93%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::inc_num_messages (19 samples, 0.15%)core::sync::atomic::AtomicUsize::load (6 samples, 0.05%)core::sync::atomic::atomic_load (6 samples, 0.05%)[libc.so.6] (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (3 samples, 0.02%)alloc::alloc::dealloc (3 samples, 0.02%)cfree (2 samples, 0.02%)alloc::collections::btree::navigate::LazyLeafRange<alloc::collections::btree::node::marker::Dying,K,V>::deallocating_end (5 samples, 0.04%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Dying,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::deallocating_end (5 samples, 0.04%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Dying,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::deallocate_and_ascend (5 samples, 0.04%)alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>::ascend (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Dying,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::deallocating_next_unchecked (3 samples, 0.02%)alloc::collections::btree::mem::replace (3 samples, 0.02%)alloc::collections::btree::navigate::_<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Dying,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::deallocating_next_unchecked::_{{closure}} (3 samples, 0.02%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Dying,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::deallocating_next (3 samples, 0.02%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,NodeType>,alloc::collections::btree::node::marker::Edge>::right_kv (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::collections::btree::map::BTreeMap<u64,core::option::Option<openraft::log_id::LogId<u64>>>>> (15 samples, 0.12%)core::ptr::drop_in_place<alloc::collections::btree::map::BTreeMap<u64,core::option::Option<openraft::log_id::LogId<u64>>>> (15 samples, 0.12%)<alloc::collections::btree::map::BTreeMap<K,V,A> as core::ops::drop::Drop>::drop (15 samples, 0.12%)core::mem::drop (15 samples, 0.12%)core::ptr::drop_in_place<alloc::collections::btree::map::IntoIter<u64,core::option::Option<openraft::log_id::LogId<u64>>>> (15 samples, 0.12%)<alloc::collections::btree::map::IntoIter<K,V,A> as core::ops::drop::Drop>::drop (15 samples, 0.12%)alloc::collections::btree::map::IntoIter<K,V,A>::dying_next (14 samples, 0.11%)alloc::collections::btree::navigate::LazyLeafRange<alloc::collections::btree::node::marker::Dying,K,V>::deallocating_next_unchecked (5 samples, 0.04%)alloc::collections::btree::navigate::LazyLeafRange<BorrowType,K,V>::init_front (2 samples, 0.02%)core::ptr::drop_in_place<openraft::metrics::raft_metrics::RaftMetrics<u64,openraft::node::BasicNode>> (16 samples, 0.13%)tokio::sync::watch::Sender<T>::receiver_count (2 samples, 0.02%)core::mem::drop (2 samples, 0.02%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::RwLockWriteGuard<openraft::metrics::raft_metrics::RaftMetrics<u64,openraft::node::BasicNode>>> (2 samples, 0.02%)core::ptr::drop_in_place<lock_api::rwlock::RwLockWriteGuard<parking_lot::raw_rwlock::RawRwLock,openraft::metrics::raft_metrics::RaftMetrics<u64,openraft::node::BasicNode>>> (2 samples, 0.02%)<lock_api::rwlock::RwLockWriteGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<parking_lot::raw_rwlock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_exclusive (2 samples, 0.02%)core::ptr::read (8 samples, 0.06%)std::panic::catch_unwind (10 samples, 0.08%)std::panicking::try (10 samples, 0.08%)std::panicking::try::do_call (10 samples, 0.08%)<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (10 samples, 0.08%)tokio::sync::watch::Sender<T>::send_if_modified::_{{closure}} (10 samples, 0.08%)tokio::sync::watch::Sender<T>::send_modify::_{{closure}} (10 samples, 0.08%)tokio::sync::watch::Sender<T>::send_replace::_{{closure}} (10 samples, 0.08%)core::mem::swap (10 samples, 0.08%)core::ptr::swap_nonoverlapping (10 samples, 0.08%)core::ptr::swap_nonoverlapping_simple_untyped (10 samples, 0.08%)core::mem::swap_simple (10 samples, 0.08%)core::ptr::write (2 samples, 0.02%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::util::linked_list::LinkedList<tokio::sync::notify::Waiter,tokio::sync::notify::Waiter>>> (2 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::util::linked_list::LinkedList<tokio::sync::notify::Waiter,tokio::sync::notify::Waiter>>> (2 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (2 samples, 0.02%)tokio::sync::notify::Notify::notify_waiters (3 samples, 0.02%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::util::linked_list::LinkedList<tokio::sync::notify::Waiter,tokio::sync::notify::Waiter>>> (12 samples, 0.10%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::util::linked_list::LinkedList<tokio::sync::notify::Waiter,tokio::sync::notify::Waiter>>> (12 samples, 0.10%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (12 samples, 0.10%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (12 samples, 0.10%)tokio::loom::std::parking_lot::Mutex<T>::lock (11 samples, 0.09%)lock_api::mutex::Mutex<R,T>::lock (11 samples, 0.09%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (11 samples, 0.09%)tokio::sync::watch::big_notify::BigNotify::notify_waiters (35 samples, 0.28%)tokio::sync::notify::Notify::notify_waiters (34 samples, 0.28%)tokio::sync::notify::atomic_inc_num_notify_waiters_calls (6 samples, 0.05%)core::sync::atomic::AtomicUsize::fetch_add (6 samples, 0.05%)core::sync::atomic::atomic_add (6 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::flush_metrics (76 samples, 0.62%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::report_metrics (76 samples, 0.62%)tokio::sync::watch::Sender<T>::send (76 samples, 0.62%)tokio::sync::watch::Sender<T>::send_replace (52 samples, 0.42%)tokio::sync::watch::Sender<T>::send_modify (52 samples, 0.42%)tokio::sync::watch::Sender<T>::send_if_modified (52 samples, 0.42%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::try_purge_log (2 samples, 0.02%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::try_commit_granted (3 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_notify (9 samples, 0.07%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_replication_progress (9 samples, 0.07%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_progress (9 samples, 0.07%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_success_progress (6 samples, 0.05%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_matching (6 samples, 0.05%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command (2 samples, 0.02%)alloc::boxed::Box<T>::pin (2 samples, 0.02%)alloc::boxed::Box<T>::new (2 samples, 0.02%)alloc::alloc::exchange_malloc (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.02%)alloc::alloc::Global::alloc_impl (2 samples, 0.02%)alloc::alloc::alloc (2 samples, 0.02%)malloc (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_notify::_{{closure}} (14 samples, 0.11%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (14 samples, 0.11%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (14 samples, 0.11%)__rust_alloc (2 samples, 0.02%)alloc::alloc::exchange_malloc (14 samples, 0.11%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (13 samples, 0.11%)alloc::alloc::Global::alloc_impl (13 samples, 0.11%)alloc::alloc::alloc (13 samples, 0.11%)malloc (11 samples, 0.09%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,Type>::force (4 samples, 0.03%)alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::force (4 samples, 0.03%)alloc::collections::btree::map::BTreeMap<K,V,A>::entry (17 samples, 0.14%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (17 samples, 0.14%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (13 samples, 0.11%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (13 samples, 0.11%)core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (5 samples, 0.04%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>::insert_fit (7 samples, 0.06%)alloc::collections::btree::map::BTreeMap<K,V,A>::insert (50 samples, 0.41%)alloc::collections::btree::map::entry::VacantEntry<K,V,A>::insert (29 samples, 0.24%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>::insert_recursing (19 samples, 0.15%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>::insert (10 samples, 0.08%)alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>::len (3 samples, 0.02%)openraft::engine::engine_impl::Engine<C>::get_leader_handler_or_reject (52 samples, 0.42%)openraft::engine::engine_impl::Engine<C>::leader_handler (7 samples, 0.06%)<alloc::vec::Vec<T,A> as core::ops::deref::Deref>::deref (3 samples, 0.02%)[libc.so.6] (15 samples, 0.12%)alloc::collections::vec_deque::VecDeque<T,A>::buffer_write (28 samples, 0.23%)core::ptr::write (28 samples, 0.23%)[libc.so.6] (28 samples, 0.23%)alloc::collections::vec_deque::wrap_index (2 samples, 0.02%)openraft::engine::engine_output::EngineOutput<C>::push_command (52 samples, 0.42%)alloc::collections::vec_deque::VecDeque<T,A>::push_back (33 samples, 0.27%)alloc::collections::vec_deque::VecDeque<T,A>::to_physical_idx (4 samples, 0.03%)alloc::collections::vec_deque::VecDeque<T,A>::wrap_add (4 samples, 0.03%)core::num::<impl usize>::wrapping_add (2 samples, 0.02%)openraft::engine::handler::leader_handler::LeaderHandler<C>::replication_handler (2 samples, 0.02%)<tracing_core::metadata::Level as core::cmp::PartialOrd<tracing_core::metadata::LevelFilter>>::le (3 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (4 samples, 0.03%)<openraft::progress::inflight::Inflight<NID> as core::cmp::PartialEq>::eq (4 samples, 0.03%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &mut A>::eq (3 samples, 0.02%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::initiate_replication (55 samples, 0.45%)openraft::progress::entry::ProgressEntry<NID>::next_send (13 samples, 0.11%)<core::option::Option<&openraft::log_id::LogId<NID>> as openraft::log_id::log_id_option_ext::LogIdOptionExt>::next_index (14 samples, 0.11%)tracing_core::dispatcher::has_been_set (3 samples, 0.02%)core::sync::atomic::AtomicBool::load (3 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)openraft::raft_state::RaftState<NID,N>::assign_log_ids (21 samples, 0.17%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::write_entry (281 samples, 2.28%)o..openraft::engine::handler::leader_handler::LeaderHandler<C>::leader_append_entries (154 samples, 1.25%)openraft::raft_state::RaftState<NID,N>::extend_log_ids_from_same_leader (5 samples, 0.04%)openraft::engine::log_id_list::LogIdList<NID>::extend_from_same_leader (5 samples, 0.04%)openraft::engine::log_id_list::LogIdList<NID>::append (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_api_msg::_{{closure}} (329 samples, 2.67%)op..openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_api_msg::_{{closure}}::_{{closure}} (329 samples, 2.67%)op..tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)<F as core::future::into_future::IntoFuture>::into_future (22 samples, 0.18%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::next_kv (7 samples, 0.06%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,NodeType>,alloc::collections::btree::node::marker::Edge>::right_kv (7 samples, 0.06%)alloc::collections::btree::navigate::_<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::next_unchecked::_{{closure}} (9 samples, 0.07%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,NodeType>,alloc::collections::btree::node::marker::KV>::into_kv (2 samples, 0.02%)core::slice::<impl [T]>::get_unchecked (2 samples, 0.02%)<usize as core::slice::index::SliceIndex<[T]>>::get_unchecked (2 samples, 0.02%)core::ptr::const_ptr::<impl *const T>::add (2 samples, 0.02%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::next_unchecked (10 samples, 0.08%)alloc::collections::btree::mem::replace (10 samples, 0.08%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::first_leaf_edge (2 samples, 0.02%)<alloc::collections::btree::map::Iter<K,V> as core::iter::traits::iterator::Iterator>::next (32 samples, 0.26%)alloc::collections::btree::navigate::LazyLeafRange<alloc::collections::btree::node::marker::Immut,K,V>::next_unchecked (17 samples, 0.14%)alloc::collections::btree::navigate::LazyLeafRange<BorrowType,K,V>::init_front (7 samples, 0.06%)<alloc::collections::btree::map::Values<K,V> as core::iter::traits::iterator::Iterator>::next (33 samples, 0.27%)<core::option::Option<openraft::log_id::LogId<NID>> as openraft::log_id::log_id_option_ext::LogIdOptionExt>::next_index (6 samples, 0.05%)[libc.so.6] (186 samples, 1.51%)alloc::collections::btree::map::BTreeMap<K,V,A>::values (2 samples, 0.02%)alloc::collections::btree::map::BTreeMap<K,V,A>::iter (2 samples, 0.02%)core::ptr::drop_in_place<openraft::core::raft_core::RaftCore<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::append_to_log<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>>::{{closure}}> (4 samples, 0.03%)core::slice::<impl [T]>::last (2 samples, 0.02%)[libc.so.6] (35 samples, 0.28%)core::ptr::drop_in_place<openraft::core::raft_core::RaftCore<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::append_to_log<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>>::{{closure}}::{{closure}}> (3 samples, 0.02%)<tracing::span::Span as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (11 samples, 0.09%)core::ptr::drop_in_place<core::option::Option<tracing::span::Inner>> (4 samples, 0.03%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.02%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log::_{{closure}} (3 samples, 0.02%)[libc.so.6] (66 samples, 0.54%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<(),openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<(),openraft::storage_error::StorageError<u64>>+core::marker::Send>> (2 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (2 samples, 0.02%)alloc::alloc::dealloc (2 samples, 0.02%)__rdl_dealloc (2 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::dealloc (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::sync::Arc<dcache::store::DcacheStore>>> (4 samples, 0.03%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)tokio::sync::batch_semaphore::Semaphore::release (4 samples, 0.03%)<core::pin::Pin<P> as core::future::future::Future>::poll (117 samples, 0.95%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftLogStorage<C>>::append::_{{closure}} (117 samples, 0.95%)dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log (11 samples, 0.09%)alloc::boxed::Box<T>::pin (11 samples, 0.09%)alloc::boxed::Box<T>::new (11 samples, 0.09%)[libc.so.6] (11 samples, 0.09%)[libc.so.6] (12 samples, 0.10%)__rdl_alloc (2 samples, 0.02%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftLogStorage<C>>::append (42 samples, 0.34%)alloc::boxed::Box<T>::pin (23 samples, 0.19%)alloc::boxed::Box<T>::new (23 samples, 0.19%)alloc::alloc::exchange_malloc (11 samples, 0.09%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (11 samples, 0.09%)alloc::alloc::Global::alloc_impl (11 samples, 0.09%)alloc::alloc::alloc (11 samples, 0.09%)malloc (8 samples, 0.06%)core::option::Option<T>::as_ref (4 samples, 0.03%)alloc::sync::Arc<T,A>::get_mut_unchecked (5 samples, 0.04%)core::mem::drop (5 samples, 0.04%)core::ptr::drop_in_place<alloc::sync::Weak<tokio::sync::oneshot::Inner<core::result::Result<core::option::Option<openraft::log_id::LogId<u64>>,std::io::error::Error>>,&alloc::alloc::Global>> (5 samples, 0.04%)<alloc::sync::Weak<T,A> as core::ops::drop::Drop>::drop (5 samples, 0.04%)tokio::io::interest::Interest::is_readable (2 samples, 0.02%)tokio::sync::oneshot::State::is_tx_task_set (2 samples, 0.02%)alloc::sync::Arc<T,A>::drop_slow (20 samples, 0.16%)core::ptr::drop_in_place<tokio::sync::oneshot::Inner<core::result::Result<core::option::Option<openraft::log_id::LogId<u64>>,std::io::error::Error>>> (10 samples, 0.08%)<tokio::sync::oneshot::Inner<T> as core::ops::drop::Drop>::drop (10 samples, 0.08%)tokio::sync::oneshot::mut_load (4 samples, 0.03%)tokio::loom::std::atomic_usize::AtomicUsize::with_mut (4 samples, 0.03%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<core::option::Option<openraft::log_id::LogId<u64>>,std::io::error::Error>>>>> (31 samples, 0.25%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<core::option::Option<openraft::log_id::LogId<u64>>,std::io::error::Error>>>> (31 samples, 0.25%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (31 samples, 0.25%)cfree (10 samples, 0.08%)[libc.so.6] (7 samples, 0.06%)tokio::runtime::coop::RestoreOnPending::made_progress (8 samples, 0.06%)core::cell::Cell<T>::set (6 samples, 0.05%)core::cell::Cell<T>::replace (6 samples, 0.05%)core::mem::replace (6 samples, 0.05%)core::ptr::write (6 samples, 0.05%)core::cell::Cell<T>::set (17 samples, 0.14%)core::cell::Cell<T>::replace (17 samples, 0.14%)core::mem::replace (17 samples, 0.14%)core::ptr::write (17 samples, 0.14%)tokio::runtime::coop::poll_proceed (26 samples, 0.21%)tokio::runtime::context::budget (24 samples, 0.19%)std::thread::local::LocalKey<T>::try_with (24 samples, 0.19%)tokio::runtime::context::budget::_{{closure}} (23 samples, 0.19%)tokio::runtime::coop::poll_proceed::_{{closure}} (23 samples, 0.19%)tokio::runtime::coop::Budget::decrement (6 samples, 0.05%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (83 samples, 0.67%)tokio::sync::oneshot::Inner<T>::poll_recv (45 samples, 0.37%)tokio::sync::oneshot::State::load (6 samples, 0.05%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)[libc.so.6] (27 samples, 0.22%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (3 samples, 0.02%)alloc::alloc::dealloc (3 samples, 0.02%)cfree (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<(),openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<(),openraft::storage_error::StorageError<u64>>+core::marker::Send>> (6 samples, 0.05%)core::ptr::drop_in_place<<openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>> as openraft::storage::v2::RaftLogStorage<dcache::DcacheTypeConfig>>::append<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>>::{{closure}}> (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::oneshot::Receiver<core::result::Result<core::option::Option<openraft::log_id::LogId<u64>>,std::io::error::Error>>> (9 samples, 0.07%)<tokio::sync::oneshot::Receiver<T> as core::ops::drop::Drop>::drop (8 samples, 0.06%)core::option::Option<T>::as_ref (8 samples, 0.06%)openraft::storage::callback::LogFlushed<NID>::new (2 samples, 0.02%)<alloc::sync::Arc<T,A> as core::clone::Clone>::clone (4 samples, 0.03%)__rust_alloc (3 samples, 0.02%)alloc::sync::Arc<T>::new (17 samples, 0.14%)alloc::boxed::Box<T>::new (17 samples, 0.14%)alloc::alloc::exchange_malloc (11 samples, 0.09%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (11 samples, 0.09%)alloc::alloc::Global::alloc_impl (11 samples, 0.09%)alloc::alloc::alloc (11 samples, 0.09%)malloc (7 samples, 0.06%)tokio::loom::std::atomic_usize::AtomicUsize::new (3 samples, 0.02%)tokio::sync::oneshot::State::as_usize (3 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}}::_{{closure}} (332 samples, 2.69%)op..tokio::sync::oneshot::channel (30 samples, 0.24%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}} (409 samples, 3.32%)ope..tracing::__macro_support::__disabled_span (6 samples, 0.05%)tracing::span::Span::new_disabled (6 samples, 0.05%)[libc.so.6] (40 samples, 0.32%)core::ptr::drop_in_place<tracing::span::Span> (2 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (3 samples, 0.02%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::RaftLogReader<C>>::try_get_log_entries::_{{closure}} (3 samples, 0.02%)[libc.so.6] (17 samples, 0.14%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::RaftLogReader<C>>::try_get_log_entries (29 samples, 0.24%)alloc::boxed::Box<T>::pin (29 samples, 0.24%)alloc::boxed::Box<T>::new (29 samples, 0.24%)alloc::alloc::exchange_malloc (11 samples, 0.09%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (11 samples, 0.09%)alloc::alloc::Global::alloc_impl (11 samples, 0.09%)alloc::alloc::alloc (11 samples, 0.09%)malloc (10 samples, 0.08%)[libc.so.6] (65 samples, 0.53%)__rdl_dealloc (3 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::dealloc (3 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (7 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (7 samples, 0.06%)alloc::alloc::dealloc (7 samples, 0.06%)cfree (3 samples, 0.02%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (11 samples, 0.09%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (11 samples, 0.09%)core::ptr::drop_in_place<<openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>> as openraft::storage::RaftLogReader<dcache::DcacheTypeConfig>>::try_get_log_entries<core::ops::range::Range<u64>>::{{closure}}> (4 samples, 0.03%)<core::pin::Pin<P> as core::future::future::Future>::poll (131 samples, 1.06%)openraft::storage::log_store_ext::RaftLogReaderExt::get_log_entries::_{{closure}} (131 samples, 1.06%)[libc.so.6] (27 samples, 0.22%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (7 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (6 samples, 0.05%)alloc::alloc::dealloc (6 samples, 0.05%)cfree (6 samples, 0.05%)[libc.so.6] (5 samples, 0.04%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (9 samples, 0.07%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (9 samples, 0.07%)[libc.so.6] (11 samples, 0.09%)[libc.so.6] (14 samples, 0.11%)<alloc::sync::Arc<T,A> as core::ops::deref::Deref>::deref (2 samples, 0.02%)alloc::sync::Arc<T,A>::inner (2 samples, 0.02%)core::ptr::non_null::NonNull<T>::as_ref (2 samples, 0.02%)tokio::runtime::context::with_scheduler (6 samples, 0.05%)std::thread::local::LocalKey<T>::try_with (6 samples, 0.05%)tokio::runtime::context::with_scheduler::_{{closure}} (5 samples, 0.04%)tokio::runtime::context::scoped::Scoped<T>::with (5 samples, 0.04%)tokio::runtime::scheduler::current_thread::_<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule::_{{closure}} (5 samples, 0.04%)tokio::runtime::scheduler::current_thread::Core::push_task (3 samples, 0.02%)alloc::collections::vec_deque::VecDeque<T,A>::push_back (3 samples, 0.02%)tokio::runtime::task::raw::RawTask::schedule (14 samples, 0.11%)tokio::runtime::task::raw::schedule (8 samples, 0.06%)tokio::runtime::task::core::Header::get_scheduler (8 samples, 0.06%)tokio::runtime::task::waker::wake_by_val (22 samples, 0.18%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (22 samples, 0.18%)tokio::runtime::task::state::State::transition_to_notified_by_val (6 samples, 0.05%)tokio::runtime::task::state::State::fetch_update_action (6 samples, 0.05%)tokio::runtime::task::state::State::load (3 samples, 0.02%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (2 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (21 samples, 0.17%)tokio::sync::mpsc::block::Block<T>::write::_{{closure}} (21 samples, 0.17%)core::ptr::write (21 samples, 0.17%)[libc.so.6] (21 samples, 0.17%)tokio::sync::mpsc::block::Block<T>::write (24 samples, 0.19%)tokio::sync::mpsc::block::Block<T>::set_ready (3 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_or (3 samples, 0.02%)core::sync::atomic::atomic_or (3 samples, 0.02%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (2 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_add (2 samples, 0.02%)core::sync::atomic::atomic_add (2 samples, 0.02%)tokio::sync::mpsc::list::Tx<T>::push (39 samples, 0.32%)tokio::sync::mpsc::list::Tx<T>::find_block (13 samples, 0.11%)tokio::sync::mpsc::block::start_index (3 samples, 0.02%)tokio::sync::mpsc::chan::Tx<T,S>::send (78 samples, 0.63%)tokio::sync::mpsc::chan::Chan<T,S>::send (78 samples, 0.63%)tokio::sync::task::atomic_waker::AtomicWaker::wake (16 samples, 0.13%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (11 samples, 0.09%)core::sync::atomic::AtomicUsize::fetch_or (11 samples, 0.09%)core::sync::atomic::atomic_or (11 samples, 0.09%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (9 samples, 0.07%)core::sync::atomic::AtomicUsize::compare_exchange (3 samples, 0.02%)core::sync::atomic::atomic_compare_exchange (3 samples, 0.02%)openraft::core::sm::Handle<C>::send (132 samples, 1.07%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (117 samples, 0.95%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::inc_num_messages (19 samples, 0.15%)core::sync::atomic::AtomicUsize::load (5 samples, 0.04%)core::sync::atomic::atomic_load (5 samples, 0.04%)openraft::storage::log_store_ext::RaftLogReaderExt::get_log_entries (22 samples, 0.18%)alloc::boxed::Box<T>::pin (20 samples, 0.16%)alloc::boxed::Box<T>::new (20 samples, 0.16%)alloc::alloc::exchange_malloc (5 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (5 samples, 0.04%)alloc::alloc::Global::alloc_impl (5 samples, 0.04%)alloc::alloc::alloc (5 samples, 0.04%)malloc (4 samples, 0.03%)tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}}::_{{closure}} (351 samples, 2.85%)op..tracing_core::metadata::LevelFilter::current (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)tracing::__macro_support::__disabled_span (2 samples, 0.02%)tracing::span::Span::new_disabled (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}} (418 samples, 3.39%)ope..tracing_core::metadata::LevelFilter::current (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)openraft::engine::command::Command<C>::condition (16 samples, 0.13%)openraft::engine::engine_impl::Engine<C>::leader_handler (7 samples, 0.06%)<openraft::progress::VecProgress<ID,V,P,QS> as openraft::progress::Progress<ID,V,P,QS>>::get_mut (7 samples, 0.06%)openraft::progress::VecProgress<ID,V,P,QS>::index (4 samples, 0.03%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)core::cmp::PartialOrd::ge (7 samples, 0.06%)<core::option::Option<T> as core::cmp::PartialOrd>::partial_cmp (6 samples, 0.05%)<openraft::log_id::LogId<NID> as core::cmp::PartialOrd>::partial_cmp (4 samples, 0.03%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_matching (3 samples, 0.02%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_local_progress (27 samples, 0.22%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (4 samples, 0.03%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (14 samples, 0.11%)tokio::sync::mpsc::block::Block<T>::write::_{{closure}} (14 samples, 0.11%)core::ptr::write (14 samples, 0.11%)tokio::sync::mpsc::block::Block<T>::write (21 samples, 0.17%)tokio::sync::mpsc::block::Block<T>::set_ready (7 samples, 0.06%)core::sync::atomic::AtomicUsize::fetch_or (6 samples, 0.05%)core::sync::atomic::atomic_or (6 samples, 0.05%)core::sync::atomic::AtomicPtr<T>::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_add (4 samples, 0.03%)core::sync::atomic::atomic_add (4 samples, 0.03%)tokio::sync::mpsc::block::Block<T>::is_final (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::tx_release (2 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_or (2 samples, 0.02%)core::sync::atomic::atomic_or (2 samples, 0.02%)tokio::sync::mpsc::list::Tx<T>::push (54 samples, 0.44%)tokio::sync::mpsc::list::Tx<T>::find_block (29 samples, 0.24%)tokio::sync::mpsc::block::start_index (5 samples, 0.04%)core::sync::atomic::AtomicUsize::fetch_or (17 samples, 0.14%)core::sync::atomic::atomic_or (17 samples, 0.14%)tokio::sync::mpsc::chan::Tx<T,S>::send (85 samples, 0.69%)tokio::sync::mpsc::chan::Chan<T,S>::send (85 samples, 0.69%)tokio::sync::task::atomic_waker::AtomicWaker::wake (30 samples, 0.24%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (18 samples, 0.15%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (8 samples, 0.06%)core::sync::atomic::AtomicUsize::compare_exchange (12 samples, 0.10%)core::sync::atomic::atomic_compare_exchange (12 samples, 0.10%)core::sync::atomic::AtomicUsize::load (10 samples, 0.08%)core::sync::atomic::atomic_load (10 samples, 0.08%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (143 samples, 1.16%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::inc_num_messages (35 samples, 0.28%)tokio::sync::mpsc::chan::Tx<T,S>::semaphore (3 samples, 0.02%)<alloc::sync::Arc<T,A> as core::ops::deref::Deref>::deref (3 samples, 0.02%)alloc::sync::Arc<T,A>::inner (3 samples, 0.02%)core::ptr::non_null::NonNull<T>::as_ref (3 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (1,413 samples, 11.47%)<core::pin::Pin<P..<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (1,412 samples, 11.46%)<openraft::core::..[libc.so.6] (62 samples, 0.50%)__rust_alloc (3 samples, 0.02%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command (184 samples, 1.49%)alloc::boxed::Box<T>::pin (182 samples, 1.48%)alloc::boxed::Box<T>::new (182 samples, 1.48%)alloc::alloc::exchange_malloc (118 samples, 0.96%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (118 samples, 0.96%)alloc::alloc::Global::alloc_impl (118 samples, 0.96%)alloc::alloc::alloc (118 samples, 0.96%)malloc (114 samples, 0.93%)[libc.so.6] (81 samples, 0.66%)[libc.so.6] (23 samples, 0.19%)[libc.so.6] (153 samples, 1.24%)__rdl_dealloc (2 samples, 0.02%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::dealloc (2 samples, 0.02%)__rust_dealloc (3 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (67 samples, 0.54%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (67 samples, 0.54%)alloc::alloc::dealloc (67 samples, 0.54%)cfree (62 samples, 0.50%)[libc.so.6] (55 samples, 0.45%)[libc.so.6] (32 samples, 0.26%)[libc.so.6] (16 samples, 0.13%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<core::option::Option<openraft::engine::command::Command<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (70 samples, 0.57%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<core::option::Option<openraft::engine::command::Command<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (70 samples, 0.57%)core::ptr::drop_in_place<<openraft::core::raft_core::RaftCore<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>> as openraft::runtime::RaftRuntime<dcache::DcacheTypeConfig>>::run_command::{{closure}}> (3 samples, 0.02%)openraft::engine::engine_output::EngineOutput<C>::pop_command (35 samples, 0.28%)alloc::collections::vec_deque::VecDeque<T,A>::pop_front (35 samples, 0.28%)alloc::collections::vec_deque::VecDeque<T,A>::buffer_read (30 samples, 0.24%)core::ptr::read (30 samples, 0.24%)[libc.so.6] (30 samples, 0.24%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_raft_msg::_{{closure}} (2,207 samples, 17.91%)openraft::core::raft_core::R..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (1,878 samples, 15.24%)openraft::core::raft_co..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (1,878 samples, 15.24%)openraft::core::raft_co..tracing_core::metadata::LevelFilter::current (3 samples, 0.02%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (2 samples, 0.02%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (2 samples, 0.02%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (2 samples, 0.02%)alloc::collections::btree::map::BTreeMap<K,V,A>::get (4 samples, 0.03%)core::option::Option<T>::as_ref (2 samples, 0.02%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (10 samples, 0.08%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (2 samples, 0.02%)tokio::sync::mpsc::chan::Tx<T,S>::send (2 samples, 0.02%)tokio::sync::mpsc::chan::Chan<T,S>::send (2 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (11 samples, 0.09%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command (8 samples, 0.06%)alloc::boxed::Box<T>::pin (8 samples, 0.06%)alloc::boxed::Box<T>::new (8 samples, 0.06%)alloc::alloc::exchange_malloc (7 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (7 samples, 0.06%)alloc::alloc::Global::alloc_impl (7 samples, 0.06%)alloc::alloc::alloc (7 samples, 0.06%)malloc (7 samples, 0.06%)[libc.so.6] (6 samples, 0.05%)[libc.so.6] (3 samples, 0.02%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (2,335 samples, 18.95%)<tracing::instrument::Instrume..openraft::core::raft_core::RaftCore<C,N,LS,SM>::main::_{{closure}} (2,335 samples, 18.95%)openraft::core::raft_core::Raf..<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (2,335 samples, 18.95%)<tracing::instrument::Instrume..openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}} (2,335 samples, 18.95%)openraft::core::raft_core::Raf..openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}}::_{{closure}} (2,335 samples, 18.95%)openraft::core::raft_core::Raf..openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}} (2,335 samples, 18.95%)openraft::core::raft_core::Raf..openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}}::_{{closure}} (2,335 samples, 18.95%)openraft::core::raft_core::Raf..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (29 samples, 0.24%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (29 samples, 0.24%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (2 samples, 0.02%)core::str::converts::from_utf8 (2 samples, 0.02%)prost::encoding::<impl prost::encoding::sealed::BytesAdapter for alloc::vec::Vec<u8>>::replace_with (4 samples, 0.03%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)<dcache::protobuf::dcache::RaftReply as prost::message::Message>::merge_field (7 samples, 0.06%)prost::encoding::string::merge (7 samples, 0.06%)prost::encoding::bytes::merge_one_copy (5 samples, 0.04%)<tonic::codec::prost::ProstDecoder<U> as tonic::codec::Decoder>::decode (12 samples, 0.10%)prost::message::Message::decode (11 samples, 0.09%)prost::message::Message::merge (11 samples, 0.09%)prost::encoding::decode_key (3 samples, 0.02%)prost::encoding::decode_varint (2 samples, 0.02%)bytes::buf::buf_impl::Buf::get_u32 (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (2 samples, 0.02%)bytes::bytes_mut::BytesMut::set_start (2 samples, 0.02%)tonic::codec::decode::Streaming<T>::decode_chunk (20 samples, 0.16%)tonic::codec::decode::StreamingInner::decode_chunk (5 samples, 0.04%)h2::proto::streams::recv::Recv::release_capacity (8 samples, 0.06%)h2::proto::streams::recv::Recv::release_connection_capacity (4 samples, 0.03%)h2::share::FlowControl::release_capacity (10 samples, 0.08%)h2::proto::streams::streams::OpaqueStreamRef::release_capacity (10 samples, 0.08%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)<h2::proto::streams::store::Store as core::ops::index::IndexMut<h2::proto::streams::store::Key>>::index_mut (2 samples, 0.02%)slab::Slab<T>::get_mut (2 samples, 0.02%)h2::proto::streams::recv::Recv::poll_data (4 samples, 0.03%)h2::proto::streams::buffer::Deque::pop_front (4 samples, 0.03%)slab::Slab<T>::remove (2 samples, 0.02%)slab::Slab<T>::try_remove (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::ptr::read (2 samples, 0.02%)h2::share::RecvStream::poll_data (10 samples, 0.08%)h2::proto::streams::streams::OpaqueStreamRef::poll_data (7 samples, 0.06%)<hyper::body::body::Body as http_body::Body>::poll_data (27 samples, 0.22%)hyper::body::body::Body::poll_inner (26 samples, 0.21%)hyper::proto::h2::ping::Recorder::record_data (4 samples, 0.03%)<bytes::bytes::Bytes as bytes::buf::buf_impl::Buf>::copy_to_bytes (2 samples, 0.02%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (33 samples, 0.27%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (33 samples, 0.27%)<http_body::combinators::map_data::MapData<B,F> as http_body::Body>::poll_data (32 samples, 0.26%)tonic::codec::decode::Streaming<T>::new::_{{closure}} (3 samples, 0.02%)<tokio_stream::stream_ext::try_next::TryNext<St> as core::future::future::Future>::poll (62 samples, 0.50%)<tokio_stream::stream_ext::next::Next<St> as core::future::future::Future>::poll (62 samples, 0.50%)<&mut S as futures_core::stream::Stream>::poll_next (62 samples, 0.50%)<core::pin::Pin<P> as futures_core::stream::Stream>::poll_next (62 samples, 0.50%)<tonic::codec::decode::Streaming<T> as futures_core::stream::Stream>::poll_next (62 samples, 0.50%)tonic::codec::decode::StreamingInner::poll_data (40 samples, 0.32%)bytes::bytes_mut::shared_v_drop (2 samples, 0.02%)<core::sync::atomic::AtomicPtr<T> as bytes::loom::sync::atomic::AtomicMut<T>>::with_mut (2 samples, 0.02%)core::task::wake::Waker::wake (3 samples, 0.02%)tokio::runtime::task::waker::wake_by_val (3 samples, 0.02%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (2 samples, 0.02%)h2::proto::streams::counts::Counts::transition_after (6 samples, 0.05%)h2::proto::streams::store::Ptr::remove (6 samples, 0.05%)slab::Slab<T>::remove (2 samples, 0.02%)slab::Slab<T>::try_remove (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::ptr::read (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)h2::proto::streams::counts::Counts::transition (9 samples, 0.07%)h2::proto::streams::streams::drop_stream_ref::_{{closure}} (2 samples, 0.02%)h2::proto::streams::store::Queue<N>::pop (2 samples, 0.02%)core::ptr::drop_in_place<h2::share::FlowControl> (17 samples, 0.14%)core::ptr::drop_in_place<h2::proto::streams::streams::OpaqueStreamRef> (17 samples, 0.14%)<h2::proto::streams::streams::OpaqueStreamRef as core::ops::drop::Drop>::drop (17 samples, 0.14%)h2::proto::streams::streams::drop_stream_ref (16 samples, 0.13%)core::ptr::drop_in_place<tonic::codec::decode::Streaming<dcache::protobuf::dcache::RaftReply>> (22 samples, 0.18%)core::ptr::drop_in_place<tonic::codec::decode::StreamingInner> (22 samples, 0.18%)core::ptr::drop_in_place<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>> (21 samples, 0.17%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>>> (21 samples, 0.17%)core::ptr::drop_in_place<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>> (21 samples, 0.17%)core::ptr::drop_in_place<hyper::body::body::Body> (20 samples, 0.16%)core::ptr::drop_in_place<hyper::body::body::Kind> (20 samples, 0.16%)core::ptr::drop_in_place<h2::share::RecvStream> (20 samples, 0.16%)tokio::sync::mpsc::list::Tx<T>::push (4 samples, 0.03%)tokio::sync::mpsc::block::Block<T>::write (2 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::write::_{{closure}} (2 samples, 0.02%)core::ptr::write (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)tokio::sync::mpsc::chan::Tx<T,S>::send (10 samples, 0.08%)tokio::sync::mpsc::chan::Chan<T,S>::send (9 samples, 0.07%)tokio::sync::task::atomic_waker::AtomicWaker::wake (3 samples, 0.02%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (3 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_or (3 samples, 0.02%)core::sync::atomic::atomic_or (3 samples, 0.02%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (12 samples, 0.10%)alloc::sync::Arc<T>::new (2 samples, 0.02%)alloc::boxed::Box<T>::new (2 samples, 0.02%)alloc::alloc::exchange_malloc (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.02%)alloc::alloc::Global::alloc_impl (2 samples, 0.02%)alloc::alloc::alloc (2 samples, 0.02%)malloc (2 samples, 0.02%)tokio::loom::std::atomic_usize::AtomicUsize::new (2 samples, 0.02%)tokio::sync::oneshot::channel (6 samples, 0.05%)thread_local::ThreadLocal<T>::get_inner (3 samples, 0.02%)<tracing_subscriber::fmt::Subscriber<N,E,F,W> as tracing_core::subscriber::Subscriber>::current_span (13 samples, 0.11%)<tracing_subscriber::layer::layered::Layered<L,S> as tracing_core::subscriber::Subscriber>::current_span (11 samples, 0.09%)<tracing_subscriber::layer::layered::Layered<L,S> as tracing_core::subscriber::Subscriber>::current_span (11 samples, 0.09%)<tracing_subscriber::registry::sharded::Registry as tracing_core::subscriber::Subscriber>::current_span (11 samples, 0.09%)thread_local::ThreadLocal<T>::get (7 samples, 0.06%)thread_local::thread_id::get (4 samples, 0.03%)std::thread::local::LocalKey<T>::with (4 samples, 0.03%)std::thread::local::LocalKey<T>::try_with (4 samples, 0.03%)thread_local::thread_id::get::_{{closure}} (2 samples, 0.02%)tracing_core::dispatcher::Dispatch::current_span (15 samples, 0.12%)tracing_core::dispatcher::Dispatch::subscriber (2 samples, 0.02%)<T as tonic::client::service::GrpcService<ReqBody>>::call (41 samples, 0.33%)<tonic::transport::channel::Channel as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::call (41 samples, 0.33%)<tower::buffer::service::Buffer<T,Request> as tower_service::Service<Request>>::call (41 samples, 0.33%)tracing::span::Span::current (22 samples, 0.18%)tracing_core::dispatcher::get_default (20 samples, 0.16%)tracing::span::Span::current::_{{closure}} (19 samples, 0.15%)tracing_core::span::Current::into_inner (4 samples, 0.03%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>,tower::buffer::error::ServiceError>>>>> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>,tower::buffer::error::ServiceError>>>> (2 samples, 0.02%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)alloc::sync::Arc<T,A>::drop_slow (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::oneshot::Inner<core::result::Result<tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>,tower::buffer::error::ServiceError>>> (2 samples, 0.02%)tokio::io::interest::Interest::is_writable (2 samples, 0.02%)tokio::runtime::context::budget (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::runtime::context::budget::_{{closure}} (2 samples, 0.02%)tokio::runtime::coop::poll_proceed::_{{closure}} (2 samples, 0.02%)tokio::runtime::coop::poll_proceed (3 samples, 0.02%)tokio::sync::oneshot::State::is_closed (3 samples, 0.02%)tokio::sync::oneshot::State::load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (17 samples, 0.14%)tokio::sync::oneshot::Inner<T>::poll_recv (15 samples, 0.12%)cfree (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>> (4 samples, 0.03%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)tokio::runtime::task::harness::Harness<T,S>::dealloc (9 samples, 0.07%)core::mem::drop (8 samples, 0.06%)core::ptr::drop_in_place<alloc::boxed::Box<tokio::runtime::task::core::Cell<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>,alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>>> (8 samples, 0.06%)core::ptr::drop_in_place<tokio::runtime::task::core::Cell<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>,alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>> (8 samples, 0.06%)core::ptr::drop_in_place<tokio::runtime::task::core::Core<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>,alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>> (8 samples, 0.06%)core::ptr::drop_in_place<tokio::runtime::task::core::CoreStage<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>>> (4 samples, 0.03%)core::ptr::drop_in_place<tokio::loom::std::unsafe_cell::UnsafeCell<tokio::runtime::task::core::Stage<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>>>> (4 samples, 0.03%)core::ptr::drop_in_place<core::cell::UnsafeCell<tokio::runtime::task::core::Stage<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>>>> (4 samples, 0.03%)core::ptr::drop_in_place<tokio::runtime::task::core::Stage<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>>> (2 samples, 0.02%)tokio::runtime::task::waker::drop_waker (2 samples, 0.02%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::drop_reference (2 samples, 0.02%)tokio::runtime::task::state::State::ref_dec (2 samples, 0.02%)alloc::sync::Arc<T,A>::drop_slow (16 samples, 0.13%)core::ptr::drop_in_place<tokio::sync::oneshot::Inner<core::result::Result<http::response::Response<hyper::body::body::Body>,hyper::error::Error>>> (16 samples, 0.13%)<tokio::sync::oneshot::Inner<T> as core::ops::drop::Drop>::drop (16 samples, 0.13%)core::ptr::drop_in_place<core::option::Option<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<http::response::Response<hyper::body::body::Body>,hyper::error::Error>>>>> (18 samples, 0.15%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<http::response::Response<hyper::body::body::Body>,hyper::error::Error>>>> (18 samples, 0.15%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (18 samples, 0.15%)tokio::io::interest::Interest::is_readable (3 samples, 0.02%)tokio::runtime::coop::poll_proceed (4 samples, 0.03%)tokio::runtime::context::budget (3 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (3 samples, 0.02%)tokio::runtime::context::budget::_{{closure}} (3 samples, 0.02%)tokio::runtime::coop::poll_proceed::_{{closure}} (3 samples, 0.02%)core::cell::Cell<T>::set (2 samples, 0.02%)core::cell::Cell<T>::replace (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::ptr::write (2 samples, 0.02%)tokio::sync::oneshot::State::load (3 samples, 0.02%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (35 samples, 0.28%)tokio::sync::oneshot::Inner<T>::poll_recv (15 samples, 0.12%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (39 samples, 0.32%)<tonic::transport::service::reconnect::ResponseFuture<F> as core::future::future::Future>::poll (39 samples, 0.32%)<hyper::client::conn::ResponseFuture as core::future::future::Future>::poll (39 samples, 0.32%)core::task::poll::Poll<T>::map (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (41 samples, 0.33%)<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (45 samples, 0.37%)<tonic::transport::channel::ResponseFuture as core::future::future::Future>::poll (70 samples, 0.57%)<tower::buffer::future::ResponseFuture<F> as core::future::future::Future>::poll (70 samples, 0.57%)<tower::util::either::Either<A,B> as core::future::future::Future>::poll (53 samples, 0.43%)<core::pin::Pin<P> as core::future::future::Future>::poll (53 samples, 0.43%)<core::pin::Pin<P> as core::future::future::Future>::poll (53 samples, 0.43%)<tonic::transport::service::add_origin::AddOrigin<T> as tower_service::Service<http::request::Request<ReqBody>>>::call::_{{closure}} (52 samples, 0.42%)http::response::Response<T>::map (17 samples, 0.14%)tonic::client::grpc::Grpc<T>::create_response::_{{closure}} (15 samples, 0.12%)tonic::codec::decode::Streaming<T>::new (15 samples, 0.12%)bytes::bytes_mut::BytesMut::with_capacity (15 samples, 0.12%)alloc::vec::Vec<T>::with_capacity (15 samples, 0.12%)alloc::vec::Vec<T,A>::with_capacity_in (15 samples, 0.12%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (15 samples, 0.12%)alloc::raw_vec::RawVec<T,A>::allocate_in (15 samples, 0.12%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (15 samples, 0.12%)alloc::alloc::Global::alloc_impl (15 samples, 0.12%)alloc::alloc::alloc (15 samples, 0.12%)malloc (14 samples, 0.11%)[libc.so.6] (13 samples, 0.11%)[libc.so.6] (5 samples, 0.04%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (4 samples, 0.03%)http::header::map::HeaderMap<T>::find (4 samples, 0.03%)http::header::map::hash_elem_using (4 samples, 0.03%)<http::header::name::HdrName as core::hash::Hash>::hash (3 samples, 0.02%)<http::header::name::Repr<T> as core::hash::Hash>::hash (3 samples, 0.02%)<http::header::name::MaybeLower as core::hash::Hash>::hash (3 samples, 0.02%)<fnv::FnvHasher as core::hash::Hasher>::write (3 samples, 0.02%)tonic::codec::compression::CompressionEncoding::from_encoding_header (12 samples, 0.10%)http::header::map::HeaderMap<T>::get (10 samples, 0.08%)http::header::map::HeaderMap<T>::get2 (10 samples, 0.08%)<&str as http::header::map::as_header_name::Sealed>::find (10 samples, 0.08%)http::header::name::HdrName::from_bytes (10 samples, 0.08%)http::header::name::parse_hdr (5 samples, 0.04%)http::header::name::StandardHeader::from_bytes (3 samples, 0.02%)tonic::response::Response<T>::from_http (3 samples, 0.02%)tonic::metadata::map::MetadataMap::from_headers (2 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (2 samples, 0.02%)http::header::map::HeaderMap<T>::find (2 samples, 0.02%)tonic::client::grpc::Grpc<T>::create_response (38 samples, 0.31%)tonic::status::Status::from_header_map (5 samples, 0.04%)http::header::map::HeaderMap<T>::get (3 samples, 0.02%)http::header::map::HeaderMap<T>::get2 (3 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find (3 samples, 0.02%)http::header::name::HdrName::from_bytes (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)http::header::map::HeaderMap<T>::insert (9 samples, 0.07%)<http::header::name::HeaderName as http::header::map::into_header_name::Sealed>::insert (9 samples, 0.07%)http::header::map::HeaderMap<T>::insert2 (9 samples, 0.07%)http::header::map::HeaderMap<T>::reserve_one (6 samples, 0.05%)alloc::vec::from_elem (2 samples, 0.02%)<T as alloc::vec::spec_from_elem::SpecFromElem>::from_elem (2 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::allocate_in (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.02%)alloc::alloc::Global::alloc_impl (2 samples, 0.02%)alloc::alloc::alloc (2 samples, 0.02%)http::header::value::HeaderValue::from_static (5 samples, 0.04%)http::header::value::is_visible_ascii (4 samples, 0.03%)http::uri::Uri::from_parts (3 samples, 0.02%)http::uri::authority::Authority::empty (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<http::header::map::HeaderMap> (2 samples, 0.02%)core::ptr::drop_in_place<http::uri::Uri> (2 samples, 0.02%)http::request::Request<T>::new (4 samples, 0.03%)http::request::Parts::new (4 samples, 0.03%)<http::header::map::HeaderMap<T> as core::default::Default>::default (4 samples, 0.03%)http::header::map::HeaderMap<T>::with_capacity (4 samples, 0.03%)core::iter::traits::iterator::Iterator::for_each (3 samples, 0.02%)core::iter::traits::iterator::Iterator::fold (3 samples, 0.02%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (3 samples, 0.02%)http::header::name::parse_hdr::_{{closure}} (3 samples, 0.02%)http::header::name::parse_hdr (16 samples, 0.13%)http::header::name::StandardHeader::from_bytes (7 samples, 0.06%)tonic::client::grpc::GrpcConfig::prepare_request (61 samples, 0.50%)tonic::request::Request<T>::into_http (39 samples, 0.32%)tonic::metadata::map::MetadataMap::into_sanitized_headers (26 samples, 0.21%)http::header::map::HeaderMap<T>::remove (24 samples, 0.19%)<&str as http::header::map::as_header_name::Sealed>::find (24 samples, 0.19%)http::header::name::HdrName::from_bytes (23 samples, 0.19%)http::header::name::uninit_u8_array (3 samples, 0.02%)core::ops::function::FnOnce::call_once (4 samples, 0.03%)http_body::combinators::box_body::UnsyncBoxBody<D,E>::new (4 samples, 0.03%)alloc::boxed::Box<T>::pin (4 samples, 0.03%)alloc::boxed::Box<T>::new (4 samples, 0.03%)alloc::alloc::exchange_malloc (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (3 samples, 0.02%)alloc::alloc::Global::alloc_impl (3 samples, 0.02%)alloc::alloc::alloc (3 samples, 0.02%)malloc (3 samples, 0.02%)tonic::client::grpc::Grpc<T>::streaming::_{{closure}} (222 samples, 1.80%)t..tonic::request::Request<T>::map (11 samples, 0.09%)tonic::client::grpc::Grpc<T>::streaming::_{{closure}}::_{{closure}} (6 samples, 0.05%)tonic::codec::encode::encode_client (6 samples, 0.05%)tonic::codec::encode::EncodedBytes<T,U>::new (6 samples, 0.05%)bytes::bytes_mut::BytesMut::with_capacity (6 samples, 0.05%)alloc::vec::Vec<T>::with_capacity (6 samples, 0.05%)alloc::vec::Vec<T,A>::with_capacity_in (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::allocate_in (6 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (6 samples, 0.05%)alloc::alloc::Global::alloc_impl (6 samples, 0.05%)alloc::alloc::alloc (6 samples, 0.05%)malloc (6 samples, 0.05%)[libc.so.6] (5 samples, 0.04%)core::ptr::drop_in_place<std::sync::mutex::MutexGuard<h2::proto::streams::streams::Inner>> (2 samples, 0.02%)<std::sync::mutex::MutexGuard<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)h2::proto::streams::buffer::Deque::pop_front (3 samples, 0.02%)slab::Slab<T>::remove (3 samples, 0.02%)slab::Slab<T>::try_remove (3 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::ptr::read (2 samples, 0.02%)tonic::codec::decode::StreamingInner::poll_data (10 samples, 0.08%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (10 samples, 0.08%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (10 samples, 0.08%)<http_body::combinators::map_data::MapData<B,F> as http_body::Body>::poll_data (9 samples, 0.07%)<hyper::body::body::Body as http_body::Body>::poll_data (8 samples, 0.06%)hyper::body::body::Body::poll_inner (7 samples, 0.06%)h2::share::RecvStream::poll_data (7 samples, 0.06%)h2::proto::streams::streams::OpaqueStreamRef::poll_data (7 samples, 0.06%)h2::proto::streams::recv::Recv::poll_data (5 samples, 0.04%)h2::proto::streams::buffer::Deque::push_front (2 samples, 0.02%)slab::Slab<T>::insert (2 samples, 0.02%)slab::Slab<T>::insert_at (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<http_body::combinators::map_data::MapData<B,F> as http_body::Body>::poll_trailers (6 samples, 0.05%)<hyper::body::body::Body as http_body::Body>::poll_trailers (6 samples, 0.05%)h2::share::RecvStream::poll_trailers (5 samples, 0.04%)h2::proto::streams::streams::OpaqueStreamRef::poll_trailers (5 samples, 0.04%)h2::proto::streams::recv::Recv::poll_trailers (4 samples, 0.03%)h2::proto::streams::buffer::Deque::pop_front (4 samples, 0.03%)slab::Slab<T>::remove (3 samples, 0.02%)slab::Slab<T>::try_remove (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_trailers (8 samples, 0.06%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_trailers (9 samples, 0.07%)core::ptr::drop_in_place<tonic::status::Status> (4 samples, 0.03%)core::ptr::drop_in_place<bytes::bytes::Bytes> (2 samples, 0.02%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (2 samples, 0.02%)bytes::bytes::static_drop (2 samples, 0.02%)<alloc::boxed::Box<[T],A> as core::clone::Clone>::clone (2 samples, 0.02%)alloc::vec::Vec<T,A>::into_boxed_slice (2 samples, 0.02%)<http::header::map::Bucket<T> as core::clone::Clone>::clone (2 samples, 0.02%)<http::header::name::HeaderName as core::clone::Clone>::clone (2 samples, 0.02%)<http::header::name::Repr<T> as core::clone::Clone>::clone (2 samples, 0.02%)<http::header::name::Custom as core::clone::Clone>::clone (2 samples, 0.02%)<http::byte_str::ByteStr as core::clone::Clone>::clone (2 samples, 0.02%)<bytes::bytes::Bytes as core::clone::Clone>::clone (2 samples, 0.02%)bytes::bytes::shared_clone (2 samples, 0.02%)<http::header::map::HeaderMap<T> as core::clone::Clone>::clone (7 samples, 0.06%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (4 samples, 0.03%)alloc::slice::<impl [T]>::to_vec_in (3 samples, 0.02%)alloc::slice::hack::to_vec (3 samples, 0.02%)<T as alloc::slice::hack::ConvertVec>::to_vec (3 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (4 samples, 0.03%)http::header::map::HeaderMap<T>::find (4 samples, 0.03%)http::header::map::hash_elem_using (4 samples, 0.03%)<http::header::name::HdrName as core::hash::Hash>::hash (4 samples, 0.03%)<http::header::name::Repr<T> as core::hash::Hash>::hash (4 samples, 0.03%)<http::header::name::MaybeLower as core::hash::Hash>::hash (4 samples, 0.03%)<fnv::FnvHasher as core::hash::Hasher>::write (4 samples, 0.03%)core::num::<impl u64>::wrapping_mul (2 samples, 0.02%)core::slice::<impl [T]>::contains (4 samples, 0.03%)<u8 as core::slice::cmp::SliceContains>::slice_contains (4 samples, 0.03%)core::slice::memchr::memchr (4 samples, 0.03%)core::slice::memchr::memchr_aligned (4 samples, 0.03%)http::header::map::HeaderMap<T>::get (14 samples, 0.11%)http::header::map::HeaderMap<T>::get2 (14 samples, 0.11%)<&str as http::header::map::as_header_name::Sealed>::find (14 samples, 0.11%)http::header::name::HdrName::from_bytes (14 samples, 0.11%)http::header::name::parse_hdr (9 samples, 0.07%)http::header::name::StandardHeader::from_bytes (3 samples, 0.02%)<http::header::name::HeaderName as core::cmp::PartialEq<http::header::name::HdrName>>::eq (2 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (2 samples, 0.02%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (2 samples, 0.02%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (4 samples, 0.03%)http::header::map::HeaderMap<T>::find (4 samples, 0.03%)http::header::map::hash_elem_using (2 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find (6 samples, 0.05%)http::header::name::HdrName::from_bytes (6 samples, 0.05%)core::option::Option<T>::map (31 samples, 0.25%)tonic::status::Status::from_header_map::_{{closure}} (29 samples, 0.24%)http::header::map::HeaderMap<T>::remove (7 samples, 0.06%)<http::header::name::HeaderName as core::cmp::PartialEq<http::header::name::HdrName>>::eq (4 samples, 0.03%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (2 samples, 0.02%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (2 samples, 0.02%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (5 samples, 0.04%)http::header::map::HeaderMap<T>::find (5 samples, 0.04%)tonic::codec::decode::Streaming<T>::trailers::_{{closure}} (69 samples, 0.56%)tonic::codec::decode::Streaming<T>::message::_{{closure}} (69 samples, 0.56%)<core::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (69 samples, 0.56%)tonic::codec::decode::Streaming<T>::message::_{{closure}}::_{{closure}} (69 samples, 0.56%)<tonic::codec::decode::Streaming<T> as futures_core::stream::Stream>::poll_next (69 samples, 0.56%)tonic::codec::decode::StreamingInner::poll_response (56 samples, 0.45%)tonic::status::infer_grpc_status (44 samples, 0.36%)tonic::status::Status::from_header_map (39 samples, 0.32%)http::header::map::HeaderMap<T>::get (8 samples, 0.06%)http::header::map::HeaderMap<T>::get2 (8 samples, 0.06%)<&str as http::header::map::as_header_name::Sealed>::find (8 samples, 0.06%)http::header::name::HdrName::from_bytes (8 samples, 0.06%)<http::header::map::HeaderMap<T> as core::iter::traits::collect::IntoIterator>::into_iter (3 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<[http::header::map::Pos]>> (2 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (2 samples, 0.02%)alloc::alloc::dealloc (2 samples, 0.02%)cfree (2 samples, 0.02%)http::header::map::HeaderMap<T>::reserve_one (2 samples, 0.02%)http::header::map::Pos::resolve (2 samples, 0.02%)http::header::map::Pos::is_some (2 samples, 0.02%)http::header::map::Pos::is_none (2 samples, 0.02%)http::header::map::HeaderMap<T>::entry2 (6 samples, 0.05%)http::header::map::hash_elem_using (2 samples, 0.02%)<http::header::name::HeaderName as core::hash::Hash>::hash (2 samples, 0.02%)<http::header::name::Repr<T> as core::hash::Hash>::hash (2 samples, 0.02%)<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (396 samples, 3.21%)<tr..openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}} (396 samples, 3.21%)ope..openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}}::_{{closure}} (396 samples, 3.21%)ope..openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}} (396 samples, 3.21%)ope..openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}}::_{{closure}} (396 samples, 3.21%)ope..<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll (396 samples, 3.21%)<to..<core::pin::Pin<P> as core::future::future::Future>::poll (396 samples, 3.21%)<co..openraft::network::network::RaftNetwork::append_entries::_{{closure}} (396 samples, 3.21%)ope..<core::pin::Pin<P> as core::future::future::Future>::poll (396 samples, 3.21%)<co..<dcache::network::raft_network_impl::DcacheNetworkConnection as openraft::network::network::RaftNetwork<dcache::DcacheTypeConfig>>::send_append_entries::_{{closure}} (396 samples, 3.21%)<dc..dcache::network::raft_network_impl::DcacheNetwork::send_rpc::_{{closure}} (396 samples, 3.21%)dca..dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<T>::append_entries::_{{closure}} (396 samples, 3.21%)dca..tonic::client::grpc::Grpc<T>::unary::_{{closure}} (396 samples, 3.21%)ton..tonic::client::grpc::Grpc<T>::client_streaming::_{{closure}} (396 samples, 3.21%)ton..tonic::metadata::map::MetadataMap::merge (21 samples, 0.17%)<http::header::map::HeaderMap<T> as core::iter::traits::collect::Extend<(core::option::Option<http::header::name::HeaderName>,T)>>::extend (18 samples, 0.15%)http::header::map::VacantEntry<T>::insert_entry (3 samples, 0.02%)http::header::map::HeaderMap<T>::insert_phase_two (3 samples, 0.02%)http::header::map::HeaderMap<T>::insert_entry (3 samples, 0.02%)alloc::vec::Vec<T,A>::push (2 samples, 0.02%)core::ptr::write (2 samples, 0.02%)__vdso_clock_gettime (4 samples, 0.03%)[unknown] (4 samples, 0.03%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,Type>::force (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (5 samples, 0.04%)alloc::alloc::dealloc (5 samples, 0.04%)cfree (5 samples, 0.04%)[libc.so.6] (5 samples, 0.04%)[libc.so.6] (5 samples, 0.04%)[libc.so.6] (5 samples, 0.04%)alloc::collections::btree::node::move_to_slice (4 samples, 0.03%)core::intrinsics::copy_nonoverlapping (4 samples, 0.03%)[libc.so.6] (3 samples, 0.02%)alloc::collections::btree::fix::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::fix_node_and_affected_ancestors (11 samples, 0.09%)alloc::collections::btree::fix::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::fix_node_through_parent (11 samples, 0.09%)alloc::collections::btree::node::BalancingContext<K,V>::merge_tracking_parent (11 samples, 0.09%)alloc::collections::btree::node::BalancingContext<K,V>::do_merge (11 samples, 0.09%)alloc::collections::btree::node::slice_remove (2 samples, 0.02%)core::intrinsics::copy (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (11 samples, 0.09%)alloc::alloc::dealloc (11 samples, 0.09%)cfree (9 samples, 0.07%)[libc.so.6] (9 samples, 0.07%)[libc.so.6] (7 samples, 0.06%)[libc.so.6] (6 samples, 0.05%)[libc.so.6] (2 samples, 0.02%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>::correct_childrens_parent_links (2 samples, 0.02%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::correct_parent_link (2 samples, 0.02%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::set_parent_link (2 samples, 0.02%)alloc::collections::btree::node::move_to_slice (42 samples, 0.34%)core::intrinsics::copy_nonoverlapping (42 samples, 0.34%)[libc.so.6] (42 samples, 0.34%)core::intrinsics::copy (4 samples, 0.03%)[libc.so.6] (4 samples, 0.03%)alloc::collections::btree::node::BalancingContext<K,V>::merge_tracking_child_edge (60 samples, 0.49%)alloc::collections::btree::node::BalancingContext<K,V>::merge_tracking_child (60 samples, 0.49%)alloc::collections::btree::node::BalancingContext<K,V>::do_merge (60 samples, 0.49%)alloc::collections::btree::node::slice_remove (5 samples, 0.04%)core::intrinsics::copy (20 samples, 0.16%)[libc.so.6] (18 samples, 0.15%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>::remove (25 samples, 0.20%)alloc::collections::btree::node::slice_remove (23 samples, 0.19%)core::ptr::mut_ptr::<impl *mut T>::add (2 samples, 0.02%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_entry (150 samples, 1.22%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_kv (150 samples, 1.22%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,alloc::collections::btree::node::marker::KV>>::remove_kv_tracking (109 samples, 0.88%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv (105 samples, 0.85%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (9 samples, 0.07%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (9 samples, 0.07%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (9 samples, 0.07%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove_entry (163 samples, 1.32%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove (166 samples, 1.35%)core::option::Option<T>::map (3 samples, 0.02%)cfree (26 samples, 0.21%)[libc.so.6] (24 samples, 0.19%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>>::next_kv (15 samples, 0.12%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,NodeType>,alloc::collections::btree::node::marker::Edge>::right_kv (15 samples, 0.12%)<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next (23 samples, 0.19%)alloc::collections::btree::navigate::LeafRange<alloc::collections::btree::node::marker::Immut,K,V>::next_checked (23 samples, 0.19%)alloc::collections::btree::navigate::LeafRange<BorrowType,K,V>::perform_next_checked (23 samples, 0.19%)alloc::collections::btree::mem::replace (23 samples, 0.19%)alloc::collections::btree::navigate::LeafRange<BorrowType,K,V>::perform_next_checked::_{{closure}} (23 samples, 0.19%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,alloc::collections::btree::node::marker::KV>>::next_leaf_edge (8 samples, 0.06%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::first_leaf_edge (8 samples, 0.06%)core::iter::traits::iterator::Iterator::collect (32 samples, 0.26%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (32 samples, 0.26%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (32 samples, 0.26%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (32 samples, 0.26%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend (32 samples, 0.26%)alloc::vec::Vec<T,A>::extend_desugared (32 samples, 0.26%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (24 samples, 0.19%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<u64>> (22 samples, 0.18%)<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop (22 samples, 0.18%)core::ptr::drop_in_place<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<u64,alloc::alloc::Global>> (22 samples, 0.18%)<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<T,A> as core::ops::drop::Drop>::drop (22 samples, 0.18%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u64>> (22 samples, 0.18%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (22 samples, 0.18%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (22 samples, 0.18%)alloc::alloc::dealloc (22 samples, 0.18%)cfree (22 samples, 0.18%)[libc.so.6] (22 samples, 0.18%)[libc.so.6] (22 samples, 0.18%)[libc.so.6] (22 samples, 0.18%)[libc.so.6] (12 samples, 0.10%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_notify::_{{closure}} (255 samples, 2.07%)o..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (255 samples, 2.07%)o..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (255 samples, 2.07%)o..<core::pin::Pin<P> as core::future::future::Future>::poll (255 samples, 2.07%)<..<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (255 samples, 2.07%)<..<core::pin::Pin<P> as core::future::future::Future>::poll (255 samples, 2.07%)<..<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftLogStorage<C>>::purge::_{{closure}} (255 samples, 2.07%)<..<core::pin::Pin<P> as core::future::future::Future>::poll (255 samples, 2.07%)<..dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::purge_logs_upto::_{{closure}} (255 samples, 2.07%)d..dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::purge_logs_upto::_{{closure}}::_{{closure}} (255 samples, 2.07%)d..core::ptr::drop_in_place<core::option::Option<openraft::entry::Entry<dcache::DcacheTypeConfig>>> (9 samples, 0.07%)core::ptr::drop_in_place<openraft::entry::Entry<dcache::DcacheTypeConfig>> (5 samples, 0.04%)core::ptr::drop_in_place<openraft::entry::payload::EntryPayload<dcache::DcacheTypeConfig>> (5 samples, 0.04%)core::ptr::drop_in_place<dcache::store::DcacheRequest> (5 samples, 0.04%)[libc.so.6] (45 samples, 0.37%)core::ptr::drop_in_place<dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>>::{{closure}}::{{closure}}> (6 samples, 0.05%)core::ptr::drop_in_place<tracing::span::Span> (5 samples, 0.04%)<tracing::span::Span as core::ops::drop::Drop>::drop (3 samples, 0.02%)<alloc::vec::Vec<T,A> as core::iter::traits::collect::IntoIterator>::into_iter (2 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::add (2 samples, 0.02%)[libc.so.6] (11 samples, 0.09%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::descend (3 samples, 0.02%)core::mem::maybe_uninit::MaybeUninit<T>::assume_init_read (3 samples, 0.02%)core::ptr::const_ptr::<impl *const T>::read (3 samples, 0.02%)core::ptr::read (3 samples, 0.02%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,Type>::force (2 samples, 0.02%)alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::force (2 samples, 0.02%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (4 samples, 0.03%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (4 samples, 0.03%)alloc::collections::btree::map::BTreeMap<K,V,A>::entry (89 samples, 0.72%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (89 samples, 0.72%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (84 samples, 0.68%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (84 samples, 0.68%)core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (27 samples, 0.22%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>::correct_childrens_parent_links (2 samples, 0.02%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::correct_parent_link (2 samples, 0.02%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::set_parent_link (2 samples, 0.02%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::insert_fit (7 samples, 0.06%)alloc::collections::btree::node::slice_insert (5 samples, 0.04%)core::mem::maybe_uninit::MaybeUninit<T>::write (5 samples, 0.04%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,NodeType>,alloc::collections::btree::node::marker::KV>::split_leaf_data (2 samples, 0.02%)alloc::collections::btree::node::InternalNode<K,V>::new (4 samples, 0.03%)alloc::boxed::Box<T,A>::new_uninit_in (4 samples, 0.03%)alloc::boxed::Box<T,A>::try_new_uninit_in (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (4 samples, 0.03%)alloc::alloc::Global::alloc_impl (4 samples, 0.03%)alloc::alloc::alloc (4 samples, 0.03%)malloc (4 samples, 0.03%)[libc.so.6] (4 samples, 0.03%)[libc.so.6] (2 samples, 0.02%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::insert (18 samples, 0.15%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::KV>::split (10 samples, 0.08%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::Internal>::from_new_internal (2 samples, 0.02%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>::correct_all_childrens_parent_links (2 samples, 0.02%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Internal>::correct_childrens_parent_links (2 samples, 0.02%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>::insert_fit (23 samples, 0.19%)alloc::collections::btree::node::slice_insert (14 samples, 0.11%)core::mem::maybe_uninit::MaybeUninit<T>::write (14 samples, 0.11%)alloc::collections::btree::node::move_to_slice (3 samples, 0.02%)core::intrinsics::copy_nonoverlapping (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,NodeType>,alloc::collections::btree::node::marker::KV>::split_leaf_data (14 samples, 0.11%)core::mem::maybe_uninit::MaybeUninit<T>::assume_init_read (11 samples, 0.09%)core::ptr::const_ptr::<impl *const T>::read (11 samples, 0.09%)core::ptr::read (11 samples, 0.09%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>::split (51 samples, 0.41%)alloc::collections::btree::node::LeafNode<K,V>::new (37 samples, 0.30%)alloc::boxed::Box<T,A>::new_uninit_in (37 samples, 0.30%)alloc::boxed::Box<T,A>::try_new_uninit_in (37 samples, 0.30%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (37 samples, 0.30%)alloc::alloc::Global::alloc_impl (37 samples, 0.30%)alloc::alloc::alloc (37 samples, 0.30%)malloc (37 samples, 0.30%)[libc.so.6] (35 samples, 0.28%)[libc.so.6] (6 samples, 0.05%)alloc::collections::btree::map::BTreeMap<K,V,A>::insert (226 samples, 1.83%)a..alloc::collections::btree::map::entry::VacantEntry<K,V,A>::insert (125 samples, 1.01%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>::insert_recursing (107 samples, 0.87%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::Edge>::insert (78 samples, 0.63%)alloc::collections::btree::node::splitpoint (2 samples, 0.02%)<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<openraft::entry::Entry<dcache::DcacheTypeConfig>>> (20 samples, 0.16%)cfree (17 samples, 0.14%)[libc.so.6] (11 samples, 0.09%)core::mem::drop (7 samples, 0.06%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::sync::batch_semaphore::Waitlist>> (7 samples, 0.06%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (7 samples, 0.06%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (7 samples, 0.06%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (7 samples, 0.06%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (26 samples, 0.21%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::collections::btree::map::BTreeMap<u64,openraft::entry::Entry<dcache::DcacheTypeConfig>>>> (35 samples, 0.28%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (35 samples, 0.28%)tokio::sync::batch_semaphore::Semaphore::release (9 samples, 0.07%)tokio::loom::std::parking_lot::Mutex<T>::lock (6 samples, 0.05%)lock_api::mutex::Mutex<R,T>::lock (6 samples, 0.05%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (6 samples, 0.05%)<F as core::future::into_future::IntoFuture>::into_future (15 samples, 0.12%)tokio::runtime::coop::poll_proceed (2 samples, 0.02%)tokio::runtime::context::budget (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::runtime::context::budget::_{{closure}} (2 samples, 0.02%)tokio::runtime::coop::poll_proceed::_{{closure}} (2 samples, 0.02%)tokio::runtime::coop::Budget::decrement (2 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (17 samples, 0.14%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (6 samples, 0.05%)core::sync::atomic::AtomicUsize::compare_exchange (5 samples, 0.04%)core::sync::atomic::atomic_compare_exchange (5 samples, 0.04%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (2 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (2 samples, 0.02%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log::_{{closure}}::_{{closure}} (408 samples, 3.31%)dca..tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (81 samples, 0.66%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}}::_{{closure}} (50 samples, 0.41%)tokio::sync::batch_semaphore::Semaphore::acquire (12 samples, 0.10%)tokio::sync::batch_semaphore::Acquire::new (12 samples, 0.10%)<core::pin::Pin<P> as core::future::future::Future>::poll (493 samples, 4.00%)<cor..dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log::_{{closure}} (493 samples, 4.00%)dcac..tracing::__macro_support::__disabled_span (3 samples, 0.02%)tracing::span::Span::new_disabled (3 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (6 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (6 samples, 0.05%)alloc::alloc::dealloc (6 samples, 0.05%)cfree (6 samples, 0.05%)[libc.so.6] (4 samples, 0.03%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<(),openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<(),openraft::storage_error::StorageError<u64>>+core::marker::Send>> (8 samples, 0.06%)core::ptr::drop_in_place<dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>>::{{closure}}> (2 samples, 0.02%)core::mem::drop (3 samples, 0.02%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::sync::batch_semaphore::Waitlist>> (3 samples, 0.02%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (3 samples, 0.02%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (3 samples, 0.02%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (3 samples, 0.02%)tokio::util::wake_list::WakeList::new (3 samples, 0.02%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (13 samples, 0.11%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::sync::Arc<dcache::store::DcacheStore>>> (14 samples, 0.11%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (14 samples, 0.11%)dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::append_to_log (6 samples, 0.05%)alloc::boxed::Box<T>::pin (6 samples, 0.05%)alloc::boxed::Box<T>::new (6 samples, 0.05%)alloc::alloc::exchange_malloc (6 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (6 samples, 0.05%)alloc::alloc::Global::alloc_impl (6 samples, 0.05%)alloc::alloc::alloc (6 samples, 0.05%)malloc (6 samples, 0.05%)<F as core::future::into_future::IntoFuture>::into_future (6 samples, 0.05%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (9 samples, 0.07%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (6 samples, 0.05%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (3 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (2 samples, 0.02%)openraft::storage::adapter::Adaptor<C,S>::storage_mut::_{{closure}} (54 samples, 0.44%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (48 samples, 0.39%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}}::_{{closure}} (43 samples, 0.35%)tokio::sync::batch_semaphore::Semaphore::acquire (19 samples, 0.15%)tokio::sync::batch_semaphore::Acquire::new (18 samples, 0.15%)core::option::Option<T>::unwrap (3 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::oneshot::Inner<core::result::Result<core::option::Option<openraft::log_id::LogId<u64>>,std::io::error::Error>>>> (2 samples, 0.02%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::oneshot::Sender<core::result::Result<core::option::Option<openraft::log_id::LogId<u64>>,std::io::error::Error>>> (3 samples, 0.02%)<tokio::sync::oneshot::Sender<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)tokio::io::interest::Interest::is_readable (2 samples, 0.02%)tokio::sync::oneshot::State::is_closed (6 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}} (626 samples, 5.08%)openra..openraft::core::raft_core::RaftCore<C,N,LS,SM>::append_to_log::_{{closure}}::_{{closure}} (626 samples, 5.08%)openra..<core::pin::Pin<P> as core::future::future::Future>::poll (626 samples, 5.08%)<core:..<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftLogStorage<C>>::append::_{{closure}} (626 samples, 5.08%)<openr..openraft::storage::callback::LogFlushed<NID>::log_io_completed (51 samples, 0.41%)tokio::sync::oneshot::Sender<T>::send (40 samples, 0.32%)tokio::sync::oneshot::Inner<T>::complete (30 samples, 0.24%)tokio::sync::oneshot::State::set_complete (16 samples, 0.13%)core::sync::atomic::AtomicUsize::load (7 samples, 0.06%)core::sync::atomic::atomic_load (7 samples, 0.06%)[libc.so.6] (6 samples, 0.05%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::descend (5 samples, 0.04%)core::mem::maybe_uninit::MaybeUninit<T>::assume_init_read (5 samples, 0.04%)core::ptr::const_ptr::<impl *const T>::read (5 samples, 0.04%)core::ptr::read (5 samples, 0.04%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (18 samples, 0.15%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (18 samples, 0.15%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_lower_bound_index (78 samples, 0.63%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (76 samples, 0.62%)core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (24 samples, 0.19%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (5 samples, 0.04%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (5 samples, 0.04%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,Type>::keys (2 samples, 0.02%)alloc::collections::btree::map::BTreeMap<K,V,A>::range (111 samples, 0.90%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::range_search (106 samples, 0.86%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::find_leaf_edges_spanning_range (106 samples, 0.86%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree_for_bifurcation (106 samples, 0.86%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_upper_bound_index (18 samples, 0.15%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (13 samples, 0.11%)<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend (4 samples, 0.03%)alloc::vec::Vec<T,A>::extend_desugared (4 samples, 0.03%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (4 samples, 0.03%)alloc::collections::btree::mem::replace (2 samples, 0.02%)<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next (10 samples, 0.08%)alloc::collections::btree::navigate::LeafRange<alloc::collections::btree::node::marker::Immut,K,V>::next_checked (8 samples, 0.06%)alloc::collections::btree::navigate::LeafRange<BorrowType,K,V>::perform_next_checked (8 samples, 0.06%)alloc::collections::btree::navigate::LeafRange<BorrowType,K,V>::is_empty (5 samples, 0.04%)<core::option::Option<T> as core::cmp::PartialEq>::eq (5 samples, 0.04%)<T as core::option::SpecOptionPartialEq>::eq (2 samples, 0.02%)__rust_alloc (3 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (32 samples, 0.26%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (32 samples, 0.26%)alloc::raw_vec::RawVec<T,A>::allocate_in (32 samples, 0.26%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (32 samples, 0.26%)alloc::alloc::Global::alloc_impl (32 samples, 0.26%)alloc::alloc::alloc (32 samples, 0.26%)malloc (28 samples, 0.23%)[libc.so.6] (10 samples, 0.08%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (154 samples, 1.25%)core::option::Option<T>::map (143 samples, 1.16%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once (130 samples, 1.06%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}}::_{{closure}} (130 samples, 1.06%)<openraft::entry::Entry<C> as core::clone::Clone>::clone (130 samples, 1.06%)<openraft::entry::payload::EntryPayload<C> as core::clone::Clone>::clone (126 samples, 1.02%)<dcache::store::DcacheRequest as core::clone::Clone>::clone (80 samples, 0.65%)<alloc::string::String as core::clone::Clone>::clone (79 samples, 0.64%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (76 samples, 0.62%)alloc::slice::<impl [T]>::to_vec_in (76 samples, 0.62%)alloc::slice::hack::to_vec (76 samples, 0.62%)<T as alloc::slice::hack::ConvertVec>::to_vec (76 samples, 0.62%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (44 samples, 0.36%)core::intrinsics::copy_nonoverlapping (44 samples, 0.36%)[libc.so.6] (44 samples, 0.36%)alloc::vec::Vec<T>::with_capacity (17 samples, 0.14%)alloc::vec::Vec<T,A>::with_capacity_in (17 samples, 0.14%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (17 samples, 0.14%)alloc::raw_vec::RawVec<T,A>::allocate_in (17 samples, 0.14%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (17 samples, 0.14%)alloc::alloc::Global::alloc_impl (17 samples, 0.14%)alloc::alloc::alloc (17 samples, 0.14%)malloc (16 samples, 0.13%)[libc.so.6] (2 samples, 0.02%)core::iter::traits::iterator::Iterator::collect (210 samples, 1.70%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (210 samples, 1.70%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (210 samples, 1.70%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (207 samples, 1.68%)core::ptr::write (8 samples, 0.06%)core::iter::traits::iterator::Iterator::map (12 samples, 0.10%)core::iter::adapters::map::Map<I,F>::new (12 samples, 0.10%)core::mem::drop (7 samples, 0.06%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::sync::batch_semaphore::Waitlist>> (7 samples, 0.06%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (7 samples, 0.06%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (7 samples, 0.06%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (7 samples, 0.06%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (11 samples, 0.09%)tokio::util::wake_list::WakeList::wake_all (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::rwlock::read_guard::RwLockReadGuard<alloc::collections::btree::map::BTreeMap<u64,openraft::entry::Entry<dcache::DcacheTypeConfig>>>> (19 samples, 0.15%)<tokio::sync::rwlock::read_guard::RwLockReadGuard<T> as core::ops::drop::Drop>::drop (19 samples, 0.15%)tokio::sync::batch_semaphore::Semaphore::release (8 samples, 0.06%)tokio::loom::std::parking_lot::Mutex<T>::lock (5 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (5 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (5 samples, 0.04%)<F as core::future::into_future::IntoFuture>::into_future (13 samples, 0.11%)tokio::runtime::coop::poll_proceed (2 samples, 0.02%)tokio::runtime::context::budget (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::runtime::context::budget::_{{closure}} (2 samples, 0.02%)tokio::runtime::coop::poll_proceed::_{{closure}} (2 samples, 0.02%)tokio::runtime::coop::Budget::decrement (2 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (17 samples, 0.14%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (9 samples, 0.07%)core::sync::atomic::AtomicUsize::compare_exchange (8 samples, 0.06%)core::sync::atomic::atomic_compare_exchange (8 samples, 0.06%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (4 samples, 0.03%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (3 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (474 samples, 3.85%)<cor..dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}} (474 samples, 3.85%)dcac..tokio::sync::rwlock::RwLock<T>::read::_{{closure}} (82 samples, 0.67%)tokio::sync::rwlock::RwLock<T>::read::_{{closure}}::_{{closure}} (65 samples, 0.53%)tokio::sync::batch_semaphore::Semaphore::acquire (29 samples, 0.24%)tokio::sync::batch_semaphore::Acquire::new (29 samples, 0.24%)tokio::sync::batch_semaphore::Waiter::new (3 samples, 0.02%)[libc.so.6] (26 samples, 0.21%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (5 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (5 samples, 0.04%)alloc::alloc::dealloc (5 samples, 0.04%)cfree (4 samples, 0.03%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (7 samples, 0.06%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (7 samples, 0.06%)core::ptr::drop_in_place<dcache::store::<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries<core::ops::range::Range<u64>>::{{closure}}> (2 samples, 0.02%)core::mem::drop (10 samples, 0.08%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::sync::batch_semaphore::Waitlist>> (10 samples, 0.08%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (10 samples, 0.08%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (10 samples, 0.08%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (10 samples, 0.08%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (16 samples, 0.13%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::sync::Arc<dcache::store::DcacheStore>>> (21 samples, 0.17%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (21 samples, 0.17%)tokio::sync::batch_semaphore::Semaphore::release (5 samples, 0.04%)tokio::loom::std::parking_lot::Mutex<T>::lock (5 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (5 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (5 samples, 0.04%)[libc.so.6] (14 samples, 0.11%)dcache::store::<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries (23 samples, 0.19%)alloc::boxed::Box<T>::pin (23 samples, 0.19%)alloc::boxed::Box<T>::new (23 samples, 0.19%)alloc::alloc::exchange_malloc (9 samples, 0.07%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (9 samples, 0.07%)alloc::alloc::Global::alloc_impl (9 samples, 0.07%)alloc::alloc::alloc (9 samples, 0.07%)malloc (5 samples, 0.04%)<F as core::future::into_future::IntoFuture>::into_future (18 samples, 0.15%)core::sync::atomic::AtomicUsize::compare_exchange (6 samples, 0.05%)core::sync::atomic::atomic_compare_exchange (6 samples, 0.05%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (13 samples, 0.11%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (8 samples, 0.06%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (4 samples, 0.03%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (4 samples, 0.03%)<core::pin::Pin<P> as core::future::future::Future>::poll (648 samples, 5.26%)<core:..<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::RaftLogReader<C>>::try_get_log_entries::_{{closure}} (648 samples, 5.26%)<openr..openraft::storage::adapter::Adaptor<C,S>::storage_mut::_{{closure}} (66 samples, 0.54%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (62 samples, 0.50%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}}::_{{closure}} (59 samples, 0.48%)tokio::sync::batch_semaphore::Semaphore::acquire (17 samples, 0.14%)tokio::sync::batch_semaphore::Acquire::new (17 samples, 0.14%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}} (649 samples, 5.27%)openra..openraft::core::raft_core::RaftCore<C,N,LS,SM>::apply_to_state_machine::_{{closure}}::_{{closure}} (649 samples, 5.27%)openra..<core::pin::Pin<P> as core::future::future::Future>::poll (649 samples, 5.27%)<core:..openraft::storage::log_store_ext::RaftLogReaderExt::get_log_entries::_{{closure}} (649 samples, 5.27%)openra..alloc::vec::Vec<T,A>::len (4 samples, 0.03%)<openraft::quorum::joint::Joint<ID,QS,alloc::vec::Vec<QS>> as openraft::quorum::quorum_set::QuorumSet<ID>>::is_quorum (15 samples, 0.12%)openraft::quorum::quorum_set_impl::<impl openraft::quorum::quorum_set::QuorumSet<ID> for alloc::vec::Vec<ID>>::is_quorum (15 samples, 0.12%)core::slice::<impl [T]>::contains (10 samples, 0.08%)<T as core::slice::cmp::SliceContains>::slice_contains (10 samples, 0.08%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::any (10 samples, 0.08%)<T as core::slice::cmp::SliceContains>::slice_contains::_{{closure}} (10 samples, 0.08%)core::cmp::impls::<impl core::cmp::PartialEq for u64>::eq (10 samples, 0.08%)core::cmp::PartialOrd::le (5 samples, 0.04%)<core::option::Option<T> as core::cmp::PartialOrd>::partial_cmp (5 samples, 0.04%)<openraft::log_id::LogId<NID> as core::cmp::PartialOrd>::partial_cmp (2 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialOrd<&B> for &A>::gt (3 samples, 0.02%)core::cmp::PartialOrd::gt (3 samples, 0.02%)<core::option::Option<T> as core::cmp::PartialOrd>::partial_cmp (3 samples, 0.02%)<openraft::log_id::LogId<NID> as core::cmp::PartialOrd>::partial_cmp (3 samples, 0.02%)<openraft::vote::leader_id::leader_id_std::CommittedLeaderId<NID> as core::cmp::PartialOrd>::partial_cmp (2 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialOrd for u64>::partial_cmp (2 samples, 0.02%)core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (2 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialOrd<&B> for &A>::le (6 samples, 0.05%)core::cmp::PartialOrd::le (6 samples, 0.05%)<core::option::Option<T> as core::cmp::PartialOrd>::partial_cmp (5 samples, 0.04%)<core::option::Option<openraft::log_id::LogId<NID>> as openraft::log_id::log_id_option_ext::LogIdOptionExt>::next_index (8 samples, 0.06%)openraft::progress::inflight::Inflight<NID>::assert_my_id (2 samples, 0.02%)openraft::progress::inflight::Inflight<NID>::ack (14 samples, 0.11%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_matching::_{{closure}} (35 samples, 0.28%)openraft::progress::entry::ProgressEntry<NID>::update_matching (33 samples, 0.27%)<openraft::progress::VecProgress<ID,V,P,QS> as openraft::progress::Progress<ID,V,P,QS>>::update_with (78 samples, 0.63%)openraft::progress::VecProgress<ID,V,P,QS>::move_up (2 samples, 0.02%)<core::iter::adapters::rev::Rev<I> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)core::iter::range::<impl core::iter::traits::double_ended::DoubleEndedIterator for core::ops::range::Range<A>>::next_back (2 samples, 0.02%)<core::ops::range::Range<T> as core::iter::range::RangeIteratorImpl>::spec_next_back (2 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialOrd for usize>::lt (2 samples, 0.02%)core::option::Option<&T>::copied (3 samples, 0.02%)openraft::config::config::SnapshotPolicy::should_snapshot (2 samples, 0.02%)<core::option::Option<&openraft::log_id::LogId<NID>> as openraft::log_id::log_id_option_ext::LogIdOptionExt>::next_index (2 samples, 0.02%)[libc.so.6] (36 samples, 0.29%)alloc::collections::vec_deque::VecDeque<T,A>::buffer_write (63 samples, 0.51%)core::ptr::write (63 samples, 0.51%)[libc.so.6] (63 samples, 0.51%)openraft::engine::engine_output::EngineOutput<C>::push_command (106 samples, 0.86%)alloc::collections::vec_deque::VecDeque<T,A>::push_back (65 samples, 0.53%)alloc::collections::vec_deque::VecDeque<T,A>::to_physical_idx (2 samples, 0.02%)alloc::collections::vec_deque::VecDeque<T,A>::wrap_add (2 samples, 0.02%)alloc::collections::vec_deque::wrap_index (2 samples, 0.02%)core::cmp::PartialOrd::gt (8 samples, 0.06%)<core::option::Option<T> as core::cmp::PartialOrd>::partial_cmp (8 samples, 0.06%)core::cmp::impls::<impl core::cmp::PartialOrd<&B> for &A>::partial_cmp (6 samples, 0.05%)<openraft::log_id::LogId<NID> as core::cmp::PartialOrd>::partial_cmp (5 samples, 0.04%)<openraft::vote::leader_id::leader_id_std::CommittedLeaderId<NID> as core::cmp::PartialOrd>::partial_cmp (4 samples, 0.03%)core::cmp::impls::<impl core::cmp::PartialOrd for u64>::partial_cmp (4 samples, 0.03%)core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (4 samples, 0.03%)core::option::Option<T>::as_ref (12 samples, 0.10%)core::cmp::impls::<impl core::cmp::PartialOrd<&B> for &A>::ge (18 samples, 0.15%)core::cmp::PartialOrd::ge (18 samples, 0.15%)<core::option::Option<T> as core::cmp::PartialOrd>::partial_cmp (18 samples, 0.15%)openraft::raft_state::membership_state::MembershipState<NID,N>::commit (26 samples, 0.21%)core::ptr::drop_in_place<alloc::sync::Arc<openraft::membership::effective_membership::EffectiveMembership<u64,openraft::node::BasicNode>>> (7 samples, 0.06%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (7 samples, 0.06%)openraft::raft_state::RaftState<NID,N>::update_committed (51 samples, 0.41%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::try_commit_granted (164 samples, 1.33%)tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_raft_msg::_{{closure}} (1,530 samples, 12.42%)openraft::core::raf..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (1,530 samples, 12.42%)openraft::core::raf..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (1,530 samples, 12.42%)openraft::core::raf..<core::pin::Pin<P> as core::future::future::Future>::poll (1,530 samples, 12.42%)<core::pin::Pin<P> ..<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (1,530 samples, 12.42%)<openraft::core::ra..openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_local_progress (255 samples, 2.07%)o..openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_matching (255 samples, 2.07%)o..alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_entry (2 samples, 0.02%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_kv (2 samples, 0.02%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,alloc::collections::btree::node::marker::KV>>::remove_kv_tracking (2 samples, 0.02%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv (2 samples, 0.02%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove (3 samples, 0.02%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove_entry (3 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (6 samples, 0.05%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftLogStorage<C>>::purge::_{{closure}} (6 samples, 0.05%)<core::pin::Pin<P> as core::future::future::Future>::poll (6 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::purge_logs_upto::_{{closure}} (6 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::purge_logs_upto::_{{closure}}::_{{closure}} (6 samples, 0.05%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}}::_{{closure}} (1,792 samples, 14.54%)openraft::core::raft_c..openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}} (1,792 samples, 14.54%)openraft::core::raft_c..openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}}::_{{closure}} (1,792 samples, 14.54%)openraft::core::raft_c..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (7 samples, 0.06%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}}::_{{closure}} (7 samples, 0.06%)<core::pin::Pin<P> as core::future::future::Future>::poll (7 samples, 0.06%)<openraft::core::raft_core::RaftCore<C,N,LS,SM> as openraft::runtime::RaftRuntime<C>>::run_command::_{{closure}} (7 samples, 0.06%)<alloc::sync::Arc<T,A> as core::ops::deref::Deref>::deref (5 samples, 0.04%)alloc::sync::Arc<T,A>::inner (5 samples, 0.04%)core::ptr::non_null::NonNull<T>::as_ref (5 samples, 0.04%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (4 samples, 0.03%)<core::ops::range::Range<T> as core::iter::range::RangeIteratorImpl>::spec_next (4 samples, 0.03%)core::cmp::impls::<impl core::cmp::PartialOrd for u32>::lt (4 samples, 0.03%)_ZN5tokio7runtime2io6driver6Driver4turn17heea409bb80330ab0E.llvm.1906340510827987069 (4 samples, 0.03%)mio::sys::unix::selector::epoll::Selector::select (2 samples, 0.02%)_ZN5tokio7runtime4time6Driver13park_internal17h70d3ae958184deb1E.llvm.1906340510827987069 (5 samples, 0.04%)tokio::runtime::scheduler::current_thread::Context::park (6 samples, 0.05%)_ZN5tokio7runtime2io6driver6Driver4turn17heea409bb80330ab0E.llvm.1906340510827987069 (12 samples, 0.10%)mio::sys::unix::selector::epoll::Selector::select (12 samples, 0.10%)epoll_wait (12 samples, 0.10%)[unknown] (12 samples, 0.10%)[unknown] (12 samples, 0.10%)[unknown] (11 samples, 0.09%)[unknown] (11 samples, 0.09%)[unknown] (6 samples, 0.05%)tokio::runtime::task::raw::RawTask::schedule (3 samples, 0.02%)tokio::runtime::context::with_scheduler (3 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::runtime::context::with_scheduler::_{{closure}} (2 samples, 0.02%)tokio::runtime::context::scoped::Scoped<T>::with (2 samples, 0.02%)tokio::runtime::scheduler::current_thread::_<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule::_{{closure}} (2 samples, 0.02%)tokio::runtime::task::state::State::load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)_ZN5tokio7runtime4time6Driver13park_internal17h70d3ae958184deb1E.llvm.1906340510827987069 (20 samples, 0.16%)tokio::runtime::io::driver::Driver::turn (8 samples, 0.06%)tokio::runtime::io::scheduled_io::ScheduledIo::wake (7 samples, 0.06%)tokio::util::wake_list::WakeList::wake_all (6 samples, 0.05%)core::task::wake::Waker::wake (6 samples, 0.05%)tokio::runtime::task::waker::wake_by_val (6 samples, 0.05%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (6 samples, 0.05%)tokio::runtime::task::state::State::transition_to_notified_by_val (3 samples, 0.02%)tokio::runtime::task::state::State::fetch_update_action (3 samples, 0.02%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (17 samples, 0.14%)clock_gettime (17 samples, 0.14%)__vdso_clock_gettime (16 samples, 0.13%)[unknown] (16 samples, 0.13%)[unknown] (16 samples, 0.13%)[unknown] (16 samples, 0.13%)[unknown] (14 samples, 0.11%)[unknown] (13 samples, 0.11%)[unknown] (13 samples, 0.11%)tokio::runtime::time::<impl tokio::runtime::time::handle::Handle>::process (19 samples, 0.15%)tokio::runtime::time::source::TimeSource::now (19 samples, 0.15%)tokio::time::clock::Clock::now (19 samples, 0.15%)tokio::time::clock::now (19 samples, 0.15%)tokio::runtime::time::source::TimeSource::now (21 samples, 0.17%)tokio::time::clock::Clock::now (21 samples, 0.17%)tokio::time::clock::now (21 samples, 0.17%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (21 samples, 0.17%)clock_gettime (21 samples, 0.17%)__vdso_clock_gettime (19 samples, 0.15%)[unknown] (17 samples, 0.14%)[unknown] (15 samples, 0.12%)[unknown] (13 samples, 0.11%)[unknown] (10 samples, 0.08%)[unknown] (10 samples, 0.08%)[unknown] (6 samples, 0.05%)<alloc::vec::Vec<T,A> as core::ops::index::Index<I>>::index (2 samples, 0.02%)core::slice::index::<impl core::ops::index::Index<I> for [T]>::index (2 samples, 0.02%)<usize as core::slice::index::SliceIndex<[T]>>::index (2 samples, 0.02%)tokio::runtime::driver::Driver::park_timeout (70 samples, 0.57%)tokio::runtime::driver::TimeDriver::park_timeout (70 samples, 0.57%)tokio::runtime::time::Driver::park_timeout (70 samples, 0.57%)tokio::runtime::time::Driver::park_internal (50 samples, 0.41%)tokio::runtime::time::wheel::Wheel::next_expiration_time (7 samples, 0.06%)tokio::runtime::time::wheel::Wheel::next_expiration (7 samples, 0.06%)tokio::runtime::time::wheel::level::Level::next_expiration (4 samples, 0.03%)tokio::runtime::time::wheel::level::Level::next_occupied_slot (3 samples, 0.02%)tokio::runtime::scheduler::current_thread::Context::park_yield (76 samples, 0.62%)tokio::runtime::scheduler::current_thread::Context::enter (71 samples, 0.58%)tokio::runtime::scheduler::current_thread::Context::park_yield::_{{closure}} (71 samples, 0.58%)tokio::runtime::metrics::mock::MetricsBatch::start_poll (19 samples, 0.15%)core::cell::RefCell<T>::borrow_mut (3 samples, 0.02%)core::cell::RefCell<T>::try_borrow_mut (3 samples, 0.02%)core::cell::BorrowRefMut::new (3 samples, 0.02%)core::option::Option<T>::expect (4 samples, 0.03%)tokio::runtime::coop::Budget::initial (7 samples, 0.06%)tokio::runtime::context::CONTEXT::__getit (4 samples, 0.03%)core::cell::Cell<T>::get (3 samples, 0.02%)core::ptr::drop_in_place<core::result::Result<tokio::runtime::coop::with_budget::ResetGuard,std::thread::local::AccessError>> (24 samples, 0.19%)core::ptr::drop_in_place<tokio::runtime::coop::with_budget::ResetGuard> (17 samples, 0.14%)<tokio::runtime::coop::with_budget::ResetGuard as core::ops::drop::Drop>::drop (16 samples, 0.13%)tokio::runtime::context::budget (14 samples, 0.11%)std::thread::local::LocalKey<T>::try_with (5 samples, 0.04%)cfree (7 samples, 0.06%)[libc.so.6] (5 samples, 0.04%)[libc.so.6] (2 samples, 0.02%)std::panic::catch_unwind (2 samples, 0.02%)std::panicking::try (2 samples, 0.02%)std::panicking::try::do_call (2 samples, 0.02%)<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (2 samples, 0.02%)tokio::runtime::scheduler::current_thread::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::release (6 samples, 0.05%)tokio::runtime::task::list::OwnedTasks<S>::remove (6 samples, 0.05%)tokio::runtime::task::Task<S>::header (3 samples, 0.02%)tokio::runtime::task::raw::RawTask::header (3 samples, 0.02%)core::ptr::non_null::NonNull<T>::as_ref (3 samples, 0.02%)tokio::util::linked_list::LinkedList<L,<L as tokio::util::linked_list::Link>::Target>::remove (2 samples, 0.02%)tokio::runtime::task::harness::Harness<T,S>::release (14 samples, 0.11%)tokio::util::sharded_list::ShardedList<L,<L as tokio::util::linked_list::Link>::Target>::remove (7 samples, 0.06%)tokio::util::sharded_list::ShardedList<L,<L as tokio::util::linked_list::Link>::Target>::shard_inner (5 samples, 0.04%)tokio::loom::std::parking_lot::Mutex<T>::lock (4 samples, 0.03%)lock_api::mutex::Mutex<R,T>::lock (4 samples, 0.03%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (4 samples, 0.03%)tokio::runtime::task::harness::Harness<T,S>::complete (30 samples, 0.24%)tokio::runtime::task::state::State::transition_to_complete (6 samples, 0.05%)core::sync::atomic::AtomicUsize::fetch_xor (4 samples, 0.03%)core::sync::atomic::atomic_xor (4 samples, 0.03%)tokio::runtime::task::harness::Harness<T,S>::poll_inner::transition_result_to_poll_future (14 samples, 0.11%)core::mem::manually_drop::ManuallyDrop<T>::new (2 samples, 0.02%)[libc.so.6] (6 samples, 0.05%)<alloc::sync::Arc<T,A> as core::ops::deref::Deref>::deref (3 samples, 0.02%)alloc::sync::Arc<T,A>::inner (3 samples, 0.02%)core::ptr::non_null::NonNull<T>::as_ref (3 samples, 0.02%)<futures_channel::oneshot::Receiver<T> as core::future::future::Future>::poll (9 samples, 0.07%)futures_channel::oneshot::Inner<T>::recv (6 samples, 0.05%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::is_end_stream (3 samples, 0.02%)<core::pin::Pin<P> as http_body::Body>::is_end_stream (3 samples, 0.02%)<tonic::codec::encode::EncodeBody<S> as http_body::Body>::is_end_stream (3 samples, 0.02%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::size_hint (4 samples, 0.03%)<core::pin::Pin<P> as http_body::Body>::size_hint (4 samples, 0.03%)http_body::Body::size_hint (3 samples, 0.02%)h2::proto::streams::send::Send::ensure_next_stream_id (3 samples, 0.02%)h2::client::SendRequest<B>::poll_ready (11 samples, 0.09%)h2::proto::streams::streams::Streams<B,h2::client::Peer>::poll_pending_open (8 samples, 0.06%)h2::proto::streams::streams::Actions::ensure_no_conn_error (3 samples, 0.02%)core::result::Result<T,E>::map (4 samples, 0.03%)h2::client::SendRequest<B>::send_request::_{{closure}} (4 samples, 0.03%)core::ptr::drop_in_place<std::sync::mutex::MutexGuard<crossbeam_channel::waker::Waker>> (2 samples, 0.02%)core::ptr::drop_in_place<http::extensions::Extensions> (5 samples, 0.04%)core::ptr::drop_in_place<core::option::Option<alloc::boxed::Box<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>>>> (5 samples, 0.04%)core::ptr::drop_in_place<alloc::boxed::Box<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>>> (4 samples, 0.03%)core::ptr::drop_in_place<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>> (4 samples, 0.03%)core::ptr::drop_in_place<hashbrown::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>> (4 samples, 0.03%)core::ptr::drop_in_place<hashbrown::raw::RawTable<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>)>> (4 samples, 0.03%)cfree (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)h2::frame::headers::Headers::new (2 samples, 0.02%)h2::hpack::header::BytesStr::from (2 samples, 0.02%)bytes::bytes::Bytes::copy_from_slice (2 samples, 0.02%)alloc::slice::<impl [T]>::to_vec (2 samples, 0.02%)alloc::slice::<impl [T]>::to_vec_in (2 samples, 0.02%)alloc::slice::hack::to_vec (2 samples, 0.02%)<T as alloc::slice::hack::ConvertVec>::to_vec (2 samples, 0.02%)core::option::Option<T>::map (3 samples, 0.02%)h2::frame::headers::Pseudo::request::_{{closure}} (3 samples, 0.02%)h2::frame::headers::Pseudo::set_scheme (2 samples, 0.02%)h2::client::Peer::convert_send_message (16 samples, 0.13%)h2::frame::headers::Pseudo::request (9 samples, 0.07%)h2::proto::peer::Dyn::is_server (2 samples, 0.02%)h2::proto::streams::counts::Counts::peer (3 samples, 0.02%)h2::proto::streams::recv::Recv::init_window_sz (2 samples, 0.02%)h2::proto::streams::send::Send::init_window_sz (3 samples, 0.02%)<T as core::convert::Into<U>>::into (3 samples, 0.02%)h2::frame::headers::<impl core::convert::From<h2::frame::headers::Headers> for h2::frame::Frame<T>>::from (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (3 samples, 0.02%)_ZN5tokio7runtime4task5waker11wake_by_val17hd2d24891b6694d2eE.llvm.18378198931860043191 (3 samples, 0.02%)core::task::wake::Waker::wake (5 samples, 0.04%)tokio::runtime::task::waker::wake_by_val (2 samples, 0.02%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (2 samples, 0.02%)tokio::runtime::task::state::State::transition_to_notified_by_val (2 samples, 0.02%)tokio::runtime::task::state::State::fetch_update_action (2 samples, 0.02%)tokio::runtime::task::state::State::load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)h2::frame::headers::PushPromise::fields (4 samples, 0.03%)core::ptr::drop_in_place<tracing::span::Span> (2 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::schedule_send (4 samples, 0.03%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (3 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::queue_frame (9 samples, 0.07%)h2::proto::streams::prioritize::Prioritize::queue_open (4 samples, 0.03%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (3 samples, 0.02%)http::header::map::HeaderMap<T>::find (3 samples, 0.02%)http::header::map::hash_elem_using (2 samples, 0.02%)core::iter::traits::iterator::Iterator::for_each (3 samples, 0.02%)core::iter::traits::iterator::Iterator::fold (3 samples, 0.02%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (3 samples, 0.02%)http::header::name::parse_hdr::_{{closure}} (3 samples, 0.02%)http::header::name::parse_hdr (5 samples, 0.04%)http::header::name::StandardHeader::from_bytes (2 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find (9 samples, 0.07%)http::header::name::HdrName::from_bytes (9 samples, 0.07%)http::header::map::HeaderMap<T>::contains_key (15 samples, 0.12%)h2::proto::streams::send::Send::check_headers (19 samples, 0.15%)h2::proto::streams::send::Send::send_headers (57 samples, 0.46%)h2::proto::streams::store::Queue<N>::push (2 samples, 0.02%)indexmap::map::IndexMap<K,V,S>::hash (2 samples, 0.02%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (2 samples, 0.02%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (2 samples, 0.02%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (2 samples, 0.02%)indexmap::map::IndexMap<K,V,S>::insert (3 samples, 0.02%)indexmap::map::IndexMap<K,V,S>::insert_full (3 samples, 0.02%)h2::proto::streams::store::Store::insert (10 samples, 0.08%)slab::Slab<T>::insert (5 samples, 0.04%)slab::Slab<T>::insert_at (4 samples, 0.03%)[libc.so.6] (2 samples, 0.02%)h2::proto::streams::stream::Stream::new (4 samples, 0.03%)h2::proto::streams::flow_control::FlowControl::inc_window (4 samples, 0.03%)core::option::Option<T>::expect (3 samples, 0.02%)h2::proto::streams::streams::OpaqueStreamRef::new (2 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)core::alloc::layout::Layout::for_value_raw (2 samples, 0.02%)core::mem::size_of_val_raw (2 samples, 0.02%)http::extensions::Extensions::clear (9 samples, 0.07%)std::collections::hash::map::HashMap<K,V,S>::clear (9 samples, 0.07%)hashbrown::map::HashMap<K,V,S,A>::clear (9 samples, 0.07%)hashbrown::raw::RawTable<T,A>::clear (9 samples, 0.07%)hashbrown::raw::RawTable<T,A>::drop_elements (8 samples, 0.06%)hashbrown::raw::Bucket<T>::drop (8 samples, 0.06%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (8 samples, 0.06%)core::ptr::drop_in_place<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>)> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>> (7 samples, 0.06%)core::ptr::drop_in_place<prost::error::EncodeError> (3 samples, 0.02%)h2::client::SendRequest<B>::send_request (130 samples, 1.06%)h2::proto::streams::streams::Streams<B,P>::send_request (123 samples, 1.00%)core::option::Option<T>::map (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (2 samples, 0.02%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::read (3 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::pop (11 samples, 0.09%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (8 samples, 0.06%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (17 samples, 0.14%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (17 samples, 0.14%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (3 samples, 0.02%)tokio::sync::task::atomic_waker::AtomicWaker::do_register (3 samples, 0.02%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (24 samples, 0.19%)tokio::sync::mpsc::chan::Rx<T,S>::recv (24 samples, 0.19%)tokio::runtime::coop::poll_proceed (3 samples, 0.02%)tokio::runtime::context::budget (3 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (3 samples, 0.02%)tokio::runtime::context::budget::_{{closure}} (3 samples, 0.02%)tokio::runtime::coop::poll_proceed::_{{closure}} (3 samples, 0.02%)core::cell::Cell<T>::set (2 samples, 0.02%)core::cell::Cell<T>::replace (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::ptr::write (2 samples, 0.02%)hyper::client::dispatch::Receiver<T,U>::poll_recv (34 samples, 0.28%)want::Taker::want (4 samples, 0.03%)want::Taker::signal (4 samples, 0.03%)<T as core::convert::Into<U>>::into (4 samples, 0.03%)want::<impl core::convert::From<want::State> for usize>::from (3 samples, 0.02%)<T as futures_util::fns::FnOnce1<A>>::call_once (2 samples, 0.02%)h2::frame::data::Data<T>::is_end_stream (2 samples, 0.02%)h2::frame::data::DataFlags::is_end_stream (2 samples, 0.02%)<h2::share::SendStream<hyper::proto::h2::SendBuf<B>> as hyper::proto::h2::SendStreamExt>::send_eos_frame (6 samples, 0.05%)h2::share::SendStream<B>::send_data (6 samples, 0.05%)h2::proto::streams::streams::StreamRef<B>::send_data (6 samples, 0.05%)h2::proto::streams::counts::Counts::transition (5 samples, 0.04%)h2::proto::streams::streams::StreamRef<B>::send_data::_{{closure}} (5 samples, 0.04%)h2::proto::streams::send::Send::send_data (4 samples, 0.03%)h2::proto::streams::prioritize::Prioritize::send_data (4 samples, 0.03%)bytes::bytes_mut::BytesMut::split_to (5 samples, 0.04%)bytes::bytes_mut::BytesMut::set_start (4 samples, 0.03%)core::ptr::drop_in_place<dcache::protobuf::dcache::RaftRequest> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::string::String> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (2 samples, 0.02%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (2 samples, 0.02%)alloc::alloc::dealloc (2 samples, 0.02%)cfree (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)alloc::raw_vec::finish_grow (16 samples, 0.13%)<alloc::alloc::Global as core::alloc::Allocator>::grow (16 samples, 0.13%)alloc::alloc::Global::grow_impl (16 samples, 0.13%)alloc::alloc::realloc (16 samples, 0.13%)realloc (15 samples, 0.12%)[libc.so.6] (12 samples, 0.10%)[libc.so.6] (11 samples, 0.09%)<tonic::codec::buffer::EncodeBuf as bytes::buf::buf_mut::BufMut>::chunk_mut (17 samples, 0.14%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::chunk_mut (17 samples, 0.14%)bytes::bytes_mut::BytesMut::reserve (17 samples, 0.14%)bytes::bytes_mut::BytesMut::reserve_inner (17 samples, 0.14%)alloc::vec::Vec<T,A>::reserve (17 samples, 0.14%)alloc::raw_vec::RawVec<T,A>::reserve (17 samples, 0.14%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (17 samples, 0.14%)alloc::raw_vec::RawVec<T,A>::grow_amortized (17 samples, 0.14%)[libc.so.6] (15 samples, 0.12%)bytes::buf::buf_mut::BufMut::put_slice (35 samples, 0.28%)core::intrinsics::copy_nonoverlapping (16 samples, 0.13%)prost::encoding::encode_key (4 samples, 0.03%)prost::encoding::encode_varint (4 samples, 0.03%)bytes::buf::buf_mut::BufMut::put_u8 (4 samples, 0.03%)bytes::buf::buf_mut::BufMut::put_slice (3 samples, 0.02%)<tonic::codec::prost::ProstEncoder<T> as tonic::codec::Encoder>::encode (44 samples, 0.36%)prost::message::Message::encode (42 samples, 0.34%)<dcache::protobuf::dcache::RaftRequest as prost::message::Message>::encode_raw (40 samples, 0.32%)prost::encoding::string::encode (40 samples, 0.32%)tonic::codec::buffer::EncodeBuf::new (2 samples, 0.02%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (53 samples, 0.43%)<tonic::codec::encode::EncodeBody<S> as http_body::Body>::poll_data (53 samples, 0.43%)<tonic::codec::encode::EncodedBytes<T,U> as futures_core::stream::Stream>::poll_next (52 samples, 0.42%)tonic::codec::encode::encode_item (47 samples, 0.38%)core::ptr::drop_in_place<std::sync::mutex::MutexGuard<h2::proto::streams::streams::Inner>> (3 samples, 0.02%)<std::sync::mutex::MutexGuard<T> as core::ops::drop::Drop>::drop (3 samples, 0.02%)std::sys::unix::locks::futex_mutex::Mutex::unlock (3 samples, 0.02%)h2::proto::streams::send::Send::capacity (2 samples, 0.02%)h2::share::SendStream<B>::capacity (9 samples, 0.07%)h2::proto::streams::streams::StreamRef<B>::capacity (9 samples, 0.07%)std::sync::mutex::Mutex<T>::lock (2 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)h2::share::SendStream<B>::poll_reset (7 samples, 0.06%)h2::proto::streams::streams::StreamRef<B>::poll_reset (7 samples, 0.06%)h2::proto::streams::send::Send::poll_reset (4 samples, 0.03%)<h2::proto::streams::store::Store as h2::proto::streams::store::Resolve>::resolve (2 samples, 0.02%)core::ptr::drop_in_place<std::sync::mutex::MutexGuard<h2::proto::streams::streams::Inner>> (2 samples, 0.02%)<std::sync::mutex::MutexGuard<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (2 samples, 0.02%)<h2::proto::streams::store::Store as core::ops::index::Index<h2::proto::streams::store::Key>>::index (2 samples, 0.02%)slab::Slab<T>::get (2 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::assign_connection_capacity (4 samples, 0.03%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (2 samples, 0.02%)<h2::proto::streams::store::Store as core::ops::index::Index<h2::proto::streams::store::Key>>::index (2 samples, 0.02%)h2::proto::streams::stream::Stream::assign_capacity (2 samples, 0.02%)h2::proto::streams::stream::Stream::notify_capacity (2 samples, 0.02%)h2::proto::streams::stream::Stream::notify_send (2 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::try_assign_capacity (11 samples, 0.09%)h2::proto::streams::prioritize::Prioritize::reserve_capacity (22 samples, 0.18%)h2::share::SendStream<B>::reserve_capacity (28 samples, 0.23%)h2::proto::streams::streams::StreamRef<B>::reserve_capacity (28 samples, 0.23%)h2::proto::streams::send::Send::reserve_capacity (2 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (2 samples, 0.02%)h2::proto::streams::counts::Counts::transition_after (2 samples, 0.02%)h2::frame::data::Data<T>::set_end_stream (2 samples, 0.02%)h2::frame::data::DataFlags::unset_end_stream (2 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (5 samples, 0.04%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::queue_frame (5 samples, 0.04%)h2::proto::streams::prioritize::Prioritize::try_assign_capacity (2 samples, 0.02%)h2::proto::streams::counts::Counts::transition (32 samples, 0.26%)h2::proto::streams::streams::StreamRef<B>::send_data::_{{closure}} (27 samples, 0.22%)h2::proto::streams::send::Send::send_data (24 samples, 0.19%)h2::proto::streams::prioritize::Prioritize::send_data (24 samples, 0.19%)std::sync::mutex::MutexGuard<T>::new (2 samples, 0.02%)std::sync::poison::Flag::guard (2 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (146 samples, 1.18%)<hyper::proto::h2::PipeToSendStream<S> as core::future::future::Future>::poll (146 samples, 1.18%)h2::share::SendStream<B>::send_data (39 samples, 0.32%)h2::proto::streams::streams::StreamRef<B>::send_data (39 samples, 0.32%)std::sync::mutex::Mutex<T>::lock (3 samples, 0.02%)core::ptr::drop_in_place<h2::share::SendStream<hyper::proto::h2::SendBuf<bytes::bytes::Bytes>>> (9 samples, 0.07%)core::ptr::drop_in_place<h2::proto::streams::streams::StreamRef<hyper::proto::h2::SendBuf<bytes::bytes::Bytes>>> (5 samples, 0.04%)core::ptr::drop_in_place<h2::proto::streams::streams::OpaqueStreamRef> (5 samples, 0.04%)<h2::proto::streams::streams::OpaqueStreamRef as core::ops::drop::Drop>::drop (5 samples, 0.04%)h2::proto::streams::streams::drop_stream_ref (5 samples, 0.04%)h2::proto::streams::counts::Counts::transition (2 samples, 0.02%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (165 samples, 1.34%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (165 samples, 1.34%)futures_util::future::future::map::_::<impl futures_util::future::future::map::Map<Fut,F>>::project_replace (17 samples, 0.14%)core::ptr::drop_in_place<(pin_project_lite::__private::UnsafeDropInPlaceGuard<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>>,())> (17 samples, 0.14%)core::ptr::drop_in_place<pin_project_lite::__private::UnsafeDropInPlaceGuard<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>>> (17 samples, 0.14%)<pin_project_lite::__private::UnsafeDropInPlaceGuard<T> as core::ops::drop::Drop>::drop (17 samples, 0.14%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>> (17 samples, 0.14%)core::ptr::drop_in_place<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>> (17 samples, 0.14%)core::ptr::drop_in_place<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>> (17 samples, 0.14%)core::ptr::drop_in_place<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>> (8 samples, 0.06%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>>> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>> (8 samples, 0.06%)core::ptr::drop_in_place<tonic::codec::encode::EncodeBody<tonic::codec::encode::EncodedBytes<tonic::codec::prost::ProstEncoder<dcache::protobuf::dcache::RaftRequest>,tokio_stream::stream_ext::map::Map<tokio_stream::once::Once<dcache::protobuf::dcache::RaftRequest>,core::result::Result<dcache::protobuf::dcache::RaftRequest,tonic::status::Status>::Ok>>>> (8 samples, 0.06%)core::ptr::drop_in_place<tonic::codec::encode::EncodedBytes<tonic::codec::prost::ProstEncoder<dcache::protobuf::dcache::RaftRequest>,tokio_stream::stream_ext::map::Map<tokio_stream::once::Once<dcache::protobuf::dcache::RaftRequest>,core::result::Result<dcache::protobuf::dcache::RaftRequest,tonic::status::Status>::Ok>>> (3 samples, 0.02%)core::ptr::drop_in_place<bytes::bytes_mut::BytesMut> (3 samples, 0.02%)<bytes::bytes_mut::BytesMut as core::ops::drop::Drop>::drop (3 samples, 0.02%)<tonic::transport::service::executor::SharedExec as hyper::rt::Executor<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>>>::execute (4 samples, 0.03%)<alloc::sync::Arc<T,A> as core::ops::deref::Deref>::deref (3 samples, 0.02%)alloc::sync::Arc<T,A>::inner (3 samples, 0.02%)core::ptr::non_null::NonNull<T>::as_ref (3 samples, 0.02%)tokio::runtime::context::with_scheduler (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::runtime::context::with_scheduler::_{{closure}} (2 samples, 0.02%)tokio::runtime::context::scoped::Scoped<T>::with (2 samples, 0.02%)tokio::runtime::scheduler::current_thread::_<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule::_{{closure}} (2 samples, 0.02%)tokio::runtime::scheduler::current_thread::Core::push_task (2 samples, 0.02%)alloc::collections::vec_deque::VecDeque<T,A>::push_back (2 samples, 0.02%)tokio::util::sharded_list::ShardGuard<L,<L as tokio::util::linked_list::Link>::Target>::push (4 samples, 0.03%)tokio::util::linked_list::LinkedList<L,<L as tokio::util::linked_list::Link>::Target>::push_front (3 samples, 0.02%)<tokio::runtime::task::Task<S> as tokio::util::linked_list::Link>::pointers (2 samples, 0.02%)tokio::runtime::task::core::Header::get_trailer (2 samples, 0.02%)tokio::runtime::task::list::OwnedTasks<S>::bind_inner (7 samples, 0.06%)tokio::util::sharded_list::ShardedList<L,<L as tokio::util::linked_list::Link>::Target>::lock_shard (3 samples, 0.02%)alloc::boxed::Box<T>::new (16 samples, 0.13%)alloc::alloc::exchange_malloc (16 samples, 0.13%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (16 samples, 0.13%)alloc::alloc::Global::alloc_impl (16 samples, 0.13%)alloc::alloc::alloc (16 samples, 0.13%)__rdl_alloc (16 samples, 0.13%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (14 samples, 0.11%)std::sys::unix::alloc::aligned_malloc (14 samples, 0.11%)posix_memalign (13 samples, 0.11%)[libc.so.6] (12 samples, 0.10%)[libc.so.6] (5 samples, 0.04%)[libc.so.6] (4 samples, 0.03%)tokio::runtime::task::core::Cell<T,S>::new (17 samples, 0.14%)<tonic::transport::service::executor::TokioExec as hyper::rt::Executor<F>>::execute (35 samples, 0.28%)tokio::task::spawn::spawn (32 samples, 0.26%)tokio::task::spawn::spawn_inner (32 samples, 0.26%)tokio::runtime::context::current::with_current (32 samples, 0.26%)std::thread::local::LocalKey<T>::try_with (32 samples, 0.26%)tokio::runtime::context::current::with_current::_{{closure}} (31 samples, 0.25%)core::option::Option<T>::map (30 samples, 0.24%)tokio::task::spawn::spawn_inner::_{{closure}} (30 samples, 0.24%)tokio::runtime::scheduler::Handle::spawn (30 samples, 0.24%)tokio::runtime::scheduler::current_thread::Handle::spawn (29 samples, 0.24%)tokio::runtime::task::list::OwnedTasks<S>::bind (26 samples, 0.21%)tokio::runtime::task::new_task (19 samples, 0.15%)tokio::runtime::task::raw::RawTask::new (19 samples, 0.15%)tokio::runtime::task::state::State::new (2 samples, 0.02%)__rdl_alloc (2 samples, 0.02%)alloc::boxed::Box<T>::pin (3 samples, 0.02%)alloc::boxed::Box<T>::new (3 samples, 0.02%)alloc::alloc::exchange_malloc (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (3 samples, 0.02%)alloc::alloc::Global::alloc_impl (3 samples, 0.02%)alloc::alloc::alloc (3 samples, 0.02%)core::ptr::drop_in_place<futures_util::future::future::Map<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>,hyper::proto::h2::client::ClientTask<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>::poll_pipe::{{closure}}>> (2 samples, 0.02%)core::ptr::drop_in_place<futures_util::future::future::map::Map<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::PipeToSendStream<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>,hyper::proto::h2::client::ClientTask<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>::poll_pipe::{{closure}}>> (2 samples, 0.02%)hyper::proto::h2::client::ClientTask<B>::poll_pipe (221 samples, 1.79%)h..hyper::common::exec::Exec::execute (4 samples, 0.03%)core::option::Option<T>::map (7 samples, 0.06%)hyper::proto::h2::strip_connection_headers::_{{closure}} (7 samples, 0.06%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::ne (7 samples, 0.06%)core::cmp::PartialEq::ne (7 samples, 0.06%)<http::header::value::HeaderValue as core::cmp::PartialEq<str>>::eq (7 samples, 0.06%)<bytes::bytes::Bytes as core::cmp::PartialEq<&T>>::eq (7 samples, 0.06%)<bytes::bytes::Bytes as core::cmp::PartialEq<[u8]>>::eq (7 samples, 0.06%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (7 samples, 0.06%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (7 samples, 0.06%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (7 samples, 0.06%)[libc.so.6] (4 samples, 0.03%)core::ptr::drop_in_place<[http::header::name::HeaderName: 5]> (4 samples, 0.03%)core::ptr::drop_in_place<http::header::name::HeaderName> (4 samples, 0.03%)core::ptr::drop_in_place<http::header::name::Repr<http::header::name::Custom>> (4 samples, 0.03%)core::ptr::drop_in_place<http::header::name::Custom> (4 samples, 0.03%)core::ptr::drop_in_place<http::byte_str::ByteStr> (4 samples, 0.03%)core::ptr::drop_in_place<bytes::bytes::Bytes> (4 samples, 0.03%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (4 samples, 0.03%)bytes::bytes::promotable_even_drop (4 samples, 0.03%)<core::sync::atomic::AtomicPtr<T> as bytes::loom::sync::atomic::AtomicMut<T>>::with_mut (2 samples, 0.02%)core::result::Result<T,E>::unwrap (2 samples, 0.02%)http::header::map::HeaderMap<T>::get (2 samples, 0.02%)http::header::map::HeaderMap<T>::get2 (2 samples, 0.02%)<http::header::name::HeaderName as http::header::map::as_header_name::Sealed>::find (2 samples, 0.02%)http::header::map::HeaderMap<T>::find (2 samples, 0.02%)http::header::map::HeaderMap<T>::remove (4 samples, 0.03%)<&http::header::name::HeaderName as http::header::map::as_header_name::Sealed>::find (4 samples, 0.03%)http::header::map::HeaderMap<T>::find (4 samples, 0.03%)http::header::map::hash_elem_using (3 samples, 0.02%)<http::header::name::HeaderName as core::hash::Hash>::hash (3 samples, 0.02%)<http::header::name::Repr<T> as core::hash::Hash>::hash (3 samples, 0.02%)<http::header::name::Custom as core::hash::Hash>::hash (3 samples, 0.02%)<fnv::FnvHasher as core::hash::Hasher>::write (3 samples, 0.02%)core::num::<impl u64>::wrapping_mul (2 samples, 0.02%)<T as core::convert::Into<U>>::into (2 samples, 0.02%)<bytes::bytes::Bytes as core::convert::From<alloc::vec::Vec<u8>>>::from (2 samples, 0.02%)bytes::bytes::Bytes::copy_from_slice (4 samples, 0.03%)alloc::slice::<impl [T]>::to_vec (2 samples, 0.02%)alloc::slice::<impl [T]>::to_vec_in (2 samples, 0.02%)alloc::slice::hack::to_vec (2 samples, 0.02%)<T as alloc::slice::hack::ConvertVec>::to_vec (2 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::allocate_in (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.02%)alloc::alloc::Global::alloc_impl (2 samples, 0.02%)alloc::alloc::alloc (2 samples, 0.02%)malloc (2 samples, 0.02%)<hyper::client::service::Connect<C,B,T> as tower_service::Service<T>>::call::_{{closure}}::_{{closure}} (457 samples, 3.71%)<hyp..<hyper::client::conn::Connection<T,B> as core::future::future::Future>::poll (449 samples, 3.64%)<hyp..<hyper::client::conn::ProtoClient<T,B> as core::future::future::Future>::poll (448 samples, 3.64%)<hyp..<hyper::proto::h2::client::ClientTask<B> as core::future::future::Future>::poll (448 samples, 3.64%)<hyp..hyper::proto::h2::strip_connection_headers (28 samples, 0.23%)http::header::name::HeaderName::from_lowercase (8 samples, 0.06%)http::header::name::parse_hdr (3 samples, 0.02%)core::slice::<impl [T]>::contains (2 samples, 0.02%)<u8 as core::slice::cmp::SliceContains>::slice_contains (2 samples, 0.02%)core::slice::memchr::memchr (2 samples, 0.02%)<tonic::transport::service::connection::Connection as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::call (2 samples, 0.02%)<tower::util::boxed::sync::BoxService<T,U,E> as tower_service::Service<T>>::call (2 samples, 0.02%)<alloc::boxed::Box<S> as tower_service::Service<Request>>::call (2 samples, 0.02%)<T as core::convert::Into<U>>::into (3 samples, 0.02%)<http::uri::Parts as core::convert::From<http::uri::Uri>>::from (3 samples, 0.02%)<core::option::Option<T> as core::clone::Clone>::clone (2 samples, 0.02%)<http::uri::authority::Authority as core::clone::Clone>::clone (2 samples, 0.02%)<http::byte_str::ByteStr as core::clone::Clone>::clone (2 samples, 0.02%)<http::header::value::HeaderValue as core::clone::Clone>::clone (3 samples, 0.02%)hyper::client::dispatch::Sender<T,U>::can_send (3 samples, 0.02%)want::Giver::give (3 samples, 0.02%)<T as core::convert::Into<U>>::into (2 samples, 0.02%)want::<impl core::convert::From<want::State> for usize>::from (2 samples, 0.02%)tokio::sync::mpsc::list::Tx<T>::push (6 samples, 0.05%)tokio::sync::mpsc::list::Tx<T>::find_block (4 samples, 0.03%)tokio::sync::mpsc::block::start_index (3 samples, 0.02%)tokio::sync::mpsc::chan::Tx<T,S>::send (12 samples, 0.10%)tokio::sync::mpsc::chan::Chan<T,S>::send (12 samples, 0.10%)tokio::sync::task::atomic_waker::AtomicWaker::wake (5 samples, 0.04%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (4 samples, 0.03%)core::sync::atomic::AtomicUsize::fetch_or (4 samples, 0.03%)core::sync::atomic::atomic_or (4 samples, 0.03%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (13 samples, 0.11%)alloc::sync::Arc<T>::new (2 samples, 0.02%)alloc::boxed::Box<T>::new (2 samples, 0.02%)alloc::alloc::exchange_malloc (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.02%)alloc::alloc::Global::alloc_impl (2 samples, 0.02%)alloc::alloc::alloc (2 samples, 0.02%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::call (30 samples, 0.24%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::call (29 samples, 0.24%)<tonic::transport::service::reconnect::Reconnect<M,Target> as tower_service::Service<Request>>::call (29 samples, 0.24%)<hyper::client::conn::SendRequest<B> as tower_service::Service<http::request::Request<B>>>::call (28 samples, 0.23%)hyper::client::conn::SendRequest<B>::send_request (28 samples, 0.23%)hyper::client::dispatch::Sender<T,U>::send (28 samples, 0.23%)tokio::sync::oneshot::channel (8 samples, 0.06%)tokio::sync::oneshot::State::new (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find::_{{closure}} (2 samples, 0.02%)http::header::map::HeaderMap<T>::find (2 samples, 0.02%)<tonic::transport::service::grpc_timeout::GrpcTimeout<S> as tower_service::Service<http::request::Request<ReqBody>>>::call (38 samples, 0.31%)tonic::transport::service::grpc_timeout::try_parse_grpc_timeout (6 samples, 0.05%)http::header::map::HeaderMap<T>::get (3 samples, 0.02%)http::header::map::HeaderMap<T>::get2 (3 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find (3 samples, 0.02%)http::header::name::HdrName::from_bytes (3 samples, 0.02%)http::header::map::HeaderMap<T>::insert_entry (2 samples, 0.02%)alloc::vec::Vec<T,A>::push (2 samples, 0.02%)core::ptr::write (2 samples, 0.02%)http::header::map::HeaderMap<T>::reserve_one (2 samples, 0.02%)<tonic::transport::service::user_agent::UserAgent<T> as tower_service::Service<http::request::Request<ReqBody>>>::call (50 samples, 0.41%)http::header::map::HeaderMap<T>::insert (7 samples, 0.06%)<http::header::name::HeaderName as http::header::map::into_header_name::Sealed>::insert (7 samples, 0.06%)http::header::map::HeaderMap<T>::insert2 (7 samples, 0.06%)alloc::boxed::Box<T>::pin (2 samples, 0.02%)alloc::boxed::Box<T>::new (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<tonic::transport::service::add_origin::AddOrigin<T> as tower_service::Service<http::request::Request<ReqBody>>>::call (63 samples, 0.51%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::call (67 samples, 0.54%)<tower::util::map_future::MapFuture<S,F> as tower_service::Service<R>>::call (64 samples, 0.52%)<hyper::client::conn::SendRequest<B> as tower_service::Service<http::request::Request<B>>>::poll_ready (2 samples, 0.02%)hyper::client::conn::SendRequest<B>::poll_ready (2 samples, 0.02%)hyper::client::dispatch::Sender<T,U>::poll_ready (2 samples, 0.02%)want::Giver::poll_want (2 samples, 0.02%)<tower::util::boxed::sync::BoxService<T,U,E> as tower_service::Service<T>>::poll_ready (13 samples, 0.11%)<alloc::boxed::Box<S> as tower_service::Service<Request>>::poll_ready (13 samples, 0.11%)<tower::util::map_future::MapFuture<S,F> as tower_service::Service<R>>::poll_ready (13 samples, 0.11%)<tonic::transport::service::add_origin::AddOrigin<T> as tower_service::Service<http::request::Request<ReqBody>>>::poll_ready (12 samples, 0.10%)<tonic::transport::service::user_agent::UserAgent<T> as tower_service::Service<http::request::Request<ReqBody>>>::poll_ready (12 samples, 0.10%)<tonic::transport::service::grpc_timeout::GrpcTimeout<S> as tower_service::Service<http::request::Request<ReqBody>>>::poll_ready (12 samples, 0.10%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::poll_ready (12 samples, 0.10%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::poll_ready (12 samples, 0.10%)<tonic::transport::service::reconnect::Reconnect<M,Target> as tower_service::Service<Request>>::poll_ready (12 samples, 0.10%)core::option::Option<T>::is_some (2 samples, 0.02%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::poll_ready (16 samples, 0.13%)<tonic::transport::service::connection::Connection as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::poll_ready (16 samples, 0.13%)<tokio::sync::semaphore::OwnedSemaphorePermit as core::ops::drop::Drop>::drop (4 samples, 0.03%)core::ptr::drop_in_place<tokio::sync::semaphore::OwnedSemaphorePermit> (5 samples, 0.04%)tokio::sync::oneshot::Sender<T>::send (6 samples, 0.05%)tokio::sync::oneshot::Inner<T>::complete (6 samples, 0.05%)tokio::sync::oneshot::Task::with_task (2 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (2 samples, 0.02%)tokio::sync::oneshot::Task::with_task::_{{closure}} (2 samples, 0.02%)core::ops::function::FnOnce::call_once (2 samples, 0.02%)core::task::wake::Waker::wake_by_ref (2 samples, 0.02%)tokio::runtime::task::waker::wake_by_ref (2 samples, 0.02%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_ref (2 samples, 0.02%)tokio::runtime::task::state::State::transition_to_notified_by_ref (2 samples, 0.02%)tokio::runtime::task::state::State::fetch_update_action (2 samples, 0.02%)tokio::runtime::task::state::State::load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::option::Option<T>::take (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (8 samples, 0.06%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (8 samples, 0.06%)tokio::sync::mpsc::list::Rx<T>::pop (6 samples, 0.05%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (2 samples, 0.02%)tokio::runtime::context::budget (3 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (3 samples, 0.02%)tokio::runtime::context::budget::_{{closure}} (3 samples, 0.02%)tokio::runtime::coop::poll_proceed::_{{closure}} (3 samples, 0.02%)core::cell::Cell<T>::get (3 samples, 0.02%)tower::buffer::worker::Worker<T,Request>::poll_next_msg (22 samples, 0.18%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (16 samples, 0.13%)tokio::sync::mpsc::chan::Rx<T,S>::recv (16 samples, 0.13%)tokio::runtime::coop::poll_proceed (7 samples, 0.06%)<tower::buffer::worker::Worker<T,Request> as core::future::future::Future>::poll (124 samples, 1.01%)__vdso_clock_gettime (2 samples, 0.02%)[unknown] (2 samples, 0.02%)hyper::body::body::Body::h2 (2 samples, 0.02%)h2::proto::streams::streams::OpaqueStreamRef::is_end_stream (3 samples, 0.02%)http::response::Response<T>::map (10 samples, 0.08%)hyper::proto::h2::client::ClientTask<B>::poll_pipe::_{{closure}}::_{{closure}} (10 samples, 0.08%)hyper::proto::h2::ping::Recorder::for_stream (5 samples, 0.04%)http::header::map::HeaderMap<T>::get_all (6 samples, 0.05%)<http::header::name::HeaderName as http::header::map::as_header_name::Sealed>::find (6 samples, 0.05%)http::header::map::HeaderMap<T>::find (6 samples, 0.05%)http::header::map::hash_elem_using (3 samples, 0.02%)hyper::headers::content_length_parse_all (11 samples, 0.09%)hyper::headers::content_length_parse_all_values (3 samples, 0.02%)<http::header::map::ValueIter<T> as core::iter::traits::iterator::Iterator>::next (3 samples, 0.02%)<T as futures_util::fns::FnOnce1<A>>::call_once (28 samples, 0.23%)hyper::proto::h2::client::ClientTask<B>::poll_pipe::_{{closure}} (25 samples, 0.20%)hyper::proto::h2::ping::Recorder::record_non_data (3 samples, 0.02%)<h2::proto::streams::streams::OpaqueStreamRef as core::clone::Clone>::clone (5 samples, 0.04%)core::ptr::drop_in_place<std::sync::mutex::MutexGuard<h2::proto::streams::streams::Inner>> (2 samples, 0.02%)<std::sync::mutex::MutexGuard<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)std::sys::unix::locks::futex_mutex::Mutex::unlock (2 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)<h2::proto::streams::store::Store as core::ops::index::IndexMut<h2::proto::streams::store::Key>>::index_mut (2 samples, 0.02%)slab::Slab<T>::get_mut (2 samples, 0.02%)h2::proto::streams::buffer::Deque::pop_front (3 samples, 0.02%)slab::Slab<T>::remove (2 samples, 0.02%)slab::Slab<T>::try_remove (2 samples, 0.02%)core::mem::replace (2 samples, 0.02%)core::ptr::read (2 samples, 0.02%)<h2::client::ResponseFuture as core::future::future::Future>::poll (20 samples, 0.16%)h2::proto::streams::streams::OpaqueStreamRef::poll_response (11 samples, 0.09%)h2::proto::streams::recv::Recv::poll_response (10 samples, 0.08%)h2::proto::streams::state::State::ensure_recv_open (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)h2::proto::streams::counts::Counts::transition_after (2 samples, 0.02%)h2::proto::streams::counts::Counts::transition (4 samples, 0.03%)h2::proto::streams::streams::drop_stream_ref::_{{closure}} (2 samples, 0.02%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (59 samples, 0.48%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (59 samples, 0.48%)futures_util::future::future::map::_::<impl futures_util::future::future::map::Map<Fut,F>>::project_replace (8 samples, 0.06%)core::ptr::drop_in_place<(pin_project_lite::__private::UnsafeDropInPlaceGuard<h2::client::ResponseFuture>,())> (8 samples, 0.06%)core::ptr::drop_in_place<pin_project_lite::__private::UnsafeDropInPlaceGuard<h2::client::ResponseFuture>> (8 samples, 0.06%)<pin_project_lite::__private::UnsafeDropInPlaceGuard<T> as core::ops::drop::Drop>::drop (8 samples, 0.06%)core::ptr::drop_in_place<h2::client::ResponseFuture> (8 samples, 0.06%)core::ptr::drop_in_place<h2::proto::streams::streams::OpaqueStreamRef> (8 samples, 0.06%)<h2::proto::streams::streams::OpaqueStreamRef as core::ops::drop::Drop>::drop (8 samples, 0.06%)h2::proto::streams::streams::drop_stream_ref (8 samples, 0.06%)tokio::runtime::coop::poll_proceed (3 samples, 0.02%)tokio::runtime::context::budget (3 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (3 samples, 0.02%)tokio::runtime::context::budget::_{{closure}} (3 samples, 0.02%)tokio::runtime::coop::poll_proceed::_{{closure}} (3 samples, 0.02%)tokio::runtime::coop::Budget::decrement (3 samples, 0.02%)tokio::sync::oneshot::State::load (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)hyper::client::dispatch::Callback<T,U>::poll_canceled (15 samples, 0.12%)tokio::sync::oneshot::Sender<T>::poll_closed (15 samples, 0.12%)tokio::sync::oneshot::Task::set_task (5 samples, 0.04%)<hyper::client::dispatch::Callback<T,U> as core::ops::drop::Drop>::drop (2 samples, 0.02%)hyper::error::Error::new_user_dispatch_gone (2 samples, 0.02%)hyper::error::Error::new (2 samples, 0.02%)cfree (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>> (4 samples, 0.03%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>> (4 samples, 0.03%)core::ptr::drop_in_place<hyper::client::dispatch::Callback<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,http::response::Response<hyper::body::body::Body>>> (11 samples, 0.09%)core::ptr::drop_in_place<hyper::error::Error> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<hyper::error::ErrorImpl>> (5 samples, 0.04%)core::ptr::drop_in_place<hyper::error::ErrorImpl> (5 samples, 0.04%)tokio::sync::oneshot::State::set_complete (2 samples, 0.02%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (97 samples, 0.79%)hyper::client::dispatch::Callback<T,U>::send_when::_{{closure}}::_{{closure}} (96 samples, 0.78%)hyper::client::dispatch::Callback<T,U>::send (21 samples, 0.17%)tokio::sync::oneshot::Sender<T>::send (9 samples, 0.07%)tokio::sync::oneshot::Inner<T>::complete (7 samples, 0.06%)tokio::sync::oneshot::Task::with_task (4 samples, 0.03%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (4 samples, 0.03%)tokio::sync::oneshot::Task::with_task::_{{closure}} (4 samples, 0.03%)core::ops::function::FnOnce::call_once (4 samples, 0.03%)core::task::wake::Waker::wake_by_ref (4 samples, 0.03%)tokio::runtime::task::waker::wake_by_ref (3 samples, 0.02%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_ref (2 samples, 0.02%)tokio::runtime::task::state::State::transition_to_notified_by_ref (2 samples, 0.02%)tokio::runtime::task::state::State::fetch_update_action (2 samples, 0.02%)tokio::runtime::task::state::State::load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)hyper::client::dispatch::Callback<T,U>::send_when::_{{closure}} (106 samples, 0.86%)futures_channel::mpsc::State::is_closed (2 samples, 0.02%)futures_channel::mpsc::decode_state (2 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::is_null (2 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::is_null::runtime_impl (2 samples, 0.02%)futures_channel::mpsc::Receiver<T>::next_message (12 samples, 0.10%)futures_channel::mpsc::queue::Queue<T>::pop_spin (7 samples, 0.06%)futures_channel::mpsc::queue::Queue<T>::pop (7 samples, 0.06%)core::sync::atomic::AtomicPtr<T>::load (5 samples, 0.04%)core::sync::atomic::atomic_load (5 samples, 0.04%)<futures_util::stream::stream::into_future::StreamFuture<St> as core::future::future::Future>::poll (22 samples, 0.18%)futures_util::stream::stream::StreamExt::poll_next_unpin (21 samples, 0.17%)<futures_channel::mpsc::Receiver<T> as futures_core::stream::Stream>::poll_next (21 samples, 0.17%)futures_core::task::__internal::atomic_waker::AtomicWaker::register (5 samples, 0.04%)<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (27 samples, 0.22%)<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (27 samples, 0.22%)futures_util::future::future::map::_::<impl futures_util::future::future::map::Map<Fut,F>>::project (4 samples, 0.03%)h2::proto::connection::Connection<T,P,B>::maybe_close_connection_if_no_streams (8 samples, 0.06%)h2::proto::streams::streams::Streams<B,P>::has_streams_or_other_references (7 samples, 0.06%)std::sync::mutex::Mutex<T>::lock (3 samples, 0.02%)std::sys::unix::locks::futex_mutex::Mutex::lock (3 samples, 0.02%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (4 samples, 0.03%)tokio_util::codec::length_delimited::LengthDelimitedCodec::decode_data (3 samples, 0.02%)bytes::bytes_mut::BytesMut::split_to (3 samples, 0.02%)bytes::bytes_mut::BytesMut::shallow_clone (2 samples, 0.02%)bytes::bytes_mut::increment_shared (2 samples, 0.02%)<tokio_util::codec::length_delimited::LengthDelimitedCodec as tokio_util::codec::decoder::Decoder>::decode (5 samples, 0.04%)tokio_util::codec::length_delimited::LengthDelimitedCodec::decode_head (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::chunk_mut (2 samples, 0.02%)<T as core::convert::Into<U>>::into (2 samples, 0.02%)<&mut bytes::buf::uninit_slice::UninitSlice as core::convert::From<&mut [u8]>>::from (2 samples, 0.02%)<tonic::transport::service::io::BoxedIo as tokio::io::async_read::AsyncRead>::poll_read (9 samples, 0.07%)<core::pin::Pin<P> as tokio::io::async_read::AsyncRead>::poll_read (9 samples, 0.07%)core::pin::Pin<P>::as_mut (4 samples, 0.03%)<alloc::boxed::Box<T,A> as core::ops::deref::DerefMut>::deref_mut (4 samples, 0.03%)[libc.so.6] (3 samples, 0.02%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read (19 samples, 0.15%)mio::io_source::IoSource<T>::do_io (17 samples, 0.14%)mio::sys::unix::stateless_io_source::IoSourceState::do_io (17 samples, 0.14%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read::_{{closure}} (17 samples, 0.14%)<&std::net::tcp::TcpStream as std::io::Read>::read (17 samples, 0.14%)std::sys_common::net::TcpStream::read (17 samples, 0.14%)std::sys::unix::net::Socket::read (17 samples, 0.14%)std::sys::unix::net::Socket::recv_with_flags (17 samples, 0.14%)recv (17 samples, 0.14%)[unknown] (14 samples, 0.11%)[unknown] (14 samples, 0.11%)[unknown] (13 samples, 0.11%)[unknown] (12 samples, 0.10%)[unknown] (6 samples, 0.05%)[unknown] (5 samples, 0.04%)<h2::codec::framed_write::FramedWrite<T,B> as tokio::io::async_read::AsyncRead>::poll_read (47 samples, 0.38%)tokio::net::tcp::stream::TcpStream::poll_read_priv (37 samples, 0.30%)tokio::io::poll_evented::PollEvented<E>::poll_read (37 samples, 0.30%)tokio::runtime::io::registration::Registration::poll_read_ready (14 samples, 0.11%)tokio::runtime::io::registration::Registration::poll_ready (14 samples, 0.11%)tokio::runtime::io::scheduled_io::ScheduledIo::poll_readiness (12 samples, 0.10%)tokio::runtime::io::driver::Direction::mask (5 samples, 0.04%)tokio_util::util::poll_buf::poll_read_buf (55 samples, 0.45%)tokio::io::read_buf::ReadBuf::filled (3 samples, 0.02%)tokio::io::read_buf::slice_assume_init (3 samples, 0.02%)<tokio_util::codec::framed_read::FramedRead<T,D> as futures_core::stream::Stream>::poll_next (66 samples, 0.54%)<tokio_util::codec::framed_impl::FramedImpl<T,U,R> as futures_core::stream::Stream>::poll_next (64 samples, 0.52%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as core::ops::deref::Deref>::deref (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as core::convert::AsRef<[u8]>>::as_ref (2 samples, 0.02%)bytes::bytes_mut::BytesMut::as_slice (2 samples, 0.02%)[libc.so.6] (4 samples, 0.03%)bytes::bytes_mut::BytesMut::split_to (7 samples, 0.06%)bytes::bytes_mut::BytesMut::shallow_clone (3 samples, 0.02%)core::ptr::drop_in_place<bytes::bytes_mut::BytesMut> (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as core::ops::drop::Drop>::drop (2 samples, 0.02%)bytes::bytes_mut::BytesMut::kind (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (2 samples, 0.02%)h2::frame::head::Head::parse (2 samples, 0.02%)h2::frame::headers::Headers::load (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (2 samples, 0.02%)<http::header::name::HeaderName as core::cmp::PartialEq<&str>>::eq (5 samples, 0.04%)<http::header::name::HeaderName as core::cmp::PartialEq<str>>::eq (5 samples, 0.04%)http::header::name::HeaderName::as_str (4 samples, 0.03%)http::header::map::HeaderMap<T>::insert_entry (3 samples, 0.02%)alloc::vec::Vec<T,A>::push (3 samples, 0.02%)core::ptr::write (3 samples, 0.02%)alloc::vec::Vec<T>::with_capacity (3 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::allocate_in (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (3 samples, 0.02%)alloc::alloc::Global::alloc_impl (3 samples, 0.02%)alloc::alloc::alloc (3 samples, 0.02%)malloc (3 samples, 0.02%)alloc::vec::from_elem (2 samples, 0.02%)<T as alloc::vec::spec_from_elem::SpecFromElem>::from_elem (2 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::allocate_in (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.02%)alloc::alloc::Global::alloc_impl (2 samples, 0.02%)alloc::alloc::alloc (2 samples, 0.02%)malloc (2 samples, 0.02%)http::header::map::Danger::is_yellow (2 samples, 0.02%)http::header::map::HeaderMap<T>::append (13 samples, 0.11%)<http::header::name::HeaderName as http::header::map::into_header_name::Sealed>::append (13 samples, 0.11%)http::header::map::HeaderMap<T>::append2 (13 samples, 0.11%)http::header::map::HeaderMap<T>::reserve_one (10 samples, 0.08%)h2::frame::headers::HeaderBlock::load::_{{closure}} (30 samples, 0.24%)http::header::name::HeaderName::as_str (3 samples, 0.02%)<http::header::name::HeaderName as core::clone::Clone>::clone (5 samples, 0.04%)<http::header::name::Repr<T> as core::clone::Clone>::clone (3 samples, 0.02%)<http::header::name::Custom as core::clone::Clone>::clone (2 samples, 0.02%)<http::byte_str::ByteStr as core::clone::Clone>::clone (2 samples, 0.02%)h2::hpack::decoder::Table::get (11 samples, 0.09%)<h2::hpack::header::Header<T> as core::clone::Clone>::clone (10 samples, 0.08%)<http::header::value::HeaderValue as core::clone::Clone>::clone (2 samples, 0.02%)<bytes::bytes::Bytes as core::clone::Clone>::clone (2 samples, 0.02%)bytes::bytes::shared_clone (2 samples, 0.02%)bytes::bytes::shallow_clone_arc (2 samples, 0.02%)h2::hpack::decoder::Decoder::decode_indexed (15 samples, 0.12%)core::ptr::drop_in_place<bytes::bytes::Bytes> (2 samples, 0.02%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (2 samples, 0.02%)h2::hpack::decoder::consume (11 samples, 0.09%)h2::hpack::decoder::take (8 samples, 0.06%)bytes::bytes_mut::BytesMut::split_to (3 samples, 0.02%)h2::hpack::decoder::peek_u8 (3 samples, 0.02%)h2::codec::framed_read::decode_frame (98 samples, 0.80%)h2::frame::headers::Headers::load_hpack (69 samples, 0.56%)h2::frame::headers::HeaderBlock::load (69 samples, 0.56%)h2::hpack::decoder::Decoder::decode (67 samples, 0.54%)<h2::codec::Codec<T,B> as futures_core::stream::Stream>::poll_next (177 samples, 1.44%)<h2::codec::framed_read::FramedRead<T> as futures_core::stream::Stream>::poll_next (177 samples, 1.44%)tracing::__macro_support::__disabled_span (2 samples, 0.02%)tracing::span::Span::new_disabled (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)h2::proto::connection::Connection<T,P,B>::clear_expired_reset_streams (4 samples, 0.03%)h2::proto::streams::streams::Streams<B,P>::clear_expired_reset_streams (3 samples, 0.02%)h2::proto::connection::Connection<T,P,B>::poll_go_away (6 samples, 0.05%)h2::proto::go_away::GoAway::send_pending_go_away (6 samples, 0.05%)h2::proto::go_away::GoAway::should_close_now (4 samples, 0.03%)core::ptr::drop_in_place<tracing::span::Span> (6 samples, 0.05%)h2::proto::ping_pong::PingPong::send_pending_pong (2 samples, 0.02%)h2::proto::settings::Settings::poll_send (7 samples, 0.06%)h2::proto::streams::streams::Streams<B,P>::send_pending_refusal (3 samples, 0.02%)std::sync::mutex::Mutex<T>::lock (2 samples, 0.02%)std::sys::unix::locks::futex_mutex::Mutex::lock (2 samples, 0.02%)h2::proto::connection::Connection<T,P,B>::poll_ready (26 samples, 0.21%)tracing::span::Span::enter (2 samples, 0.02%)tracing::span::Span::do_enter (2 samples, 0.02%)<alloc::sync::Arc<T,A> as core::ops::deref::Deref>::deref (3 samples, 0.02%)alloc::sync::Arc<T,A>::inner (3 samples, 0.02%)core::ptr::non_null::NonNull<T>::as_ref (3 samples, 0.02%)h2::proto::connection::ConnectionInner<P,B>::as_dyn (11 samples, 0.09%)h2::proto::streams::streams::Streams<B,P>::as_dyn (11 samples, 0.09%)<h2::client::Peer as h2::proto::peer::Peer>::dyn (6 samples, 0.05%)h2::proto::streams::counts::Counts::transition (13 samples, 0.11%)h2::proto::streams::streams::Inner::recv_data::_{{closure}} (11 samples, 0.09%)h2::proto::streams::recv::Recv::recv_data (11 samples, 0.09%)h2::proto::streams::recv::Recv::consume_connection_window (3 samples, 0.02%)h2::proto::streams::store::Store::find_mut (4 samples, 0.03%)indexmap::map::IndexMap<K,V,S>::get (2 samples, 0.02%)indexmap::map::IndexMap<K,V,S>::get_index_of (2 samples, 0.02%)h2::proto::streams::streams::DynStreams<B>::recv_data (21 samples, 0.17%)h2::proto::streams::streams::Inner::recv_data (20 samples, 0.16%)h2::frame::headers::Headers::stream_id (2 samples, 0.02%)indexmap::map::IndexMap<K,V,S>::hash (3 samples, 0.02%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (3 samples, 0.02%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (3 samples, 0.02%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (3 samples, 0.02%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::d_rounds (2 samples, 0.02%)h2::proto::streams::counts::Counts::transition_after (6 samples, 0.05%)h2::proto::streams::store::Ptr::unlink (4 samples, 0.03%)indexmap::map::IndexMap<K,V,S>::swap_remove (4 samples, 0.03%)indexmap::map::IndexMap<K,V,S>::swap_remove_full (4 samples, 0.03%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (2 samples, 0.02%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (4 samples, 0.03%)[libc.so.6] (4 samples, 0.03%)h2::frame::headers::Headers::into_parts (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<http::header::map::HeaderMap> (3 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::Vec<http::header::map::ExtraValue<http::header::value::HeaderValue>>> (2 samples, 0.02%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)http::response::Builder::status (2 samples, 0.02%)http::response::Builder::and_then (2 samples, 0.02%)h2::proto::peer::Dyn::convert_poll_message (16 samples, 0.13%)<h2::client::Peer as h2::proto::peer::Peer>::convert_poll_message (15 samples, 0.12%)http::response::Response<()>::builder (4 samples, 0.03%)http::response::Builder::new (4 samples, 0.03%)<http::response::Builder as core::default::Default>::default (4 samples, 0.03%)http::response::Parts::new (4 samples, 0.03%)<http::header::map::HeaderMap<T> as core::default::Default>::default (2 samples, 0.02%)http::header::map::HeaderMap<T>::with_capacity (2 samples, 0.02%)h2::proto::streams::buffer::Deque::push_back (4 samples, 0.03%)slab::Slab<T>::insert (4 samples, 0.03%)slab::Slab<T>::insert_at (4 samples, 0.03%)[libc.so.6] (2 samples, 0.02%)h2::proto::streams::state::State::recv_open (2 samples, 0.02%)tokio::runtime::context::with_scheduler (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::runtime::context::with_scheduler::_{{closure}} (2 samples, 0.02%)tokio::runtime::context::scoped::Scoped<T>::with (2 samples, 0.02%)tokio::runtime::scheduler::current_thread::_<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule::_{{closure}} (2 samples, 0.02%)tokio::runtime::task::raw::RawTask::schedule (3 samples, 0.02%)h2::proto::streams::stream::Stream::notify_recv (8 samples, 0.06%)core::task::wake::Waker::wake (8 samples, 0.06%)tokio::runtime::task::waker::wake_by_val (7 samples, 0.06%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (7 samples, 0.06%)tokio::runtime::task::state::State::transition_to_notified_by_val (3 samples, 0.02%)tokio::runtime::task::state::State::fetch_update_action (3 samples, 0.02%)tokio::runtime::task::state::State::load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)h2::proto::streams::recv::Recv::recv_headers (41 samples, 0.33%)http::header::map::HeaderMap<T>::get (2 samples, 0.02%)h2::frame::headers::Headers::into_fields (2 samples, 0.02%)core::ptr::drop_in_place<h2::frame::headers::Pseudo> (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<h2::ext::Protocol>> (2 samples, 0.02%)h2::proto::streams::buffer::Deque::push_back (2 samples, 0.02%)h2::proto::streams::recv::Recv::recv_trailers (8 samples, 0.06%)h2::proto::streams::state::State::recv_close (3 samples, 0.02%)h2::proto::streams::counts::Counts::transition (69 samples, 0.56%)h2::proto::streams::streams::Inner::recv_headers::_{{closure}} (57 samples, 0.46%)h2::proto::streams::state::State::is_recv_headers (6 samples, 0.05%)h2::proto::streams::recv::Recv::max_stream_id (2 samples, 0.02%)h2::proto::streams::state::State::is_local_error (3 samples, 0.02%)h2::proto::streams::store::OccupiedEntry::key (2 samples, 0.02%)<h2::frame::stream_id::StreamId as core::hash::Hash>::hash (2 samples, 0.02%)core::hash::impls::<impl core::hash::Hash for u32>::hash (2 samples, 0.02%)core::hash::Hasher::write_u32 (2 samples, 0.02%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (2 samples, 0.02%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write (2 samples, 0.02%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (2 samples, 0.02%)indexmap::map::IndexMap<K,V,S>::hash (6 samples, 0.05%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (2 samples, 0.02%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (2 samples, 0.02%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (2 samples, 0.02%)h2::proto::streams::store::Store::find_entry (10 samples, 0.08%)indexmap::map::IndexMap<K,V,S>::entry (9 samples, 0.07%)indexmap::map::core::raw::<impl indexmap::map::core::IndexMapCore<K,V>>::entry (3 samples, 0.02%)hashbrown::raw::inner::RawTable<T,A>::find (3 samples, 0.02%)h2::proto::streams::streams::DynStreams<B>::recv_headers (95 samples, 0.77%)h2::proto::streams::streams::Inner::recv_headers (94 samples, 0.76%)std::sync::mutex::Mutex<T>::lock (2 samples, 0.02%)std::sys::unix::locks::futex_mutex::Mutex::lock (2 samples, 0.02%)h2::proto::connection::Connection<T,P,B>::poll2 (352 samples, 2.86%)h2..h2::proto::connection::DynConnection<B>::recv_frame (122 samples, 0.99%)<core::task::wake::Waker as core::clone::Clone>::clone (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (2 samples, 0.02%)core::ptr::drop_in_place<core::task::wake::Waker> (2 samples, 0.02%)<core::task::wake::Waker as core::ops::drop::Drop>::drop (2 samples, 0.02%)h2::proto::streams::recv::Recv::send_connection_window_update (4 samples, 0.03%)h2::proto::streams::flow_control::FlowControl::unclaimed_capacity (4 samples, 0.03%)h2::codec::Codec<T,B>::poll_ready (2 samples, 0.02%)h2::codec::framed_write::FramedWrite<T,B>::poll_ready (2 samples, 0.02%)h2::proto::streams::recv::Recv::poll_complete (8 samples, 0.06%)h2::proto::streams::recv::Recv::send_stream_window_updates (4 samples, 0.03%)[libc.so.6] (7 samples, 0.06%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put (2 samples, 0.02%)bytes::bytes_mut::BytesMut::extend_from_slice (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<h2::proto::streams::prioritize::Prioritized<B> as bytes::buf::buf_impl::Buf>::remaining (3 samples, 0.02%)<bytes::buf::take::Take<T> as bytes::buf::buf_impl::Buf>::remaining (3 samples, 0.02%)core::cmp::min (2 samples, 0.02%)core::cmp::Ord::min (2 samples, 0.02%)core::cmp::min_by (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Entered> (2 samples, 0.02%)<tracing::span::Entered as core::ops::drop::Drop>::drop (2 samples, 0.02%)tracing::span::Span::do_exit (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put (3 samples, 0.02%)h2::frame::data::Data<T>::encode_chunk (10 samples, 0.08%)h2::frame::head::Head::encode (6 samples, 0.05%)bytes::buf::buf_mut::BufMut::put_uint (4 samples, 0.03%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put_slice (4 samples, 0.03%)bytes::bytes_mut::BytesMut::extend_from_slice (2 samples, 0.02%)h2::frame::head::Head::encode (2 samples, 0.02%)<T as core::convert::Into<U>>::into (2 samples, 0.02%)h2::frame::reason::<impl core::convert::From<h2::frame::reason::Reason> for u32>::from (2 samples, 0.02%)core::ptr::drop_in_place<h2::frame::headers::EncodingHeaderBlock> (2 samples, 0.02%)core::ptr::drop_in_place<bytes::bytes::Bytes> (2 samples, 0.02%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (2 samples, 0.02%)bytes::buf::buf_mut::BufMut::put_u32 (2 samples, 0.02%)bytes::buf::buf_mut::BufMut::put_slice (2 samples, 0.02%)bytes::buf::buf_mut::BufMut::put_u8 (4 samples, 0.03%)bytes::buf::buf_mut::BufMut::put_slice (4 samples, 0.03%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)h2::frame::headers::EncodingHeaderBlock::encode (9 samples, 0.07%)h2::frame::head::Head::encode (7 samples, 0.06%)<http::header::map::HeaderMap<T> as core::iter::traits::collect::IntoIterator>::into_iter (3 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<[http::header::map::Pos]>> (3 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (3 samples, 0.02%)alloc::alloc::dealloc (3 samples, 0.02%)cfree (3 samples, 0.02%)bytes::bytes_mut::BytesMut::freeze (3 samples, 0.02%)<T as core::convert::Into<U>>::into (3 samples, 0.02%)<bytes::bytes::Bytes as core::convert::From<alloc::vec::Vec<u8>>>::from (3 samples, 0.02%)<http::header::map::IntoIter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<h2::frame::headers::Iter as core::iter::traits::iterator::Iterator>::next (10 samples, 0.08%)core::ptr::drop_in_place<core::option::Option<h2::frame::headers::Pseudo>> (2 samples, 0.02%)core::ptr::drop_in_place<h2::frame::headers::Pseudo> (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<h2::hpack::header::BytesStr>> (2 samples, 0.02%)bytes::bytes::promotable_even_drop (4 samples, 0.03%)cfree (4 samples, 0.03%)[libc.so.6] (3 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<h2::hpack::table::Index>> (12 samples, 0.10%)core::ptr::drop_in_place<h2::hpack::table::Index> (10 samples, 0.08%)core::ptr::drop_in_place<h2::hpack::header::Header> (6 samples, 0.05%)core::ptr::drop_in_place<http::header::value::HeaderValue> (2 samples, 0.02%)core::ptr::drop_in_place<bytes::bytes::Bytes> (2 samples, 0.02%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (2 samples, 0.02%)<http::header::map::IntoIter<T> as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::ptr::drop_in_place<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<http::header::map::Bucket<http::header::value::HeaderValue>,alloc::alloc::Global>> (2 samples, 0.02%)<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<http::header::map::Bucket<http::header::value::HeaderValue>>> (2 samples, 0.02%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (2 samples, 0.02%)alloc::alloc::dealloc (2 samples, 0.02%)core::ptr::drop_in_place<http::header::map::IntoIter<http::header::value::HeaderValue>> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<http::header::map::Bucket<http::header::value::HeaderValue>>> (4 samples, 0.03%)<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)core::ptr::drop_in_place<[http::header::map::Bucket<http::header::value::HeaderValue>]> (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::grow (4 samples, 0.03%)alloc::alloc::Global::grow_impl (4 samples, 0.03%)alloc::alloc::realloc (4 samples, 0.03%)realloc (4 samples, 0.03%)[libc.so.6] (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::reserve (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (9 samples, 0.07%)alloc::raw_vec::RawVec<T,A>::grow_amortized (9 samples, 0.07%)alloc::raw_vec::finish_grow (7 samples, 0.06%)h2::hpack::encoder::encode_int (14 samples, 0.11%)bytes::buf::buf_mut::BufMut::put_u8 (14 samples, 0.11%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put_slice (14 samples, 0.11%)bytes::bytes_mut::BytesMut::extend_from_slice (12 samples, 0.10%)bytes::bytes_mut::BytesMut::reserve (12 samples, 0.10%)bytes::bytes_mut::BytesMut::reserve_inner (12 samples, 0.10%)h2::hpack::encoder::encode_not_indexed (3 samples, 0.02%)h2::hpack::encoder::encode_int (3 samples, 0.02%)bytes::buf::buf_mut::BufMut::put_u8 (3 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put_slice (3 samples, 0.02%)bytes::bytes_mut::BytesMut::reserve (12 samples, 0.10%)bytes::bytes_mut::BytesMut::reserve_inner (12 samples, 0.10%)alloc::vec::Vec<T,A>::reserve (11 samples, 0.09%)alloc::raw_vec::RawVec<T,A>::reserve (11 samples, 0.09%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (11 samples, 0.09%)alloc::raw_vec::RawVec<T,A>::grow_amortized (10 samples, 0.08%)alloc::raw_vec::finish_grow (10 samples, 0.08%)<alloc::alloc::Global as core::alloc::Allocator>::grow (10 samples, 0.08%)alloc::alloc::Global::grow_impl (10 samples, 0.08%)alloc::alloc::realloc (10 samples, 0.08%)realloc (10 samples, 0.08%)[libc.so.6] (8 samples, 0.06%)[libc.so.6] (8 samples, 0.06%)h2::hpack::encoder::Encoder::encode_header (42 samples, 0.34%)h2::hpack::encoder::encode_str (22 samples, 0.18%)h2::hpack::huffman::encode (21 samples, 0.17%)bytes::buf::buf_mut::BufMut::put_u8 (16 samples, 0.13%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put_slice (16 samples, 0.13%)bytes::bytes_mut::BytesMut::extend_from_slice (14 samples, 0.11%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)h2::hpack::header::Header<core::option::Option<http::header::name::HeaderName>>::reify (6 samples, 0.05%)h2::hpack::header::Header::len (3 samples, 0.02%)<h2::hpack::header::Name as core::cmp::PartialEq>::eq (3 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (2 samples, 0.02%)<http::header::name::HeaderName as core::cmp::PartialEq>::eq (2 samples, 0.02%)<http::header::name::Repr<T> as core::cmp::PartialEq>::eq (2 samples, 0.02%)alloc::vec::Vec<T,A>::is_empty (2 samples, 0.02%)alloc::vec::Vec<T,A>::len (2 samples, 0.02%)<bytes::bytes::Bytes as core::cmp::PartialEq>::eq (7 samples, 0.06%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (7 samples, 0.06%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (7 samples, 0.06%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (7 samples, 0.06%)[libc.so.6] (6 samples, 0.05%)h2::hpack::table::Table::index_occupied (9 samples, 0.07%)h2::hpack::header::Header::value_eq (2 samples, 0.02%)h2::hpack::table::Table::index_dynamic (18 samples, 0.15%)h2::frame::headers::Headers::encode (138 samples, 1.12%)h2::frame::headers::HeaderBlock::into_encoding (128 samples, 1.04%)h2::hpack::encoder::Encoder::encode (121 samples, 0.98%)h2::hpack::table::Table::index (30 samples, 0.24%)h2::hpack::table::index_static (8 samples, 0.06%)h2::codec::Codec<T,B>::buffer (170 samples, 1.38%)h2::codec::framed_write::FramedWrite<T,B>::buffer (170 samples, 1.38%)h2::codec::framed_write::Encoder<B>::buffer (170 samples, 1.38%)<tonic::transport::service::io::BoxedIo as tokio::io::async_write::AsyncWrite>::poll_flush (2 samples, 0.02%)<core::pin::Pin<P> as tokio::io::async_write::AsyncWrite>::poll_flush (2 samples, 0.02%)core::pin::Pin<P>::as_mut (2 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)h2::codec::framed_write::Encoder<B>::unset_frame (3 samples, 0.02%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write (19 samples, 0.15%)mio::io_source::IoSource<T>::do_io (19 samples, 0.15%)mio::sys::unix::stateless_io_source::IoSourceState::do_io (19 samples, 0.15%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write::_{{closure}} (19 samples, 0.15%)<&std::net::tcp::TcpStream as std::io::Write>::write (19 samples, 0.15%)std::sys_common::net::TcpStream::write (18 samples, 0.15%)__send (18 samples, 0.15%)[unknown] (18 samples, 0.15%)[unknown] (16 samples, 0.13%)[unknown] (14 samples, 0.11%)[unknown] (14 samples, 0.11%)[unknown] (11 samples, 0.09%)[unknown] (7 samples, 0.06%)tokio_util::util::poll_buf::poll_write_buf (23 samples, 0.19%)<tonic::transport::service::io::BoxedIo as tokio::io::async_write::AsyncWrite>::poll_write (23 samples, 0.19%)<core::pin::Pin<P> as tokio::io::async_write::AsyncWrite>::poll_write (21 samples, 0.17%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write (21 samples, 0.17%)tokio::net::tcp::stream::TcpStream::poll_write_priv (21 samples, 0.17%)tokio::io::poll_evented::PollEvented<E>::poll_write (20 samples, 0.16%)h2::codec::Codec<T,B>::flush (33 samples, 0.27%)h2::codec::framed_write::FramedWrite<T,B>::flush (33 samples, 0.27%)h2::codec::framed_write::Encoder<B>::has_capacity (3 samples, 0.02%)bytes::bytes_mut::BytesMut::capacity (2 samples, 0.02%)h2::codec::Codec<T,B>::poll_ready (29 samples, 0.24%)h2::codec::framed_write::FramedWrite<T,B>::poll_ready (29 samples, 0.24%)h2::codec::framed_write::FramedWrite<T,B>::flush (26 samples, 0.21%)tokio_util::util::poll_buf::poll_write_buf (24 samples, 0.19%)<tonic::transport::service::io::BoxedIo as tokio::io::async_write::AsyncWrite>::poll_write (23 samples, 0.19%)<core::pin::Pin<P> as tokio::io::async_write::AsyncWrite>::poll_write (23 samples, 0.19%)<tokio::net::tcp::stream::TcpStream as tokio::io::async_write::AsyncWrite>::poll_write (23 samples, 0.19%)tokio::net::tcp::stream::TcpStream::poll_write_priv (23 samples, 0.19%)tokio::io::poll_evented::PollEvented<E>::poll_write (23 samples, 0.19%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write (23 samples, 0.19%)mio::io_source::IoSource<T>::do_io (20 samples, 0.16%)mio::sys::unix::stateless_io_source::IoSourceState::do_io (20 samples, 0.16%)<&mio::net::tcp::stream::TcpStream as std::io::Write>::write::_{{closure}} (20 samples, 0.16%)<&std::net::tcp::TcpStream as std::io::Write>::write (20 samples, 0.16%)std::sys_common::net::TcpStream::write (19 samples, 0.15%)__send (19 samples, 0.15%)[unknown] (19 samples, 0.15%)[unknown] (19 samples, 0.15%)[unknown] (17 samples, 0.14%)[unknown] (17 samples, 0.14%)[unknown] (14 samples, 0.11%)[unknown] (10 samples, 0.08%)[unknown] (3 samples, 0.02%)[unknown] (3 samples, 0.02%)[unknown] (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)h2::frame::Frame<T>::map (3 samples, 0.02%)h2::frame::data::Data<T>::map (2 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::pop_frame::_{{closure}} (2 samples, 0.02%)h2::proto::streams::store::Ptr::key (2 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)h2::proto::streams::buffer::Deque::pop_front (13 samples, 0.11%)slab::Slab<T>::remove (9 samples, 0.07%)slab::Slab<T>::try_remove (9 samples, 0.07%)core::mem::replace (7 samples, 0.06%)core::ptr::read (7 samples, 0.06%)[libc.so.6] (6 samples, 0.05%)h2::proto::streams::counts::Counts::transition_after (3 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (2 samples, 0.02%)h2::proto::streams::flow_control::Window::as_size (2 samples, 0.02%)h2::proto::streams::state::State::is_scheduled_reset (3 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (2 samples, 0.02%)h2::proto::streams::store::Queue<N>::pop (6 samples, 0.05%)h2::proto::streams::store::Queue<N>::push (6 samples, 0.05%)tracing::__macro_support::__disabled_span (5 samples, 0.04%)tracing::span::Span::new_disabled (5 samples, 0.04%)tracing::span::Span::enter (4 samples, 0.03%)tracing::span::Span::do_enter (4 samples, 0.03%)h2::proto::streams::flow_control::FlowControl::assign_capacity (3 samples, 0.02%)h2::proto::streams::flow_control::Window::increase_by (3 samples, 0.02%)h2::proto::streams::flow_control::Window::add (3 samples, 0.02%)core::num::<impl i32>::checked_add (3 samples, 0.02%)core::num::<impl i32>::overflowing_add (3 samples, 0.02%)h2::proto::streams::flow_control::FlowControl::send_data (4 samples, 0.03%)h2::proto::streams::prioritize::Prioritize::pop_frame (77 samples, 0.62%)tracing::span::Span::in_scope (11 samples, 0.09%)h2::proto::streams::prioritize::Prioritize::pop_frame::_{{closure}} (11 samples, 0.09%)h2::proto::streams::stream::Stream::send_data (7 samples, 0.06%)h2::proto::streams::store::Queue<N>::pop (4 samples, 0.03%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (2 samples, 0.02%)<h2::proto::streams::store::Store as core::ops::index::Index<h2::proto::streams::store::Key>>::index (2 samples, 0.02%)slab::Slab<T>::get (2 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::pop_pending_open (13 samples, 0.11%)core::ptr::drop_in_place<tracing::span::Span> (3 samples, 0.02%)bytes::bytes_mut::shared_v_drop (9 samples, 0.07%)<core::sync::atomic::AtomicPtr<T> as bytes::loom::sync::atomic::AtomicMut<T>>::with_mut (9 samples, 0.07%)bytes::bytes_mut::shared_v_drop::_{{closure}} (8 samples, 0.06%)bytes::bytes_mut::release_shared (8 samples, 0.06%)core::mem::drop (7 samples, 0.06%)core::ptr::drop_in_place<alloc::boxed::Box<bytes::bytes_mut::Shared>> (7 samples, 0.06%)core::ptr::drop_in_place<bytes::bytes_mut::Shared> (7 samples, 0.06%)core::ptr::drop_in_place<alloc::vec::Vec<u8>> (7 samples, 0.06%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<u8>> (7 samples, 0.06%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (7 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (7 samples, 0.06%)alloc::alloc::dealloc (7 samples, 0.06%)cfree (7 samples, 0.06%)[libc.so.6] (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::reclaim_frame_inner (13 samples, 0.11%)core::ptr::drop_in_place<h2::frame::data::Data<hyper::proto::h2::SendBuf<bytes::bytes::Bytes>>> (10 samples, 0.08%)core::ptr::drop_in_place<hyper::proto::h2::SendBuf<bytes::bytes::Bytes>> (10 samples, 0.08%)core::ptr::drop_in_place<bytes::bytes::Bytes> (10 samples, 0.08%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (10 samples, 0.08%)tracing::__macro_support::__disabled_span (3 samples, 0.02%)tracing::span::Span::new_disabled (3 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::reclaim_frame (27 samples, 0.22%)<h2::proto::streams::store::Ptr as core::ops::deref::Deref>::deref (2 samples, 0.02%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)h2::proto::streams::send::Send::poll_complete (370 samples, 3.00%)h2:..h2::proto::streams::prioritize::Prioritize::poll_complete (370 samples, 3.00%)h2:..h2::proto::streams::store::Queue<N>::push_front (8 samples, 0.06%)h2::proto::streams::streams::Streams<B,P>::poll_complete (387 samples, 3.14%)h2:..h2::proto::streams::streams::Inner::poll_complete (386 samples, 3.13%)h2:..std::sync::mutex::Mutex<T>::lock (2 samples, 0.02%)std::sys::unix::locks::futex_mutex::Mutex::lock (2 samples, 0.02%)core::sync::atomic::AtomicU32::compare_exchange (2 samples, 0.02%)core::sync::atomic::atomic_compare_exchange (2 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (1,492 samples, 12.11%)<core::pin::Pin<P>..hyper::proto::h2::client::conn_task::_{{closure}} (803 samples, 6.52%)hyper::pr..<futures_util::future::select::Select<A,B> as core::future::future::Future>::poll (789 samples, 6.40%)<futures..futures_util::future::future::FutureExt::poll_unpin (786 samples, 6.38%)futures_..<futures_util::future::try_future::MapErr<Fut,F> as core::future::future::Future>::poll (759 samples, 6.16%)<futures..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (759 samples, 6.16%)<futures..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (759 samples, 6.16%)<futures..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (757 samples, 6.14%)<futures..<F as futures_core::future::TryFuture>::try_poll (757 samples, 6.14%)<F as fu..<futures_util::future::either::Either<A,B> as core::future::future::Future>::poll (757 samples, 6.14%)<futures..<h2::client::Connection<T,B> as core::future::future::Future>::poll (757 samples, 6.14%)<h2::cli..h2::proto::connection::Connection<T,P,B>::poll (748 samples, 6.07%)h2::prot..<alloc::vec::drain::Drain<T,A> as core::iter::traits::iterator::Iterator>::next (133 samples, 1.08%)core::option::Option<T>::map (132 samples, 1.07%)<alloc::vec::drain::Drain<T,A> as core::iter::traits::iterator::Iterator>::next::_{{closure}} (132 samples, 1.07%)core::ptr::read (132 samples, 1.07%)[libc.so.6] (22 samples, 0.18%)core::ptr::mut_ptr::<impl *mut T>::add (2 samples, 0.02%)alloc::vec::Vec<T,A>::push (33 samples, 0.27%)core::ptr::write (24 samples, 0.19%)core::option::Option<T>::unwrap (64 samples, 0.52%)core::ptr::drop_in_place<core::option::Option<openraft::membership::membership::Membership<u64,openraft::node::BasicNode>>> (2 samples, 0.02%)[libc.so.6] (67 samples, 0.54%)core::ptr::drop_in_place<tracing::span::Span> (8 samples, 0.06%)<tracing::span::Span as core::ops::drop::Drop>::drop (6 samples, 0.05%)[libc.so.6] (31 samples, 0.25%)openraft::raft::Raft<C,N,LS,SM>::call_core::_{{closure}} (3 samples, 0.02%)[libc.so.6] (11 samples, 0.09%)__rdl_alloc (4 samples, 0.03%)alloc::sync::Arc<T>::new (25 samples, 0.20%)alloc::boxed::Box<T>::new (25 samples, 0.20%)alloc::alloc::exchange_malloc (14 samples, 0.11%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (13 samples, 0.11%)alloc::alloc::Global::alloc_impl (13 samples, 0.11%)alloc::alloc::alloc (13 samples, 0.11%)malloc (7 samples, 0.06%)openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}} (226 samples, 1.83%)o..openraft::raft::Raft<C,N,LS,SM>::client_write::_{{closure}}::_{{closure}} (105 samples, 0.85%)tokio::sync::oneshot::channel (32 samples, 0.26%)tokio::sync::oneshot::State::new (3 samples, 0.02%)core::ptr::drop_in_place<tonic::extensions::Extensions> (2 samples, 0.02%)core::ptr::drop_in_place<http::extensions::Extensions> (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::boxed::Box<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>>>> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>>> (2 samples, 0.02%)core::ptr::drop_in_place<std::collections::hash::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>> (2 samples, 0.02%)core::ptr::drop_in_place<hashbrown::map::HashMap<core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>,core::hash::BuildHasherDefault<http::extensions::IdHasher>>> (2 samples, 0.02%)core::ptr::drop_in_place<hashbrown::raw::RawTable<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>)>> (2 samples, 0.02%)<hashbrown::raw::RawTable<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)hashbrown::raw::RawTable<T,A>::drop_elements (2 samples, 0.02%)hashbrown::raw::Bucket<T>::drop (2 samples, 0.02%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (2 samples, 0.02%)core::ptr::drop_in_place<(core::any::TypeId,alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>)> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::any::Any+core::marker::Sync+core::marker::Send>> (2 samples, 0.02%)<dcache::protobuf::MyDcacheImpl as dcache::protobuf::dcache::dcache_service_server::DcacheService>::pipeline_dcache_ops::_{{closure}} (569 samples, 4.62%)<dcac..tonic::request::Request<T>::into_inner (3 samples, 0.02%)<<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::PipelineDcacheOpsSvc<T> as tonic::server::service::UnaryService<dcache::protobuf::dcache::DcacheBatchRequest>>::call::_{{closure}} (613 samples, 4.98%)<<dcac..<core::pin::Pin<P> as core::future::future::Future>::poll (571 samples, 4.63%)<core..core::pin::Pin<&mut core::pin::Pin<P>>::as_deref_mut (2 samples, 0.02%)core::pin::Pin<P>::as_mut (2 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (614 samples, 4.98%)<core:..alloc::raw_vec::RawVec<T,A>::reserve_for_push (12 samples, 0.10%)alloc::raw_vec::RawVec<T,A>::grow_amortized (12 samples, 0.10%)alloc::raw_vec::finish_grow (12 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::grow (12 samples, 0.10%)alloc::alloc::Global::grow_impl (12 samples, 0.10%)alloc::alloc::realloc (10 samples, 0.08%)realloc (10 samples, 0.08%)[libc.so.6] (9 samples, 0.07%)[libc.so.6] (9 samples, 0.07%)alloc::vec::Vec<T,A>::push (20 samples, 0.16%)core::ptr::write (8 samples, 0.06%)<&mut T as bytes::buf::buf_impl::Buf>::remaining (3 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::remaining (3 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::remaining (2 samples, 0.02%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (2 samples, 0.02%)prost::encoding::decode_varint (11 samples, 0.09%)<&mut T as bytes::buf::buf_impl::Buf>::advance (5 samples, 0.04%)<&mut T as bytes::buf::buf_impl::Buf>::advance (5 samples, 0.04%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::advance (5 samples, 0.04%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (5 samples, 0.04%)bytes::bytes_mut::BytesMut::set_start (5 samples, 0.04%)<dcache::protobuf::dcache::PoId as core::default::Default>::default (2 samples, 0.02%)core::result::Result<T,E>::map (2 samples, 0.02%)dcache::protobuf::dcache::dcache_request::DcacheRequest::merge::_{{closure}} (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<dcache::protobuf::dcache::dcache_request::DcacheRequest>> (2 samples, 0.02%)prost::encoding::decode_varint (12 samples, 0.10%)<&mut T as bytes::buf::buf_impl::Buf>::advance (6 samples, 0.05%)<&mut T as bytes::buf::buf_impl::Buf>::advance (6 samples, 0.05%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::advance (6 samples, 0.05%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (6 samples, 0.05%)bytes::bytes_mut::BytesMut::set_start (6 samples, 0.05%)core::str::converts::from_utf8 (8 samples, 0.06%)core::str::validations::run_utf8_validation (7 samples, 0.06%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (2 samples, 0.02%)<bytes::buf::take::Take<T> as bytes::buf::buf_impl::Buf>::advance (2 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::advance (2 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::advance (2 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::advance (2 samples, 0.02%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::advance (2 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (2 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (2 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (2 samples, 0.02%)<bytes::buf::take::Take<T> as bytes::buf::buf_impl::Buf>::chunk (4 samples, 0.03%)core::cmp::min (2 samples, 0.02%)core::cmp::Ord::min (2 samples, 0.02%)core::cmp::min_by (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)<alloc::vec::Vec<u8> as bytes::buf::buf_mut::BufMut>::put (15 samples, 0.12%)alloc::vec::Vec<T,A>::extend_from_slice (9 samples, 0.07%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (9 samples, 0.07%)alloc::vec::Vec<T,A>::append_elements (9 samples, 0.07%)core::intrinsics::copy_nonoverlapping (5 samples, 0.04%)[libc.so.6] (5 samples, 0.04%)prost::encoding::<impl prost::encoding::sealed::BytesAdapter for alloc::vec::Vec<u8>>::replace_with (63 samples, 0.51%)alloc::vec::Vec<T,A>::reserve (45 samples, 0.37%)alloc::raw_vec::RawVec<T,A>::reserve (45 samples, 0.37%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (45 samples, 0.37%)alloc::raw_vec::RawVec<T,A>::grow_amortized (45 samples, 0.37%)alloc::raw_vec::finish_grow (44 samples, 0.36%)malloc (42 samples, 0.34%)[libc.so.6] (28 samples, 0.23%)[libc.so.6] (8 samples, 0.06%)<&mut T as bytes::buf::buf_impl::Buf>::advance (5 samples, 0.04%)<&mut T as bytes::buf::buf_impl::Buf>::advance (5 samples, 0.04%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::advance (5 samples, 0.04%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (5 samples, 0.04%)bytes::bytes_mut::BytesMut::set_start (5 samples, 0.04%)<dcache::protobuf::dcache::CaptchaId as prost::message::Message>::merge_field (93 samples, 0.75%)prost::encoding::string::merge (93 samples, 0.75%)prost::encoding::bytes::merge_one_copy (83 samples, 0.67%)prost::encoding::decode_varint (15 samples, 0.12%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (3 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (3 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (3 samples, 0.02%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::chunk (3 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::advance (4 samples, 0.03%)<&mut T as bytes::buf::buf_impl::Buf>::advance (4 samples, 0.03%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::advance (4 samples, 0.03%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (4 samples, 0.03%)bytes::bytes_mut::BytesMut::set_start (4 samples, 0.03%)<dcache::protobuf::dcache::DcacheRequest as prost::message::Message>::merge_field (136 samples, 1.10%)dcache::protobuf::dcache::dcache_request::DcacheRequest::merge (134 samples, 1.09%)prost::encoding::message::merge (125 samples, 1.01%)prost::encoding::merge_loop (125 samples, 1.01%)prost::encoding::message::merge::_{{closure}} (103 samples, 0.84%)prost::encoding::decode_key (10 samples, 0.08%)prost::encoding::decode_varint (8 samples, 0.06%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (2 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (2 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::chunk (2 samples, 0.02%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::chunk (2 samples, 0.02%)<dcache::protobuf::dcache::DcacheBatchRequest as prost::message::Message>::merge_field (208 samples, 1.69%)prost::encoding::message::merge_repeated (207 samples, 1.68%)prost::encoding::message::merge (176 samples, 1.43%)prost::encoding::merge_loop (174 samples, 1.41%)prost::encoding::message::merge::_{{closure}} (155 samples, 1.26%)prost::encoding::decode_key (19 samples, 0.15%)prost::encoding::decode_varint (16 samples, 0.13%)<&mut T as bytes::buf::buf_impl::Buf>::advance (12 samples, 0.10%)<&mut T as bytes::buf::buf_impl::Buf>::advance (12 samples, 0.10%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::advance (12 samples, 0.10%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (11 samples, 0.09%)bytes::bytes_mut::BytesMut::set_start (11 samples, 0.09%)<&mut T as bytes::buf::buf_impl::Buf>::advance (3 samples, 0.02%)<&mut T as bytes::buf::buf_impl::Buf>::advance (3 samples, 0.02%)<tonic::codec::buffer::DecodeBuf as bytes::buf::buf_impl::Buf>::advance (3 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_impl::Buf>::advance (3 samples, 0.02%)bytes::bytes_mut::BytesMut::set_start (3 samples, 0.02%)<tonic::codec::prost::ProstDecoder<U> as tonic::codec::Decoder>::decode (214 samples, 1.74%)prost::message::Message::decode (214 samples, 1.74%)prost::message::Message::merge (214 samples, 1.74%)prost::encoding::decode_key (6 samples, 0.05%)prost::encoding::decode_varint (6 samples, 0.05%)tonic::codec::decode::Streaming<T>::decode_chunk (215 samples, 1.74%)bytes::bytes_mut::BytesMut::reserve (3 samples, 0.02%)bytes::bytes_mut::BytesMut::reserve_inner (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::grow_amortized (2 samples, 0.02%)alloc::raw_vec::finish_grow (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::grow (2 samples, 0.02%)alloc::alloc::Global::grow_impl (2 samples, 0.02%)alloc::alloc::realloc (2 samples, 0.02%)realloc (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::put (4 samples, 0.03%)bytes::bytes_mut::BytesMut::extend_from_slice (4 samples, 0.03%)h2::share::FlowControl::release_capacity (2 samples, 0.02%)h2::proto::streams::streams::OpaqueStreamRef::release_capacity (2 samples, 0.02%)h2::proto::streams::recv::Recv::release_capacity (2 samples, 0.02%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (3 samples, 0.02%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (3 samples, 0.02%)<http_body::combinators::map_data::MapData<B,F> as http_body::Body>::poll_data (3 samples, 0.02%)<hyper::body::body::Body as http_body::Body>::poll_data (3 samples, 0.02%)hyper::body::body::Body::poll_inner (3 samples, 0.02%)<tokio_stream::stream_ext::try_next::TryNext<St> as core::future::future::Future>::poll (226 samples, 1.83%)<..<tokio_stream::stream_ext::next::Next<St> as core::future::future::Future>::poll (226 samples, 1.83%)<..<&mut S as futures_core::stream::Stream>::poll_next (226 samples, 1.83%)<..<core::pin::Pin<P> as futures_core::stream::Stream>::poll_next (226 samples, 1.83%)<..<tonic::codec::decode::Streaming<T> as futures_core::stream::Stream>::poll_next (226 samples, 1.83%)<..tonic::codec::decode::StreamingInner::poll_data (10 samples, 0.08%)core::ptr::drop_in_place<tonic::codec::decode::Streaming<dcache::protobuf::dcache::DcacheBatchRequest>> (2 samples, 0.02%)core::ptr::drop_in_place<tonic::codec::decode::StreamingInner> (2 samples, 0.02%)core::ptr::drop_in_place<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>> (2 samples, 0.02%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>>> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>> (2 samples, 0.02%)core::ptr::drop_in_place<hyper::body::body::Body> (2 samples, 0.02%)core::ptr::drop_in_place<hyper::body::body::Kind> (2 samples, 0.02%)core::ptr::drop_in_place<h2::share::RecvStream> (2 samples, 0.02%)tonic::server::grpc::Grpc<T>::map_request_unary::_{{closure}} (230 samples, 1.87%)t..tonic::server::grpc::Grpc<T>::map_response (6 samples, 0.05%)tonic::response::Response<T>::into_http (4 samples, 0.03%)tonic::metadata::map::MetadataMap::into_sanitized_headers (2 samples, 0.02%)http::header::map::HeaderMap<T>::remove (2 samples, 0.02%)<dcache::protobuf::dcache::dcache_service_server::DcacheServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::_{{closure}} (902 samples, 7.32%)<dcache::p..tonic::server::grpc::Grpc<T>::unary::_{{closure}} (863 samples, 7.00%)tonic::se..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (903 samples, 7.33%)<futures_u..<F as futures_core::future::TryFuture>::try_poll (903 samples, 7.33%)<F as futu..<core::pin::Pin<P> as core::future::future::Future>::poll (903 samples, 7.33%)<core::pin..<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (938 samples, 7.61%)<tower::ut..<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (928 samples, 7.53%)<futures_u..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (928 samples, 7.53%)<futures_u..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (928 samples, 7.53%)<futures_u..<futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll (912 samples, 7.40%)<futures_u..<F as futures_core::future::TryFuture>::try_poll (912 samples, 7.40%)<F as futu..<tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll (912 samples, 7.40%)<tower::ut..<futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll (912 samples, 7.40%)<futures_u..<futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll (912 samples, 7.40%)<futures_u..<futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll (912 samples, 7.40%)<futures_u..<core::pin::Pin<P> as core::future::future::Future>::poll (940 samples, 7.63%)<core::pin..core::pin::Pin<&mut core::pin::Pin<P>>::as_deref_mut (2 samples, 0.02%)core::pin::Pin<P>::as_mut (2 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::deref::DerefMut>::deref_mut (2 samples, 0.02%)<tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll (951 samples, 7.72%)<tower::uti..<tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll (972 samples, 7.89%)<tonic::tra..<tower::util::either::Either<A,B> as core::future::future::Future>::poll (967 samples, 7.85%)<tower::uti..<tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll (966 samples, 7.84%)<tonic::tra..<tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll (963 samples, 7.82%)<tonic::tra..<axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll (958 samples, 7.78%)<axum::rout..<tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll (997 samples, 8.09%)<tonic::tra..tracing::span::Span::enter (14 samples, 0.11%)tracing::span::Span::do_enter (14 samples, 0.11%)<core::pin::Pin<P> as core::future::future::Future>::poll (999 samples, 8.11%)<core::pin:..<dcache::protobuf::dcache::DcacheResponse as prost::message::Message>::encoded_len (2 samples, 0.02%)core::option::Option<T>::map_or (2 samples, 0.02%)core::ops::function::FnOnce::call_once (2 samples, 0.02%)dcache::protobuf::dcache::dcache_response::DcacheResponse::encoded_len (2 samples, 0.02%)<&mut T as bytes::buf::buf_mut::BufMut>::remaining_mut (8 samples, 0.06%)<tonic::codec::buffer::EncodeBuf as bytes::buf::buf_mut::BufMut>::remaining_mut (8 samples, 0.06%)<&mut T as bytes::buf::buf_mut::BufMut>::remaining_mut (8 samples, 0.06%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::remaining_mut (8 samples, 0.06%)<tonic::codec::buffer::EncodeBuf as bytes::buf::buf_mut::BufMut>::chunk_mut (4 samples, 0.03%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::chunk_mut (4 samples, 0.03%)prost::encoding::encode_key (33 samples, 0.27%)prost::encoding::encode_varint (33 samples, 0.27%)bytes::buf::buf_mut::BufMut::put_u8 (32 samples, 0.26%)bytes::buf::buf_mut::BufMut::put_slice (32 samples, 0.26%)core::intrinsics::copy_nonoverlapping (4 samples, 0.03%)[libc.so.6] (3 samples, 0.02%)<&mut T as bytes::buf::buf_mut::BufMut>::remaining_mut (6 samples, 0.05%)<tonic::codec::buffer::EncodeBuf as bytes::buf::buf_mut::BufMut>::remaining_mut (6 samples, 0.05%)<&mut T as bytes::buf::buf_mut::BufMut>::remaining_mut (6 samples, 0.05%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::remaining_mut (6 samples, 0.05%)<tonic::codec::buffer::EncodeBuf as bytes::buf::buf_mut::BufMut>::advance_mut (4 samples, 0.03%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::advance_mut (4 samples, 0.03%)<tonic::codec::buffer::EncodeBuf as bytes::buf::buf_mut::BufMut>::chunk_mut (4 samples, 0.03%)<bytes::bytes_mut::BytesMut as bytes::buf::buf_mut::BufMut>::chunk_mut (4 samples, 0.03%)<T as core::convert::Into<U>>::into (4 samples, 0.03%)<&mut bytes::buf::uninit_slice::UninitSlice as core::convert::From<&mut [u8]>>::from (4 samples, 0.03%)<dcache::protobuf::dcache::DcacheBatchResponse as prost::message::Message>::encode_raw (80 samples, 0.65%)prost::encoding::message::encode (80 samples, 0.65%)prost::encoding::encode_varint (41 samples, 0.33%)bytes::buf::buf_mut::BufMut::put_u8 (39 samples, 0.32%)bytes::buf::buf_mut::BufMut::put_slice (39 samples, 0.32%)core::intrinsics::copy_nonoverlapping (6 samples, 0.05%)[libc.so.6] (4 samples, 0.03%)core::iter::adapters::map::map_fold::_{{closure}} (6 samples, 0.05%)prost::encoding::message::encoded_len_repeated::_{{closure}} (6 samples, 0.05%)prost::encoding::encoded_len_varint (6 samples, 0.05%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (93 samples, 0.75%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (93 samples, 0.75%)<tonic::transport::server::recover_error::MaybeEmptyBody<B> as http_body::Body>::poll_data (93 samples, 0.75%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (93 samples, 0.75%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (93 samples, 0.75%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (93 samples, 0.75%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_data (93 samples, 0.75%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_data (93 samples, 0.75%)<tonic::codec::encode::EncodeBody<S> as http_body::Body>::poll_data (93 samples, 0.75%)<tonic::codec::encode::EncodedBytes<T,U> as futures_core::stream::Stream>::poll_next (92 samples, 0.75%)tonic::codec::encode::encode_item (92 samples, 0.75%)<tonic::codec::prost::ProstEncoder<T> as tonic::codec::Encoder>::encode (92 samples, 0.75%)prost::message::Message::encode (91 samples, 0.74%)<dcache::protobuf::dcache::DcacheBatchResponse as prost::message::Message>::encoded_len (11 samples, 0.09%)prost::encoding::message::encoded_len_repeated (11 samples, 0.09%)core::iter::traits::iterator::Iterator::sum (11 samples, 0.09%)<usize as core::iter::traits::accum::Sum>::sum (11 samples, 0.09%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (11 samples, 0.09%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (11 samples, 0.09%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold (11 samples, 0.09%)core::iter::adapters::map::map_fold::_{{closure}} (11 samples, 0.09%)core::ops::function::FnMut::call_mut (5 samples, 0.04%)<dcache::protobuf::dcache::DcacheResponse as prost::message::Message>::encoded_len (5 samples, 0.04%)core::option::Option<T>::map_or (4 samples, 0.03%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_trailers (2 samples, 0.02%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_trailers (2 samples, 0.02%)<tonic::transport::server::recover_error::MaybeEmptyBody<B> as http_body::Body>::poll_trailers (2 samples, 0.02%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_trailers (2 samples, 0.02%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_trailers (2 samples, 0.02%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_trailers (2 samples, 0.02%)<http_body::combinators::map_err::MapErr<B,F> as http_body::Body>::poll_trailers (2 samples, 0.02%)<http_body::combinators::box_body::UnsyncBoxBody<D,E> as http_body::Body>::poll_trailers (2 samples, 0.02%)<tonic::codec::encode::EncodeBody<S> as http_body::Body>::poll_trailers (2 samples, 0.02%)tonic::codec::encode::EncodeState::trailers (2 samples, 0.02%)<hyper::proto::h2::PipeToSendStream<S> as core::future::future::Future>::poll (98 samples, 0.80%)h2::share::SendStream<B>::reserve_capacity (3 samples, 0.02%)h2::proto::streams::streams::StreamRef<B>::reserve_capacity (3 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::reserve_capacity (2 samples, 0.02%)core::option::Option<T>::filter (6 samples, 0.05%)<h2::proto::streams::store::Ptr as core::ops::deref::DerefMut>::deref_mut (32 samples, 0.26%)<h2::proto::streams::store::Store as core::ops::index::IndexMut<h2::proto::streams::store::Key>>::index_mut (28 samples, 0.23%)slab::Slab<T>::get_mut (22 samples, 0.18%)<h2::proto::streams::store::Store as h2::proto::streams::store::Resolve>::resolve (4 samples, 0.03%)std::sync::poison::Flag::done (2 samples, 0.02%)std::thread::panicking (2 samples, 0.02%)std::panicking::panicking (2 samples, 0.02%)std::panicking::panic_count::count_is_zero (2 samples, 0.02%)core::ptr::drop_in_place<std::sync::mutex::MutexGuard<h2::proto::streams::streams::Inner>> (11 samples, 0.09%)<std::sync::mutex::MutexGuard<T> as core::ops::drop::Drop>::drop (11 samples, 0.09%)std::sys::unix::locks::futex_mutex::Mutex::unlock (9 samples, 0.07%)core::task::poll::Poll<core::result::Result<T,E>>::map_err (3 samples, 0.02%)h2::proto::streams::state::State::ensure_reason (5 samples, 0.04%)<core::task::wake::Waker as core::clone::Clone>::clone (8 samples, 0.06%)tokio::runtime::task::waker::clone_waker (7 samples, 0.06%)tokio::runtime::task::state::State::ref_inc (6 samples, 0.05%)h2::proto::streams::send::Send::poll_reset (25 samples, 0.20%)h2::proto::streams::stream::Stream::wait_send (19 samples, 0.15%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (10 samples, 0.08%)core::ptr::drop_in_place<core::task::wake::Waker> (9 samples, 0.07%)<core::task::wake::Waker as core::ops::drop::Drop>::drop (9 samples, 0.07%)tokio::runtime::task::waker::drop_waker (9 samples, 0.07%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::drop_reference (8 samples, 0.06%)tokio::runtime::task::state::State::ref_dec (8 samples, 0.06%)core::sync::atomic::AtomicUsize::fetch_sub (2 samples, 0.02%)core::sync::atomic::atomic_sub (2 samples, 0.02%)h2::server::SendResponse<B>::poll_reset (93 samples, 0.75%)h2::proto::streams::streams::StreamRef<B>::poll_reset (93 samples, 0.75%)std::sync::mutex::Mutex<T>::lock (9 samples, 0.07%)std::sys::unix::locks::futex_mutex::Mutex::lock (9 samples, 0.07%)<hyper::proto::h2::server::H2Stream<F,B> as core::future::future::Future>::poll (1,211 samples, 9.83%)<hyper::proto:..hyper::proto::h2::server::H2Stream<F,B>::poll2 (1,204 samples, 9.77%)hyper::proto::..<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (4 samples, 0.03%)openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}} (2 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::task::core::TaskIdGuard> (11 samples, 0.09%)<tokio::runtime::task::core::TaskIdGuard as core::ops::drop::Drop>::drop (11 samples, 0.09%)std::collections::hash::map::HashMap<K,V,S>::insert (4 samples, 0.03%)hashbrown::map::HashMap<K,V,S,A>::insert (4 samples, 0.03%)<tokio::sync::mpsc::bounded::Semaphore as tokio::sync::mpsc::chan::Semaphore>::add_permit (5 samples, 0.04%)tokio::sync::mpsc::block::Block<T>::read (2 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::pop (4 samples, 0.03%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (2 samples, 0.02%)dcache::network::management::HealthMetrics::spawn::_{{closure}}::_{{closure}} (22 samples, 0.18%)tokio::sync::mpsc::bounded::Receiver<T>::recv::_{{closure}} (18 samples, 0.15%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (15 samples, 0.12%)tokio::sync::mpsc::bounded::Receiver<T>::recv::_{{closure}}::_{{closure}} (14 samples, 0.11%)tokio::sync::mpsc::chan::Rx<T,S>::recv (14 samples, 0.11%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (14 samples, 0.11%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (14 samples, 0.11%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::mpsc::bounded::Sender<dcache::network::management::HealthStatus>> (2 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::mpsc::chan::Tx<dcache::network::management::HealthStatus,tokio::sync::mpsc::bounded::Semaphore>> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::mpsc::chan::Chan<dcache::network::management::HealthStatus,tokio::sync::mpsc::bounded::Semaphore>>> (2 samples, 0.02%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_sub (2 samples, 0.02%)core::sync::atomic::atomic_sub (2 samples, 0.02%)tokio::runtime::task::waker::wake_by_val (2 samples, 0.02%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (2 samples, 0.02%)tokio::sync::mpsc::list::Tx<T>::push (3 samples, 0.02%)tokio::sync::mpsc::bounded::Permit<T>::send (6 samples, 0.05%)tokio::sync::mpsc::chan::Tx<T,S>::send (6 samples, 0.05%)tokio::sync::mpsc::chan::Chan<T,S>::send (6 samples, 0.05%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (3 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (3 samples, 0.02%)dcache::network::raft_network_impl::DcacheNetwork::send_rpc::_{{closure}}::_{{closure}} (17 samples, 0.14%)tokio::sync::mpsc::bounded::Sender<T>::send::_{{closure}} (14 samples, 0.11%)tokio::sync::mpsc::bounded::Sender<T>::reserve::_{{closure}} (7 samples, 0.06%)tokio::sync::mpsc::bounded::Sender<T>::reserve_inner::_{{closure}} (7 samples, 0.06%)dcache::store::PersistableStateMachine::from_statemachine::_{{closure}} (2 samples, 0.02%)openraft::core::sm::Worker<C,SM>::build_snapshot::_{{closure}}::_{{closure}}::_{{closure}} (7 samples, 0.06%)<core::pin::Pin<P> as core::future::future::Future>::poll (6 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftSnapshotBuilder<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::build_snapshot::_{{closure}} (6 samples, 0.05%)dcache::store::_<impl openraft::storage::RaftSnapshotBuilder<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::build_snapshot::_{{closure}}::_{{closure}} (6 samples, 0.05%)serde_json::ser::to_vec (2 samples, 0.02%)serde_json::ser::to_writer (2 samples, 0.02%)dcache::store::_::<impl serde::ser::Serialize for dcache::store::PersistableStateMachine>::serialize (2 samples, 0.02%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (2 samples, 0.02%)serde::ser::SerializeMap::serialize_entry (2 samples, 0.02%)openraft::core::sm::Worker<C,SM>::do_spawn::_{{closure}} (18 samples, 0.15%)openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}} (3 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (2,804 samples, 22.76%)tokio::loom::std::unsafe_cell::Unsaf..tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (2,804 samples, 22.76%)tokio::runtime::task::core::Core<T,S..tokio::runtime::task::core::TaskIdGuard::enter (10 samples, 0.08%)tokio::runtime::context::set_current_task_id (3 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (3 samples, 0.02%)tokio::runtime::context::CONTEXT::__getit (3 samples, 0.02%)core::cell::Cell<T>::get (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)cfree (2 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::task::core::Stage<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = ()+core::marker::Send>>>> (2 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (9 samples, 0.07%)tokio::runtime::task::core::Core<T,S>::set_stage::_{{closure}} (9 samples, 0.07%)core::ptr::drop_in_place<tokio::runtime::task::core::Stage<hyper::proto::h2::server::H2Stream<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>>>> (2 samples, 0.02%)core::ptr::drop_in_place<hyper::proto::h2::server::H2Stream<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>>> (2 samples, 0.02%)core::ptr::drop_in_place<h2::server::SendResponse<hyper::proto::h2::SendBuf<bytes::bytes::Bytes>>> (2 samples, 0.02%)core::ptr::drop_in_place<h2::proto::streams::streams::StreamRef<hyper::proto::h2::SendBuf<bytes::bytes::Bytes>>> (2 samples, 0.02%)core::ptr::drop_in_place<h2::proto::streams::streams::OpaqueStreamRef> (2 samples, 0.02%)<h2::proto::streams::streams::OpaqueStreamRef as core::ops::drop::Drop>::drop (2 samples, 0.02%)tokio::runtime::task::core::Core<T,S>::poll (2,826 samples, 22.94%)tokio::runtime::task::core::Core<T,S..tokio::runtime::task::core::Core<T,S>::drop_future_or_output (14 samples, 0.11%)tokio::runtime::task::core::Core<T,S>::set_stage (14 samples, 0.11%)tokio::runtime::task::core::TaskIdGuard::enter (3 samples, 0.02%)tokio::runtime::task::harness::poll_future (2,844 samples, 23.08%)tokio::runtime::task::harness::poll_f..std::panic::catch_unwind (2,840 samples, 23.05%)std::panic::catch_unwindstd::panicking::try (2,840 samples, 23.05%)std::panicking::trystd::panicking::try::do_call (2,837 samples, 23.03%)std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (2,837 samples, 23.03%)<core::panic::unwind_safe::AssertUnwi..tokio::runtime::task::harness::poll_future::_{{closure}} (2,837 samples, 23.03%)tokio::runtime::task::harness::poll_f..tokio::runtime::task::core::Core<T,S>::store_output (3 samples, 0.02%)tokio::runtime::task::core::Core<T,S>::set_stage (3 samples, 0.02%)tokio::runtime::task::state::State::load (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)tokio::runtime::task::state::State::transition_to_idle (18 samples, 0.15%)tokio::runtime::task::state::State::fetch_update_action (11 samples, 0.09%)tokio::runtime::task::state::State::transition_to_idle::_{{closure}} (4 samples, 0.03%)tokio::runtime::task::state::Snapshot::ref_dec (2 samples, 0.02%)tokio::runtime::task::state::State::load (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)tokio::runtime::task::state::State::transition_to_running (16 samples, 0.13%)tokio::runtime::task::state::State::fetch_update_action (15 samples, 0.12%)tokio::runtime::task::harness::Harness<T,S>::poll (2,980 samples, 24.19%)tokio::runtime::task::harness::Harness..tokio::runtime::task::harness::Harness<T,S>::poll_inner (2,912 samples, 23.63%)tokio::runtime::task::harness::Harness..tokio::runtime::task::waker::waker_ref (8 samples, 0.06%)tokio::runtime::task::waker::raw_waker (4 samples, 0.03%)tokio::runtime::task::raw::RawTask::poll (28 samples, 0.23%)tokio::runtime::scheduler::current_thread::Context::run_task (3,105 samples, 25.20%)tokio::runtime::scheduler::current_threa..tokio::runtime::scheduler::current_thread::Context::enter (3,071 samples, 24.92%)tokio::runtime::scheduler::current_threa..tokio::runtime::scheduler::current_thread::Context::run_task::_{{closure}} (3,062 samples, 24.85%)tokio::runtime::scheduler::current_threa..tokio::runtime::coop::budget (3,062 samples, 24.85%)tokio::runtime::coop::budgettokio::runtime::coop::with_budget (3,052 samples, 24.77%)tokio::runtime::coop::with_budgettokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}}::_{{closure}} (3,027 samples, 24.57%)tokio::runtime::scheduler::current_thre..tokio::runtime::task::LocalNotified<S>::run (3,027 samples, 24.57%)tokio::runtime::task::LocalNotified<S>:..tokio::runtime::task::raw::poll (19 samples, 0.15%)tokio::runtime::scheduler::current_thread::Core::next_task (34 samples, 0.28%)tokio::runtime::scheduler::current_thread::Handle::next_remote_task (3 samples, 0.02%)tokio::runtime::scheduler::inject::Inject<T>::pop (3 samples, 0.02%)tokio::runtime::scheduler::current_thread::Core::tick (2 samples, 0.02%)tokio::runtime::runtime::Runtime::block_on (3,251 samples, 26.39%)tokio::runtime::runtime::Runtime::block_ontokio::runtime::scheduler::current_thread::CurrentThread::block_on (3,251 samples, 26.39%)tokio::runtime::scheduler::current_thread:..tokio::runtime::context::runtime::enter_runtime (3,251 samples, 26.39%)tokio::runtime::context::runtime::enter_ru..tokio::runtime::scheduler::current_thread::CurrentThread::block_on::_{{closure}} (3,251 samples, 26.39%)tokio::runtime::scheduler::current_thread:..tokio::runtime::scheduler::current_thread::CoreGuard::block_on (3,251 samples, 26.39%)tokio::runtime::scheduler::current_thread:..tokio::runtime::scheduler::current_thread::CoreGuard::enter (3,251 samples, 26.39%)tokio::runtime::scheduler::current_thread:..tokio::runtime::context::set_scheduler (3,251 samples, 26.39%)tokio::runtime::context::set_schedulerstd::thread::local::LocalKey<T>::with (3,251 samples, 26.39%)std::thread::local::LocalKey<T>::withstd::thread::local::LocalKey<T>::try_with (3,251 samples, 26.39%)std::thread::local::LocalKey<T>::try_withtokio::runtime::context::set_scheduler::_{{closure}} (3,251 samples, 26.39%)tokio::runtime::context::set_scheduler::_{..tokio::runtime::context::scoped::Scoped<T>::set (3,251 samples, 26.39%)tokio::runtime::context::scoped::Scoped<T>..tokio::runtime::scheduler::current_thread::CoreGuard::enter::_{{closure}} (3,251 samples, 26.39%)tokio::runtime::scheduler::current_thread:..tokio::runtime::scheduler::current_thread::CoreGuard::block_on::_{{closure}} (3,251 samples, 26.39%)tokio::runtime::scheduler::current_thread:..tokio::runtime::scheduler::current_thread::Handle::reset_woken (2 samples, 0.02%)<T as hyper::service::http::HttpService<B1>>::call (2 samples, 0.02%)<tower::util::boxed::sync::BoxService<T,U,E> as tower_service::Service<T>>::call (2 samples, 0.02%)<alloc::boxed::Box<S> as tower_service::Service<Request>>::call (2 samples, 0.02%)<tower::util::map_future::MapFuture<S,F> as tower_service::Service<R>>::call (2 samples, 0.02%)<tower::util::map_request::MapRequest<S,F> as tower_service::Service<R1>>::call (2 samples, 0.02%)<tonic::transport::server::Svc<S> as tower_service::Service<http::request::Request<hyper::body::body::Body>>>::call (2 samples, 0.02%)<tonic::transport::server::recover_error::RecoverError<S> as tower_service::Service<R>>::call (2 samples, 0.02%)<tower::util::either::Either<A,B> as tower_service::Service<Request>>::call (2 samples, 0.02%)<tonic::transport::service::grpc_timeout::GrpcTimeout<S> as tower_service::Service<http::request::Request<ReqBody>>>::call (2 samples, 0.02%)tonic::transport::service::grpc_timeout::try_parse_grpc_timeout (2 samples, 0.02%)http::header::map::HeaderMap<T>::get (2 samples, 0.02%)http::header::map::HeaderMap<T>::get2 (2 samples, 0.02%)<&str as http::header::map::as_header_name::Sealed>::find (2 samples, 0.02%)http::header::name::HdrName::from_bytes (2 samples, 0.02%)<tokio_util::codec::length_delimited::LengthDelimitedCodec as tokio_util::codec::decoder::Decoder>::decode (2 samples, 0.02%)tokio_util::codec::length_delimited::LengthDelimitedCodec::decode_head (2 samples, 0.02%)<h2::codec::Codec<T,B> as futures_core::stream::Stream>::poll_next (5 samples, 0.04%)<h2::codec::framed_read::FramedRead<T> as futures_core::stream::Stream>::poll_next (5 samples, 0.04%)<tokio_util::codec::framed_read::FramedRead<T,D> as futures_core::stream::Stream>::poll_next (5 samples, 0.04%)<tokio_util::codec::framed_impl::FramedImpl<T,U,R> as futures_core::stream::Stream>::poll_next (5 samples, 0.04%)tokio_util::util::poll_buf::poll_read_buf (2 samples, 0.02%)<h2::codec::framed_write::FramedWrite<T,B> as tokio::io::async_read::AsyncRead>::poll_read (2 samples, 0.02%)<hyper::common::io::rewind::Rewind<T> as tokio::io::async_read::AsyncRead>::poll_read (2 samples, 0.02%)<tonic::transport::service::io::ServerIo<IO> as tokio::io::async_read::AsyncRead>::poll_read (2 samples, 0.02%)<hyper::server::tcp::addr_stream::AddrStream as tokio::io::async_read::AsyncRead>::poll_read (2 samples, 0.02%)tokio::net::tcp::stream::TcpStream::poll_read_priv (2 samples, 0.02%)tokio::io::poll_evented::PollEvented<E>::poll_read (2 samples, 0.02%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read (2 samples, 0.02%)mio::io_source::IoSource<T>::do_io (2 samples, 0.02%)mio::sys::unix::stateless_io_source::IoSourceState::do_io (2 samples, 0.02%)<&mio::net::tcp::stream::TcpStream as std::io::Read>::read::_{{closure}} (2 samples, 0.02%)<&std::net::tcp::TcpStream as std::io::Read>::read (2 samples, 0.02%)std::sys_common::net::TcpStream::read (2 samples, 0.02%)std::sys::unix::net::Socket::read (2 samples, 0.02%)std::sys::unix::net::Socket::recv_with_flags (2 samples, 0.02%)recv (2 samples, 0.02%)[unknown] (2 samples, 0.02%)[unknown] (2 samples, 0.02%)h2::proto::connection::Connection<T,P,B>::poll2 (9 samples, 0.07%)h2::proto::connection::DynConnection<B>::recv_frame (2 samples, 0.02%)h2::codec::Codec<T,B>::buffer (2 samples, 0.02%)h2::codec::framed_write::FramedWrite<T,B>::buffer (2 samples, 0.02%)h2::codec::framed_write::Encoder<B>::buffer (2 samples, 0.02%)<hyper::server::server::new_svc::NewSvcTask<I,N,S,E,W> as core::future::future::Future>::poll (16 samples, 0.13%)<hyper::server::conn::upgrades::UpgradeableConnection<I,S,E> as core::future::future::Future>::poll (16 samples, 0.13%)<hyper::server::conn::ProtoServer<T,B,S,E> as core::future::future::Future>::poll (16 samples, 0.13%)<hyper::proto::h2::server::Server<T,S,B,E> as core::future::future::Future>::poll (16 samples, 0.13%)hyper::proto::h2::server::Serving<T,B>::poll_server (16 samples, 0.13%)h2::server::Connection<T,B>::poll_accept (14 samples, 0.11%)h2::server::Connection<T,B>::poll_closed (14 samples, 0.11%)h2::proto::connection::Connection<T,P,B>::poll (14 samples, 0.11%)h2::proto::streams::streams::Streams<B,P>::poll_complete (5 samples, 0.04%)h2::proto::streams::streams::Inner::poll_complete (5 samples, 0.04%)h2::proto::streams::send::Send::poll_complete (3 samples, 0.02%)h2::proto::streams::prioritize::Prioritize::poll_complete (3 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (2 samples, 0.02%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop (2 samples, 0.02%)tokio::io::interest::Interest::is_readable (3 samples, 0.02%)core::cell::Cell<T>::set (9 samples, 0.07%)core::cell::Cell<T>::replace (9 samples, 0.07%)core::mem::replace (9 samples, 0.07%)core::ptr::write (9 samples, 0.07%)tokio::runtime::coop::poll_proceed (15 samples, 0.12%)tokio::runtime::context::budget (14 samples, 0.11%)std::thread::local::LocalKey<T>::try_with (14 samples, 0.11%)tokio::runtime::context::budget::_{{closure}} (13 samples, 0.11%)tokio::runtime::coop::poll_proceed::_{{closure}} (13 samples, 0.11%)tokio::runtime::coop::Budget::decrement (2 samples, 0.02%)tokio::sync::oneshot::State::load (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)<&mut F as core::future::future::Future>::poll (37 samples, 0.30%)<tokio::sync::oneshot::Receiver<T> as core::future::future::Future>::poll (37 samples, 0.30%)tokio::sync::oneshot::Inner<T>::poll_recv (36 samples, 0.29%)tokio::sync::oneshot::Task::will_wake (9 samples, 0.07%)tokio::sync::oneshot::Task::with_task (9 samples, 0.07%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (6 samples, 0.05%)tokio::sync::oneshot::Task::with_task::_{{closure}} (6 samples, 0.05%)tokio::sync::oneshot::Task::will_wake::_{{closure}} (6 samples, 0.05%)core::task::wake::Waker::will_wake (6 samples, 0.05%)<core::task::wake::RawWaker as core::cmp::PartialEq>::eq (6 samples, 0.05%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (2 samples, 0.02%)<core::task::wake::RawWakerVTable as core::cmp::PartialEq>::eq (2 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (4 samples, 0.03%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop (4 samples, 0.03%)tokio::runtime::context::budget (3 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (3 samples, 0.02%)tokio::runtime::context::CONTEXT::__getit (3 samples, 0.02%)core::cell::Cell<T>::get (2 samples, 0.02%)[libc.so.6] (14 samples, 0.11%)[libc.so.6] (10 samples, 0.08%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (3 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (3 samples, 0.02%)core::ptr::read (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::read (11 samples, 0.09%)tokio::sync::mpsc::block::is_tx_closed (3 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::pop (22 samples, 0.18%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (50 samples, 0.41%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (50 samples, 0.41%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (12 samples, 0.10%)tokio::sync::task::atomic_waker::AtomicWaker::do_register (12 samples, 0.10%)tokio::sync::task::atomic_waker::AtomicWaker::do_register::catch_unwind (5 samples, 0.04%)std::panic::catch_unwind (5 samples, 0.04%)std::panicking::try (5 samples, 0.04%)std::panicking::try::do_call (5 samples, 0.04%)<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (5 samples, 0.04%)tokio::sync::task::atomic_waker::AtomicWaker::do_register::_{{closure}} (5 samples, 0.04%)<&core::task::wake::Waker as tokio::sync::task::atomic_waker::WakerRef>::into_waker (5 samples, 0.04%)<core::task::wake::Waker as core::clone::Clone>::clone (5 samples, 0.04%)tokio::runtime::task::waker::clone_waker (5 samples, 0.04%)tokio::runtime::task::state::State::ref_inc (4 samples, 0.03%)core::cell::Cell<T>::get (2 samples, 0.02%)core::cell::Cell<T>::set (11 samples, 0.09%)core::cell::Cell<T>::replace (11 samples, 0.09%)core::mem::replace (11 samples, 0.09%)core::ptr::write (11 samples, 0.09%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (72 samples, 0.58%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}}::_{{closure}} (72 samples, 0.58%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (72 samples, 0.58%)tokio::sync::mpsc::chan::Rx<T,S>::recv (72 samples, 0.58%)tokio::runtime::coop::poll_proceed (17 samples, 0.14%)tokio::runtime::context::budget (14 samples, 0.11%)std::thread::local::LocalKey<T>::try_with (14 samples, 0.11%)tokio::runtime::context::budget::_{{closure}} (14 samples, 0.11%)tokio::runtime::coop::poll_proceed::_{{closure}} (14 samples, 0.11%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (131 samples, 1.06%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}}::_{{closure}}::_{{closure}} (129 samples, 1.05%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}} (90 samples, 0.73%)[libc.so.6] (2 samples, 0.02%)[libc.so.6] (19 samples, 0.15%)openraft::core::balancer::Balancer::notify (7 samples, 0.06%)openraft::core::balancer::Balancer::raft_msg (4 samples, 0.03%)alloc::collections::btree::append::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::bulk_push (7 samples, 0.06%)core::ptr::drop_in_place<alloc::collections::btree::dedup_sorted_iter::DedupSortedIter<u64,core::option::Option<openraft::log_id::LogId<u64>>,alloc::vec::into_iter::IntoIter<(u64,core::option::Option<openraft::log_id::LogId<u64>>)>>> (3 samples, 0.02%)core::ptr::drop_in_place<core::iter::adapters::peekable::Peekable<alloc::vec::into_iter::IntoIter<(u64,core::option::Option<openraft::log_id::LogId<u64>>)>>> (3 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<(u64,core::option::Option<openraft::log_id::LogId<u64>>)>> (3 samples, 0.02%)<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)core::ptr::drop_in_place<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<(u64,core::option::Option<openraft::log_id::LogId<u64>>),alloc::alloc::Global>> (3 samples, 0.02%)<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<(u64,core::option::Option<openraft::log_id::LogId<u64>>)>> (3 samples, 0.02%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (3 samples, 0.02%)alloc::alloc::dealloc (3 samples, 0.02%)cfree (3 samples, 0.02%)core::ptr::read_volatile (2 samples, 0.02%)alloc::collections::btree::map::BTreeMap<K,V,A>::bulk_build_from_sorted_iter (25 samples, 0.20%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::new (16 samples, 0.13%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Owned,K,V,alloc::collections::btree::node::marker::Leaf>::new_leaf (16 samples, 0.13%)alloc::collections::btree::node::LeafNode<K,V>::new (16 samples, 0.13%)alloc::boxed::Box<T,A>::new_uninit_in (16 samples, 0.13%)alloc::boxed::Box<T,A>::try_new_uninit_in (10 samples, 0.08%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (10 samples, 0.08%)alloc::alloc::Global::alloc_impl (10 samples, 0.08%)alloc::alloc::alloc (10 samples, 0.08%)malloc (8 samples, 0.06%)core::slice::sort::insertion_sort_shift_left (2 samples, 0.02%)alloc::slice::<impl [T]>::sort_by (7 samples, 0.06%)alloc::slice::stable_sort (7 samples, 0.06%)core::slice::sort::merge_sort (4 samples, 0.03%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend (7 samples, 0.06%)alloc::vec::Vec<T,A>::extend_trusted (7 samples, 0.06%)core::iter::traits::iterator::Iterator::for_each (7 samples, 0.06%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (7 samples, 0.06%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold (7 samples, 0.06%)core::iter::adapters::map::map_fold::_{{closure}} (5 samples, 0.04%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (5 samples, 0.04%)alloc::vec::Vec<T,A>::extend_trusted::_{{closure}} (5 samples, 0.04%)core::ptr::write (3 samples, 0.02%)core::ptr::read_volatile (2 samples, 0.02%)core::iter::traits::iterator::Iterator::collect (48 samples, 0.39%)<alloc::collections::btree::map::BTreeMap<K,V> as core::iter::traits::collect::FromIterator<(K,V)>>::from_iter (48 samples, 0.39%)core::iter::traits::iterator::Iterator::collect (13 samples, 0.11%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (13 samples, 0.11%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (13 samples, 0.11%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (13 samples, 0.11%)alloc::vec::Vec<T>::with_capacity (6 samples, 0.05%)alloc::vec::Vec<T,A>::with_capacity_in (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::allocate_in (6 samples, 0.05%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (6 samples, 0.05%)alloc::alloc::Global::alloc_impl (6 samples, 0.05%)alloc::alloc::alloc (6 samples, 0.05%)malloc (2 samples, 0.02%)<core::option::Option<&openraft::log_id::LogId<NID>> as openraft::log_id::log_id_option_ext::LogIdOptionExt>::index (3 samples, 0.02%)core::option::Option<T>::map (3 samples, 0.02%)<core::option::Option<&openraft::log_id::LogId<NID>> as openraft::log_id::log_id_option_ext::LogIdOptionExt>::index::_{{closure}} (3 samples, 0.02%)[libc.so.6] (8 samples, 0.06%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (6 samples, 0.05%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (6 samples, 0.05%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (6 samples, 0.05%)openraft::membership::effective_membership::EffectiveMembership<NID,N>::is_voter (9 samples, 0.07%)openraft::membership::membership::Membership<NID,N>::is_voter (9 samples, 0.07%)alloc::collections::btree::set::BTreeSet<T,A>::contains (9 samples, 0.07%)alloc::collections::btree::map::BTreeMap<K,V,A>::contains_key (9 samples, 0.07%)alloc::collections::btree::map::BTreeMap<K,V,A>::get (9 samples, 0.07%)core::option::Option<T>::as_ref (3 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::flush_metrics (92 samples, 0.75%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::report_metrics (39 samples, 0.32%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::current_leader (17 samples, 0.14%)tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::does_replication_session_match (5 samples, 0.04%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::does_vote_match (4 samples, 0.03%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::ne (3 samples, 0.02%)core::cmp::PartialEq::ne (3 samples, 0.02%)<openraft::vote::vote::Vote<NID> as core::cmp::PartialEq>::eq (3 samples, 0.02%)<openraft::vote::leader_id::leader_id_std::LeaderId<NID> as core::cmp::PartialEq>::eq (2 samples, 0.02%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove (11 samples, 0.09%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove_entry (11 samples, 0.09%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_entry (11 samples, 0.09%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_kv (11 samples, 0.09%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,alloc::collections::btree::node::marker::KV>>::remove_kv_tracking (7 samples, 0.06%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv (2 samples, 0.02%)core::option::Option<T>::unwrap (5 samples, 0.04%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<dcache::store::DcacheResponse>> (3 samples, 0.02%)<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)core::ptr::drop_in_place<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<dcache::store::DcacheResponse,alloc::alloc::Global>> (3 samples, 0.02%)<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<dcache::store::DcacheResponse>> (3 samples, 0.02%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (3 samples, 0.02%)alloc::alloc::dealloc (3 samples, 0.02%)cfree (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<openraft::core::raft_core::ApplyingEntry<u64,openraft::node::BasicNode>>> (11 samples, 0.09%)cfree (8 samples, 0.06%)[libc.so.6] (3 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (3 samples, 0.02%)tokio::sync::oneshot::Sender<T>::send::_{{closure}} (3 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<core::result::Result<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>>> (3 samples, 0.02%)tokio::sync::oneshot::State::set_complete (2 samples, 0.02%)tokio::runtime::scheduler::current_thread::<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::send_response (19 samples, 0.15%)tokio::sync::oneshot::Sender<T>::send (17 samples, 0.14%)tokio::sync::oneshot::Inner<T>::complete (12 samples, 0.10%)tokio::sync::oneshot::Task::with_task (9 samples, 0.07%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (9 samples, 0.07%)tokio::sync::oneshot::Task::with_task::_{{closure}} (9 samples, 0.07%)core::ops::function::FnOnce::call_once (9 samples, 0.07%)core::task::wake::Waker::wake_by_ref (9 samples, 0.07%)tokio::runtime::task::waker::wake_by_ref (5 samples, 0.04%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_ref (5 samples, 0.04%)tokio::runtime::task::state::State::transition_to_notified_by_ref (5 samples, 0.04%)tokio::runtime::task::state::State::fetch_update_action (5 samples, 0.04%)tokio::runtime::task::state::State::load (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (4 samples, 0.03%)core::sync::atomic::atomic_load (4 samples, 0.03%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_apply_result (53 samples, 0.43%)openraft::progress::Progress::update (4 samples, 0.03%)<openraft::progress::VecProgress<ID,V,P,QS> as openraft::progress::Progress<ID,V,P,QS>>::update_with (4 samples, 0.03%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_success_progress (9 samples, 0.07%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_leader_vote_clock (9 samples, 0.07%)tracing_core::metadata::LevelFilter::current (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_progress (12 samples, 0.10%)tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_replication_progress (15 samples, 0.12%)openraft::raft_state::io_state::IOState<NID>::update_applied (4 samples, 0.03%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_notify (94 samples, 0.76%)[libc.so.6] (16 samples, 0.13%)core::ptr::drop_in_place<openraft::core::raft_core::RaftCore<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::run_engine_commands::{{closure}}> (2 samples, 0.02%)[libc.so.6] (13 samples, 0.11%)core::intrinsics::copy (13 samples, 0.11%)[libc.so.6] (11 samples, 0.09%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>::remove (19 samples, 0.15%)alloc::collections::btree::node::slice_remove (18 samples, 0.15%)core::ptr::mut_ptr::<impl *mut T>::add (5 samples, 0.04%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_entry (40 samples, 0.32%)alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_kv (40 samples, 0.32%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,alloc::collections::btree::node::marker::KV>>::remove_kv_tracking (27 samples, 0.22%)alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv (25 samples, 0.20%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove (44 samples, 0.36%)alloc::collections::btree::map::BTreeMap<K,V,A>::remove_entry (44 samples, 0.36%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (4 samples, 0.03%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (4 samples, 0.03%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (4 samples, 0.03%)core::option::Option<T>::unwrap (21 samples, 0.17%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<dcache::store::DcacheResponse>> (15 samples, 0.12%)<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop (15 samples, 0.12%)core::ptr::drop_in_place<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<dcache::store::DcacheResponse,alloc::alloc::Global>> (15 samples, 0.12%)<<alloc::vec::into_iter::IntoIter<T,A> as core::ops::drop::Drop>::drop::DropGuard<T,A> as core::ops::drop::Drop>::drop (15 samples, 0.12%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<dcache::store::DcacheResponse>> (15 samples, 0.12%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (15 samples, 0.12%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (15 samples, 0.12%)alloc::alloc::dealloc (15 samples, 0.12%)cfree (14 samples, 0.11%)[libc.so.6] (5 samples, 0.04%)core::ptr::drop_in_place<alloc::vec::into_iter::IntoIter<openraft::core::raft_core::ApplyingEntry<u64,openraft::node::BasicNode>>> (12 samples, 0.10%)cfree (12 samples, 0.10%)[libc.so.6] (6 samples, 0.05%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (22 samples, 0.18%)tokio::sync::oneshot::Sender<T>::send::_{{closure}} (22 samples, 0.18%)core::ptr::drop_in_place<core::option::Option<core::result::Result<openraft::raft::ClientWriteResponse<dcache::DcacheTypeConfig>,openraft::error::ClientWriteError<u64,openraft::node::BasicNode>>>> (18 samples, 0.15%)tokio::sync::oneshot::State::is_closed (2 samples, 0.02%)tokio::sync::oneshot::State::set_complete (7 samples, 0.06%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)tokio::runtime::context::with_scheduler (11 samples, 0.09%)std::thread::local::LocalKey<T>::try_with (11 samples, 0.09%)tokio::runtime::context::with_scheduler::_{{closure}} (11 samples, 0.09%)tokio::runtime::context::scoped::Scoped<T>::with (10 samples, 0.08%)tokio::runtime::scheduler::current_thread::_<impl tokio::runtime::task::Schedule for alloc::sync::Arc<tokio::runtime::scheduler::current_thread::Handle>>::schedule::_{{closure}} (8 samples, 0.06%)tokio::runtime::scheduler::current_thread::Core::push_task (4 samples, 0.03%)alloc::collections::vec_deque::VecDeque<T,A>::push_back (4 samples, 0.03%)alloc::collections::vec_deque::VecDeque<T,A>::to_physical_idx (2 samples, 0.02%)alloc::collections::vec_deque::VecDeque<T,A>::wrap_add (2 samples, 0.02%)alloc::collections::vec_deque::wrap_index (2 samples, 0.02%)tokio::runtime::task::Task<S>::from_raw (2 samples, 0.02%)tokio::runtime::task::raw::RawTask::from_raw (2 samples, 0.02%)tokio::runtime::task::raw::schedule (6 samples, 0.05%)tokio::runtime::task::core::Header::get_scheduler (4 samples, 0.03%)tokio::runtime::task::raw::RawTask::schedule (3 samples, 0.02%)tokio::runtime::task::state::State::load (6 samples, 0.05%)core::sync::atomic::AtomicUsize::load (6 samples, 0.05%)core::sync::atomic::atomic_load (6 samples, 0.05%)tokio::sync::oneshot::Sender<T>::send (71 samples, 0.58%)tokio::sync::oneshot::Inner<T>::complete (47 samples, 0.38%)tokio::sync::oneshot::Task::with_task (37 samples, 0.30%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (37 samples, 0.30%)tokio::sync::oneshot::Task::with_task::_{{closure}} (37 samples, 0.30%)core::ops::function::FnOnce::call_once (37 samples, 0.30%)core::task::wake::Waker::wake_by_ref (37 samples, 0.30%)tokio::runtime::task::waker::wake_by_ref (20 samples, 0.16%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_ref (19 samples, 0.15%)tokio::runtime::task::state::State::transition_to_notified_by_ref (16 samples, 0.13%)tokio::runtime::task::state::State::fetch_update_action (16 samples, 0.13%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::send_response (79 samples, 0.64%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_apply_result (176 samples, 1.43%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_progress (3 samples, 0.02%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_success_progress (2 samples, 0.02%)openraft::engine::handler::replication_handler::ReplicationHandler<C>::update_leader_vote_clock (2 samples, 0.02%)openraft::progress::Progress::update (2 samples, 0.02%)<openraft::progress::VecProgress<ID,V,P,QS> as openraft::progress::Progress<ID,V,P,QS>>::update_with (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_replication_progress (5 samples, 0.04%)tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)openraft::raft_state::io_state::IOState<NID>::update_applied (13 samples, 0.11%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_notify (243 samples, 1.97%)o..[libc.so.6] (55 samples, 0.45%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (70 samples, 0.57%)<tokio::sync::mpsc::unbounded::Semaphore as tokio::sync::mpsc::chan::Semaphore>::add_permit (2 samples, 0.02%)[libc.so.6] (23 samples, 0.19%)[libc.so.6] (37 samples, 0.30%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)[libc.so.6] (18 samples, 0.15%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (2 samples, 0.02%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (8 samples, 0.06%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (8 samples, 0.06%)core::ptr::read (8 samples, 0.06%)[libc.so.6] (6 samples, 0.05%)tokio::sync::mpsc::block::Block<T>::read (15 samples, 0.12%)tokio::sync::mpsc::list::Rx<T>::reclaim_blocks (4 samples, 0.03%)tokio::sync::mpsc::list::Tx<T>::reclaim_block (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::try_push (2 samples, 0.02%)core::sync::atomic::AtomicPtr<T>::compare_exchange (2 samples, 0.02%)core::sync::atomic::atomic_compare_exchange (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_notify::_{{closure}} (454 samples, 3.68%)open..tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::try_recv (115 samples, 0.93%)tokio::sync::mpsc::chan::Rx<T,S>::try_recv (114 samples, 0.93%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (113 samples, 0.92%)tokio::sync::mpsc::chan::Rx<T,S>::try_recv::_{{closure}} (113 samples, 0.92%)tokio::sync::mpsc::list::Rx<T>::try_pop (87 samples, 0.71%)tokio::sync::mpsc::list::Rx<T>::pop (44 samples, 0.36%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (4 samples, 0.03%)[libc.so.6] (47 samples, 0.38%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (2 samples, 0.02%)<core::ops::range::Range<T> as core::iter::range::RangeIteratorImpl>::spec_next (2 samples, 0.02%)core::ptr::drop_in_place<openraft::core::raft_core::RaftCore<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::handle_api_msg::{{closure}}> (3 samples, 0.02%)[libc.so.6] (63 samples, 0.51%)core::ptr::drop_in_place<openraft::core::raft_core::RaftCore<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::handle_api_msg::{{closure}}::{{closure}}> (3 samples, 0.02%)<tracing::span::Span as core::ops::drop::Drop>::drop (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (3 samples, 0.02%)tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::handle_api_msg::_{{closure}} (90 samples, 0.73%)tracing_core::metadata::LevelFilter::current (3 samples, 0.02%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)[libc.so.6] (60 samples, 0.49%)core::ptr::drop_in_place<openraft::core::raft_core::RaftCore<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::network::raft_network_impl::DcacheNetwork>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::run_engine_commands::{{closure}}::{{closure}}> (3 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (75 samples, 0.61%)<tokio::sync::mpsc::unbounded::Semaphore as tokio::sync::mpsc::chan::Semaphore>::add_permit (7 samples, 0.06%)core::sync::atomic::AtomicUsize::fetch_sub (2 samples, 0.02%)core::sync::atomic::atomic_sub (2 samples, 0.02%)[libc.so.6] (29 samples, 0.24%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (2 samples, 0.02%)[libc.so.6] (27 samples, 0.22%)core::sync::atomic::AtomicUsize::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)[libc.so.6] (10 samples, 0.08%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (2 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (12 samples, 0.10%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (12 samples, 0.10%)core::ptr::read (12 samples, 0.10%)[libc.so.6] (10 samples, 0.08%)tokio::sync::mpsc::block::is_ready (2 samples, 0.02%)tokio::sync::mpsc::block::is_tx_closed (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::read (21 samples, 0.17%)core::cmp::PartialEq::ne (2 samples, 0.02%)<core::ptr::non_null::NonNull<T> as core::cmp::PartialEq>::eq (2 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::reclaim_blocks (3 samples, 0.02%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::try_recv (120 samples, 0.97%)tokio::sync::mpsc::chan::Rx<T,S>::try_recv (120 samples, 0.97%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (116 samples, 0.94%)tokio::sync::mpsc::chan::Rx<T,S>::try_recv::_{{closure}} (116 samples, 0.94%)tokio::sync::mpsc::list::Rx<T>::try_pop (77 samples, 0.62%)tokio::sync::mpsc::list::Rx<T>::pop (45 samples, 0.37%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (7 samples, 0.06%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::process_raft_msg::_{{closure}} (345 samples, 2.80%)op..[libc.so.6] (11 samples, 0.09%)core::ptr::drop_in_place<tracing::span::Span> (2 samples, 0.02%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (1,220 samples, 9.90%)<tracing::inst..openraft::core::raft_core::RaftCore<C,N,LS,SM>::main::_{{closure}} (1,220 samples, 9.90%)openraft::core..<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (1,220 samples, 9.90%)<tracing::inst..openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}} (1,220 samples, 9.90%)openraft::core..openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}}::_{{closure}} (1,220 samples, 9.90%)openraft::core..openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}} (1,211 samples, 9.83%)openraft::core..openraft::core::raft_core::RaftCore<C,N,LS,SM>::runtime_loop::_{{closure}}::_{{closure}} (1,203 samples, 9.76%)openraft::core..openraft::core::raft_core::RaftCore<C,N,LS,SM>::run_engine_commands::_{{closure}} (22 samples, 0.18%)tracing::__macro_support::__disabled_span (2 samples, 0.02%)tracing::span::Span::new_disabled (2 samples, 0.02%)alloc::string::String::with_capacity (3 samples, 0.02%)alloc::vec::Vec<T>::with_capacity (3 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::allocate_in (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (3 samples, 0.02%)alloc::alloc::Global::alloc_impl (3 samples, 0.02%)alloc::alloc::alloc (3 samples, 0.02%)malloc (2 samples, 0.02%)core::fmt::Arguments::estimated_capacity (3 samples, 0.02%)core::iter::traits::iterator::Iterator::sum (3 samples, 0.02%)<usize as core::iter::traits::accum::Sum>::sum (3 samples, 0.02%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (3 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold (3 samples, 0.02%)<&mut W as core::fmt::Write>::write_str (4 samples, 0.03%)<alloc::string::String as core::fmt::Write>::write_str (3 samples, 0.02%)alloc::string::String::push_str (3 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (3 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (3 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (3 samples, 0.02%)core::intrinsics::copy_nonoverlapping (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)core::fmt::Formatter::new (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::grow (6 samples, 0.05%)alloc::alloc::Global::grow_impl (6 samples, 0.05%)alloc::alloc::realloc (6 samples, 0.05%)realloc (4 samples, 0.03%)[libc.so.6] (4 samples, 0.03%)[libc.so.6] (4 samples, 0.03%)alloc::raw_vec::finish_grow (10 samples, 0.08%)<&mut W as core::fmt::Write>::write_str (15 samples, 0.12%)<alloc::string::String as core::fmt::Write>::write_str (14 samples, 0.11%)alloc::string::String::push_str (14 samples, 0.11%)alloc::vec::Vec<T,A>::extend_from_slice (14 samples, 0.11%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (14 samples, 0.11%)alloc::vec::Vec<T,A>::append_elements (14 samples, 0.11%)alloc::vec::Vec<T,A>::reserve (14 samples, 0.11%)alloc::raw_vec::RawVec<T,A>::reserve (14 samples, 0.11%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (14 samples, 0.11%)alloc::raw_vec::RawVec<T,A>::grow_amortized (14 samples, 0.11%)core::num::<impl usize>::checked_add (2 samples, 0.02%)core::num::<impl usize>::overflowing_add (2 samples, 0.02%)alloc::fmt::format (32 samples, 0.26%)core::option::Option<T>::map_or_else (32 samples, 0.26%)alloc::fmt::format::_{{closure}} (32 samples, 0.26%)alloc::fmt::format::format_inner (32 samples, 0.26%)core::fmt::Write::write_fmt (25 samples, 0.20%)core::fmt::write (25 samples, 0.20%)core::fmt::rt::Argument::fmt (17 samples, 0.14%)<tokio::sync::mpsc::unbounded::UnboundedSender<T> as core::clone::Clone>::clone (2 samples, 0.02%)<tokio::sync::mpsc::chan::Tx<T,S> as core::clone::Clone>::clone (2 samples, 0.02%)<alloc::sync::Arc<T,A> as core::clone::Clone>::clone (2 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_add (2 samples, 0.02%)core::sync::atomic::atomic_add (2 samples, 0.02%)<tokio_util::sync::poll_semaphore::PollSemaphore as core::clone::Clone>::clone (2 samples, 0.02%)tokio_util::sync::poll_semaphore::PollSemaphore::clone_inner (2 samples, 0.02%)<alloc::sync::Arc<T,A> as core::clone::Clone>::clone (2 samples, 0.02%)<core::option::Option<T> as core::clone::Clone>::clone (8 samples, 0.06%)<tonic::transport::channel::Channel as core::clone::Clone>::clone (7 samples, 0.06%)<tower::buffer::service::Buffer<T,Request> as core::clone::Clone>::clone (7 samples, 0.06%)<tower::buffer::worker::Handle as core::clone::Clone>::clone (3 samples, 0.02%)<alloc::sync::Arc<T,A> as core::clone::Clone>::clone (3 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (14 samples, 0.11%)<dcache::network::raft_network_impl::ChannelManager as dcache::pool::ItemManager>::check::_{{closure}} (14 samples, 0.11%)<futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (11 samples, 0.09%)<dcache::network::raft_network_impl::ChannelManager as dcache::pool::ItemManager>::check::_{{closure}}::_{{closure}} (11 samples, 0.09%)<tonic::transport::channel::Channel as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::poll_ready (11 samples, 0.09%)<tower::buffer::service::Buffer<T,Request> as tower_service::Service<Request>>::poll_ready (10 samples, 0.08%)tokio_util::sync::poll_semaphore::PollSemaphore::poll_acquire (7 samples, 0.06%)tokio_util::sync::poll_semaphore::PollSemaphore::poll_acquire_many (6 samples, 0.05%)tokio::sync::semaphore::Semaphore::try_acquire_many_owned (4 samples, 0.03%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<tonic::transport::channel::Channel,tonic::transport::error::Error>+core::marker::Send>>> (3 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<tonic::transport::channel::Channel,tonic::transport::error::Error>+core::marker::Send>> (3 samples, 0.02%)core::ptr::drop_in_place<<dcache::network::raft_network_impl::ChannelManager as dcache::pool::ItemManager>::check::{{closure}}> (3 samples, 0.02%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (2 samples, 0.02%)hashbrown::map::make_hash (5 samples, 0.04%)core::hash::BuildHasher::hash_one (5 samples, 0.04%)core::hash::impls::<impl core::hash::Hash for &T>::hash (4 samples, 0.03%)<alloc::string::String as core::hash::Hash>::hash (4 samples, 0.03%)core::hash::impls::<impl core::hash::Hash for str>::hash (4 samples, 0.03%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write_str (4 samples, 0.03%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write_str (4 samples, 0.03%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write_str (4 samples, 0.03%)core::hash::Hasher::write_u8 (2 samples, 0.02%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (2 samples, 0.02%)hashbrown::raw::RawTable<T,A>::find::_{{closure}} (4 samples, 0.03%)hashbrown::map::equivalent_key::_{{closure}} (4 samples, 0.03%)<Q as hashbrown::Equivalent<K>>::equivalent (4 samples, 0.03%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (4 samples, 0.03%)<alloc::string::String as core::cmp::PartialEq>::eq (4 samples, 0.03%)alloc::vec::partial_eq::<impl core::cmp::PartialEq<alloc::vec::Vec<U,A2>> for alloc::vec::Vec<T,A1>>::eq (4 samples, 0.03%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (4 samples, 0.03%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (4 samples, 0.03%)[libc.so.6] (2 samples, 0.02%)std::collections::hash::map::HashMap<K,V,S>::get (11 samples, 0.09%)hashbrown::map::HashMap<K,V,S,A>::get (11 samples, 0.09%)hashbrown::map::HashMap<K,V,S,A>::get_inner (11 samples, 0.09%)hashbrown::raw::RawTable<T,A>::get (6 samples, 0.05%)hashbrown::raw::RawTable<T,A>::find (6 samples, 0.05%)hashbrown::raw::RawTableInner<A>::find_inner (6 samples, 0.05%)dcache::pool::Pool<Mgr>::get_pool_item (14 samples, 0.11%)dcache::pool::Pool<Mgr>::get::_{{closure}} (47 samples, 0.38%)tokio::sync::mutex::Mutex<T>::lock::_{{closure}} (5 samples, 0.04%)tokio::sync::mutex::Mutex<T>::lock::_{{closure}}::_{{closure}} (5 samples, 0.04%)tokio::sync::mutex::Mutex<T>::acquire::_{{closure}} (5 samples, 0.04%)[libc.so.6] (3 samples, 0.02%)http::uri::path::PathAndQuery::slash (2 samples, 0.02%)dcache::network::raft_network_impl::DcacheNetwork::make_client::_{{closure}} (92 samples, 0.75%)dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<T>::new (9 samples, 0.07%)tonic::client::grpc::Grpc<T>::new (6 samples, 0.05%)<http::uri::Uri as core::default::Default>::default (4 samples, 0.03%)http::uri::scheme::Scheme::empty (2 samples, 0.02%)core::ptr::drop_in_place<tonic::client::grpc::Grpc<tonic::transport::channel::Channel>::client_streaming<tokio_stream::once::Once<dcache::protobuf::dcache::RaftRequest>,dcache::protobuf::dcache::RaftRequest,dcache::protobuf::dcache::RaftReply,tonic::codec::prost::ProstCodec<dcache::protobuf::dcache::RaftRequest,dcache::protobuf::dcache::RaftReply>>::{{closure}}> (2 samples, 0.02%)<core::result::Result<T,E> as core::ops::try_trait::Try>::branch (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<bytes::bytes_mut::BytesMut> (2 samples, 0.02%)<bytes::bytes_mut::BytesMut as core::ops::drop::Drop>::drop (2 samples, 0.02%)bytes::bytes_mut::BytesMut::kind (2 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<alloc::boxed::Box<hyper::body::body::Extra>>> (2 samples, 0.02%)core::ptr::drop_in_place<tonic::codec::decode::Streaming<dcache::protobuf::dcache::RaftReply>> (6 samples, 0.05%)core::ptr::drop_in_place<tonic::codec::decode::StreamingInner> (6 samples, 0.05%)core::ptr::drop_in_place<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>> (4 samples, 0.03%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>>> (4 samples, 0.03%)core::ptr::drop_in_place<alloc::boxed::Box<dyn http_body::Body+Error = tonic::status::Status+Data = bytes::bytes::Bytes+core::marker::Send>> (4 samples, 0.03%)core::ptr::drop_in_place<hyper::body::body::Body> (2 samples, 0.02%)<T as tonic::client::service::GrpcService<ReqBody>>::call (3 samples, 0.02%)<tonic::transport::channel::Channel as tower_service::Service<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>>::call (3 samples, 0.02%)<tonic::transport::channel::ResponseFuture as core::future::future::Future>::poll (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<tonic::transport::channel::ResponseFuture> (3 samples, 0.02%)tonic::client::grpc::Grpc<T>::streaming::_{{closure}} (19 samples, 0.15%)tonic::request::Request<T>::map (3 samples, 0.02%)tonic::client::grpc::Grpc<T>::client_streaming::_{{closure}} (40 samples, 0.32%)tonic::codec::decode::Streaming<T>::trailers::_{{closure}} (3 samples, 0.02%)dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<T>::append_entries::_{{closure}} (45 samples, 0.37%)tonic::client::grpc::Grpc<T>::unary::_{{closure}} (45 samples, 0.37%)<tokio::runtime::task::Task<S> as tokio::util::linked_list::Link>::as_raw (3 samples, 0.02%)tokio::runtime::task::raw::RawTask::header_ptr (3 samples, 0.02%)tokio::runtime::task::list::OwnedTasks<S>::bind_inner (8 samples, 0.06%)tokio::util::sharded_list::ShardedList<L,<L as tokio::util::linked_list::Link>::Target>::lock_shard (5 samples, 0.04%)<tokio::runtime::task::Task<S> as tokio::util::sharded_list::ShardedListItem>::get_shard_id (2 samples, 0.02%)tokio::runtime::task::core::Header::get_id (2 samples, 0.02%)alloc::boxed::Box<T>::new (9 samples, 0.07%)alloc::alloc::exchange_malloc (8 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (8 samples, 0.06%)alloc::alloc::Global::alloc_impl (8 samples, 0.06%)alloc::alloc::alloc (8 samples, 0.06%)__rdl_alloc (8 samples, 0.06%)std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc (8 samples, 0.06%)std::sys::unix::alloc::aligned_malloc (8 samples, 0.06%)posix_memalign (8 samples, 0.06%)[libc.so.6] (4 samples, 0.03%)[libc.so.6] (2 samples, 0.02%)tokio::runtime::task::core::Cell<T,S>::new (11 samples, 0.09%)<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (161 samples, 1.31%)openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}} (161 samples, 1.31%)openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}}::_{{closure}} (161 samples, 1.31%)openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}} (161 samples, 1.31%)openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}}::_{{closure}} (161 samples, 1.31%)<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll (161 samples, 1.31%)<core::pin::Pin<P> as core::future::future::Future>::poll (161 samples, 1.31%)openraft::network::network::RaftNetwork::append_entries::_{{closure}} (161 samples, 1.31%)<core::pin::Pin<P> as core::future::future::Future>::poll (161 samples, 1.31%)<dcache::network::raft_network_impl::DcacheNetworkConnection as openraft::network::network::RaftNetwork<dcache::DcacheTypeConfig>>::send_append_entries::_{{closure}} (161 samples, 1.31%)dcache::network::raft_network_impl::DcacheNetwork::send_rpc::_{{closure}} (161 samples, 1.31%)tokio::task::spawn::spawn (24 samples, 0.19%)tokio::task::spawn::spawn_inner (24 samples, 0.19%)tokio::runtime::context::current::with_current (24 samples, 0.19%)std::thread::local::LocalKey<T>::try_with (24 samples, 0.19%)tokio::runtime::context::current::with_current::_{{closure}} (24 samples, 0.19%)core::option::Option<T>::map (24 samples, 0.19%)tokio::task::spawn::spawn_inner::_{{closure}} (24 samples, 0.19%)tokio::runtime::scheduler::Handle::spawn (24 samples, 0.19%)tokio::runtime::scheduler::current_thread::Handle::spawn (24 samples, 0.19%)tokio::runtime::task::list::OwnedTasks<S>::bind (24 samples, 0.19%)tokio::runtime::task::new_task (16 samples, 0.13%)tokio::runtime::task::raw::RawTask::new (16 samples, 0.13%)tokio::runtime::task::state::State::new (2 samples, 0.02%)[libc.so.6] (51 samples, 0.41%)core::ptr::drop_in_place<dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::apply_to_state_machine::{{closure}}::{{closure}}> (3 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (14 samples, 0.11%)<tracing::span::Span as core::ops::drop::Drop>::drop (2 samples, 0.02%)[libc.so.6] (15 samples, 0.12%)alloc::vec::Vec<T,A>::push (17 samples, 0.14%)core::ptr::write (15 samples, 0.12%)alloc::vec::Vec<T>::with_capacity (14 samples, 0.11%)alloc::vec::Vec<T,A>::with_capacity_in (14 samples, 0.11%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (14 samples, 0.11%)alloc::raw_vec::RawVec<T,A>::allocate_in (14 samples, 0.11%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (14 samples, 0.11%)alloc::alloc::Global::alloc_impl (14 samples, 0.11%)alloc::alloc::alloc (14 samples, 0.11%)malloc (14 samples, 0.11%)[libc.so.6] (5 samples, 0.04%)core::mem::drop (7 samples, 0.06%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::sync::batch_semaphore::Waitlist>> (7 samples, 0.06%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (7 samples, 0.06%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (7 samples, 0.06%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (7 samples, 0.06%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (26 samples, 0.21%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<dcache::store::DcacheStateMachine>> (36 samples, 0.29%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (36 samples, 0.29%)tokio::sync::batch_semaphore::Semaphore::release (10 samples, 0.08%)tokio::loom::std::parking_lot::Mutex<T>::lock (5 samples, 0.04%)lock_api::mutex::Mutex<R,T>::lock (5 samples, 0.04%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (5 samples, 0.04%)core::num::<impl usize>::checked_add (5 samples, 0.04%)core::num::<impl usize>::overflowing_add (5 samples, 0.04%)<dashmap::DashMap<K,V,S> as dashmap::t::Map<K,V,S>>::_yield_read_shard (15 samples, 0.12%)lock_api::rwlock::RwLock<R,T>::read (14 samples, 0.11%)<dashmap::lock::RawRwLock as lock_api::rwlock::RawRwLock>::lock_shared (14 samples, 0.11%)dashmap::lock::RawRwLock::try_lock_shared_fast (12 samples, 0.10%)core::sync::atomic::AtomicUsize::load (5 samples, 0.04%)core::sync::atomic::atomic_load (5 samples, 0.04%)core::ptr::drop_in_place<lock_api::rwlock::RwLockReadGuard<dashmap::lock::RawRwLock,hashbrown::map::HashMap<alloc::string::String,dashmap::util::SharedValue<dcache::mcaptcha::mcaptcha::MCaptcha>,std::collections::hash::map::RandomState>>> (5 samples, 0.04%)<lock_api::rwlock::RwLockReadGuard<R,T> as core::ops::drop::Drop>::drop (5 samples, 0.04%)<dashmap::lock::RawRwLock as lock_api::rwlock::RawRwLock>::unlock_shared (5 samples, 0.04%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (14 samples, 0.11%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (14 samples, 0.11%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (14 samples, 0.11%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::d_rounds (9 samples, 0.07%)core::num::<impl u64>::rotate_left (5 samples, 0.04%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (9 samples, 0.07%)core::hash::sip::u8to64_le (9 samples, 0.07%)core::intrinsics::copy_nonoverlapping (5 samples, 0.04%)dcache::mcaptcha::mcaptcha::Manager::add_visitor (55 samples, 0.45%)dashmap::DashMap<K,V,S>::get (50 samples, 0.41%)<dashmap::DashMap<K,V,S> as dashmap::t::Map<K,V,S>>::_get (50 samples, 0.41%)dashmap::DashMap<K,V,S>::hash_usize (27 samples, 0.22%)core::hash::impls::<impl core::hash::Hash for &T>::hash (12 samples, 0.10%)<alloc::string::String as core::hash::Hash>::hash (12 samples, 0.10%)core::hash::impls::<impl core::hash::Hash for str>::hash (12 samples, 0.10%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write_str (12 samples, 0.10%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write_str (12 samples, 0.10%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write_str (12 samples, 0.10%)core::hash::Hasher::write_u8 (3 samples, 0.02%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (2 samples, 0.02%)<F as core::future::into_future::IntoFuture>::into_future (15 samples, 0.12%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (13 samples, 0.11%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (8 samples, 0.06%)core::sync::atomic::AtomicUsize::compare_exchange (5 samples, 0.04%)core::sync::atomic::atomic_compare_exchange (5 samples, 0.04%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (3 samples, 0.02%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (3 samples, 0.02%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (77 samples, 0.62%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}}::_{{closure}} (58 samples, 0.47%)tokio::sync::batch_semaphore::Semaphore::acquire (21 samples, 0.17%)tokio::sync::batch_semaphore::Acquire::new (19 samples, 0.15%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::apply_to_state_machine::_{{closure}}::_{{closure}} (257 samples, 2.09%)d..tokio::runtime::task::core::Core<T,S>::poll (1,750 samples, 14.20%)tokio::runtime::task::..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1,750 samples, 14.20%)tokio::loom::std::unsa..tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (1,750 samples, 14.20%)tokio::runtime::task::..openraft::core::sm::Worker<C,SM>::do_spawn::_{{closure}} (352 samples, 2.86%)op..openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}} (352 samples, 2.86%)op..openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}}::_{{closure}} (352 samples, 2.86%)op..openraft::core::sm::Worker<C,SM>::apply::_{{closure}} (352 samples, 2.86%)op..openraft::core::sm::Worker<C,SM>::apply::_{{closure}}::_{{closure}} (352 samples, 2.86%)op..<core::pin::Pin<P> as core::future::future::Future>::poll (352 samples, 2.86%)<c..<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftStateMachine<C>>::apply::_{{closure}} (352 samples, 2.86%)<o..<core::pin::Pin<P> as core::future::future::Future>::poll (352 samples, 2.86%)<c..dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::apply_to_state_machine::_{{closure}} (352 samples, 2.86%)dc..[libc.so.6] (3 samples, 0.02%)tokio::runtime::task::list::OwnedTasks<S>::bind_inner (2 samples, 0.02%)<hyper::common::exec::Exec as hyper::common::exec::ConnStreamExec<F,B>>::execute_h2stream (4 samples, 0.03%)hyper::common::exec::Exec::execute (4 samples, 0.03%)tokio::task::spawn::spawn (4 samples, 0.03%)tokio::task::spawn::spawn_inner (4 samples, 0.03%)tokio::runtime::context::current::with_current (4 samples, 0.03%)std::thread::local::LocalKey<T>::try_with (4 samples, 0.03%)tokio::runtime::context::current::with_current::_{{closure}} (4 samples, 0.03%)core::option::Option<T>::map (4 samples, 0.03%)tokio::task::spawn::spawn_inner::_{{closure}} (4 samples, 0.03%)tokio::runtime::scheduler::Handle::spawn (4 samples, 0.03%)tokio::runtime::scheduler::current_thread::Handle::spawn (4 samples, 0.03%)tokio::runtime::task::list::OwnedTasks<S>::bind (4 samples, 0.03%)<hyper::server::server::new_svc::NewSvcTask<I,N,S,E,W> as core::future::future::Future>::poll (6 samples, 0.05%)<hyper::server::conn::upgrades::UpgradeableConnection<I,S,E> as core::future::future::Future>::poll (6 samples, 0.05%)<hyper::server::conn::ProtoServer<T,B,S,E> as core::future::future::Future>::poll (6 samples, 0.05%)<hyper::proto::h2::server::Server<T,S,B,E> as core::future::future::Future>::poll (6 samples, 0.05%)hyper::proto::h2::server::Serving<T,B>::poll_server (6 samples, 0.05%)h2::server::Connection<T,B>::poll_accept (2 samples, 0.02%)h2::proto::connection::Connection<T,h2::server::Peer,B>::next_incoming (2 samples, 0.02%)h2::proto::streams::streams::Streams<B,P>::next_incoming (2 samples, 0.02%)h2::proto::streams::recv::Recv::next_incoming (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Entered> (2 samples, 0.02%)<tracing::span::Entered as core::ops::drop::Drop>::drop (2 samples, 0.02%)tracing::span::Span::do_exit (2 samples, 0.02%)core::option::Option<T>::as_ref (2 samples, 0.02%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::main::_{{closure}} (19 samples, 0.15%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (12 samples, 0.10%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}} (12 samples, 0.10%)openraft::core::raft_core::RaftCore<C,N,LS,SM>::do_main::_{{closure}}::_{{closure}} (6 samples, 0.05%)<tracing::instrument::Instrumented<T> as core::future::future::Future>::poll (27 samples, 0.22%)tracing::instrument::_::<impl tracing::instrument::Instrumented<T>>::project (2 samples, 0.02%)openraft::replication::ReplicationCore<C,N,LS>::process_event (2 samples, 0.02%)core::option::Option<T>::ok_or (34 samples, 0.28%)futures_task::noop_waker::noop_waker (6 samples, 0.05%)futures_task::noop_waker::noop_raw_waker (5 samples, 0.04%)<alloc::sync::Arc<T,A> as core::ops::deref::Deref>::deref (3 samples, 0.02%)alloc::sync::Arc<T,A>::inner (3 samples, 0.02%)core::ptr::non_null::NonNull<T>::as_ref (3 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (7 samples, 0.06%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop (5 samples, 0.04%)<tokio::sync::mpsc::unbounded::Semaphore as tokio::sync::mpsc::chan::Semaphore>::add_permit (13 samples, 0.11%)core::sync::atomic::AtomicUsize::fetch_sub (4 samples, 0.03%)core::sync::atomic::atomic_sub (4 samples, 0.03%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (4 samples, 0.03%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (5 samples, 0.04%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (5 samples, 0.04%)core::ptr::read (5 samples, 0.04%)tokio::sync::mpsc::block::Block<T>::read (17 samples, 0.14%)tokio::sync::mpsc::block::is_ready (4 samples, 0.03%)tokio::sync::mpsc::list::Rx<T>::reclaim_blocks (5 samples, 0.04%)tokio::sync::mpsc::list::Tx<T>::reclaim_block (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::try_push (2 samples, 0.02%)core::sync::atomic::AtomicPtr<T>::compare_exchange (2 samples, 0.02%)core::sync::atomic::atomic_compare_exchange (2 samples, 0.02%)tokio::sync::mpsc::list::Rx<T>::pop (31 samples, 0.25%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (4 samples, 0.03%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (97 samples, 0.79%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (97 samples, 0.79%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (2 samples, 0.02%)core::cell::Cell<T>::set (17 samples, 0.14%)core::cell::Cell<T>::replace (17 samples, 0.14%)core::mem::replace (17 samples, 0.14%)core::ptr::write (17 samples, 0.14%)tokio::runtime::context::budget (25 samples, 0.20%)std::thread::local::LocalKey<T>::try_with (25 samples, 0.20%)tokio::runtime::context::budget::_{{closure}} (25 samples, 0.20%)tokio::runtime::coop::poll_proceed::_{{closure}} (25 samples, 0.20%)tokio::runtime::coop::Budget::decrement (5 samples, 0.04%)futures_util::future::future::FutureExt::now_or_never (206 samples, 1.67%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}} (162 samples, 1.31%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (147 samples, 1.19%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}}::_{{closure}} (141 samples, 1.14%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (141 samples, 1.14%)tokio::sync::mpsc::chan::Rx<T,S>::recv (141 samples, 1.14%)tokio::runtime::coop::poll_proceed (34 samples, 0.28%)tokio::runtime::coop::Budget::unconstrained (3 samples, 0.02%)<tracing_core::metadata::Level as core::cmp::PartialOrd<tracing_core::metadata::LevelFilter>>::le (2 samples, 0.02%)openraft::replication::ReplicationCore<C,N,LS>::try_drain_events::_{{closure}} (266 samples, 2.16%)o..openraft::replication::ReplicationCore<C,N,LS>::try_drain_events::_{{closure}}::_{{closure}} (263 samples, 2.13%)o..openraft::replication::ReplicationCore<C,N,LS>::process_event (14 samples, 0.11%)openraft::replication::ReplicationCore<C,N,LS>::drain_events::_{{closure}} (280 samples, 2.27%)o..openraft::replication::ReplicationCore<C,N,LS>::drain_events::_{{closure}}::_{{closure}} (279 samples, 2.26%)o..tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}} (9 samples, 0.07%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (8 samples, 0.06%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}}::_{{closure}} (7 samples, 0.06%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (7 samples, 0.06%)tokio::sync::mpsc::chan::Rx<T,S>::recv (7 samples, 0.06%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (7 samples, 0.06%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (7 samples, 0.06%)tokio::sync::mpsc::list::Rx<T>::pop (6 samples, 0.05%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (3 samples, 0.02%)[libc.so.6] (5 samples, 0.04%)<tracing::span::Span as core::ops::drop::Drop>::drop (2 samples, 0.02%)tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (3 samples, 0.02%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::find_lower_bound_edge (4 samples, 0.03%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_lower_bound_index (4 samples, 0.03%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (4 samples, 0.03%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::find_upper_bound_edge (3 samples, 0.02%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_upper_bound_index (3 samples, 0.02%)alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (3 samples, 0.02%)core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (2 samples, 0.02%)alloc::collections::btree::map::BTreeMap<K,V,A>::range (9 samples, 0.07%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::range_search (9 samples, 0.07%)alloc::collections::btree::navigate::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::find_leaf_edges_spanning_range (9 samples, 0.07%)<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next (4 samples, 0.03%)alloc::collections::btree::navigate::LeafRange<alloc::collections::btree::node::marker::Immut,K,V>::next_checked (4 samples, 0.03%)alloc::collections::btree::navigate::LeafRange<BorrowType,K,V>::perform_next_checked (4 samples, 0.03%)alloc::collections::btree::mem::replace (3 samples, 0.02%)alloc::collections::btree::navigate::LeafRange<BorrowType,K,V>::perform_next_checked::_{{closure}} (3 samples, 0.02%)__rdl_alloc (2 samples, 0.02%)__rust_alloc (4 samples, 0.03%)alloc::vec::Vec<T,A>::with_capacity_in (104 samples, 0.84%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (104 samples, 0.84%)alloc::raw_vec::RawVec<T,A>::allocate_in (104 samples, 0.84%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (101 samples, 0.82%)alloc::alloc::Global::alloc_impl (101 samples, 0.82%)alloc::alloc::alloc (101 samples, 0.82%)malloc (95 samples, 0.77%)[libc.so.6] (70 samples, 0.57%)[libc.so.6] (22 samples, 0.18%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (201 samples, 1.63%)core::option::Option<T>::map (197 samples, 1.60%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once (160 samples, 1.30%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}}::_{{closure}} (160 samples, 1.30%)<openraft::entry::Entry<C> as core::clone::Clone>::clone (160 samples, 1.30%)<openraft::entry::payload::EntryPayload<C> as core::clone::Clone>::clone (152 samples, 1.23%)<dcache::store::DcacheRequest as core::clone::Clone>::clone (122 samples, 0.99%)<alloc::string::String as core::clone::Clone>::clone (122 samples, 0.99%)<alloc::vec::Vec<T,A> as core::clone::Clone>::clone (118 samples, 0.96%)alloc::slice::<impl [T]>::to_vec_in (118 samples, 0.96%)alloc::slice::hack::to_vec (118 samples, 0.96%)<T as alloc::slice::hack::ConvertVec>::to_vec (118 samples, 0.96%)core::ptr::const_ptr::<impl *const T>::copy_to_nonoverlapping (14 samples, 0.11%)core::intrinsics::copy_nonoverlapping (14 samples, 0.11%)[libc.so.6] (13 samples, 0.11%)alloc::raw_vec::finish_grow (41 samples, 0.33%)<alloc::alloc::Global as core::alloc::Allocator>::grow (40 samples, 0.32%)alloc::alloc::Global::grow_impl (40 samples, 0.32%)alloc::alloc::realloc (40 samples, 0.32%)realloc (39 samples, 0.32%)[libc.so.6] (38 samples, 0.31%)[libc.so.6] (37 samples, 0.30%)[libc.so.6] (3 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (42 samples, 0.34%)alloc::raw_vec::RawVec<T,A>::reserve (42 samples, 0.34%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (42 samples, 0.34%)alloc::raw_vec::RawVec<T,A>::grow_amortized (42 samples, 0.34%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend (299 samples, 2.43%)<a..alloc::vec::Vec<T,A>::extend_desugared (299 samples, 2.43%)al..core::ptr::write (39 samples, 0.32%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next (4 samples, 0.03%)core::option::Option<T>::map (3 samples, 0.02%)core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once (3 samples, 0.02%)dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}}::_{{closure}} (3 samples, 0.02%)<openraft::entry::Entry<C> as core::clone::Clone>::clone (3 samples, 0.02%)<openraft::entry::payload::EntryPayload<C> as core::clone::Clone>::clone (3 samples, 0.02%)core::iter::traits::iterator::Iterator::collect (304 samples, 2.47%)co..<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (304 samples, 2.47%)<a..<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (304 samples, 2.47%)<a..<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (304 samples, 2.47%)<a..<core::pin::Pin<P> as core::future::future::Future>::poll (314 samples, 2.55%)<c..dcache::store::_<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries::_{{closure}} (314 samples, 2.55%)dc..core::pin::Pin<&mut core::pin::Pin<P>>::as_deref_mut (3 samples, 0.02%)core::pin::Pin<P>::as_mut (3 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::deref::DerefMut>::deref_mut (3 samples, 0.02%)<tokio::sync::mpsc::bounded::Sender<T> as core::clone::Clone>::clone (2 samples, 0.02%)<tokio::sync::mpsc::chan::Tx<T,S> as core::clone::Clone>::clone (2 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::mpsc::unbounded::UnboundedSender<tower::buffer::message::Message<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>>> (6 samples, 0.05%)core::ptr::drop_in_place<tokio::sync::mpsc::chan::Tx<tower::buffer::message::Message<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>,tokio::sync::mpsc::unbounded::Semaphore>> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::sync::Arc<tokio::sync::mpsc::chan::Chan<tower::buffer::message::Message<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,tower::util::either::Either<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>,core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>+core::marker::Send>>>>,tokio::sync::mpsc::unbounded::Semaphore>>> (5 samples, 0.04%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (5 samples, 0.04%)core::ptr::drop_in_place<dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<tonic::transport::channel::Channel>> (9 samples, 0.07%)core::ptr::drop_in_place<tonic::client::grpc::Grpc<tonic::transport::channel::Channel>> (9 samples, 0.07%)core::ptr::drop_in_place<tonic::transport::channel::Channel> (9 samples, 0.07%)core::ptr::drop_in_place<tower::buffer::service::Buffer<tower::util::either::Either<tonic::transport::service::connection::Connection,tower::util::boxed::sync::BoxService<http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>,http::response::Response<hyper::body::body::Body>,alloc::boxed::Box<dyn core::error::Error+core::marker::Sync+core::marker::Send>>>,http::request::Request<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,tonic::status::Status>>>> (9 samples, 0.07%)core::ptr::drop_in_place<tower::buffer::worker::Handle> (3 samples, 0.02%)core::ptr::drop_in_place<alloc::sync::Arc<std::sync::mutex::Mutex<core::option::Option<tower::buffer::error::ServiceError>>>> (3 samples, 0.02%)<alloc::sync::Arc<T,A> as core::ops::drop::Drop>::drop (3 samples, 0.02%)cfree (43 samples, 0.35%)[libc.so.6] (29 samples, 0.24%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (49 samples, 0.40%)core::ptr::drop_in_place<[openraft::entry::Entry<dcache::DcacheTypeConfig>]> (49 samples, 0.40%)core::ptr::drop_in_place<openraft::entry::Entry<dcache::DcacheTypeConfig>> (48 samples, 0.39%)core::ptr::drop_in_place<openraft::entry::payload::EntryPayload<dcache::DcacheTypeConfig>> (48 samples, 0.39%)core::ptr::drop_in_place<dcache::store::DcacheRequest> (4 samples, 0.03%)core::ptr::drop_in_place<openraft::raft::AppendEntriesRequest<dcache::DcacheTypeConfig>> (54 samples, 0.44%)core::ptr::drop_in_place<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>> (54 samples, 0.44%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<openraft::entry::Entry<dcache::DcacheTypeConfig>>> (5 samples, 0.04%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (5 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (5 samples, 0.04%)alloc::alloc::dealloc (5 samples, 0.04%)cfree (4 samples, 0.03%)[libc.so.6] (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)tonic::extensions::Extensions::new (2 samples, 0.02%)<T as tonic::request::IntoRequest<T>>::into_request (5 samples, 0.04%)tonic::request::Request<T>::new (5 samples, 0.04%)tonic::metadata::map::MetadataMap::new (2 samples, 0.02%)http::uri::path::PathAndQuery::from_static (7 samples, 0.06%)http::uri::path::PathAndQuery::from_shared (7 samples, 0.06%)tonic::extensions::Extensions::insert (4 samples, 0.03%)http::extensions::Extensions::insert (4 samples, 0.03%)std::collections::hash::map::HashMap<K,V,S>::insert (4 samples, 0.03%)hashbrown::map::HashMap<K,V,S,A>::insert (4 samples, 0.03%)hashbrown::raw::RawTable<T,A>::find_or_find_insert_slot (4 samples, 0.03%)hashbrown::raw::RawTable<T,A>::reserve (4 samples, 0.03%)hashbrown::raw::RawTable<T,A>::reserve_rehash (4 samples, 0.03%)hashbrown::raw::RawTableInner<A>::reserve_rehash_inner (3 samples, 0.02%)hashbrown::raw::RawTableInner<A>::resize_inner (3 samples, 0.02%)hashbrown::raw::RawTableInner<A>::prepare_resize (3 samples, 0.02%)hashbrown::raw::RawTableInner<A>::fallible_with_capacity (3 samples, 0.02%)hashbrown::raw::RawTableInner<A>::new_uninitialized (2 samples, 0.02%)hashbrown::raw::alloc::inner::do_alloc (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.02%)alloc::alloc::Global::alloc_impl (2 samples, 0.02%)alloc::alloc::alloc (2 samples, 0.02%)dcache::protobuf::dcache::dcache_service_client::DcacheServiceClient<T>::append_entries::_{{closure}} (23 samples, 0.19%)tonic::extensions::GrpcMethod::new (2 samples, 0.02%)<openraft::raft::_::<impl serde::de::Deserialize for openraft::raft::AppendEntriesResponse<NID>>::deserialize::__FieldVisitor as serde::de::Visitor>::visit_str (2 samples, 0.02%)core::str::traits::<impl core::cmp::PartialEq for str>::eq (2 samples, 0.02%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (2 samples, 0.02%)core::slice::cmp::<impl core::cmp::PartialEq<[B]> for [A]>::eq (2 samples, 0.02%)<[A] as core::slice::cmp::SlicePartialEq<B>>::equal (2 samples, 0.02%)serde_json::de::from_trait (9 samples, 0.07%)openraft::raft::_::<impl serde::de::Deserialize for openraft::raft::AppendEntriesResponse<NID>>::deserialize (8 samples, 0.06%)<&mut serde_json::de::Deserializer<R> as serde::de::Deserializer>::deserialize_enum (7 samples, 0.06%)<openraft::raft::_::<impl serde::de::Deserialize for openraft::raft::AppendEntriesResponse<NID>>::deserialize::__Visitor<NID> as serde::de::Visitor>::visit_enum (7 samples, 0.06%)serde::de::EnumAccess::variant (7 samples, 0.06%)<serde_json::de::UnitVariantAccess<R> as serde::de::EnumAccess>::variant_seed (7 samples, 0.06%)<core::marker::PhantomData<T> as serde::de::DeserializeSeed>::deserialize (6 samples, 0.05%)<openraft::raft::_::<impl serde::de::Deserialize for openraft::raft::AppendEntriesResponse<NID>>::deserialize::__Field as serde::de::Deserialize>::deserialize (5 samples, 0.04%)<&mut serde_json::de::Deserializer<R> as serde::de::Deserializer>::deserialize_identifier (5 samples, 0.04%)<&mut serde_json::de::Deserializer<R> as serde::de::Deserializer>::deserialize_str (5 samples, 0.04%)<serde_json::read::StrRead as serde_json::read::Read>::parse_str (2 samples, 0.02%)serde_json::de::from_str (11 samples, 0.09%)serde_json::read::StrRead::new (2 samples, 0.02%)alloc::vec::Vec<T>::with_capacity (2 samples, 0.02%)alloc::vec::Vec<T,A>::with_capacity_in (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::allocate_in (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (2 samples, 0.02%)alloc::alloc::Global::alloc_impl (2 samples, 0.02%)alloc::alloc::alloc (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::grow_amortized (4 samples, 0.03%)alloc::raw_vec::finish_grow (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::grow (4 samples, 0.03%)alloc::alloc::Global::grow_impl (4 samples, 0.03%)alloc::alloc::realloc (4 samples, 0.03%)realloc (4 samples, 0.03%)[libc.so.6] (3 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)serde::ser::impls::<impl serde::ser::Serialize for str>::serialize (12 samples, 0.10%)<serde_json::ser::MapKeySerializer<W,F> as serde::ser::Serializer>::serialize_str (12 samples, 0.10%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (12 samples, 0.10%)serde_json::ser::format_escaped_str (12 samples, 0.10%)serde_json::ser::format_escaped_str_contents (9 samples, 0.07%)serde_json::ser::Formatter::write_string_fragment (5 samples, 0.04%)std::io::impls::<impl std::io::Write for &mut W>::write_all (5 samples, 0.04%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (5 samples, 0.04%)alloc::vec::Vec<T,A>::extend_from_slice (5 samples, 0.04%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (5 samples, 0.04%)alloc::vec::Vec<T,A>::append_elements (5 samples, 0.04%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_key (13 samples, 0.11%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_key (3 samples, 0.02%)serde::ser::impls::<impl serde::ser::Serialize for str>::serialize (3 samples, 0.02%)<serde_json::ser::MapKeySerializer<W,F> as serde::ser::Serializer>::serialize_str (3 samples, 0.02%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (3 samples, 0.02%)serde_json::ser::format_escaped_str (3 samples, 0.02%)serde_json::ser::format_escaped_str_contents (2 samples, 0.02%)openraft::vote::vote::_::<impl serde::ser::Serialize for openraft::vote::vote::Vote<NID>>::serialize (13 samples, 0.11%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (13 samples, 0.11%)serde::ser::SerializeMap::serialize_entry (13 samples, 0.11%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_value (10 samples, 0.08%)openraft::vote::leader_id::leader_id_std::_::<impl serde::ser::Serialize for openraft::vote::leader_id::leader_id_std::LeaderId<NID>>::serialize (10 samples, 0.08%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (9 samples, 0.07%)serde::ser::SerializeMap::serialize_entry (9 samples, 0.07%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<core::ptr::non_null::NonNull<T> as core::cmp::PartialEq>::eq (2 samples, 0.02%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_struct (12 samples, 0.10%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_map (12 samples, 0.10%)serde_json::ser::Formatter::begin_object (12 samples, 0.10%)std::io::impls::<impl std::io::Write for &mut W>::write_all (12 samples, 0.10%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (12 samples, 0.10%)alloc::vec::Vec<T,A>::extend_from_slice (12 samples, 0.10%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (12 samples, 0.10%)alloc::vec::Vec<T,A>::append_elements (12 samples, 0.10%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (4 samples, 0.03%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::end (8 samples, 0.06%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::end (8 samples, 0.06%)serde_json::ser::Formatter::end_object (8 samples, 0.06%)std::io::impls::<impl std::io::Write for &mut W>::write_all (8 samples, 0.06%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (8 samples, 0.06%)alloc::vec::Vec<T,A>::extend_from_slice (8 samples, 0.06%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (8 samples, 0.06%)alloc::vec::Vec<T,A>::append_elements (8 samples, 0.06%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (2 samples, 0.02%)alloc::vec::Vec<T,A>::as_mut_ptr (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::ptr (4 samples, 0.03%)serde_json::ser::Formatter::begin_string (13 samples, 0.11%)std::io::impls::<impl std::io::Write for &mut W>::write_all (13 samples, 0.11%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (13 samples, 0.11%)alloc::vec::Vec<T,A>::extend_from_slice (13 samples, 0.11%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (13 samples, 0.11%)alloc::vec::Vec<T,A>::append_elements (13 samples, 0.11%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (2 samples, 0.02%)serde_json::ser::Formatter::end_string (8 samples, 0.06%)std::io::impls::<impl std::io::Write for &mut W>::write_all (8 samples, 0.06%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (8 samples, 0.06%)alloc::vec::Vec<T,A>::extend_from_slice (8 samples, 0.06%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (8 samples, 0.06%)alloc::vec::Vec<T,A>::append_elements (8 samples, 0.06%)alloc::vec::Vec<T,A>::reserve (8 samples, 0.06%)alloc::raw_vec::RawVec<T,A>::reserve (8 samples, 0.06%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::grow_amortized (5 samples, 0.04%)alloc::raw_vec::finish_grow (5 samples, 0.04%)<alloc::alloc::Global as core::alloc::Allocator>::grow (5 samples, 0.04%)alloc::alloc::Global::grow_impl (5 samples, 0.04%)alloc::alloc::realloc (5 samples, 0.04%)realloc (5 samples, 0.04%)[libc.so.6] (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (4 samples, 0.03%)alloc::vec::Vec<T,A>::reserve (11 samples, 0.09%)alloc::raw_vec::RawVec<T,A>::reserve (11 samples, 0.09%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::grow_amortized (5 samples, 0.04%)alloc::raw_vec::finish_grow (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::grow (3 samples, 0.02%)alloc::alloc::Global::grow_impl (3 samples, 0.02%)alloc::alloc::realloc (3 samples, 0.02%)realloc (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (7 samples, 0.06%)[libc.so.6] (6 samples, 0.05%)serde::ser::impls::<impl serde::ser::Serialize for str>::serialize (65 samples, 0.53%)<serde_json::ser::MapKeySerializer<W,F> as serde::ser::Serializer>::serialize_str (65 samples, 0.53%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (65 samples, 0.53%)serde_json::ser::format_escaped_str (65 samples, 0.53%)serde_json::ser::format_escaped_str_contents (35 samples, 0.28%)serde_json::ser::Formatter::write_string_fragment (19 samples, 0.15%)std::io::impls::<impl std::io::Write for &mut W>::write_all (19 samples, 0.15%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (19 samples, 0.15%)alloc::vec::Vec<T,A>::extend_from_slice (19 samples, 0.15%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (19 samples, 0.15%)alloc::vec::Vec<T,A>::append_elements (19 samples, 0.15%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_key (67 samples, 0.54%)serde_json::ser::Formatter::begin_object_key (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)serde_json::ser::Formatter::begin_string (9 samples, 0.07%)std::io::impls::<impl std::io::Write for &mut W>::write_all (9 samples, 0.07%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (9 samples, 0.07%)alloc::vec::Vec<T,A>::extend_from_slice (9 samples, 0.07%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (9 samples, 0.07%)alloc::vec::Vec<T,A>::append_elements (9 samples, 0.07%)serde_json::ser::Formatter::end_string (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (2 samples, 0.02%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (33 samples, 0.27%)serde_json::ser::format_escaped_str (33 samples, 0.27%)serde_json::ser::format_escaped_str_contents (17 samples, 0.14%)serde_json::ser::Formatter::write_string_fragment (5 samples, 0.04%)std::io::impls::<impl std::io::Write for &mut W>::write_all (5 samples, 0.04%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (5 samples, 0.04%)alloc::vec::Vec<T,A>::extend_from_slice (5 samples, 0.04%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (5 samples, 0.04%)alloc::vec::Vec<T,A>::append_elements (5 samples, 0.04%)core::intrinsics::copy_nonoverlapping (5 samples, 0.04%)[libc.so.6] (5 samples, 0.04%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_newtype_variant (2 samples, 0.02%)serde_json::ser::Formatter::begin_object (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::grow_amortized (2 samples, 0.02%)alloc::raw_vec::finish_grow (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::grow (2 samples, 0.02%)alloc::alloc::Global::grow_impl (2 samples, 0.02%)alloc::alloc::realloc (2 samples, 0.02%)realloc (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (3 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (3 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (3 samples, 0.02%)serde_json::ser::Formatter::begin_string (16 samples, 0.13%)std::io::impls::<impl std::io::Write for &mut W>::write_all (16 samples, 0.13%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (16 samples, 0.13%)alloc::vec::Vec<T,A>::extend_from_slice (16 samples, 0.13%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (16 samples, 0.13%)alloc::vec::Vec<T,A>::append_elements (16 samples, 0.13%)alloc::vec::Vec<T,A>::reserve (13 samples, 0.11%)alloc::raw_vec::RawVec<T,A>::reserve (10 samples, 0.08%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (7 samples, 0.06%)alloc::raw_vec::RawVec<T,A>::grow_amortized (7 samples, 0.06%)alloc::raw_vec::finish_grow (7 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::grow (7 samples, 0.06%)alloc::alloc::Global::grow_impl (7 samples, 0.06%)alloc::alloc::realloc (7 samples, 0.06%)realloc (7 samples, 0.06%)[libc.so.6] (7 samples, 0.06%)[libc.so.6] (7 samples, 0.06%)serde_json::ser::Formatter::end_string (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (4 samples, 0.03%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (4 samples, 0.03%)<core::ptr::non_null::NonNull<T> as core::cmp::PartialEq>::eq (3 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::grow (9 samples, 0.07%)alloc::alloc::Global::grow_impl (9 samples, 0.07%)alloc::alloc::realloc (9 samples, 0.07%)realloc (9 samples, 0.07%)[libc.so.6] (9 samples, 0.07%)[libc.so.6] (9 samples, 0.07%)alloc::vec::Vec<T,A>::reserve (11 samples, 0.09%)alloc::raw_vec::RawVec<T,A>::reserve (11 samples, 0.09%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (10 samples, 0.08%)alloc::raw_vec::RawVec<T,A>::grow_amortized (10 samples, 0.08%)alloc::raw_vec::finish_grow (10 samples, 0.08%)dcache::store::_::<impl serde::ser::Serialize for dcache::store::DcacheRequest>::serialize (93 samples, 0.75%)serde_json::ser::format_escaped_str (78 samples, 0.63%)serde_json::ser::format_escaped_str_contents (53 samples, 0.43%)serde_json::ser::Formatter::write_string_fragment (20 samples, 0.16%)std::io::impls::<impl std::io::Write for &mut W>::write_all (20 samples, 0.16%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (20 samples, 0.16%)alloc::vec::Vec<T,A>::extend_from_slice (20 samples, 0.16%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (20 samples, 0.16%)alloc::vec::Vec<T,A>::append_elements (20 samples, 0.16%)core::intrinsics::copy_nonoverlapping (9 samples, 0.07%)[libc.so.6] (9 samples, 0.07%)serde_json::ser::Formatter::begin_object (8 samples, 0.06%)std::io::impls::<impl std::io::Write for &mut W>::write_all (8 samples, 0.06%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (8 samples, 0.06%)alloc::vec::Vec<T,A>::extend_from_slice (8 samples, 0.06%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (8 samples, 0.06%)alloc::vec::Vec<T,A>::append_elements (8 samples, 0.06%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (2 samples, 0.02%)openraft::entry::payload::_::<impl serde::ser::Serialize for openraft::entry::payload::EntryPayload<C>>::serialize (144 samples, 1.17%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_newtype_variant (136 samples, 1.10%)serde_json::ser::Formatter::begin_object_value (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_struct (11 samples, 0.09%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_map (11 samples, 0.09%)serde_json::ser::Formatter::begin_object (11 samples, 0.09%)std::io::impls::<impl std::io::Write for &mut W>::write_all (11 samples, 0.09%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (11 samples, 0.09%)alloc::vec::Vec<T,A>::extend_from_slice (11 samples, 0.09%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (11 samples, 0.09%)alloc::vec::Vec<T,A>::append_elements (11 samples, 0.09%)alloc::vec::Vec<T,A>::reserve (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (3 samples, 0.02%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::end (3 samples, 0.02%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::end (3 samples, 0.02%)serde_json::ser::Formatter::end_object (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)alloc::vec::Vec<T,A>::as_mut_ptr (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::ptr (3 samples, 0.02%)serde_json::ser::Formatter::begin_string (18 samples, 0.15%)std::io::impls::<impl std::io::Write for &mut W>::write_all (18 samples, 0.15%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (18 samples, 0.15%)alloc::vec::Vec<T,A>::extend_from_slice (18 samples, 0.15%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (18 samples, 0.15%)alloc::vec::Vec<T,A>::append_elements (18 samples, 0.15%)alloc::vec::Vec<T,A>::reserve (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::reserve (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (5 samples, 0.04%)serde_json::ser::Formatter::end_string (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (2 samples, 0.02%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (7 samples, 0.06%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (7 samples, 0.06%)<core::ptr::non_null::NonNull<T> as core::cmp::PartialEq>::eq (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::grow (3 samples, 0.02%)alloc::alloc::Global::grow_impl (3 samples, 0.02%)alloc::alloc::realloc (3 samples, 0.02%)realloc (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)[libc.so.6] (3 samples, 0.02%)alloc::raw_vec::finish_grow (4 samples, 0.03%)alloc::vec::Vec<T,A>::reserve (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::grow_amortized (5 samples, 0.04%)serde::ser::impls::<impl serde::ser::Serialize for str>::serialize (66 samples, 0.54%)<serde_json::ser::MapKeySerializer<W,F> as serde::ser::Serializer>::serialize_str (66 samples, 0.54%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (66 samples, 0.54%)serde_json::ser::format_escaped_str (64 samples, 0.52%)serde_json::ser::format_escaped_str_contents (36 samples, 0.29%)serde_json::ser::Formatter::write_string_fragment (12 samples, 0.10%)std::io::impls::<impl std::io::Write for &mut W>::write_all (12 samples, 0.10%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (12 samples, 0.10%)alloc::vec::Vec<T,A>::extend_from_slice (12 samples, 0.10%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (12 samples, 0.10%)alloc::vec::Vec<T,A>::append_elements (12 samples, 0.10%)core::intrinsics::copy_nonoverlapping (6 samples, 0.05%)[libc.so.6] (5 samples, 0.04%)alloc::vec::Vec<T,A>::reserve (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::reserve (6 samples, 0.05%)alloc::raw_vec::RawVec<T,A>::needs_to_grow (4 samples, 0.03%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_key (74 samples, 0.60%)serde_json::ser::Formatter::begin_object_key (8 samples, 0.06%)std::io::impls::<impl std::io::Write for &mut W>::write_all (8 samples, 0.06%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (8 samples, 0.06%)alloc::vec::Vec<T,A>::extend_from_slice (8 samples, 0.06%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (8 samples, 0.06%)alloc::vec::Vec<T,A>::append_elements (8 samples, 0.06%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)itoa::Buffer::format (5 samples, 0.04%)itoa::<impl itoa::private::Sealed for u64>::write (5 samples, 0.04%)core::ptr::mut_ptr::<impl *mut T>::offset (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::reserve (3 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::grow_amortized (2 samples, 0.02%)alloc::raw_vec::finish_grow (2 samples, 0.02%)openraft::vote::leader_id::leader_id_std::_::<impl serde::ser::Serialize for openraft::vote::leader_id::leader_id_std::CommittedLeaderId<NID>>::serialize (23 samples, 0.19%)serde::ser::impls::<impl serde::ser::Serialize for u64>::serialize (21 samples, 0.17%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_u64 (20 samples, 0.16%)serde_json::ser::Formatter::write_u64 (20 samples, 0.16%)std::io::impls::<impl std::io::Write for &mut W>::write_all (15 samples, 0.12%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (15 samples, 0.12%)alloc::vec::Vec<T,A>::extend_from_slice (15 samples, 0.12%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (15 samples, 0.12%)alloc::vec::Vec<T,A>::append_elements (15 samples, 0.12%)core::intrinsics::copy_nonoverlapping (10 samples, 0.08%)[libc.so.6] (10 samples, 0.08%)itoa::Buffer::format (13 samples, 0.11%)itoa::<impl itoa::private::Sealed for u64>::write (13 samples, 0.11%)core::intrinsics::copy_nonoverlapping (7 samples, 0.06%)alloc::vec::Vec<T,A>::reserve (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::reserve (5 samples, 0.04%)alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle (4 samples, 0.03%)alloc::raw_vec::RawVec<T,A>::grow_amortized (4 samples, 0.03%)alloc::raw_vec::finish_grow (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::grow (4 samples, 0.03%)alloc::alloc::Global::grow_impl (4 samples, 0.03%)alloc::alloc::realloc (4 samples, 0.03%)realloc (4 samples, 0.03%)[libc.so.6] (4 samples, 0.03%)[libc.so.6] (4 samples, 0.03%)[libc.so.6] (2 samples, 0.02%)core::intrinsics::copy_nonoverlapping (26 samples, 0.21%)[libc.so.6] (26 samples, 0.21%)serde::ser::impls::<impl serde::ser::Serialize for usize>::serialize (45 samples, 0.37%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_u64 (45 samples, 0.37%)serde_json::ser::Formatter::write_u64 (45 samples, 0.37%)std::io::impls::<impl std::io::Write for &mut W>::write_all (32 samples, 0.26%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (32 samples, 0.26%)alloc::vec::Vec<T,A>::extend_from_slice (32 samples, 0.26%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (32 samples, 0.26%)alloc::vec::Vec<T,A>::append_elements (32 samples, 0.26%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)alloc::raw_vec::RawVec<T,A>::reserve (2 samples, 0.02%)openraft::log_id::_::<impl serde::ser::Serialize for openraft::log_id::LogId<NID>>::serialize (179 samples, 1.45%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (155 samples, 1.26%)serde::ser::SerializeMap::serialize_entry (155 samples, 1.26%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_value (78 samples, 0.63%)serde_json::ser::Formatter::begin_object_value (10 samples, 0.08%)std::io::impls::<impl std::io::Write for &mut W>::write_all (10 samples, 0.08%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (10 samples, 0.08%)alloc::vec::Vec<T,A>::extend_from_slice (10 samples, 0.08%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (10 samples, 0.08%)alloc::vec::Vec<T,A>::append_elements (10 samples, 0.08%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)serde::ser::impls::<impl serde::ser::Serialize for &T>::serialize (432 samples, 3.51%)ser..openraft::entry::_::<impl serde::ser::Serialize for openraft::entry::Entry<C>>::serialize (432 samples, 3.51%)ope..<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (403 samples, 3.27%)<se..serde::ser::SerializeMap::serialize_entry (402 samples, 3.26%)ser..<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_value (332 samples, 2.69%)<s..serde_json::ser::Formatter::begin_object_value (6 samples, 0.05%)std::io::impls::<impl std::io::Write for &mut W>::write_all (6 samples, 0.05%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (6 samples, 0.05%)alloc::vec::Vec<T,A>::extend_from_slice (6 samples, 0.05%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (6 samples, 0.05%)alloc::vec::Vec<T,A>::append_elements (6 samples, 0.05%)core::intrinsics::copy_nonoverlapping (2 samples, 0.02%)serde::ser::impls::<impl serde::ser::Serialize for alloc::vec::Vec<T>>::serialize (443 samples, 3.60%)serd..serde::ser::Serializer::collect_seq (443 samples, 3.60%)serd..core::iter::traits::iterator::Iterator::try_for_each (439 samples, 3.56%)core..core::iter::traits::iterator::Iterator::try_fold (439 samples, 3.56%)core..core::iter::traits::iterator::Iterator::try_for_each::call::_{{closure}} (437 samples, 3.55%)core..serde::ser::Serializer::collect_seq::_{{closure}} (437 samples, 3.55%)serd..<serde_json::ser::Compound<W,F> as serde::ser::SerializeSeq>::serialize_element (437 samples, 3.55%)<ser..serde_json::ser::Formatter::begin_array_value (5 samples, 0.04%)std::io::impls::<impl std::io::Write for &mut W>::write_all (5 samples, 0.04%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (5 samples, 0.04%)alloc::vec::Vec<T,A>::extend_from_slice (5 samples, 0.04%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (5 samples, 0.04%)alloc::vec::Vec<T,A>::append_elements (5 samples, 0.04%)serde_json::ser::Formatter::begin_string (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)serde::ser::impls::<impl serde::ser::Serialize for str>::serialize (5 samples, 0.04%)<serde_json::ser::MapKeySerializer<W,F> as serde::ser::Serializer>::serialize_str (5 samples, 0.04%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_str (5 samples, 0.04%)serde_json::ser::format_escaped_str (5 samples, 0.04%)serde_json::ser::format_escaped_str_contents (3 samples, 0.02%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_key (7 samples, 0.06%)serde_json::ser::Formatter::begin_object_key (2 samples, 0.02%)std::io::impls::<impl std::io::Write for &mut W>::write_all (2 samples, 0.02%)std::io::impls::<impl std::io::Write for alloc::vec::Vec<u8,A>>::write_all (2 samples, 0.02%)alloc::vec::Vec<T,A>::extend_from_slice (2 samples, 0.02%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<&T,core::slice::iter::Iter<T>>>::spec_extend (2 samples, 0.02%)alloc::vec::Vec<T,A>::append_elements (2 samples, 0.02%)alloc::vec::Vec<T,A>::reserve (2 samples, 0.02%)openraft::vote::leader_id::leader_id_std::_::<impl serde::ser::Serialize for openraft::vote::leader_id::leader_id_std::CommittedLeaderId<NID>>::serialize (2 samples, 0.02%)serde::ser::impls::<impl serde::ser::Serialize for u64>::serialize (2 samples, 0.02%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_u64 (2 samples, 0.02%)serde_json::ser::Formatter::write_u64 (2 samples, 0.02%)serde_json::ser::to_string (490 samples, 3.98%)serd..serde_json::ser::to_vec (490 samples, 3.98%)serd..serde_json::ser::to_writer (488 samples, 3.96%)serd..openraft::raft::_::<impl serde::ser::Serialize for openraft::raft::AppendEntriesRequest<C>>::serialize (488 samples, 3.96%)open..<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (486 samples, 3.94%)<ser..serde::ser::SerializeMap::serialize_entry (486 samples, 3.94%)serd..<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_value (468 samples, 3.80%)<ser..serde::ser::impls::<impl serde::ser::Serialize for core::option::Option<T>>::serialize (12 samples, 0.10%)<&mut serde_json::ser::Serializer<W,F> as serde::ser::Serializer>::serialize_some (12 samples, 0.10%)openraft::log_id::_::<impl serde::ser::Serialize for openraft::log_id::LogId<NID>>::serialize (12 samples, 0.10%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeStruct>::serialize_field (11 samples, 0.09%)serde::ser::SerializeMap::serialize_entry (11 samples, 0.09%)<serde_json::ser::Compound<W,F> as serde::ser::SerializeMap>::serialize_value (3 samples, 0.02%)tokio::runtime::context::current::with_current (2 samples, 0.02%)std::thread::local::LocalKey<T>::try_with (2 samples, 0.02%)tokio::task::spawn::spawn (7 samples, 0.06%)tokio::task::spawn::spawn_inner (6 samples, 0.05%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)core::ptr::drop_in_place<[http::header::map::Bucket<http::header::value::HeaderValue>]> (4 samples, 0.03%)core::ptr::drop_in_place<http::header::map::Bucket<http::header::value::HeaderValue>> (4 samples, 0.03%)core::ptr::drop_in_place<http::header::value::HeaderValue> (3 samples, 0.02%)core::ptr::drop_in_place<bytes::bytes::Bytes> (3 samples, 0.02%)<bytes::bytes::Bytes as core::ops::drop::Drop>::drop (3 samples, 0.02%)bytes::bytes::shared_drop (3 samples, 0.02%)<core::sync::atomic::AtomicPtr<T> as bytes::loom::sync::atomic::AtomicMut<T>>::with_mut (3 samples, 0.02%)bytes::bytes::shared_drop::_{{closure}} (2 samples, 0.02%)bytes::bytes::release_shared (2 samples, 0.02%)<dcache::network::raft_network_impl::DcacheNetworkConnection as openraft::network::network::RaftNetwork<dcache::DcacheTypeConfig>>::send_append_entries::_{{closure}} (618 samples, 5.02%)<dcach..dcache::network::raft_network_impl::DcacheNetwork::send_rpc::_{{closure}} (609 samples, 4.94%)dcache..tonic::response::Response<T>::into_inner (5 samples, 0.04%)core::ptr::drop_in_place<tonic::metadata::map::MetadataMap> (5 samples, 0.04%)core::ptr::drop_in_place<http::header::map::HeaderMap> (5 samples, 0.04%)core::ptr::drop_in_place<alloc::vec::Vec<http::header::map::Bucket<http::header::value::HeaderValue>>> (5 samples, 0.04%)<core::pin::Pin<P> as core::future::future::Future>::poll (619 samples, 5.02%)<core:..[libc.so.6] (6 samples, 0.05%)<dcache::network::raft_network_impl::DcacheNetworkConnection as openraft::network::network::RaftNetwork<dcache::DcacheTypeConfig>>::send_append_entries (51 samples, 0.41%)alloc::boxed::Box<T>::pin (51 samples, 0.41%)alloc::boxed::Box<T>::new (51 samples, 0.41%)alloc::alloc::exchange_malloc (45 samples, 0.37%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (45 samples, 0.37%)alloc::alloc::Global::alloc_impl (45 samples, 0.37%)alloc::alloc::alloc (45 samples, 0.37%)malloc (45 samples, 0.37%)[libc.so.6] (45 samples, 0.37%)[libc.so.6] (44 samples, 0.36%)[libc.so.6] (10 samples, 0.08%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (2 samples, 0.02%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (2 samples, 0.02%)alloc::alloc::dealloc (2 samples, 0.02%)cfree (2 samples, 0.02%)<core::pin::Pin<P> as core::future::future::Future>::poll (688 samples, 5.58%)<core::..openraft::network::network::RaftNetwork::append_entries::_{{closure}} (685 samples, 5.56%)openraf..core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<openraft::raft::AppendEntriesResponse<u64>,openraft::error::RPCError<u64,openraft::node::BasicNode,openraft::error::RaftError<u64>>>+core::marker::Send>>> (6 samples, 0.05%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<openraft::raft::AppendEntriesResponse<u64>,openraft::error::RPCError<u64,openraft::node::BasicNode,openraft::error::RaftError<u64>>>+core::marker::Send>> (6 samples, 0.05%)core::ptr::drop_in_place<<dcache::network::raft_network_impl::DcacheNetworkConnection as openraft::network::network::RaftNetwork<dcache::DcacheTypeConfig>>::send_append_entries::{{closure}}> (4 samples, 0.03%)tokio::runtime::time::entry::TimerEntry::driver (2 samples, 0.02%)tokio::runtime::scheduler::Handle::driver (2 samples, 0.02%)tokio::runtime::time::<impl tokio::runtime::time::handle::Handle>::reregister (7 samples, 0.06%)tokio::runtime::time::wheel::Wheel::insert (4 samples, 0.03%)tokio::runtime::time::wheel::level::Level::add_entry (2 samples, 0.02%)tokio::util::linked_list::LinkedList<L,<L as tokio::util::linked_list::Link>::Target>::push_front (2 samples, 0.02%)<tokio::time::instant::Instant as core::ops::arith::Add<core::time::Duration>>::add (2 samples, 0.02%)<std::time::Instant as core::ops::arith::Add<core::time::Duration>>::add (2 samples, 0.02%)<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll::_{{closure}} (23 samples, 0.19%)<tokio::time::sleep::Sleep as core::future::future::Future>::poll (23 samples, 0.19%)tokio::time::sleep::Sleep::poll_elapsed (19 samples, 0.15%)tokio::runtime::time::entry::TimerEntry::poll_elapsed (17 samples, 0.14%)tokio::runtime::time::entry::TimerEntry::reset (14 samples, 0.11%)tokio::runtime::time::source::TimeSource::deadline_to_tick (6 samples, 0.05%)tokio::runtime::time::source::TimeSource::instant_to_tick (4 samples, 0.03%)tokio::time::instant::Instant::checked_duration_since (4 samples, 0.03%)std::time::Instant::checked_duration_since (4 samples, 0.03%)<tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll (718 samples, 5.83%)<tokio:..tokio::runtime::coop::has_budget_remaining (5 samples, 0.04%)tokio::runtime::context::budget (5 samples, 0.04%)std::thread::local::LocalKey<T>::try_with (5 samples, 0.04%)tokio::runtime::context::budget::_{{closure}} (3 samples, 0.02%)tokio::runtime::coop::has_budget_remaining::_{{closure}} (3 samples, 0.02%)tokio::runtime::coop::Budget::has_remaining (2 samples, 0.02%)core::option::Option<T>::map_or (2 samples, 0.02%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (3 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (3 samples, 0.02%)core::ptr::drop_in_place<dcache::store::<impl openraft::storage::RaftLogReader<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::try_get_log_entries<core::ops::range::Range<u64>>::{{closure}}> (2 samples, 0.02%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<openraft::raft::AppendEntriesResponse<u64>,openraft::error::RPCError<u64,openraft::node::BasicNode,openraft::error::RaftError<u64>>>+core::marker::Send>>> (2 samples, 0.02%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<openraft::raft::AppendEntriesResponse<u64>,openraft::error::RPCError<u64,openraft::node::BasicNode,openraft::error::RaftError<u64>>>+core::marker::Send>> (2 samples, 0.02%)tokio::runtime::driver::Handle::time (2 samples, 0.02%)core::option::Option<T>::expect (2 samples, 0.02%)<tokio::runtime::time::entry::TimerEntry as core::ops::drop::Drop>::drop (3 samples, 0.02%)tokio::runtime::time::entry::TimerEntry::cancel (3 samples, 0.02%)tokio::runtime::time::entry::TimerEntry::driver (3 samples, 0.02%)core::ptr::drop_in_place<core::option::Option<core::task::wake::Waker>> (2 samples, 0.02%)core::ptr::drop_in_place<tokio::time::timeout::Timeout<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<openraft::raft::AppendEntriesResponse<u64>,openraft::error::RPCError<u64,openraft::node::BasicNode,openraft::error::RaftError<u64>>>+core::marker::Send>>>> (15 samples, 0.12%)core::ptr::drop_in_place<tokio::time::sleep::Sleep> (12 samples, 0.10%)core::ptr::drop_in_place<tokio::runtime::time::entry::TimerEntry> (12 samples, 0.10%)tokio::runtime::time::<impl tokio::runtime::time::handle::Handle>::clear_entry (8 samples, 0.06%)tokio::runtime::time::wheel::Wheel::remove (3 samples, 0.02%)tokio::runtime::time::wheel::level::Level::remove_entry (3 samples, 0.02%)tokio::runtime::time::wheel::level::slot_for (3 samples, 0.02%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (2 samples, 0.02%)tokio::sync::mpsc::chan::Tx<T,S>::send (2 samples, 0.02%)tokio::sync::mpsc::chan::Chan<T,S>::send (2 samples, 0.02%)tokio::runtime::task::waker::wake_by_val (2 samples, 0.02%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (2 samples, 0.02%)openraft::replication::ReplicationCore<C,N,LS>::update_matching (5 samples, 0.04%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (22 samples, 0.18%)clock_gettime (19 samples, 0.15%)__vdso_clock_gettime (17 samples, 0.14%)[unknown] (15 samples, 0.12%)[unknown] (14 samples, 0.11%)[unknown] (10 samples, 0.08%)[unknown] (7 samples, 0.06%)[unknown] (4 samples, 0.03%)[unknown] (4 samples, 0.03%)openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}} (1,108 samples, 8.99%)openraft::rep..openraft::replication::ReplicationCore<C,N,LS>::send_log_entries::_{{closure}}::_{{closure}} (1,096 samples, 8.90%)openraft::rep..tokio::time::timeout::timeout (7 samples, 0.06%)std::sys::unix::time::inner::<impl std::sys::unix::time::Timespec>::now (7 samples, 0.06%)clock_gettime (7 samples, 0.06%)__vdso_clock_gettime (7 samples, 0.06%)[unknown] (7 samples, 0.06%)[unknown] (7 samples, 0.06%)[unknown] (7 samples, 0.06%)[unknown] (7 samples, 0.06%)[unknown] (7 samples, 0.06%)[unknown] (7 samples, 0.06%)<tracing_futures::Instrumented<T> as core::future::future::Future>::poll (1,405 samples, 11.40%)<tracing_futures:..openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}} (1,405 samples, 11.40%)openraft::replica..openraft::replication::ReplicationCore<C,N,LS>::main::_{{closure}}::_{{closure}} (1,405 samples, 11.40%)openraft::replica..tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::task::core::TaskIdGuard> (5 samples, 0.04%)<tokio::runtime::task::core::TaskIdGuard as core::ops::drop::Drop>::drop (5 samples, 0.04%)<F as core::future::into_future::IntoFuture>::into_future (24 samples, 0.19%)[libc.so.6] (84 samples, 0.68%)core::ptr::drop_in_place<core::result::Result<(),tokio::sync::mpsc::error::SendError<openraft::core::notify::Notify<dcache::DcacheTypeConfig>>>> (4 samples, 0.03%)core::ptr::drop_in_place<openraft::core::sm::Worker<dcache::DcacheTypeConfig,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::apply::{{closure}}> (4 samples, 0.03%)core::ptr::drop_in_place<openraft::core::sm::Worker<dcache::DcacheTypeConfig,openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>>>::apply::{{closure}}::{{closure}}> (2 samples, 0.02%)core::ptr::drop_in_place<tracing::span::Span> (5 samples, 0.04%)<core::pin::Pin<P> as core::future::future::Future>::poll (12 samples, 0.10%)dcache::store::_<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::apply_to_state_machine::_{{closure}} (12 samples, 0.10%)[libc.so.6] (18 samples, 0.15%)core::iter::traits::iterator::Iterator::collect (4 samples, 0.03%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (4 samples, 0.03%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,alloc::vec::into_iter::IntoIter<T>>>::from_iter (4 samples, 0.03%)cfree (11 samples, 0.09%)[libc.so.6] (7 samples, 0.06%)<alloc::vec::Vec<T,A> as core::ops::drop::Drop>::drop (13 samples, 0.11%)core::ptr::drop_in_place<[openraft::entry::Entry<dcache::DcacheTypeConfig>]> (13 samples, 0.11%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (18 samples, 0.15%)alloc::alloc::dealloc (18 samples, 0.15%)cfree (16 samples, 0.13%)[libc.so.6] (13 samples, 0.11%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>> (32 samples, 0.26%)core::ptr::drop_in_place<alloc::raw_vec::RawVec<openraft::entry::Entry<dcache::DcacheTypeConfig>>> (19 samples, 0.15%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (19 samples, 0.15%)__rust_dealloc (2 samples, 0.02%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (12 samples, 0.10%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (12 samples, 0.10%)alloc::alloc::dealloc (12 samples, 0.10%)cfree (9 samples, 0.07%)[libc.so.6] (6 samples, 0.05%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<dcache::store::DcacheResponse>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (17 samples, 0.14%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<dcache::store::DcacheResponse>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (17 samples, 0.14%)core::ptr::drop_in_place<dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::apply_to_state_machine::{{closure}}> (5 samples, 0.04%)core::mem::drop (4 samples, 0.03%)core::ptr::drop_in_place<tokio::loom::std::parking_lot::MutexGuard<tokio::sync::batch_semaphore::Waitlist>> (4 samples, 0.03%)core::ptr::drop_in_place<lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex,tokio::sync::batch_semaphore::Waitlist>> (4 samples, 0.03%)<lock_api::mutex::MutexGuard<R,T> as core::ops::drop::Drop>::drop (4 samples, 0.03%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::unlock (4 samples, 0.03%)tokio::sync::batch_semaphore::Semaphore::add_permits_locked (14 samples, 0.11%)core::ptr::drop_in_place<tokio::sync::rwlock::write_guard::RwLockWriteGuard<alloc::sync::Arc<dcache::store::DcacheStore>>> (24 samples, 0.19%)<tokio::sync::rwlock::write_guard::RwLockWriteGuard<T> as core::ops::drop::Drop>::drop (24 samples, 0.19%)tokio::sync::batch_semaphore::Semaphore::release (10 samples, 0.08%)tokio::loom::std::parking_lot::Mutex<T>::lock (6 samples, 0.05%)lock_api::mutex::Mutex<R,T>::lock (6 samples, 0.05%)<parking_lot::raw_mutex::RawMutex as lock_api::mutex::RawMutex>::lock (6 samples, 0.05%)[libc.so.6] (10 samples, 0.08%)dcache::store::<impl openraft::storage::RaftStorage<dcache::DcacheTypeConfig> for alloc::sync::Arc<dcache::store::DcacheStore>>::apply_to_state_machine (19 samples, 0.15%)alloc::boxed::Box<T>::pin (18 samples, 0.15%)alloc::boxed::Box<T>::new (18 samples, 0.15%)alloc::alloc::exchange_malloc (8 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (8 samples, 0.06%)alloc::alloc::Global::alloc_impl (8 samples, 0.06%)alloc::alloc::alloc (8 samples, 0.06%)malloc (5 samples, 0.04%)<F as core::future::into_future::IntoFuture>::into_future (10 samples, 0.08%)core::sync::atomic::AtomicUsize::compare_exchange (4 samples, 0.03%)core::sync::atomic::atomic_compare_exchange (4 samples, 0.03%)<tokio::sync::batch_semaphore::Acquire as core::future::future::Future>::poll (18 samples, 0.15%)tokio::sync::batch_semaphore::Semaphore::poll_acquire (12 samples, 0.10%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)core::ptr::drop_in_place<tokio::sync::batch_semaphore::Acquire> (4 samples, 0.03%)<tokio::sync::batch_semaphore::Acquire as core::ops::drop::Drop>::drop (4 samples, 0.03%)<core::pin::Pin<P> as core::future::future::Future>::poll (221 samples, 1.79%)<..<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftStateMachine<C>>::apply::_{{closure}} (221 samples, 1.79%)<..openraft::storage::adapter::Adaptor<C,S>::storage_mut::_{{closure}} (67 samples, 0.54%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}} (61 samples, 0.50%)tokio::sync::rwlock::RwLock<T>::write::_{{closure}}::_{{closure}} (59 samples, 0.48%)tokio::sync::batch_semaphore::Semaphore::acquire (18 samples, 0.15%)tokio::sync::batch_semaphore::Acquire::new (17 samples, 0.14%)[libc.so.6] (7 samples, 0.06%)<openraft::storage::adapter::Adaptor<C,S> as openraft::storage::v2::RaftStateMachine<C>>::apply (14 samples, 0.11%)alloc::boxed::Box<T>::pin (14 samples, 0.11%)alloc::boxed::Box<T>::new (14 samples, 0.11%)alloc::alloc::exchange_malloc (7 samples, 0.06%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (7 samples, 0.06%)alloc::alloc::Global::alloc_impl (7 samples, 0.06%)alloc::alloc::alloc (7 samples, 0.06%)malloc (5 samples, 0.04%)core::iter::traits::iterator::Iterator::for_each::call::_{{closure}} (9 samples, 0.07%)alloc::vec::Vec<T,A>::extend_trusted::_{{closure}} (9 samples, 0.07%)core::ptr::write (9 samples, 0.07%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend (11 samples, 0.09%)alloc::vec::Vec<T,A>::extend_trusted (11 samples, 0.09%)core::iter::traits::iterator::Iterator::for_each (11 samples, 0.09%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (11 samples, 0.09%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold (11 samples, 0.09%)core::iter::adapters::map::map_fold::_{{closure}} (11 samples, 0.09%)core::iter::traits::iterator::Iterator::collect (42 samples, 0.34%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (42 samples, 0.34%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (42 samples, 0.34%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (42 samples, 0.34%)alloc::vec::Vec<T>::with_capacity (30 samples, 0.24%)alloc::vec::Vec<T,A>::with_capacity_in (30 samples, 0.24%)alloc::raw_vec::RawVec<T,A>::with_capacity_in (30 samples, 0.24%)alloc::raw_vec::RawVec<T,A>::allocate_in (30 samples, 0.24%)<alloc::alloc::Global as core::alloc::Allocator>::allocate (26 samples, 0.21%)alloc::alloc::Global::alloc_impl (26 samples, 0.21%)alloc::alloc::alloc (26 samples, 0.21%)malloc (24 samples, 0.19%)[libc.so.6] (6 samples, 0.05%)<alloc::boxed::Box<T,A> as core::ops::drop::Drop>::drop (4 samples, 0.03%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (4 samples, 0.03%)alloc::alloc::dealloc (4 samples, 0.03%)cfree (2 samples, 0.02%)[libc.so.6] (2 samples, 0.02%)core::ptr::drop_in_place<core::pin::Pin<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<dcache::store::DcacheResponse>,openraft::storage_error::StorageError<u64>>+core::marker::Send>>> (8 samples, 0.06%)core::ptr::drop_in_place<alloc::boxed::Box<dyn core::future::future::Future+Output = core::result::Result<alloc::vec::Vec<dcache::store::DcacheResponse>,openraft::storage_error::StorageError<u64>>+core::marker::Send>> (8 samples, 0.06%)core::ptr::drop_in_place<<openraft::storage::adapter::Adaptor<dcache::DcacheTypeConfig,alloc::sync::Arc<dcache::store::DcacheStore>> as openraft::storage::v2::RaftStateMachine<dcache::DcacheTypeConfig>>::apply<alloc::vec::Vec<openraft::entry::Entry<dcache::DcacheTypeConfig>>>::{{closure}}> (4 samples, 0.03%)openraft::core::sm::Worker<C,SM>::apply::_{{closure}}::_{{closure}} (347 samples, 2.82%)op..tracing_core::dispatcher::has_been_set (2 samples, 0.02%)core::sync::atomic::AtomicBool::load (2 samples, 0.02%)core::sync::atomic::atomic_load (2 samples, 0.02%)openraft::core::sm::Worker<C,SM>::apply::_{{closure}} (413 samples, 3.35%)ope..tracing_core::metadata::LevelFilter::current (3 samples, 0.02%)core::sync::atomic::AtomicUsize::load (3 samples, 0.02%)core::sync::atomic::atomic_load (3 samples, 0.02%)core::ptr::drop_in_place<tokio::runtime::coop::RestoreOnPending> (6 samples, 0.05%)<tokio::runtime::coop::RestoreOnPending as core::ops::drop::Drop>::drop (6 samples, 0.05%)<tokio::sync::mpsc::unbounded::Semaphore as tokio::sync::mpsc::chan::Semaphore>::add_permit (4 samples, 0.03%)[libc.so.6] (35 samples, 0.28%)[libc.so.6] (11 samples, 0.09%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with (28 samples, 0.23%)tokio::sync::mpsc::block::Block<T>::read::_{{closure}} (28 samples, 0.23%)core::ptr::read (28 samples, 0.23%)[libc.so.6] (24 samples, 0.19%)tokio::sync::mpsc::block::is_ready (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::read (35 samples, 0.28%)tokio::sync::mpsc::list::Rx<T>::pop (60 samples, 0.49%)tokio::sync::mpsc::list::Rx<T>::try_advancing_head (7 samples, 0.06%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (113 samples, 0.92%)tokio::sync::mpsc::chan::Rx<T,S>::recv::_{{closure}} (113 samples, 0.92%)tokio::sync::task::atomic_waker::AtomicWaker::register_by_ref (11 samples, 0.09%)tokio::sync::task::atomic_waker::AtomicWaker::do_register (6 samples, 0.05%)tokio::sync::task::atomic_waker::AtomicWaker::do_register::catch_unwind (3 samples, 0.02%)std::panic::catch_unwind (3 samples, 0.02%)std::panicking::try (3 samples, 0.02%)std::panicking::try::do_call (3 samples, 0.02%)<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (3 samples, 0.02%)tokio::sync::task::atomic_waker::AtomicWaker::do_register::_{{closure}} (3 samples, 0.02%)<&core::task::wake::Waker as tokio::sync::task::atomic_waker::WakerRef>::into_waker (3 samples, 0.02%)<core::task::wake::Waker as core::clone::Clone>::clone (3 samples, 0.02%)tokio::runtime::task::waker::clone_waker (3 samples, 0.02%)tokio::runtime::task::state::State::ref_inc (2 samples, 0.02%)core::cell::Cell<T>::set (9 samples, 0.07%)core::cell::Cell<T>::replace (9 samples, 0.07%)core::mem::replace (9 samples, 0.07%)core::ptr::write (9 samples, 0.07%)<tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll (144 samples, 1.17%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}}::_{{closure}} (139 samples, 1.13%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::poll_recv (139 samples, 1.13%)tokio::sync::mpsc::chan::Rx<T,S>::recv (139 samples, 1.13%)tokio::runtime::coop::poll_proceed (19 samples, 0.15%)tokio::runtime::context::budget (16 samples, 0.13%)std::thread::local::LocalKey<T>::try_with (16 samples, 0.13%)tokio::runtime::context::budget::_{{closure}} (16 samples, 0.13%)tokio::runtime::coop::poll_proceed::_{{closure}} (16 samples, 0.13%)tokio::runtime::coop::Budget::decrement (5 samples, 0.04%)tokio::sync::mpsc::unbounded::UnboundedReceiver<T>::recv::_{{closure}} (155 samples, 1.26%)[libc.so.6] (9 samples, 0.07%)tokio::runtime::task::waker::wake_by_val (4 samples, 0.03%)tokio::runtime::task::harness::<impl tokio::runtime::task::raw::RawTask>::wake_by_val (4 samples, 0.03%)tokio::runtime::task::state::State::transition_to_notified_by_val (3 samples, 0.02%)tokio::runtime::task::state::State::fetch_update_action (3 samples, 0.02%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (13 samples, 0.11%)tokio::sync::mpsc::block::Block<T>::write::_{{closure}} (13 samples, 0.11%)core::ptr::write (13 samples, 0.11%)[libc.so.6] (13 samples, 0.11%)tokio::sync::mpsc::block::Block<T>::set_ready (3 samples, 0.02%)core::sync::atomic::AtomicUsize::fetch_or (2 samples, 0.02%)core::sync::atomic::atomic_or (2 samples, 0.02%)tokio::sync::mpsc::block::Block<T>::write (17 samples, 0.14%)tokio::sync::mpsc::block::Block<T>::tx_release (2 samples, 0.02%)tokio::sync::mpsc::list::Tx<T>::push (30 samples, 0.24%)tokio::sync::mpsc::list::Tx<T>::find_block (12 samples, 0.10%)tokio::sync::mpsc::block::start_index (5 samples, 0.04%)core::sync::atomic::AtomicUsize::fetch_or (8 samples, 0.06%)core::sync::atomic::atomic_or (8 samples, 0.06%)tokio::sync::mpsc::chan::Tx<T,S>::send (51 samples, 0.41%)tokio::sync::mpsc::chan::Chan<T,S>::send (51 samples, 0.41%)tokio::sync::task::atomic_waker::AtomicWaker::wake (16 samples, 0.13%)tokio::sync::task::atomic_waker::AtomicWaker::take_waker (9 samples, 0.07%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (8 samples, 0.06%)core::sync::atomic::AtomicUsize::compare_exchange (5 samples, 0.04%)core::sync::atomic::atomic_compare_exchange (5 samples, 0.04%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::send (79 samples, 0.64%)tokio::sync::mpsc::unbounded::UnboundedSender<T>::inc_num_messages (17 samples, 0.14%)all (12,321 samples, 100%)main (12,321 samples, 100.00%)main[unknown] (12,286 samples, 99.72%)[unknown]tokio::runtime::task::harness::Harness<T,S>::poll (2,240 samples, 18.18%)tokio::runtime::task::harnes..tokio::runtime::task::harness::Harness<T,S>::poll_inner (2,240 samples, 18.18%)tokio::runtime::task::harnes..tokio::runtime::task::harness::poll_future (2,240 samples, 18.18%)tokio::runtime::task::harnes..std::panic::catch_unwind (2,240 samples, 18.18%)std::panic::catch_unwindstd::panicking::try (2,240 samples, 18.18%)std::panicking::trystd::panicking::try::do_call (2,240 samples, 18.18%)std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (2,240 samples, 18.18%)<core::panic::unwind_safe::A..tokio::runtime::task::harness::poll_future::_{{closure}} (2,240 samples, 18.18%)tokio::runtime::task::harnes..tokio::runtime::task::core::Core<T,S>::poll (2,240 samples, 18.18%)tokio::runtime::task::core::..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (2,237 samples, 18.16%)tokio::loom::std::unsafe_cel..tokio::runtime::task::core::Core<T,S>::poll::_{{closure}} (2,237 samples, 18.16%)tokio::runtime::task::core::..openraft::core::sm::Worker<C,SM>::do_spawn::_{{closure}} (794 samples, 6.44%)openraft..openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}} (794 samples, 6.44%)openraft..openraft::core::sm::Worker<C,SM>::worker_loop::_{{closure}}::_{{closure}} (794 samples, 6.44%)openraft.. \ No newline at end of file diff --git a/dcache_py/dcache_pb2.py b/dcache_py/dcache_pb2.py index b81d9d5..80ac522 100644 --- a/dcache_py/dcache_pb2.py +++ b/dcache_py/dcache_pb2.py @@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x64\x63\x61\x63he.proto\x12\x06\x64\x63\x61\x63he\"?\n\x05Level\x12\x1a\n\x11visitor_threshold\x18\xad\x02 \x01(\r\x12\x1a\n\x11\x64ifficulty_factor\x18\xae\x02 \x01(\r\")\n\x07\x44\x65\x66\x65nse\x12\x1e\n\x06levels\x18\x91\x03 \x03(\x0b\x32\r.dcache.Level\"@\n\x08MCaptcha\x12\x11\n\x08\x64uration\x18\xf6\x03 \x01(\x04\x12!\n\x07\x64\x65\x66\x65nse\x18\xf7\x03 \x01(\x0b\x32\x0f.dcache.Defense\"E\n\x11\x41\x64\x64\x43\x61ptchaRequest\x12\x0b\n\x02id\x18\xd9\x04 \x01(\t\x12#\n\x08mcaptcha\x18\xda\x04 \x01(\x0b\x32\x10.dcache.MCaptcha\"9\n\x14RenameCaptchaRequest\x12\r\n\x04name\x18\xbd\x05 \x01(\t\x12\x12\n\trename_to\x18\xbe\x05 \x01(\t\"_\n\x0f\x43\x61\x63hePowRequest\x12\x0f\n\x06string\x18\xa1\x06 \x01(\t\x12\x1a\n\x11\x64ifficulty_factor\x18\xa2\x06 \x01(\r\x12\x11\n\x08\x64uration\x18\xa3\x06 \x01(\x04\x12\x0c\n\x03key\x18\xa4\x06 \x01(\t\"E\n\x12\x43\x61\x63heResultRequest\x12\x0e\n\x05token\x18\xb1\x06 \x01(\t\x12\x0c\n\x03key\x18\xb2\x06 \x01(\t\x12\x11\n\x08\x64uration\x18\xb3\x06 \x01(\x04\",\n\x1a\x44\x65leteCaptchaResultRequest\x12\x0e\n\x05token\x18\xb5\x06 \x01(\t\"\x17\n\tCaptchaID\x12\n\n\x02id\x18\x01 \x01(\t\"\x12\n\x04PoID\x12\n\n\x02id\x18\x01 \x01(\t\"A\n\x10\x41\x64\x64VisitorResult\x12\x11\n\x08\x64uration\x18\x85\x07 \x01(\x04\x12\x1a\n\x11\x64ifficulty_factor\x18\x86\x07 \x01(\r\"S\n\x16OptionAddVisitorResult\x12.\n\x06result\x18\x8f\x07 \x01(\x0b\x32\x18.dcache.AddVisitorResultH\x00\x88\x01\x01\x42\t\n\x07_result\"\x1b\n\x0bRaftRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\"(\n\tRaftReply\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"#\n\x07Learner\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t\"\xbd\x02\n\rDcacheRequest\x12/\n\naddCaptcha\x18\x01 \x01(\x0b\x32\x19.dcache.AddCaptchaRequestH\x00\x12\'\n\naddVisitor\x18\x02 \x01(\x0b\x32\x11.dcache.CaptchaIDH\x00\x12\x35\n\rrenameCaptcha\x18\x03 \x01(\x0b\x32\x1c.dcache.RenameCaptchaRequestH\x00\x12*\n\rremoveCaptcha\x18\x04 \x01(\x0b\x32\x11.dcache.CaptchaIDH\x00\x12+\n\x08\x63\x61\x63hePow\x18\x05 \x01(\x0b\x32\x17.dcache.CachePowRequestH\x00\x12\x31\n\x0b\x63\x61\x63heResult\x18\x06 \x01(\x0b\x32\x1a.dcache.CacheResultRequestH\x00\x42\x0f\n\rDcacheRequest\"\x8b\x01\n\x0e\x44\x63\x61\x63heResponse\x12\x43\n\x19option_add_visitor_result\x18\x01 \x01(\x0b\x32\x1e.dcache.OptionAddVisitorResultH\x00\x12\"\n\x05other\x18\x02 \x01(\x0b\x32\x11.dcache.RaftReplyH\x00\x42\x10\n\x0e\x44\x63\x61\x63heResponse\"=\n\x12\x44\x63\x61\x63heBatchRequest\x12\'\n\x08requests\x18\x01 \x03(\x0b\x32\x15.dcache.DcacheRequest\"@\n\x13\x44\x63\x61\x63heBatchResponse\x12)\n\tresponses\x18\x01 \x03(\x0b\x32\x16.dcache.DcacheResponse2\x97\x06\n\rDcacheService\x12<\n\nAddCaptcha\x12\x19.dcache.AddCaptchaRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x41\n\nAddVisitor\x12\x11.dcache.CaptchaID\x1a\x1e.dcache.OptionAddVisitorResult\"\x00\x12\x42\n\rRenameCaptcha\x12\x1c.dcache.RenameCaptchaRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x37\n\rRemoveCaptcha\x12\x11.dcache.CaptchaID\x1a\x11.dcache.RaftReply\"\x00\x12\x38\n\x08\x43\x61\x63hePow\x12\x17.dcache.CachePowRequest\x1a\x11.dcache.RaftReply\"\x00\x12>\n\x0b\x43\x61\x63heResult\x12\x1a.dcache.CacheResultRequest\x1a\x11.dcache.RaftReply\"\x00\x12N\n\x11PipelineDcacheOps\x12\x1a.dcache.DcacheBatchRequest\x1a\x1b.dcache.DcacheBatchResponse\"\x00\x12\x32\n\nAddLearner\x12\x0f.dcache.Learner\x1a\x11.dcache.RaftReply\"\x00\x12\x31\n\x05Write\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x33\n\x07\x46orward\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x37\n\rAppendEntries\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\x12\x39\n\x0fInstallSnapshot\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\x12.\n\x04vote\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReplyb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x64\x63\x61\x63he.proto\x12\x06\x64\x63\x61\x63he\"?\n\x05Level\x12\x1a\n\x11visitor_threshold\x18\xad\x02 \x01(\r\x12\x1a\n\x11\x64ifficulty_factor\x18\xae\x02 \x01(\r\")\n\x07\x44\x65\x66\x65nse\x12\x1e\n\x06levels\x18\x91\x03 \x03(\x0b\x32\r.dcache.Level\"@\n\x08MCaptcha\x12\x11\n\x08\x64uration\x18\xf6\x03 \x01(\x04\x12!\n\x07\x64\x65\x66\x65nse\x18\xf7\x03 \x01(\x0b\x32\x0f.dcache.Defense\"E\n\x11\x41\x64\x64\x43\x61ptchaRequest\x12\x0b\n\x02id\x18\xd9\x04 \x01(\t\x12#\n\x08mcaptcha\x18\xda\x04 \x01(\x0b\x32\x10.dcache.MCaptcha\"9\n\x14RenameCaptchaRequest\x12\r\n\x04name\x18\xbd\x05 \x01(\t\x12\x12\n\trename_to\x18\xbe\x05 \x01(\t\"_\n\x0f\x43\x61\x63hePowRequest\x12\x0f\n\x06string\x18\xa1\x06 \x01(\t\x12\x1a\n\x11\x64ifficulty_factor\x18\xa2\x06 \x01(\r\x12\x11\n\x08\x64uration\x18\xa3\x06 \x01(\x04\x12\x0c\n\x03key\x18\xa4\x06 \x01(\t\"E\n\x12\x43\x61\x63heResultRequest\x12\x0e\n\x05token\x18\xb1\x06 \x01(\t\x12\x0c\n\x03key\x18\xb2\x06 \x01(\t\x12\x11\n\x08\x64uration\x18\xb3\x06 \x01(\x04\",\n\x1a\x44\x65leteCaptchaResultRequest\x12\x0e\n\x05token\x18\xb5\x06 \x01(\t\"\x17\n\tCaptchaID\x12\n\n\x02id\x18\x01 \x01(\t\"\x12\n\x04PoID\x12\n\n\x02id\x18\x01 \x01(\t\"A\n\x10\x41\x64\x64VisitorResult\x12\x11\n\x08\x64uration\x18\x85\x07 \x01(\x04\x12\x1a\n\x11\x64ifficulty_factor\x18\x86\x07 \x01(\r\"S\n\x16OptionAddVisitorResult\x12.\n\x06result\x18\x8f\x07 \x01(\x0b\x32\x18.dcache.AddVisitorResultH\x00\x88\x01\x01\x42\t\n\x07_result\"\x1b\n\x0bRaftRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\"(\n\tRaftReply\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"#\n\x07Learner\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t\"\'\n\x15\x43\x61ptchaExistsResponse\x12\x0e\n\x06\x65xists\x18\x01 \x01(\x08\"+\n\x17GetVisitorCountResponse\x12\x10\n\x08visitors\x18\x01 \x01(\r\"`\n\x1dOptionGetVisitorCountResponse\x12\x34\n\x06result\x18\x01 \x01(\x0b\x32\x1f.dcache.GetVisitorCountResponseH\x00\x88\x01\x01\x42\t\n\x07_result\"\x97\x03\n\rDcacheRequest\x12/\n\naddCaptcha\x18\x01 \x01(\x0b\x32\x19.dcache.AddCaptchaRequestH\x00\x12\'\n\naddVisitor\x18\x02 \x01(\x0b\x32\x11.dcache.CaptchaIDH\x00\x12\x35\n\rrenameCaptcha\x18\x03 \x01(\x0b\x32\x1c.dcache.RenameCaptchaRequestH\x00\x12*\n\rremoveCaptcha\x18\x04 \x01(\x0b\x32\x11.dcache.CaptchaIDH\x00\x12+\n\x08\x63\x61\x63hePow\x18\x05 \x01(\x0b\x32\x17.dcache.CachePowRequestH\x00\x12\x31\n\x0b\x63\x61\x63heResult\x18\x06 \x01(\x0b\x32\x1a.dcache.CacheResultRequestH\x00\x12*\n\rcaptchaExists\x18\x07 \x01(\x0b\x32\x11.dcache.CaptchaIDH\x00\x12,\n\x0fgetVisitorCount\x18\x08 \x01(\x0b\x32\x11.dcache.CaptchaIDH\x00\x42\x0f\n\rDcacheRequest\"\x88\x02\n\x0e\x44\x63\x61\x63heResponse\x12\x43\n\x19option_add_visitor_result\x18\x01 \x01(\x0b\x32\x1e.dcache.OptionAddVisitorResultH\x00\x12\"\n\x05other\x18\x02 \x01(\x0b\x32\x11.dcache.RaftReplyH\x00\x12\x37\n\x0e\x63\x61ptcha_exists\x18\x03 \x01(\x0b\x32\x1d.dcache.CaptchaExistsResponseH\x00\x12\x42\n\x11get_visitor_count\x18\x04 \x01(\x0b\x32%.dcache.OptionGetVisitorCountResponseH\x00\x42\x10\n\x0e\x44\x63\x61\x63heResponse\"=\n\x12\x44\x63\x61\x63heBatchRequest\x12\'\n\x08requests\x18\x01 \x03(\x0b\x32\x15.dcache.DcacheRequest\"@\n\x13\x44\x63\x61\x63heBatchResponse\x12)\n\tresponses\x18\x01 \x03(\x0b\x32\x16.dcache.DcacheResponse\"0\n\x12RetrievePowRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\"O\n\x13RetrievePowResponse\x12\x19\n\x11\x64ifficulty_factor\x18\x01 \x01(\r\x12\x10\n\x08\x64uration\x18\x02 \x01(\x04\x12\x0b\n\x03key\x18\x03 \x01(\t\")\n\x15\x43\x61ptchaResultVerified\x12\x10\n\x08verified\x18\x01 \x01(\x08\"\"\n\x10\x44\x65letePowRequest\x12\x0e\n\x06string\x18\x01 \x01(\t\"Z\n\x1bOptionalRetrievePoWResponse\x12\x30\n\x06result\x18\x01 \x01(\x0b\x32\x1b.dcache.RetrievePowResponseH\x00\x88\x01\x01\x42\t\n\x07_result2\xdd\t\n\rDcacheService\x12<\n\nAddCaptcha\x12\x19.dcache.AddCaptchaRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x41\n\nAddVisitor\x12\x11.dcache.CaptchaID\x1a\x1e.dcache.OptionAddVisitorResult\"\x00\x12\x42\n\rRenameCaptcha\x12\x1c.dcache.RenameCaptchaRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x37\n\rRemoveCaptcha\x12\x11.dcache.CaptchaID\x1a\x11.dcache.RaftReply\"\x00\x12\x38\n\x08\x43\x61\x63hePow\x12\x17.dcache.CachePowRequest\x1a\x11.dcache.RaftReply\"\x00\x12P\n\x0bRetrievePow\x12\x1a.dcache.RetrievePowRequest\x1a#.dcache.OptionalRetrievePoWResponse\"\x00\x12:\n\tDeletePow\x12\x18.dcache.DeletePowRequest\x1a\x11.dcache.RaftReply\"\x00\x12>\n\x0b\x43\x61\x63heResult\x12\x1a.dcache.CacheResultRequest\x1a\x11.dcache.RaftReply\"\x00\x12R\n\x13VerifyCaptchaResult\x12\x1a.dcache.RetrievePowRequest\x1a\x1d.dcache.CaptchaResultVerified\"\x00\x12N\n\x13\x44\x65leteCaptchaResult\x12\".dcache.DeleteCaptchaResultRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x43\n\rCaptchaExists\x12\x11.dcache.CaptchaID\x1a\x1d.dcache.CaptchaExistsResponse\"\x00\x12M\n\x0fGetVisitorCount\x12\x11.dcache.CaptchaID\x1a%.dcache.OptionGetVisitorCountResponse\"\x00\x12N\n\x11PipelineDcacheOps\x12\x1a.dcache.DcacheBatchRequest\x1a\x1b.dcache.DcacheBatchResponse\"\x00\x12\x32\n\nAddLearner\x12\x0f.dcache.Learner\x1a\x11.dcache.RaftReply\"\x00\x12\x31\n\x05Write\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x33\n\x07\x46orward\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x37\n\rAppendEntries\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\x12\x39\n\x0fInstallSnapshot\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\x12.\n\x04vote\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReplyb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -51,14 +51,30 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['_RAFTREPLY']._serialized_end=808 _globals['_LEARNER']._serialized_start=810 _globals['_LEARNER']._serialized_end=845 - _globals['_DCACHEREQUEST']._serialized_start=848 - _globals['_DCACHEREQUEST']._serialized_end=1165 - _globals['_DCACHERESPONSE']._serialized_start=1168 - _globals['_DCACHERESPONSE']._serialized_end=1307 - _globals['_DCACHEBATCHREQUEST']._serialized_start=1309 - _globals['_DCACHEBATCHREQUEST']._serialized_end=1370 - _globals['_DCACHEBATCHRESPONSE']._serialized_start=1372 - _globals['_DCACHEBATCHRESPONSE']._serialized_end=1436 - _globals['_DCACHESERVICE']._serialized_start=1439 - _globals['_DCACHESERVICE']._serialized_end=2230 + _globals['_CAPTCHAEXISTSRESPONSE']._serialized_start=847 + _globals['_CAPTCHAEXISTSRESPONSE']._serialized_end=886 + _globals['_GETVISITORCOUNTRESPONSE']._serialized_start=888 + _globals['_GETVISITORCOUNTRESPONSE']._serialized_end=931 + _globals['_OPTIONGETVISITORCOUNTRESPONSE']._serialized_start=933 + _globals['_OPTIONGETVISITORCOUNTRESPONSE']._serialized_end=1029 + _globals['_DCACHEREQUEST']._serialized_start=1032 + _globals['_DCACHEREQUEST']._serialized_end=1439 + _globals['_DCACHERESPONSE']._serialized_start=1442 + _globals['_DCACHERESPONSE']._serialized_end=1706 + _globals['_DCACHEBATCHREQUEST']._serialized_start=1708 + _globals['_DCACHEBATCHREQUEST']._serialized_end=1769 + _globals['_DCACHEBATCHRESPONSE']._serialized_start=1771 + _globals['_DCACHEBATCHRESPONSE']._serialized_end=1835 + _globals['_RETRIEVEPOWREQUEST']._serialized_start=1837 + _globals['_RETRIEVEPOWREQUEST']._serialized_end=1885 + _globals['_RETRIEVEPOWRESPONSE']._serialized_start=1887 + _globals['_RETRIEVEPOWRESPONSE']._serialized_end=1966 + _globals['_CAPTCHARESULTVERIFIED']._serialized_start=1968 + _globals['_CAPTCHARESULTVERIFIED']._serialized_end=2009 + _globals['_DELETEPOWREQUEST']._serialized_start=2011 + _globals['_DELETEPOWREQUEST']._serialized_end=2045 + _globals['_OPTIONALRETRIEVEPOWRESPONSE']._serialized_start=2047 + _globals['_OPTIONALRETRIEVEPOWRESPONSE']._serialized_end=2137 + _globals['_DCACHESERVICE']._serialized_start=2140 + _globals['_DCACHESERVICE']._serialized_end=3385 # @@protoc_insertion_point(module_scope) diff --git a/dcache_py/dcache_pb2.pyi b/dcache_py/dcache_pb2.pyi index 4197ae5..562e3c4 100644 --- a/dcache_py/dcache_pb2.pyi +++ b/dcache_py/dcache_pb2.pyi @@ -119,29 +119,55 @@ class Learner(_message.Message): addr: str def __init__(self, id: _Optional[int] = ..., addr: _Optional[str] = ...) -> None: ... +class CaptchaExistsResponse(_message.Message): + __slots__ = ("exists",) + EXISTS_FIELD_NUMBER: _ClassVar[int] + exists: bool + def __init__(self, exists: bool = ...) -> None: ... + +class GetVisitorCountResponse(_message.Message): + __slots__ = ("visitors",) + VISITORS_FIELD_NUMBER: _ClassVar[int] + visitors: int + def __init__(self, visitors: _Optional[int] = ...) -> None: ... + +class OptionGetVisitorCountResponse(_message.Message): + __slots__ = ("result",) + RESULT_FIELD_NUMBER: _ClassVar[int] + result: GetVisitorCountResponse + def __init__(self, result: _Optional[_Union[GetVisitorCountResponse, _Mapping]] = ...) -> None: ... + class DcacheRequest(_message.Message): - __slots__ = ("addCaptcha", "addVisitor", "renameCaptcha", "removeCaptcha", "cachePow", "cacheResult") + __slots__ = ("addCaptcha", "addVisitor", "renameCaptcha", "removeCaptcha", "cachePow", "cacheResult", "captchaExists", "getVisitorCount") ADDCAPTCHA_FIELD_NUMBER: _ClassVar[int] ADDVISITOR_FIELD_NUMBER: _ClassVar[int] RENAMECAPTCHA_FIELD_NUMBER: _ClassVar[int] REMOVECAPTCHA_FIELD_NUMBER: _ClassVar[int] CACHEPOW_FIELD_NUMBER: _ClassVar[int] CACHERESULT_FIELD_NUMBER: _ClassVar[int] + CAPTCHAEXISTS_FIELD_NUMBER: _ClassVar[int] + GETVISITORCOUNT_FIELD_NUMBER: _ClassVar[int] addCaptcha: AddCaptchaRequest addVisitor: CaptchaID renameCaptcha: RenameCaptchaRequest removeCaptcha: CaptchaID cachePow: CachePowRequest cacheResult: CacheResultRequest - def __init__(self, addCaptcha: _Optional[_Union[AddCaptchaRequest, _Mapping]] = ..., addVisitor: _Optional[_Union[CaptchaID, _Mapping]] = ..., renameCaptcha: _Optional[_Union[RenameCaptchaRequest, _Mapping]] = ..., removeCaptcha: _Optional[_Union[CaptchaID, _Mapping]] = ..., cachePow: _Optional[_Union[CachePowRequest, _Mapping]] = ..., cacheResult: _Optional[_Union[CacheResultRequest, _Mapping]] = ...) -> None: ... + captchaExists: CaptchaID + getVisitorCount: CaptchaID + def __init__(self, addCaptcha: _Optional[_Union[AddCaptchaRequest, _Mapping]] = ..., addVisitor: _Optional[_Union[CaptchaID, _Mapping]] = ..., renameCaptcha: _Optional[_Union[RenameCaptchaRequest, _Mapping]] = ..., removeCaptcha: _Optional[_Union[CaptchaID, _Mapping]] = ..., cachePow: _Optional[_Union[CachePowRequest, _Mapping]] = ..., cacheResult: _Optional[_Union[CacheResultRequest, _Mapping]] = ..., captchaExists: _Optional[_Union[CaptchaID, _Mapping]] = ..., getVisitorCount: _Optional[_Union[CaptchaID, _Mapping]] = ...) -> None: ... class DcacheResponse(_message.Message): - __slots__ = ("option_add_visitor_result", "other") + __slots__ = ("option_add_visitor_result", "other", "captcha_exists", "get_visitor_count") OPTION_ADD_VISITOR_RESULT_FIELD_NUMBER: _ClassVar[int] OTHER_FIELD_NUMBER: _ClassVar[int] + CAPTCHA_EXISTS_FIELD_NUMBER: _ClassVar[int] + GET_VISITOR_COUNT_FIELD_NUMBER: _ClassVar[int] option_add_visitor_result: OptionAddVisitorResult other: RaftReply - def __init__(self, option_add_visitor_result: _Optional[_Union[OptionAddVisitorResult, _Mapping]] = ..., other: _Optional[_Union[RaftReply, _Mapping]] = ...) -> None: ... + captcha_exists: CaptchaExistsResponse + get_visitor_count: OptionGetVisitorCountResponse + def __init__(self, option_add_visitor_result: _Optional[_Union[OptionAddVisitorResult, _Mapping]] = ..., other: _Optional[_Union[RaftReply, _Mapping]] = ..., captcha_exists: _Optional[_Union[CaptchaExistsResponse, _Mapping]] = ..., get_visitor_count: _Optional[_Union[OptionGetVisitorCountResponse, _Mapping]] = ...) -> None: ... class DcacheBatchRequest(_message.Message): __slots__ = ("requests",) @@ -154,3 +180,39 @@ class DcacheBatchResponse(_message.Message): RESPONSES_FIELD_NUMBER: _ClassVar[int] responses: _containers.RepeatedCompositeFieldContainer[DcacheResponse] def __init__(self, responses: _Optional[_Iterable[_Union[DcacheResponse, _Mapping]]] = ...) -> None: ... + +class RetrievePowRequest(_message.Message): + __slots__ = ("token", "key") + TOKEN_FIELD_NUMBER: _ClassVar[int] + KEY_FIELD_NUMBER: _ClassVar[int] + token: str + key: str + def __init__(self, token: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ... + +class RetrievePowResponse(_message.Message): + __slots__ = ("difficulty_factor", "duration", "key") + DIFFICULTY_FACTOR_FIELD_NUMBER: _ClassVar[int] + DURATION_FIELD_NUMBER: _ClassVar[int] + KEY_FIELD_NUMBER: _ClassVar[int] + difficulty_factor: int + duration: int + key: str + def __init__(self, difficulty_factor: _Optional[int] = ..., duration: _Optional[int] = ..., key: _Optional[str] = ...) -> None: ... + +class CaptchaResultVerified(_message.Message): + __slots__ = ("verified",) + VERIFIED_FIELD_NUMBER: _ClassVar[int] + verified: bool + def __init__(self, verified: bool = ...) -> None: ... + +class DeletePowRequest(_message.Message): + __slots__ = ("string",) + STRING_FIELD_NUMBER: _ClassVar[int] + string: str + def __init__(self, string: _Optional[str] = ...) -> None: ... + +class OptionalRetrievePoWResponse(_message.Message): + __slots__ = ("result",) + RESULT_FIELD_NUMBER: _ClassVar[int] + result: RetrievePowResponse + def __init__(self, result: _Optional[_Union[RetrievePowResponse, _Mapping]] = ...) -> None: ... diff --git a/dcache_py/dcache_pb2_grpc.py b/dcache_py/dcache_pb2_grpc.py index 3ad2977..c6f2df4 100644 --- a/dcache_py/dcache_pb2_grpc.py +++ b/dcache_py/dcache_pb2_grpc.py @@ -39,11 +39,41 @@ class DcacheServiceStub(object): request_serializer=dcache__pb2.CachePowRequest.SerializeToString, response_deserializer=dcache__pb2.RaftReply.FromString, ) + self.RetrievePow = channel.unary_unary( + '/dcache.DcacheService/RetrievePow', + request_serializer=dcache__pb2.RetrievePowRequest.SerializeToString, + response_deserializer=dcache__pb2.OptionalRetrievePoWResponse.FromString, + ) + self.DeletePow = channel.unary_unary( + '/dcache.DcacheService/DeletePow', + request_serializer=dcache__pb2.DeletePowRequest.SerializeToString, + response_deserializer=dcache__pb2.RaftReply.FromString, + ) self.CacheResult = channel.unary_unary( '/dcache.DcacheService/CacheResult', request_serializer=dcache__pb2.CacheResultRequest.SerializeToString, response_deserializer=dcache__pb2.RaftReply.FromString, ) + self.VerifyCaptchaResult = channel.unary_unary( + '/dcache.DcacheService/VerifyCaptchaResult', + request_serializer=dcache__pb2.RetrievePowRequest.SerializeToString, + response_deserializer=dcache__pb2.CaptchaResultVerified.FromString, + ) + self.DeleteCaptchaResult = channel.unary_unary( + '/dcache.DcacheService/DeleteCaptchaResult', + request_serializer=dcache__pb2.DeleteCaptchaResultRequest.SerializeToString, + response_deserializer=dcache__pb2.RaftReply.FromString, + ) + self.CaptchaExists = channel.unary_unary( + '/dcache.DcacheService/CaptchaExists', + request_serializer=dcache__pb2.CaptchaID.SerializeToString, + response_deserializer=dcache__pb2.CaptchaExistsResponse.FromString, + ) + self.GetVisitorCount = channel.unary_unary( + '/dcache.DcacheService/GetVisitorCount', + request_serializer=dcache__pb2.CaptchaID.SerializeToString, + response_deserializer=dcache__pb2.OptionGetVisitorCountResponse.FromString, + ) self.PipelineDcacheOps = channel.unary_unary( '/dcache.DcacheService/PipelineDcacheOps', request_serializer=dcache__pb2.DcacheBatchRequest.SerializeToString, @@ -114,12 +144,48 @@ class DcacheServiceServicer(object): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def RetrievePow(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeletePow(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def CacheResult(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def VerifyCaptchaResult(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteCaptchaResult(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CaptchaExists(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetVisitorCount(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def PipelineDcacheOps(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -193,11 +259,41 @@ def add_DcacheServiceServicer_to_server(servicer, server): request_deserializer=dcache__pb2.CachePowRequest.FromString, response_serializer=dcache__pb2.RaftReply.SerializeToString, ), + 'RetrievePow': grpc.unary_unary_rpc_method_handler( + servicer.RetrievePow, + request_deserializer=dcache__pb2.RetrievePowRequest.FromString, + response_serializer=dcache__pb2.OptionalRetrievePoWResponse.SerializeToString, + ), + 'DeletePow': grpc.unary_unary_rpc_method_handler( + servicer.DeletePow, + request_deserializer=dcache__pb2.DeletePowRequest.FromString, + response_serializer=dcache__pb2.RaftReply.SerializeToString, + ), 'CacheResult': grpc.unary_unary_rpc_method_handler( servicer.CacheResult, request_deserializer=dcache__pb2.CacheResultRequest.FromString, response_serializer=dcache__pb2.RaftReply.SerializeToString, ), + 'VerifyCaptchaResult': grpc.unary_unary_rpc_method_handler( + servicer.VerifyCaptchaResult, + request_deserializer=dcache__pb2.RetrievePowRequest.FromString, + response_serializer=dcache__pb2.CaptchaResultVerified.SerializeToString, + ), + 'DeleteCaptchaResult': grpc.unary_unary_rpc_method_handler( + servicer.DeleteCaptchaResult, + request_deserializer=dcache__pb2.DeleteCaptchaResultRequest.FromString, + response_serializer=dcache__pb2.RaftReply.SerializeToString, + ), + 'CaptchaExists': grpc.unary_unary_rpc_method_handler( + servicer.CaptchaExists, + request_deserializer=dcache__pb2.CaptchaID.FromString, + response_serializer=dcache__pb2.CaptchaExistsResponse.SerializeToString, + ), + 'GetVisitorCount': grpc.unary_unary_rpc_method_handler( + servicer.GetVisitorCount, + request_deserializer=dcache__pb2.CaptchaID.FromString, + response_serializer=dcache__pb2.OptionGetVisitorCountResponse.SerializeToString, + ), 'PipelineDcacheOps': grpc.unary_unary_rpc_method_handler( servicer.PipelineDcacheOps, request_deserializer=dcache__pb2.DcacheBatchRequest.FromString, @@ -328,6 +424,40 @@ class DcacheService(object): options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod + def RetrievePow(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/dcache.DcacheService/RetrievePow', + dcache__pb2.RetrievePowRequest.SerializeToString, + dcache__pb2.OptionalRetrievePoWResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DeletePow(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/dcache.DcacheService/DeletePow', + dcache__pb2.DeletePowRequest.SerializeToString, + dcache__pb2.RaftReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod def CacheResult(request, target, @@ -345,6 +475,74 @@ class DcacheService(object): options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod + def VerifyCaptchaResult(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/dcache.DcacheService/VerifyCaptchaResult', + dcache__pb2.RetrievePowRequest.SerializeToString, + dcache__pb2.CaptchaResultVerified.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def DeleteCaptchaResult(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/dcache.DcacheService/DeleteCaptchaResult', + dcache__pb2.DeleteCaptchaResultRequest.SerializeToString, + dcache__pb2.RaftReply.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def CaptchaExists(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/dcache.DcacheService/CaptchaExists', + dcache__pb2.CaptchaID.SerializeToString, + dcache__pb2.CaptchaExistsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetVisitorCount(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/dcache.DcacheService/GetVisitorCount', + dcache__pb2.CaptchaID.SerializeToString, + dcache__pb2.OptionGetVisitorCountResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod def PipelineDcacheOps(request, target, diff --git a/proto/dcache/dcache.proto b/proto/dcache/dcache.proto index 0aa1856..1830a1b 100644 --- a/proto/dcache/dcache.proto +++ b/proto/dcache/dcache.proto @@ -77,6 +77,20 @@ message Learner { } +message CaptchaExistsResponse { + bool exists = 1; +} + + +message GetVisitorCountResponse { + uint32 visitors = 1; +} + + +message OptionGetVisitorCountResponse { + optional GetVisitorCountResponse result = 1; +} + message DcacheRequest { oneof DcacheRequest { AddCaptchaRequest addCaptcha = 1; @@ -85,6 +99,8 @@ message DcacheRequest { CaptchaID removeCaptcha = 4; CachePowRequest cachePow = 5; CacheResultRequest cacheResult = 6; + CaptchaID captchaExists = 7; + CaptchaID getVisitorCount = 8; } } @@ -93,6 +109,8 @@ message DcacheResponse { oneof DcacheResponse { OptionAddVisitorResult option_add_visitor_result = 1; RaftReply other = 2; + CaptchaExistsResponse captcha_exists = 3; + OptionGetVisitorCountResponse get_visitor_count = 4; } } @@ -104,13 +122,43 @@ message DcacheBatchResponse { repeated DcacheResponse responses = 1; } +message RetrievePowRequest { + string token = 1; + string key = 2; +} + +message RetrievePowResponse { + uint32 difficulty_factor = 1; + uint64 duration = 2; + string key = 3; +} + + +message CaptchaResultVerified { + bool verified = 1; +} + +message DeletePowRequest { + string string = 1; +} + +message OptionalRetrievePoWResponse { + optional RetrievePowResponse result = 1; +} + service DcacheService { rpc AddCaptcha(AddCaptchaRequest) returns (RaftReply) {} rpc AddVisitor(CaptchaID) returns (OptionAddVisitorResult) {} rpc RenameCaptcha(RenameCaptchaRequest) returns (RaftReply) {} rpc RemoveCaptcha(CaptchaID) returns (RaftReply) {} rpc CachePow(CachePowRequest) returns (RaftReply) {} + rpc RetrievePow(RetrievePowRequest) returns (OptionalRetrievePoWResponse) {} + rpc DeletePow(DeletePowRequest) returns (RaftReply) {} rpc CacheResult(CacheResultRequest) returns (RaftReply) {} + rpc VerifyCaptchaResult(RetrievePowRequest) returns (CaptchaResultVerified) {} + rpc DeleteCaptchaResult(DeleteCaptchaResultRequest) returns (RaftReply) {} + rpc CaptchaExists(CaptchaID) returns (CaptchaExistsResponse) {} + rpc GetVisitorCount(CaptchaID) returns (OptionGetVisitorCountResponse) {} rpc PipelineDcacheOps(DcacheBatchRequest) returns (DcacheBatchResponse) {} diff --git a/src/lib.rs b/src/lib.rs index fbb574d..f80ef1d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,7 +36,9 @@ use crate::store::DcacheResponse; use crate::store::DcacheStore; pub mod app; +mod mcaptcha; pub mod network; +mod pool; mod protobuf; pub mod store; @@ -117,29 +119,6 @@ pub async fn start_example_raft_node( raft.enable_heartbeat(true); raft.enable_elect(true); - let captcha = serde_json::json!({ - "AddCaptcha": { - "id": "test_1", - "mcaptcha": { - "visitor_threshold": 0, - "defense": { - "levels": [ - {"visitor_threshold": 50, "difficulty_factor": 500}, - {"visitor_threshold": 5000, "difficulty_factor": 50000}, - ], - "current_visitor_threshold": 0, - }, - "duration": 30, - }}}); - #[derive(serde::Serialize)] - struct X { - data: String, - } - let x = X { - data: serde_json::to_string(&captcha).unwrap(), - }; - println!("{}", serde_json::to_string(&x).unwrap()); - // raft.enable_tick(true); // Create an application that will store all the instances created above, this will diff --git a/src/mcaptcha/cache.rs b/src/mcaptcha/cache.rs new file mode 100644 index 0000000..3f42e0a --- /dev/null +++ b/src/mcaptcha/cache.rs @@ -0,0 +1,330 @@ +/* + * mCaptcha - A proof of work based DoS protection system + * Copyright © 2021 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +//! In-memory cache implementation that uses [HashMap] +use std::sync::Arc; +use std::time::Duration; + +use dashmap::DashMap; +use serde::{Deserialize, Serialize}; + +use libmcaptcha::cache::messages::*; +use libmcaptcha::errors::*; + +#[derive(Clone, Default, Serialize, Deserialize)] +/// cache datastructure implementing [Save] +pub struct HashCache { + difficulty_map: Arc>, + result_map: Arc>, +} + +impl HashCache { + // save [PoWConfig] to cache + fn save_pow_config(&self, config: CachePoW) -> CaptchaResult<()> { + let challenge = config.string; + let config: CachedPoWConfig = CachedPoWConfig { + key: config.key, + difficulty_factor: config.difficulty_factor, + duration: config.duration, + }; + + if self.difficulty_map.get(&challenge).is_none() { + self.difficulty_map.insert(challenge, config); + Ok(()) + } else { + Err(CaptchaError::InvalidPoW) + } + } + + pub async fn clean_all_after_cold_start(&self, updated: HashCache) { + updated.difficulty_map.iter().for_each(|x| { + self.difficulty_map + .insert(x.key().to_owned(), x.value().to_owned()); + }); + updated.result_map.iter().for_each(|x| { + self.result_map + .insert(x.key().to_owned(), x.value().to_owned()); + }); + let cache = self.clone(); + let fut = async move { + for values in cache.result_map.iter() { + let inner_cache = cache.clone(); + let duration = values.value().1; + let key = values.key().to_owned(); + let inner_fut = async move { + tokio::time::sleep(Duration::new(duration, 0)).await; + inner_cache.remove_cache_result(&key); + }; + tokio::spawn(inner_fut); + } + + for values in cache.difficulty_map.iter() { + let inner_cache = cache.clone(); + let duration = values.value().duration; + let key = values.key().to_owned(); + let inner_fut = async move { + tokio::time::sleep(Duration::new(duration, 0)).await; + inner_cache.remove_pow_config(&key); + }; + tokio::spawn(inner_fut); + } + }; + + tokio::spawn(fut); + } + + // retrieve [PoWConfig] from cache. Deletes config post retrival + pub fn retrieve_pow_config(&self, msg: VerifyCaptchaResult) -> Option { + if let Some(difficulty_factor) = self.remove_pow_config(&msg.token) { + Some(difficulty_factor) + } else { + None + } + } + + // delete [PoWConfig] from cache + pub fn remove_pow_config(&self, string: &str) -> Option { + self.difficulty_map.remove(string).map(|x| x.1) + } + + // save captcha result + fn save_captcha_result(&self, res: CacheResult) { + self.result_map.insert(res.token, (res.key, res.duration)); + } + + // verify captcha result + pub fn verify_captcha_result(&self, challenge: VerifyCaptchaResult) -> bool { + if let Some(captcha_id) = self.remove_cache_result(&challenge.token) { + if captcha_id == challenge.key { + true + } else { + false + } + } else { + false + } + } + + // delete cache result + pub fn remove_cache_result(&self, string: &str) -> Option { + self.result_map.remove(string).map(|x| x.1 .0) + } + + pub fn cache_pow(&self, msg: CachePoW) { + use std::time::Duration; + use tokio::time::sleep; + + let duration: Duration = Duration::new(msg.duration, 0); + let string = msg.string.clone(); + let cache = self.clone(); + let wait_for = async move { + sleep(duration).await; + //delay_for(duration).await; + cache.remove_pow_config(&string); + }; + let _ = self.save_pow_config(msg); + tokio::spawn(wait_for); + } + + /// cache PoW result + pub fn cache_result(&self, msg: CacheResult) { + use std::time::Duration; + use tokio::time::sleep; + + let token = msg.token.clone(); + msg.token.clone(); + msg.token.clone(); + msg.token.clone(); + + let duration: Duration = Duration::new(msg.duration, 0); + let cache = self.clone(); + let wait_for = async move { + sleep(duration).await; + //delay_for(duration).await; + cache.remove_cache_result(&token); + }; + tokio::spawn(wait_for); + + let _ = self.save_captcha_result(msg); + } +} + +#[cfg(test)] +mod tests { + use super::*; + use libmcaptcha::master::AddVisitorResult; + use libmcaptcha::pow::PoWConfig; + + use std::time::Duration; + #[actix_rt::test] + async fn merge_works() { + const DIFFICULTY_FACTOR: u32 = 54; + const RES: &str = "b"; + const DURATION: u64 = 5; + const KEY: &str = "mcaptchakey"; + let pow: PoWConfig = PoWConfig::new(DIFFICULTY_FACTOR, KEY.into()); //salt is dummy here + + let cache = HashCache::default(); + let new_cache = HashCache::default(); + let visitor_result = AddVisitorResult { + difficulty_factor: DIFFICULTY_FACTOR, + duration: DURATION, + }; + let string = pow.string.clone(); + + let msg = CachePoWBuilder::default() + .string(pow.string.clone()) + .difficulty_factor(DIFFICULTY_FACTOR) + .duration(visitor_result.duration) + .key(KEY.into()) + .build() + .unwrap(); + + cache.cache_pow(msg); + + let add_cache = CacheResult { + key: KEY.into(), + token: RES.into(), + duration: DURATION, + }; + + cache.cache_result(add_cache.clone()); + + new_cache.clean_all_after_cold_start(cache.clone()).await; + + let msg = VerifyCaptchaResult { + token: string.clone(), + key: KEY.into(), + }; + let cache_difficulty_factor = cache.retrieve_pow_config(msg.clone()).unwrap(); + let new_cache_difficulty_factor = new_cache.retrieve_pow_config(msg.clone()).unwrap(); + + assert_eq!(DIFFICULTY_FACTOR, cache_difficulty_factor.difficulty_factor); + assert_eq!( + DIFFICULTY_FACTOR, + new_cache_difficulty_factor.difficulty_factor + ); + + let verify_msg = VerifyCaptchaResult { + key: KEY.into(), + token: RES.into(), + }; + + assert!(new_cache.verify_captcha_result(verify_msg.clone())); + assert!(!new_cache.verify_captcha_result(verify_msg.clone())); + + let duration: Duration = Duration::new(5, 0); + //sleep(DURATION + DURATION).await; + tokio::time::sleep(duration + duration).await; + + let expired_string = cache.retrieve_pow_config(msg.clone()); + assert_eq!(None, expired_string); + let expired_string = new_cache.retrieve_pow_config(msg); + assert_eq!(None, expired_string); + + cache.cache_result(add_cache); + new_cache.clean_all_after_cold_start(cache.clone()).await; + tokio::time::sleep(duration + duration).await; + assert!(!new_cache.verify_captcha_result(verify_msg.clone())); + assert!(!cache.verify_captcha_result(verify_msg)); + } + + #[actix_rt::test] + async fn hashcache_pow_cache_works() { + const DIFFICULTY_FACTOR: u32 = 54; + const DURATION: u64 = 5; + const KEY: &str = "mcaptchakey"; + let cache = HashCache::default(); + let pow: PoWConfig = PoWConfig::new(DIFFICULTY_FACTOR, KEY.into()); //salt is dummy here + let visitor_result = AddVisitorResult { + difficulty_factor: DIFFICULTY_FACTOR, + duration: DURATION, + }; + let string = pow.string.clone(); + + let msg = CachePoWBuilder::default() + .string(pow.string.clone()) + .difficulty_factor(DIFFICULTY_FACTOR) + .duration(visitor_result.duration) + .key(KEY.into()) + .build() + .unwrap(); + + cache.cache_pow(msg); + + let msg = VerifyCaptchaResult { + token: string.clone(), + key: KEY.into(), + }; + let cache_difficulty_factor = cache.retrieve_pow_config(msg.clone()).unwrap(); + + assert_eq!(DIFFICULTY_FACTOR, cache_difficulty_factor.difficulty_factor); + + let duration: Duration = Duration::new(5, 0); + //sleep(DURATION + DURATION).await; + tokio::time::sleep(duration + duration).await; + + let expired_string = cache.retrieve_pow_config(msg); + assert_eq!(None, expired_string); + } + + #[actix_rt::test] + async fn hashcache_result_cache_works() { + const DURATION: u64 = 5; + const KEY: &str = "a"; + const RES: &str = "b"; + let cache = HashCache::default(); + // send value to cache + // send another value to cache for auto delete + // verify_captcha_result + // delete + // wait for timeout and verify_captcha_result against second value + + let add_cache = CacheResult { + key: KEY.into(), + token: RES.into(), + duration: DURATION, + }; + + cache.cache_result(add_cache); + + let verify_msg = VerifyCaptchaResult { + key: KEY.into(), + token: RES.into(), + }; + + assert!(cache.verify_captcha_result(verify_msg.clone())); + + // duplicate + assert!(!cache.verify_captcha_result(verify_msg)); + + let verify_msg = VerifyCaptchaResult { + key: "cz".into(), + token: RES.into(), + }; + assert!(!cache.verify_captcha_result(verify_msg)); + + let duration: Duration = Duration::new(5, 0); + tokio::time::sleep(duration + duration).await; + + let verify_msg = VerifyCaptchaResult { + key: KEY.into(), + token: RES.into(), + }; + assert!(!cache.verify_captcha_result(verify_msg)); + } +} diff --git a/src/mcaptcha/defense.rs b/src/mcaptcha/defense.rs new file mode 100644 index 0000000..6e7bb40 --- /dev/null +++ b/src/mcaptcha/defense.rs @@ -0,0 +1,398 @@ +/* + * mCaptcha - A proof of work based DoS protection system + * Copyright © 2021 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +use serde::{Deserialize, Serialize}; + +use libmcaptcha::defense::Level; +use libmcaptcha::errors::*; +// +///// Level struct that describes threshold-difficulty factor mapping +//#[derive(Debug, Deserialize, Serialize, Copy, Clone, PartialEq)] +//pub struct Level { +// pub visitor_threshold: u32, +// pub difficulty_factor: u32, +//} +// +///// Bulder struct for [Level] to describe threshold-difficulty factor mapping +//#[derive(Debug, Copy, Clone, PartialEq)] +//pub struct LevelBuilder { +// visitor_threshold: Option, +// difficulty_factor: Option, +//} +// +//impl Default for LevelBuilder { +// fn default() -> Self { +// LevelBuilder { +// visitor_threshold: None, +// difficulty_factor: None, +// } +// } +//} +// +//impl LevelBuilder { +// /// set visitor count for level +// pub fn visitor_threshold(&mut self, visitor_threshold: u32) -> &mut Self { +// self.visitor_threshold = Some(visitor_threshold); +// self +// } +// +// /// set difficulty factor for level. difficulty_factor can't be zero because +// /// Difficulty is calculated as: +// /// ```no_run +// /// let difficulty_factor = 500; +// /// let difficulty = u128::max_value() - u128::max_value() / difficulty_factor; +// /// ``` +// /// the higher the `difficulty_factor`, the higher the difficulty. +// pub fn difficulty_factor(&mut self, difficulty_factor: u32) -> CaptchaResult<&mut Self> { +// if difficulty_factor > 0 { +// self.difficulty_factor = Some(difficulty_factor); +// Ok(self) +// } else { +// Err(CaptchaError::DifficultyFactorZero) +// } +// } +// +// /// build Level struct +// pub fn build(&mut self) -> CaptchaResult { +// if self.visitor_threshold.is_none() { +// Err(CaptchaError::SetVisitorThreshold) +// } else if self.difficulty_factor.is_none() { +// Err(CaptchaError::SetDifficultyFactor) +// } else { +// Ok(Level { +// difficulty_factor: self.difficulty_factor.unwrap(), +// visitor_threshold: self.visitor_threshold.unwrap(), +// }) +// } +// } +//} +// +/// Builder struct for [Defense] +#[derive(Debug, Clone, PartialEq)] +pub struct DefenseBuilder { + levels: Vec, +} + +impl Default for DefenseBuilder { + fn default() -> Self { + DefenseBuilder { levels: vec![] } + } +} + +impl DefenseBuilder { + /// add a level to [Defense] + pub fn add_level(&mut self, level: Level) -> CaptchaResult<&mut Self> { + for i in self.levels.iter() { + if i.visitor_threshold == level.visitor_threshold { + return Err(CaptchaError::DuplicateVisitorCount); + } + } + self.levels.push(level); + Ok(self) + } + + /// Build [Defense] + pub fn build(&mut self) -> CaptchaResult { + if !self.levels.is_empty() { + // sort levels to arrange in ascending order + self.levels.sort_by_key(|a| a.visitor_threshold); + + for level in self.levels.iter() { + if level.difficulty_factor == 0 { + return Err(CaptchaError::DifficultyFactorZero); + } + } + + // as visitor count increases, difficulty_factor too should increse + // if it decreses, an error must be thrown + for i in 0..self.levels.len() - 1 { + if self.levels[i].difficulty_factor > self.levels[i + 1].difficulty_factor { + return Err(CaptchaError::DecreaseingDifficultyFactor); + } + } + + Ok(Defense { + levels: self.levels.to_owned(), + }) + } else { + Err(CaptchaError::LevelEmpty) + } + } +} + +/// struct describes all the different [Level]s at which an mCaptcha system operates +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] +pub struct Defense { + levels: Vec, + // index of current visitor threshold +} + +impl From for Vec { + fn from(d: Defense) -> Self { + d.levels + } +} + +impl Defense { + ///! Difficulty is calculated as: + ///! ```rust + ///! let difficulty = u128::max_value() - u128::max_value() / difficulty_factor; + ///! ``` + ///! The higher the `difficulty_factor`, the higher the difficulty. + + // /// Get difficulty factor of current level of defense + // pub fn get_difficulty(&self, current_visitor_threshold: usize) -> u32 { + // self.levels[current_visitor_threshold].difficulty_factor + // } + // + // /// tighten up defense. Increases defense level by a factor of one. + // /// When defense is at max level, calling this method will have no effect + // pub fn tighten_up(&mut self) { + // if self.current_visitor_threshold < self.levels.len() - 1 { + // self.current_visitor_threshold += 1; + // } + // } + // /// Loosen up defense. Decreases defense level by a factor of one. + // /// When defense is at the lowest level, calling this method will have no effect. + // pub fn loosen_up(&mut self) { + // if self.current_visitor_threshold > 0 { + // self.current_visitor_threshold -= 1; + // } + // } + // + // /// Set defense to maximum level + // pub fn max_defense(&mut self) { + // self.current_visitor_threshold = self.levels.len() - 1; + // } + // + // /// Set defense to minimum level + // pub fn min_defense(&mut self) { + // self.current_visitor_threshold = 0; + // } + // + pub fn get_levels(&self) -> Vec { + self.levels.clone() + } + /// Get current level's visitor threshold + pub fn current_level(&self, current_visitor_level: u32) -> &Level { + for level in self.levels.iter() { + if current_visitor_level <= level.visitor_threshold { + return level; + } + } + self.levels.last().as_ref().unwrap() + // &self.levels[self.current_visitor_threshold] + } + // + // /// Get current level's visitor threshold + // pub fn visitor_threshold(&self) -> u32 { + // self.levels[self.current_visitor_threshold].difficulty_factor + // } +} + +#[cfg(test)] +mod tests { + use super::*; + + use libmcaptcha::defense::Level; + use libmcaptcha::LevelBuilder; + + #[test] + fn defense_builder_duplicate_visitor_threshold() { + let mut defense_builder = DefenseBuilder::default(); + let err = defense_builder + .add_level( + LevelBuilder::default() + .visitor_threshold(50) + .difficulty_factor(50) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(50) + .difficulty_factor(50) + .unwrap() + .build() + .unwrap(), + ); + assert_eq!(err, Err(CaptchaError::DuplicateVisitorCount)); + } + + #[test] + fn defense_builder_decreasing_difficulty_factor() { + let mut defense_builder = DefenseBuilder::default(); + let err = defense_builder + .add_level( + LevelBuilder::default() + .visitor_threshold(50) + .difficulty_factor(50) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(500) + .difficulty_factor(10) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .build(); + assert_eq!(err, Err(CaptchaError::DecreaseingDifficultyFactor)); + } + + #[test] + fn checking_for_integer_overflow() { + let mut defense = DefenseBuilder::default() + .add_level( + LevelBuilder::default() + .visitor_threshold(5) + .difficulty_factor(5) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(10) + .difficulty_factor(50) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(20) + .difficulty_factor(60) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(30) + .difficulty_factor(65) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .build() + .unwrap(); + + // for _ in 0..500 { + // defense.tighten_up(); + // } + // + // defense.get_difficulty(); + // for _ in 0..500000 { + // defense.tighten_up(); + // } + // + defense.current_level(10_000_000); + } + + fn get_defense() -> Defense { + DefenseBuilder::default() + .add_level( + LevelBuilder::default() + .visitor_threshold(50) + .difficulty_factor(50) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(500) + .difficulty_factor(5000) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(5000) + .difficulty_factor(50000) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(50000) + .difficulty_factor(500000) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(500000) + .difficulty_factor(5000000) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .build() + .unwrap() + } + #[test] + fn defense_builder_works() { + let defense = get_defense(); + + assert_eq!(defense.levels[0].difficulty_factor, 50); + assert_eq!(defense.levels[1].difficulty_factor, 5000); + assert_eq!(defense.levels[2].difficulty_factor, 50_000); + assert_eq!(defense.levels[3].difficulty_factor, 500_000); + assert_eq!(defense.levels[4].difficulty_factor, 5_000_000); + } + + #[test] + fn tighten_up_works() { + let defense = get_defense(); + + assert_eq!(defense.current_level(0).difficulty_factor, 50); + + assert_eq!(defense.current_level(500).difficulty_factor, 5_000); + + assert_eq!(defense.current_level(501).difficulty_factor, 50_000); + assert_eq!(defense.current_level(5_000).difficulty_factor, 50_000); + + assert_eq!(defense.current_level(5_001).difficulty_factor, 500_000); + assert_eq!(defense.current_level(50_000).difficulty_factor, 500_000); + + assert_eq!(defense.current_level(50_001).difficulty_factor, 5_000_000); + assert_eq!(defense.current_level(500_000).difficulty_factor, 5_000_000); + + assert_eq!(defense.current_level(500_001).difficulty_factor, 5_000_000); + } +} diff --git a/src/mcaptcha/mcaptcha.rs b/src/mcaptcha/mcaptcha.rs new file mode 100644 index 0000000..d67a563 --- /dev/null +++ b/src/mcaptcha/mcaptcha.rs @@ -0,0 +1,595 @@ +/* mCaptcha - A proof of work based DoS protection system + * Copyright © 2021 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +use std::collections::HashMap; +use std::sync::atomic::{AtomicU32, Ordering}; +use std::sync::Arc; +use std::time::Duration; + +use dashmap::DashMap; +use serde::{Deserialize, Serialize}; + +use super::defense::Defense; +use libmcaptcha::errors::*; +use libmcaptcha::master::messages as ManagerMessages; + +/// Builder for [MCaptcha] +#[derive(Clone, Serialize, Deserialize, Debug)] +pub struct MCaptchaBuilder { + visitor_threshold: u32, + defense: Option, + duration: Option, +} + +impl Default for MCaptchaBuilder { + fn default() -> Self { + MCaptchaBuilder { + visitor_threshold: 0, + defense: None, + duration: None, + } + } +} + +impl MCaptchaBuilder { + /// set defense + pub fn defense(&mut self, d: Defense) -> &mut Self { + self.defense = Some(d); + self + } + + /// set duration + pub fn duration(&mut self, d: u64) -> &mut Self { + self.duration = Some(d); + self + } + + /// Builds new [MCaptcha] + pub fn build(self: &mut MCaptchaBuilder) -> CaptchaResult { + if self.duration.is_none() { + Err(CaptchaError::PleaseSetValue("duration".into())) + } else if self.defense.is_none() { + Err(CaptchaError::PleaseSetValue("defense".into())) + } else if self.duration <= Some(0) { + Err(CaptchaError::CaptchaDurationZero) + } else { + let m = MCaptcha { + duration: self.duration.unwrap(), + defense: self.defense.clone().unwrap(), + visitor_threshold: Arc::new(AtomicU32::new(self.visitor_threshold)), + }; + Ok(m) + } + } +} + +#[derive(Clone, Serialize, Deserialize, Debug)] +pub struct MCaptcha { + visitor_threshold: Arc, + defense: Defense, + duration: u64, +} + +impl MCaptcha { + /// increments the visitor count by one + #[inline] + pub fn add_visitor(&self) -> u32 { + // self.visitor_threshold += 1; + let current_visitor_level = self.visitor_threshold.fetch_add(1, Ordering::SeqCst) + 1; + let current_level = self.defense.current_level(current_visitor_level); + current_level.difficulty_factor + } + + /// decrements the visitor count by specified count + #[inline] + pub fn set_visitor_count(&self, new_current: u32) { + self.visitor_threshold + .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |mut current| { + if current != new_current { + Some(new_current) + } else { + None + } + }); + } + + /// decrements the visitor count by specified count + #[inline] + pub fn decrement_visitor_by(&self, count: u32) { + self.visitor_threshold + .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |mut current| { + if current > 0 { + if current >= count { + current -= count; + } else { + current = 0; + } + Some(current) + } else { + None + } + }); + } + + /// get [Counter]'s current visitor_threshold + pub fn get_visitors(&self) -> u32 { + self.visitor_threshold.load(Ordering::SeqCst) + } +} + +#[derive(Clone, Serialize, Deserialize)] +pub struct Manager { + pub captchas: Arc>>, + pub gc: u64, +} + +impl Manager { + /// add [Counter] actor to [Manager] + pub fn add_captcha(&self, m: Arc, id: String) { + self.captchas.insert(id, m); + } + + /// create new master + /// accepts a `u64` to configure garbage collection period + pub fn new(gc: u64) -> Self { + Manager { + captchas: Arc::new(DashMap::new()), + gc, + } + } + + fn gc(captchas: Arc>>) { + for captcha in captchas.iter() { + let visitor = { captcha.value().get_visitors() }; + if visitor == 0 { + captchas.remove(captcha.key()); + } + } + } + + /// get [Counter] actor from [Manager] + pub fn get_captcha(&self, id: &str) -> Option> { + if let Some(captcha) = self.captchas.get(id) { + Some(captcha.clone()) + } else { + None + } + } + + /// removes [Counter] actor from [Manager] + pub fn rm_captcha(&self, id: &str) -> Option<(String, Arc)> { + self.captchas.remove(id) + } + + /// renames [Counter] actor + pub fn rename(&self, current_id: &str, new_id: String) { + // If actor isn't present, it's okay to not throw an error + // since actors are lazyily initialized and are cleaned up when inactive + if let Some((_, captcha)) = self.captchas.remove(current_id) { + self.add_captcha(captcha, new_id); + } + } + + pub async fn clean_all_after_cold_start(&self, updated: Manager) { + updated.captchas.iter().for_each(|x| { + self.captchas + .insert(x.key().to_owned(), x.value().to_owned()); + }); + let captchas = self.clone(); + let keys: Vec = captchas + .captchas + .clone() + .iter() + .map(|x| x.key().to_owned()) + .collect(); + let fut = async move { + tokio::time::sleep(Duration::new(captchas.gc, 0)).await; + for key in keys.iter() { + captchas.rm_captcha(key); + } + }; + + tokio::spawn(fut); + } + + pub fn add_visitor( + &self, + msg: &ManagerMessages::AddVisitor, + ) -> Option { + if let Some(captcha) = self.captchas.get(&msg.0) { + let difficulty_factor = captcha.add_visitor(); + // let id = msg.0.clone(); + + let c = captcha.clone(); + let captchas = self.captchas.clone(); + let fut = async move { + tokio::time::sleep(Duration::new(c.duration, 0)).await; + c.decrement_visitor_by(1); + // Self::gc(captchas); + // if c.get_visitors() == 0 { + // println!("Removing captcha addvivi"); + // captchas.remove(&id); + // } + }; + + tokio::spawn(fut); + + Some(libmcaptcha::master::AddVisitorResult { + duration: captcha.duration, + difficulty_factor, + }) + } else { + None + } + } + + pub fn get_internal_data(&self) -> HashMap { + let mut res = HashMap::with_capacity(self.captchas.len()); + for value in self.captchas.iter() { + res.insert(value.key().to_owned(), value.value().as_ref().into()); + } + res + } + + pub fn set_internal_data(&self, mut map: HashMap) { + for (id, captcha) in map.drain() { + let visitors = captcha.get_visitors(); + let new_captcha: MCaptcha = (&captcha).into(); + let new_captcha = Arc::new(new_captcha); + self.captchas.insert(id.clone(), new_captcha.clone()); + let msg = ManagerMessages::AddVisitor(id); + for _ in 0..visitors { + self.add_visitor(&msg); + } + } + } +} + +impl From<&libmcaptcha::mcaptcha::MCaptcha> for MCaptcha { + fn from(value: &libmcaptcha::mcaptcha::MCaptcha) -> Self { + let mut defense = super::defense::DefenseBuilder::default(); + for level in value.get_defense().get_levels() { + let _ = defense.add_level(level); + } + let defense = defense.build().unwrap(); + let new_captcha = MCaptchaBuilder::default() + .defense(defense) + .duration(value.get_duration()) + .build() + .unwrap(); + // for _ in 0..value.get_visitors() { + // new_captcha.add_visitor(); + // } + + new_captcha + } +} + +impl From<&MCaptcha> for libmcaptcha::mcaptcha::MCaptcha { + fn from(value: &MCaptcha) -> Self { + let mut defense = libmcaptcha::defense::DefenseBuilder::default(); + for level in value.defense.get_levels().drain(0..) { + let _ = defense.add_level(level); + } + let defense = defense.build().unwrap(); + let mut new_captcha = libmcaptcha::mcaptcha::MCaptchaBuilder::default() + .defense(defense) + .duration(value.duration) + .build() + .unwrap(); + for _ in 0..value.get_visitors() { + new_captcha.add_visitor(); + } + new_captcha + } +} + +#[cfg(test)] +mod tests { + use super::*; + use libmcaptcha::defense::LevelBuilder; + use libmcaptcha::master::messages::*; + + pub const LEVEL_1: (u32, u32) = (50, 50); + pub const LEVEL_2: (u32, u32) = (500, 500); + pub const DURATION: u64 = 5; + + use crate::mcaptcha::defense::*; + + pub fn get_defense() -> Defense { + DefenseBuilder::default() + .add_level( + LevelBuilder::default() + .visitor_threshold(LEVEL_1.0) + .difficulty_factor(LEVEL_1.1) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .add_level( + LevelBuilder::default() + .visitor_threshold(LEVEL_2.0) + .difficulty_factor(LEVEL_2.1) + .unwrap() + .build() + .unwrap(), + ) + .unwrap() + .build() + .unwrap() + } + + async fn race(manager: &Manager, id: String, count: (u32, u32)) { + let msg = ManagerMessages::AddVisitor(id); + for _ in 0..count.0 as usize - 1 { + manager.add_visitor(&msg); + } + } + + // pub fn get_counter() -> Counter { + // get_mcaptcha().into() + // } + + pub fn get_mcaptcha() -> MCaptcha { + MCaptchaBuilder::default() + .defense(get_defense()) + .duration(DURATION) + .build() + .unwrap() + } + + #[actix_rt::test] + async fn manager_works() { + let manager = Manager::new(1); + + // let get_add_site_msg = |id: String, mcaptcha: MCaptcha| { + // AddSiteBuilder::default() + // .id(id) + // .mcaptcha(mcaptcha) + // .build() + // .unwrap() + // }; + + let id = "yo"; + manager.add_captcha(Arc::new(get_mcaptcha()), id.into()); + + let mcaptcha_addr = manager.get_captcha(id); + assert!(mcaptcha_addr.is_some()); + + let mut mcaptcha_data = manager.get_internal_data(); + mcaptcha_data.get_mut(id).unwrap().add_visitor(); + mcaptcha_data.get_mut(id).unwrap().add_visitor(); + mcaptcha_data.get_mut(id).unwrap().add_visitor(); + // let mcaptcha_data: HashMap = { + // let serialized = serde_json::to_string(&mcaptcha_data).unwrap(); + // serde_json::from_str(&serialized).unwrap() + // }; + // println!("{:?}", mcaptcha_data); + manager.set_internal_data(mcaptcha_data); + + let mcaptcha_data = manager.get_internal_data(); + assert_eq!( + manager.get_captcha(id).unwrap().get_visitors(), + mcaptcha_data.get(id).unwrap().get_visitors() + ); + + let new_id = "yoyo"; + manager.rename(id, new_id.into()); + + { + let mcaptcha_addr = manager.get_captcha(new_id); + assert!(mcaptcha_addr.is_some()); + + let addr_doesnt_exist = manager.get_captcha(id); + assert!(addr_doesnt_exist.is_none()); + + let timer_expire = Duration::new(DURATION, 0); + tokio::time::sleep(timer_expire).await; + tokio::time::sleep(timer_expire).await; + } + + // Manager::gc(manager.captchas.clone()); + // let mcaptcha_addr = manager.get_captcha(new_id); + // assert_eq!(mcaptcha_addr.as_ref().unwrap().get_visitors(), 0); + // assert!(mcaptcha_addr.is_none()); + // + // assert!( + // manager.rm_captcha(new_id.into()).is_some()); + } + + #[actix_rt::test] + async fn counter_defense_works() { + let manager = Manager::new(1); + let id = "yo"; + manager.add_captcha(Arc::new(get_mcaptcha()), id.into()); + + let mut mcaptcha = manager + .add_visitor(&ManagerMessages::AddVisitor(id.to_string())) + .unwrap(); + assert_eq!(mcaptcha.difficulty_factor, LEVEL_1.0); + + race(&manager, id.to_string(), LEVEL_2).await; + mcaptcha = manager + .add_visitor(&ManagerMessages::AddVisitor(id.to_string())) + .unwrap(); + assert_eq!(mcaptcha.difficulty_factor, LEVEL_2.1); + tokio::time::sleep(Duration::new(DURATION * 2, 0)).await; + assert_eq!(manager.get_captcha(id).unwrap().get_visitors(), 0); + } +} +// +//#[cfg(test)] +//pub mod tests { +// use super::*; +// use crate::defense::*; +// use crate::errors::*; +// use crate::mcaptcha; +// use crate::mcaptcha::MCaptchaBuilder; +// +// // constants for testing +// // (visitor count, level) +// pub const LEVEL_1: (u32, u32) = (50, 50); +// pub const LEVEL_2: (u32, u32) = (500, 500); +// pub const DURATION: u64 = 5; +// +// type MyActor = Addr; +// +// pub fn get_defense() -> Defense { +// DefenseBuilder::default() +// .add_level( +// LevelBuilder::default() +// .visitor_threshold(LEVEL_1.0) +// .difficulty_factor(LEVEL_1.1) +// .unwrap() +// .build() +// .unwrap(), +// ) +// .unwrap() +// .add_level( +// LevelBuilder::default() +// .visitor_threshold(LEVEL_2.0) +// .difficulty_factor(LEVEL_2.1) +// .unwrap() +// .build() +// .unwrap(), +// ) +// .unwrap() +// .build() +// .unwrap() +// } +// +// async fn race(addr: Addr, count: (u32, u32)) { +// for _ in 0..count.0 as usize - 1 { +// let _ = addr.send(AddVisitor).await.unwrap(); +// } +// } +// +// pub fn get_counter() -> Counter { +// get_mcaptcha().into() +// } +// +// pub fn get_mcaptcha() -> MCaptcha { +// MCaptchaBuilder::default() +// .defense(get_defense()) +// .duration(DURATION) +// .build() +// .unwrap() +// } +// +// #[test] +// fn mcaptcha_decrement_by_works() { +// let mut m = get_mcaptcha(); +// for _ in 0..100 { +// m.add_visitor(); +// } +// m.decrement_visitor_by(50); +// assert_eq!(m.get_visitors(), 50); +// m.decrement_visitor_by(500); +// assert_eq!(m.get_visitors(), 0); +// } +// + +// +// #[actix_rt::test] +// async fn counter_defense_loosenup_works() { +// //use actix::clock::sleep; +// //use actix::clock::delay_for; +// let addr: MyActor = get_counter().start(); +// +// race(addr.clone(), LEVEL_2).await; +// race(addr.clone(), LEVEL_2).await; +// let mut mcaptcha = addr.send(AddVisitor).await.unwrap(); +// assert_eq!(mcaptcha.difficulty_factor, LEVEL_2.1); +// +// let duration = Duration::new(DURATION, 0); +// sleep(duration).await; +// //delay_for(duration).await; +// +// mcaptcha = addr.send(AddVisitor).await.unwrap(); +// assert_eq!(mcaptcha.difficulty_factor, LEVEL_1.1); +// } +// +// #[test] +// fn test_mcatcptha_builder() { +// let defense = get_defense(); +// let m = MCaptchaBuilder::default() +// .duration(0) +// .defense(defense.clone()) +// .build(); +// +// assert_eq!(m.err(), Some(CaptchaError::CaptchaDurationZero)); +// +// let m = MCaptchaBuilder::default().duration(30).build(); +// assert_eq!( +// m.err(), +// Some(CaptchaError::PleaseSetValue("defense".into())) +// ); +// +// let m = MCaptchaBuilder::default().defense(defense).build(); +// assert_eq!( +// m.err(), +// Some(CaptchaError::PleaseSetValue("duration".into())) +// ); +// } +// +// #[actix_rt::test] +// async fn get_current_visitor_count_works() { +// let addr: MyActor = get_counter().start(); +// +// addr.send(AddVisitor).await.unwrap(); +// addr.send(AddVisitor).await.unwrap(); +// addr.send(AddVisitor).await.unwrap(); +// addr.send(AddVisitor).await.unwrap(); +// let count = addr.send(GetCurrentVisitorCount).await.unwrap(); +// +// assert_eq!(count, 4); +// } +// +// #[actix_rt::test] +// #[should_panic] +// async fn stop_works() { +// let addr: MyActor = get_counter().start(); +// addr.send(Stop).await.unwrap(); +// addr.send(AddVisitor).await.unwrap(); +// } +// +// #[actix_rt::test] +// async fn get_set_internal_data_works() { +// let addr: MyActor = get_counter().start(); +// let mut mcaptcha = addr.send(GetInternalData).await.unwrap(); +// mcaptcha.add_visitor(); +// addr.send(SetInternalData(mcaptcha.clone())).await.unwrap(); +// assert_eq!( +// addr.send(GetInternalData).await.unwrap().get_visitors(), +// mcaptcha.get_visitors() +// ); +// +// let duration = Duration::new(mcaptcha.get_duration() + 3, 0); +// sleep(duration).await; +// assert_eq!(addr.send(GetCurrentVisitorCount).await.unwrap(), 0); +// } +// +// #[actix_rt::test] +// async fn bulk_delete_works() { +// let addr: MyActor = get_counter().start(); +// addr.send(AddVisitor).await.unwrap(); +// addr.send(AddVisitor).await.unwrap(); +// assert_eq!(addr.send(GetCurrentVisitorCount).await.unwrap(), 2); +// addr.send(BulkDecrement(3)).await.unwrap(); +// assert_eq!(addr.send(GetCurrentVisitorCount).await.unwrap(), 0); +// } +//} diff --git a/src/mcaptcha/mod.rs b/src/mcaptcha/mod.rs new file mode 100644 index 0000000..8ec1c74 --- /dev/null +++ b/src/mcaptcha/mod.rs @@ -0,0 +1,3 @@ +pub mod cache; +mod defense; +pub mod mcaptcha; diff --git a/src/network/raft_network_impl.rs b/src/network/raft_network_impl.rs index 7e7e093..f1b6bc7 100644 --- a/src/network/raft_network_impl.rs +++ b/src/network/raft_network_impl.rs @@ -16,7 +16,11 @@ * along with this program. If not, see . */ use std::sync::Arc; +use std::time::Duration; +use super::management::HealthStatus; +use crate::DcacheNodeId; +use crate::DcacheTypeConfig; use async_trait::async_trait; use openraft::error::InstallSnapshotError; use openraft::error::NetworkError; @@ -34,17 +38,37 @@ use openraft::RaftNetworkFactory; use serde::de::DeserializeOwned; use serde::Serialize; use tokio::sync::mpsc::Sender; +use tonic::transport::channel::Channel; +use tower_service::Service; -use super::management::HealthStatus; -use crate::DcacheNodeId; -use crate::DcacheTypeConfig; - +use crate::pool::*; use crate::protobuf::dcache::dcache_service_client::DcacheServiceClient; use crate::protobuf::dcache::RaftRequest; -#[derive(Clone)] +#[derive(Debug)] +struct ChannelManager {} + +#[async_trait] +impl ItemManager for ChannelManager { + type Key = String; + type Item = Channel; + type Error = tonic::transport::Error; + + async fn build(&self, addr: &Self::Key) -> Result { + tonic::transport::Endpoint::new(addr.clone())? + .connect() + .await + } + + async fn check(&self, mut ch: Channel) -> Result { + futures::future::poll_fn(|cx| (&mut ch).poll_ready(cx)).await?; + Ok(ch) + } +} + pub struct DcacheNetwork { pub signal: Sender, + conn_pool: Pool, } pub enum RPCType { @@ -55,7 +79,13 @@ pub enum RPCType { impl DcacheNetwork { pub fn new(signal: Sender) -> Self { - Self { signal } + let mgr = ChannelManager {}; + + Self { + signal, + + conn_pool: Pool::new(mgr, Duration::from_millis(50)), + } } pub async fn send_rpc( &self, @@ -69,11 +99,7 @@ impl DcacheNetwork { Err: std::error::Error + DeserializeOwned, Resp: DeserializeOwned, { - let addr = &target_node.addr; - - let url = format!("http://{}", addr); - - let mut client = DcacheServiceClient::connect(url).await.unwrap(); + let mut client = self.make_client(&target, target_node).await; let res = match event { RPCType::Vote => { @@ -117,6 +143,23 @@ impl DcacheNetwork { } } } + + pub async fn make_client( + &self, + target: &DcacheNodeId, + target_node: &BasicNode, + ) -> DcacheServiceClient { + let addr = format!("http://{}", &target_node.addr); + + tracing::debug!("connect: target={}: {}", target, addr); + + let channel = self.conn_pool.get(&addr).await.unwrap(); + let client = DcacheServiceClient::new(channel); + + tracing::info!("connected: target={}: {}", target, addr); + + client + } } // NOTE: This could be implemented also on `Arc`, but since it's empty, implemented diff --git a/src/pool.rs b/src/pool.rs new file mode 100644 index 0000000..781e5d6 --- /dev/null +++ b/src/pool.rs @@ -0,0 +1,154 @@ +use std::collections::HashMap; +use std::fmt::Debug; +use std::hash::Hash; +use std::marker::PhantomData; +use std::sync::Arc; +use std::sync::Mutex; +use std::time::Duration; + +use async_trait::async_trait; +use tokio::time::sleep; +//use log::debug; + +//use crate::base::tokio; + +pub type PoolItem = Arc>>; + +/// To build or check an item. +/// +/// When an item is requested, ItemManager `build()` one for the pool. +/// When an item is reused, ItemManager `check()` if it is still valid. +#[async_trait] +pub trait ItemManager { + type Key; + type Item; + type Error; + + /// Make a new item to put into the pool. + /// + /// An impl should hold that an item returned by `build()` is passed `check()`. + async fn build(&self, key: &Self::Key) -> Result; + + /// Check if an existent item still valid. + /// + /// E.g.: check if a tcp connection still alive. + /// If the item is valid, `check` should return it in a Ok(). + /// Otherwise, the item should be dropped and `check` returns an Err(). + async fn check(&self, item: Self::Item) -> Result; +} + +/// Pool assumes the items in it is `Clone`, thus it keeps only one item for each key. +#[allow(clippy::type_complexity)] +#[derive(Debug, Clone)] +pub struct Pool +where + Mgr: ItemManager + Debug, +{ + /// The first sleep time when `build()` fails. + /// The next sleep time is 2 times of the previous one. + pub initial_retry_interval: Duration, + + /// Pooled items indexed by key. + pub items: Arc>>>, + + manager: Mgr, + + err_type: PhantomData, + + n_retries: u32, +} + +impl Pool +where + Mgr: ItemManager + Debug, + Mgr::Key: Clone + Eq + Hash + Send + Debug, + Mgr::Item: Clone + Sync + Send + Debug, + Mgr::Error: Sync + Debug, +{ + pub fn new(manager: Mgr, initial_retry_interval: Duration) -> Self { + Pool { + initial_retry_interval, + items: Default::default(), + manager, + err_type: Default::default(), + n_retries: 3, + } + } + + pub fn with_retries(mut self, retries: u32) -> Self { + self.n_retries = retries; + self + } + + pub fn item_manager(&self) -> &Mgr { + &self.manager + } + + /// Return an raw pool item. + /// + /// The returned one may be an uninitialized one, i.e., it contains a None. + /// The lock for `items` should not be held for long, e.g. when `build()` a new connection, it takes dozen ms. + fn get_pool_item(&self, key: &Mgr::Key) -> PoolItem { + let mut items = self.items.lock().unwrap(); + + if let Some(item) = items.get(key) { + item.clone() + } else { + let item = PoolItem::default(); + items.insert(key.clone(), item.clone()); + item + } + } + + /// Return a item, by cloning an existent one or making a new one. + /// + /// When returning an existent one, `check()` will be called on it to ensure it is still valid. + /// E.g., when returning a tcp connection. + // #[logcall::logcall(err = "debug")] + // #[minitrace::trace] + pub async fn get(&self, key: &Mgr::Key) -> Result { + let pool_item = self.get_pool_item(key); + + let mut guard = pool_item.lock().await; + let item_opt = (*guard).clone(); + + if let Some(ref item) = item_opt { + let check_res = self.manager.check(item.clone()).await; + // debug!("check reused item res: {:?}", check_res); + + if let Ok(itm) = check_res { + return Ok(itm); + } else { + // mark broken conn as deleted + *guard = None; + } + } + + let mut interval = self.initial_retry_interval; + + for i in 0..self.n_retries { + // debug!("build new item of key: {:?}", key); + + let new_item = self.manager.build(key).await; + + // debug!("build new item of key res: {:?}", new_item); + + match new_item { + Ok(x) => { + *guard = Some(x.clone()); + return Ok(x); + } + Err(err) => { + if i == self.n_retries - 1 { + return Err(err); + } + } + } + + sleep(interval).await; + interval *= 2; + } + + unreachable!("the loop should always return!"); + } +} diff --git a/src/protobuf.rs b/src/protobuf.rs index f049b6f..dd2f9b0 100644 --- a/src/protobuf.rs +++ b/src/protobuf.rs @@ -129,6 +129,36 @@ impl DcacheService for MyDcacheImpl { Ok(Response::new(res.into())) } + async fn retrieve_pow( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> + { + let req = request.into_inner(); + let sm = self.app.store.state_machine.read().await; + + let res = sm.results.retrieve_pow_config(req.into()); + + Ok(Response::new(dcache::OptionalRetrievePoWResponse { + result: res.map(|x| x.into()), + })) + } + + async fn delete_pow( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + let req = request.into_inner(); + let res = self + .app + .raft + .client_write(DcacheRequest::DeletePoW(CacheMessages::DeletePoW( + req.string, + ))) + .await; + Ok(Response::new(res.into())) + } + async fn cache_result( &self, request: tonic::Request, @@ -142,6 +172,62 @@ impl DcacheService for MyDcacheImpl { Ok(Response::new(res.into())) } + async fn verify_captcha_result( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + let req = request.into_inner(); + let sm = self.app.store.state_machine.read().await; + + let verified = sm.results.verify_captcha_result(req.into()); + + Ok(Response::new(dcache::CaptchaResultVerified { verified })) + } + + async fn delete_captcha_result( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + let req = request.into_inner(); + let res = self + .app + .raft + .client_write(DcacheRequest::DeleteCaptchaResult( + CacheMessages::DeleteCaptchaResult { token: req.token }, + )) + .await; + Ok(Response::new(res.into())) + } + + async fn captcha_exists( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + let req = request.into_inner(); + let sm = self.app.store.state_machine.read().await; + let exists = sm.counter.get_captcha(&req.id).is_some(); + Ok(Response::new(dcache::CaptchaExistsResponse { exists })) + } + + async fn get_visitor_count( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> + { + let req = request.into_inner(); + let sm = self.app.store.state_machine.read().await; + if let Some(captcha) = sm.counter.get_captcha(&req.id) { + let res = captcha.get_visitors(); + Ok(Response::new(dcache::OptionGetVisitorCountResponse { + result: Some(dcache::GetVisitorCountResponse { visitors: res }), + })) + } else { + Ok(Response::new(dcache::OptionGetVisitorCountResponse { + result: None, + })) + } + } + // type PipelineDcacheOpsStream = // Pin> + Send + 'static>>; @@ -195,7 +281,6 @@ impl DcacheService for MyDcacheImpl { _ => unimplemented!(), }, } - } PipelineReq::RenameCaptcha(rename_captcha_req) => { let res = self @@ -239,6 +324,35 @@ impl DcacheService for MyDcacheImpl { dcache_response: Some(InnerPipelineRes::Other(res.into())), } } + PipelineReq::CaptchaExists(captcha_exists_req) => { + let sm = self.app.store.state_machine.read().await; + let exists = sm.counter.get_captcha(&captcha_exists_req.id).is_some(); + let res = dcache::CaptchaExistsResponse { exists }; + drop(sm); + OuterPipelineRes { + dcache_response: Some(InnerPipelineRes::CaptchaExists(res)), + } + } + + PipelineReq::GetVisitorCount(get_visitor_count_req) => { + let sm = self.app.store.state_machine.read().await; + if let Some(captcha) = sm.counter.get_captcha(&get_visitor_count_req.id) { + let res = captcha.get_visitors(); + OuterPipelineRes { + dcache_response: Some(InnerPipelineRes::GetVisitorCount( + dcache::OptionGetVisitorCountResponse { + result: Some(dcache::GetVisitorCountResponse { visitors: res }), + }, + )), + } + } else { + OuterPipelineRes { + dcache_response: Some(InnerPipelineRes::GetVisitorCount( + dcache::OptionGetVisitorCountResponse { result: None }, + )), + } + } + } }; responses.push(res); } @@ -391,6 +505,27 @@ impl From for CacheMessages::CachePoW { } } +impl From for dcache::CachePowRequest { + fn from(value: CacheMessages::CachePoW) -> Self { + Self { + string: value.string, + difficulty_factor: value.difficulty_factor, + duration: value.duration, + key: value.key, + } + } +} + +impl From for dcache::RetrievePowResponse { + fn from(value: CacheMessages::CachedPoWConfig) -> Self { + Self { + difficulty_factor: value.difficulty_factor, + duration: value.duration, + key: value.key, + } + } +} + impl From for CacheMessages::CacheResult { fn from(value: dcache::CacheResultRequest) -> Self { Self { @@ -400,3 +535,12 @@ impl From for CacheMessages::CacheResult { } } } + +impl From for CacheMessages::VerifyCaptchaResult { + fn from(value: dcache::RetrievePowRequest) -> Self { + Self { + token: value.token, + key: value.key, + } + } +} diff --git a/src/store/mod.rs b/src/store/mod.rs index b7be3c9..f66fbe8 100644 --- a/src/store/mod.rs +++ b/src/store/mod.rs @@ -94,7 +94,9 @@ pub struct DcacheStateMachine { pub last_membership: StoredMembership, /// Application data. - pub data: Arc>, + // pub data: Arc>, + pub counter: crate::mcaptcha::mcaptcha::Manager, + pub results: crate::mcaptcha::cache::HashCache, } #[derive(Serialize, Deserialize, Clone)] @@ -103,42 +105,34 @@ struct PersistableStateMachine { last_membership: StoredMembership, - /// Application data. - data: HashMap, + counter: crate::mcaptcha::mcaptcha::Manager, + results: crate::mcaptcha::cache::HashCache, } impl PersistableStateMachine { async fn from_statemachine(m: &DcacheStateMachine) -> Self { - let internal_data = m - .data - .master - .send(GetInternalData) - .await - .unwrap() - .await - .unwrap() - .unwrap(); + let counter = m.counter.clone(); + let results = m.results.clone(); Self { last_applied_log: m.last_applied_log, last_membership: m.last_membership.clone(), - data: internal_data, + counter, + results, } } async fn to_statemachine( self, - data: Arc>, + counter: crate::mcaptcha::mcaptcha::Manager, + results: crate::mcaptcha::cache::HashCache, ) -> DcacheStateMachine { - data.master - .send(SetInternalData { - mcaptcha: self.data, - }) - .await - .unwrap(); + self.counter.clean_all_after_cold_start(counter).await; + self.results.clean_all_after_cold_start(results).await; DcacheStateMachine { last_applied_log: self.last_applied_log, last_membership: self.last_membership, - data, + results: self.results, + counter: self.counter, } } } @@ -165,7 +159,8 @@ impl DcacheStore { let state_machine = RwLock::new(DcacheStateMachine { last_applied_log: Default::default(), last_membership: Default::default(), - data: system::init_system(salt), + counter: crate::mcaptcha::mcaptcha::Manager::new(30), + results: crate::mcaptcha::cache::HashCache::default(), }); Self { @@ -391,83 +386,42 @@ impl RaftStorage for Arc { EntryPayload::Blank => res.push(DcacheResponse::Empty), EntryPayload::Normal(ref req) => match req { DcacheRequest::AddVisitor(msg) => { - let r = sm - .data - .master - .send(msg.clone()) - .await - .unwrap() - .await - .unwrap() - .unwrap(); + let r = sm.counter.add_visitor(msg); res.push(DcacheResponse::AddVisitorResult(r)); } DcacheRequest::AddCaptcha(msg) => { - sm.data - .master - .send(msg.clone()) - .await - .unwrap() - .await - .unwrap() - .unwrap(); + sm.counter + .add_captcha(Arc::new((&msg.mcaptcha).into()), msg.id.clone()); res.push(DcacheResponse::Empty); } DcacheRequest::RenameCaptcha(msg) => { - sm.data - .master - .send(msg.clone()) - .await - .unwrap() - .await - .unwrap() - .unwrap(); + sm.counter.rename(&msg.name, msg.rename_to.clone()); res.push(DcacheResponse::Empty); } DcacheRequest::RemoveCaptcha(msg) => { - sm.data - .master - .send(msg.clone()) - .await - .unwrap() - .await - .unwrap() - .unwrap(); + sm.counter.rm_captcha(&msg.0); res.push(DcacheResponse::Empty); } // cache DcacheRequest::CachePoW(msg) => { - sm.data - .cache - .send(msg.clone()) - .await - .unwrap() - .await - .unwrap() - .unwrap(); + sm.results.cache_pow(msg.clone()); res.push(DcacheResponse::Empty); } DcacheRequest::DeletePoW(msg) => { - sm.data.cache.send(msg.clone()).await.unwrap().unwrap(); + sm.results.remove_pow_config(&msg.0); + // sm.data.cache.send(msg.clone()).await.unwrap().unwrap(); res.push(DcacheResponse::Empty); } DcacheRequest::CacheResult(msg) => { - sm.data - .cache - .send(msg.clone()) - .await - .unwrap() - .await - .unwrap() - .unwrap(); + sm.results.cache_result(msg.clone()); res.push(DcacheResponse::Empty); } DcacheRequest::DeleteCaptchaResult(msg) => { - sm.data.cache.send(msg.clone()).await.unwrap().unwrap(); + sm.results.remove_cache_result(&msg.token); res.push(DcacheResponse::Empty); } }, @@ -514,7 +468,7 @@ impl RaftStorage for Arc { })?; let mut state_machine = self.state_machine.write().await; let updated_state_machine = updated_state_machine - .to_statemachine(state_machine.data.clone()) + .to_statemachine(state_machine.counter.clone(), state_machine.results.clone()) .await; *state_machine = updated_state_machine; } @@ -549,3 +503,19 @@ impl RaftStorage for Arc { self.clone() } } + +#[cfg(test)] +mod tests { + use super::*; + + async fn provision_dcache_store() -> Arc { + Arc::new(DcacheStore::new( + "adsfasdfasdfadsfadfadfadfadsfasdfasdfasdfasdf".into(), + )) + } + + #[test] + fn test_dcache_store() { + openraft::testing::Suite::test_all(provision_dcache_store).unwrap(); + } +}