diff --git a/docker/docker_jit_monitor/Cargo.lock b/docker/docker_jit_monitor/Cargo.lock index 3e4557f..5043af2 100644 --- a/docker/docker_jit_monitor/Cargo.lock +++ b/docker/docker_jit_monitor/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aho-corasick" @@ -28,9 +28,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -43,36 +43,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", - "once_cell", + "once_cell_polyfill", "windows-sys 0.59.0", ] @@ -111,9 +111,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "bumpalo" @@ -138,9 +138,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -163,9 +163,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.26" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" +checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9" dependencies = [ "clap_builder", "clap_derive", @@ -173,40 +173,40 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.26" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" +checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d" dependencies = [ "anstream", "anstyle", "clap_lex", "strsim", - "terminal_size 0.4.1", + "terminal_size 0.4.2", ] [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.104", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" @@ -215,7 +215,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -232,11 +232,11 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "ctrlc" -version = "3.4.5" +version = "3.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" +checksum = "46f93780a459b7d656ef7f071fe699c4d3d2cb201c4b24d085b6ddc505276e73" dependencies = [ - "nix 0.29.0", + "nix 0.30.1", "windows-sys 0.59.0", ] @@ -287,7 +287,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.96", + "syn 2.0.104", ] [[package]] @@ -298,7 +298,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.96", + "syn 2.0.104", ] [[package]] @@ -343,7 +343,7 @@ dependencies = [ "log", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -364,25 +364,25 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[package]] name = "errno" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -460,12 +460,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "iana-time-zone" version = "0.1.61" @@ -534,9 +528,33 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] [[package]] name = "js-sys" @@ -556,9 +574,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libredox" @@ -566,7 +584,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "libc", ] @@ -590,9 +608,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "lock_api" @@ -606,15 +624,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "minimal-lexical" @@ -628,18 +646,18 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "cfg-if", "libc", ] [[package]] name = "nix" -version = "0.29.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "cfg-if", "cfg_aliases", "libc", @@ -681,9 +699,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "phf" @@ -729,6 +753,21 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -746,18 +785,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -867,15 +906,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.43" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "errno", "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", + "linux-raw-sys 0.9.4", + "windows-sys 0.60.2", ] [[package]] @@ -886,9 +925,9 @@ checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "scopeguard" @@ -904,29 +943,29 @@ checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.104", ] [[package]] name = "serde_json" -version = "1.0.135" +version = "1.0.141" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" dependencies = [ "itoa", "memchr", @@ -959,7 +998,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.104", ] [[package]] @@ -1039,9 +1078,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.96" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -1060,11 +1099,11 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" dependencies = [ - "rustix 0.38.43", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -1079,11 +1118,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -1094,18 +1133,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.104", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.104", ] [[package]] @@ -1147,7 +1186,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdc959ba33f1deec76a55dd1fc7f6265b404dfb6155dc3c14f21551fa60e1a09" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.1", "glob", "heapless", "libc", @@ -1157,9 +1196,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "usb-ids" @@ -1214,7 +1253,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -1236,7 +1275,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1299,6 +1338,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -1323,13 +1371,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -1342,6 +1406,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -1354,6 +1424,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -1366,12 +1442,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -1384,6 +1472,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -1396,6 +1490,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -1408,6 +1508,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -1420,6 +1526,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "zerocopy" version = "0.7.35" @@ -1438,5 +1550,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.104", ] diff --git a/docker/docker_jit_monitor/Cargo.toml b/docker/docker_jit_monitor/Cargo.toml index 807b311..0f53740 100644 --- a/docker/docker_jit_monitor/Cargo.toml +++ b/docker/docker_jit_monitor/Cargo.toml @@ -4,12 +4,12 @@ version = "0.1.0" edition = "2021" [dependencies] -clap = { version = "4.2", features = ["derive"] } +clap = { version = "4.5", features = ["derive"] } anyhow = "1" log = "0.4" -env_logger = "0.11.4" +env_logger = "0.11.8" serde = { version = "1", features = ["derive"]} -thiserror = "2.0.11" -serde_json = "1.0.135" -ctrlc = "3.4.5" +thiserror = "2.0.12" +serde_json = "1.0.141" +ctrlc = "3.4.7" cyme = "1.7" diff --git a/docker/docker_jit_monitor/servo_ci.service b/docker/docker_jit_monitor/servo_ci.service index 2a0dbdd..883d75f 100644 --- a/docker/docker_jit_monitor/servo_ci.service +++ b/docker/docker_jit_monitor/servo_ci.service @@ -6,6 +6,7 @@ Description=Run the servo_ci runner Environment="DOCKER_HOST=unix:///run/user//docker.sock" Environment="GITHUB_TOKEN=" Environment="SERVO_CI_GITHUB_API_SCOPE=" +Environment="RUNNER_SUFFIX=" ExecStart=/home/servo_ci/ci-runners/docker/docker_jit_monitor/target/release/docker_jit_monitor ExecStopPost=sh -c 'docker ps -q | xargs docker stop' ProtectKernelModules=no diff --git a/docker/docker_jit_monitor/src/main.rs b/docker/docker_jit_monitor/src/main.rs index 1a5188d..a23af90 100644 --- a/docker/docker_jit_monitor/src/main.rs +++ b/docker/docker_jit_monitor/src/main.rs @@ -1,6 +1,7 @@ +use serde::Deserialize; use serde_json::Value; use std::{ - process::{self, Command}, + process::{self, Command, Output}, string::FromUtf8Error, sync::atomic::{AtomicU32, AtomicU64, Ordering}, thread, @@ -13,6 +14,13 @@ use clap::Parser; use log::{debug, error, info, warn}; static RUNNER_ID: AtomicU64 = AtomicU64::new(0); static EXITING: AtomicU32 = AtomicU32::new(0); +const MAX_SPAWN_RETRIES: u32 = 10; +/// The final builder name will be {BUILDER_NAME}.{RUNNER_SUFFIX_ENV}.{RUNNER_ID}, same for RUNNER +const BUILDER_NAME: &str = "dresden-hos-builder"; +const RUNNER_NAME: &str = "dresden-hos-runner"; +const RUNNER_SUFFIX_ENV: &str = "RUNNER_SUFFIX"; +/// How long the loop will sleep. +const LOOP_SLEEP: u64 = 30; #[derive(Parser, Debug)] #[clap(version)] @@ -43,8 +51,10 @@ impl RunnerConfig { RunnerConfig { servo_ci_scope: servo_ci_scope.to_string(), name: format!( - "dresden-hos-builder.{}", - RUNNER_ID.fetch_add(1, Ordering::Relaxed) + "{}.{}.{}", + BUILDER_NAME, + std::env::var(RUNNER_SUFFIX_ENV).unwrap_or_default(), + RUNNER_ID.fetch_add(1, Ordering::Relaxed), ), runner_group_id: 1, labels: vec!["self-hosted".into(), OS_TAG.into(), "hos-builder".into()], @@ -80,12 +90,14 @@ impl RunnerConfig { ) }) .collect(); - let device = devices.get(0).ok_or(SpawnRunnerError::NoHdcDeviceFound)?; + let device = devices.first().ok_or(SpawnRunnerError::NoHdcDeviceFound)?; Ok(RunnerConfig { servo_ci_scope: servo_ci_scope.to_string(), name: format!( - "dresden-hos-runner.{}", + "{}.{}.{}", + RUNNER_NAME, + std::env::var(RUNNER_SUFFIX_ENV).unwrap_or_default(), RUNNER_ID.fetch_add(1, Ordering::Relaxed) ), runner_group_id: 1, @@ -115,40 +127,48 @@ enum SpawnRunnerError { NoHdcDeviceFound, #[error("Failed to list USB devices")] LsUsbError, + #[error("Failed to deserialize list runners api")] + ListRunnersDeserialize(serde_json::Error), } -// todo: add arg for optional device to pass into the runner -fn spawn_runner(config: &RunnerConfig) -> Result { - // Note: octocrab apparently requires more coarse grained tokens compared to `gh`, so we use `gh`. +/// Function to call the api. Raw just is used spawnrunner. +/// This gives you the _executed_ cmd. +/// Notice that the api_endpoint needs a slash before it. The api is very peculious +/// with slashes and this is the easiest +/// Note: octocrab apparently requires more coarse grained tokens compared +/// to `gh`, so we use `gh`. +fn call_github_runner_api( + ci_scope: &str, + method: &str, + api_endpoint: &str, + raw: Option<&RunnerConfig>, +) -> Result { let mut cmd = Command::new("gh"); - let api_endpoint = format!( - "{}/actions/runners/generate-jitconfig", - config.servo_ci_scope - ); + let api_endpoint = format!("{ci_scope}/actions/runners{api_endpoint}"); cmd.args([ "api", "--method", - "POST", + method, "-H", "Accept: application/vnd.github+json", "-H", "X-GitHub-Api-Version: 2022-11-28", &api_endpoint, ]); - for label in &config.labels { - cmd.arg("--raw-field").arg(format!("labels[]={label}")); + if let Some(config) = raw { + for label in &config.labels { + cmd.arg("--raw-field").arg(format!("labels[]={label}")); + } + cmd.arg("--raw-field") + // Todo: perhaps add information if it has a device or not + .arg(format!("name={}", config.name)) + .arg("--raw-field") + .arg(format!("work_folder={}", config.work_folder)) + .arg("--field") + .arg(format!("runner_group_id={}", config.runner_group_id)); } - cmd.arg("--raw-field") - // Todo: perhaps have a count here? Or add information if it has a device or not - .arg(format!("name={}", config.name)) - .arg("--raw-field") - .arg(format!("work_folder={}", config.work_folder)) - .arg("--field") - .arg(format!("runner_group_id={}", config.runner_group_id)); - - let output = cmd - .output() - .map_err(|e| SpawnRunnerError::SpawnGhError(e))?; + + let output = cmd.output().map_err(SpawnRunnerError::SpawnGhError)?; if !output.status.success() { let stderr = String::from_utf8_lossy(&output.stderr).to_string(); return Err(SpawnRunnerError::GhApiError( @@ -156,6 +176,17 @@ fn spawn_runner(config: &RunnerConfig) -> Result Result { + let output = call_github_runner_api( + &config.servo_ci_scope, + "POST", + "/generate-jitconfig", + Some(config), + )?; let registration_info = String::from_utf8(output.stdout)?; let registration_info: Value = serde_json::from_str(®istration_info)?; @@ -184,22 +215,87 @@ fn spawn_runner(config: &RunnerConfig) -> Result, +} + +/// A github runner from the api +#[allow(unused)] +#[derive(Debug, Deserialize)] +struct GithubRunner { + id: u64, + name: String, + os: String, + status: String, + busy: bool, +} + +/// Deregisters and kills runners that are offline according to gh api. +/// This does not kill any docker containers. +/// Notice that the api endpoint might need a slash +fn kill_offline_runners(servo_ci_scope: &str) -> Result<(), SpawnRunnerError> { + let output = call_github_runner_api(servo_ci_scope, "GET", "", None)?; + let runner_response: ListRunnersResponse = + serde_json::from_slice(&output.stdout).map_err(SpawnRunnerError::ListRunnersDeserialize)?; + + info!("All runners {runner_response:?}"); + let filtered_response = runner_response + .runners + .iter() + .filter(|runner| runner.status.contains("offline")) + .filter(|runner| { + runner.name.contains(&format!( + "{}.{}", + RUNNER_NAME, + std::env::var(RUNNER_SUFFIX_ENV).unwrap_or_default() + )) || runner.name.contains(&format!( + "{}.{}", + BUILDER_NAME, + std::env::var(RUNNER_SUFFIX_ENV).unwrap_or_default() + )) + }); + + for i in filtered_response { + info!( + "Trying to stop container {} with id {} and status {}", + i.name, i.id, i.status + ); + call_github_runner_api( + servo_ci_scope, + "DELETE", + &(String::from("/") + &i.id.to_string()), + None, + )?; + } + Ok(()) +} + // Note: For now we assume linux x64. Compilation will fail on other platforms to remind us of that. #[cfg(target_os = "linux")] const OS_TAG: &str = "Linux"; +fn check_and_inc_retries(retries: &mut u32) { + *retries += 1; + if *retries > MAX_SPAWN_RETRIES { + println!("We had {retries} many times to spawn a runner/builder. It is not happening."); + std::process::exit(-1); + } +} + fn main() -> anyhow::Result<()> { env_logger::init(); info!("Starting monitor for selfhosted docker-based github runners!"); let args = Args::parse(); - println!("{:?}", args); + println!("{args:?}"); let servo_ci_scope = std::env::var("SERVO_CI_GITHUB_API_SCOPE") .context("SERVO_CI_GITHUB_API_SCOPE must be set.")?; @@ -219,34 +315,46 @@ fn main() -> anyhow::Result<()> { let mut running_hos_runners = vec![]; // Todo: implement something to reserve devices for the duration of the docker run child process. const MAX_HOS_RUNNERS: usize = 1; + let mut retries_builder = 0; + let mut retries_runner = 0; loop { let exiting = EXITING.load(Ordering::Relaxed); if running_hos_builders.len() < args.concurrent_builders.into() && exiting == 0 { match spawn_runner(&RunnerConfig::new_hos_builder(&servo_ci_scope)) { - Ok(child) => running_hos_builders.push(child), - Err(SpawnRunnerError::GhApiError(_, message)) if message.contains("gh: Already exists") => { + Ok(child) => { + retries_builder = 0; + running_hos_builders.push(child) + } + Err(SpawnRunnerError::GhApiError(_, message)) + if message.contains("gh: Already exists") => + { // Might happen if containers were not killed properly after a forced exit. - info!("Runner name already taken - Will retry with new name later.") + info!("Runner name already taken - Will retry with new name later."); + check_and_inc_retries(&mut retries_builder); } Err(e) => { error!("Failed to spawn JIT runner: {e:?}"); - thread::sleep(Duration::from_millis(500)); - // todo: abort if we retying likely wont solve the issue! + check_and_inc_retries(&mut retries_builder); } }; } if running_hos_runners.len() < MAX_HOS_RUNNERS && exiting == 0 { match RunnerConfig::new_hos_runner(&servo_ci_scope).and_then(|cfg| spawn_runner(&cfg)) { - Ok(child) => running_hos_runners.push(child), - Err(SpawnRunnerError::GhApiError(_, message)) if message.contains("gh: Already exists") => { + Ok(child) => { + retries_runner = 0; + running_hos_runners.push(child) + } + Err(SpawnRunnerError::GhApiError(_, message)) + if message.contains("gh: Already exists") => + { // Might happen if containers were not killed properly after a forced exit. - info!("Runner name already taken - Will retry with new name later.") + info!("Runner name already taken - Will retry with new name later."); + check_and_inc_retries(&mut retries_runner); } Err(e) => { error!("Failed to spawn JIT runner with HOS device: {e:?}"); - thread::sleep(Duration::from_millis(500)); - // todo: abort if we retying likely wont solve the issue! + check_and_inc_retries(&mut retries_runner); } }; } @@ -278,6 +386,7 @@ fn main() -> anyhow::Result<()> { } } } + running_hos_runners = still_running; if running_hos_builders.is_empty() @@ -301,6 +410,12 @@ fn main() -> anyhow::Result<()> { // Limit our spinning if we anyway wouldn't have capacity for a new builder. thread::sleep(Duration::from_millis(500)); } + + thread::sleep(Duration::from_secs(LOOP_SLEEP)); + // Check if some still running images are listed as offline from github api point of view + if let Err(e) = kill_offline_runners(&servo_ci_scope) { + error!("Killing offline runners failed with {e:?}"); + } } info!("Exiting....");