diff --git a/.gitignore b/.gitignore index 412f119ae5..ac5d6bfab3 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,5 @@ cookies.txt tests/tested_versions .gitlab/*-gen.yml .gitlab-ci-local/ +compile_commands.json +.cache/ diff --git a/Cargo.lock b/Cargo.lock index 7cc464f0ad..d1861197c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,17 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "ahash" version = "0.8.12" @@ -57,7 +68,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -122,6 +133,15 @@ version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "arc-swap" version = "1.7.1" @@ -317,7 +337,7 @@ checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", "cfg-if", - "libc 0.2.173", + "libc 0.2.177", "miniz_oxide", "object 0.36.7", "rustc-demangle", @@ -400,7 +420,7 @@ checksum = "95824d1dd4f20b4a4dfa63b72954e81914a718357231468180b30314e85057fa" dependencies = [ "cpp_demangle", "gimli 0.32.0", - "libc 0.2.173", + "libc 0.2.177", "memmap2", "miniz_oxide", "rustc-demangle", @@ -549,6 +569,15 @@ dependencies = [ "serde", ] +[[package]] +name = "bzip2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea8dcd42434048e4f7a304411d9273a411f647446c1234a65ce0554923f4cff" +dependencies = [ + "libbz2-rs-sys", +] + [[package]] name = "cadence" version = "1.5.0" @@ -641,7 +670,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" dependencies = [ "jobserver", - "libc 0.2.173", + "libc 0.2.177", "shlex", ] @@ -716,6 +745,16 @@ dependencies = [ "half", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clang-sys" version = "1.8.1" @@ -723,7 +762,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", - "libc 0.2.173", + "libc 0.2.177", "libloading", ] @@ -872,6 +911,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "constcat" version = "0.4.1" @@ -885,7 +930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" dependencies = [ "core-foundation-sys", - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -909,7 +954,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9e393a7668fe1fad3075085b86c781883000b4ede868f43627b34a87c8b7ded" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", "winapi 0.3.9", ] @@ -919,7 +964,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -1108,13 +1153,14 @@ dependencies = [ "clap", "criterion", "datadog-ddsketch", + "datadog-log", "datadog-trace-protobuf", + "datadog-trace-stats", "datadog-trace-utils", "ddcommon 0.0.1", "ddtelemetry", "dogstatsd-client", "either", - "hashbrown 0.15.2", "http", "http-body-util", "httpmock", @@ -1140,7 +1186,7 @@ version = "21.0.0" source = "git+https://github.com/DataDog/libdatadog?rev=0b59f64c4fc08105e5b73c5a0752ced3cf8f653e#0b59f64c4fc08105e5b73c5a0752ced3cf8f653e" dependencies = [ "allocator-api2", - "libc 0.2.173", + "libc 0.2.177", "windows-sys 0.52.0", ] @@ -1159,7 +1205,7 @@ dependencies = [ "ddtelemetry", "goblin", "http", - "libc 0.2.173", + "libc 0.2.177", "nix", "num-derive", "num-traits", @@ -1189,7 +1235,7 @@ dependencies = [ "ddcommon 0.0.1", "ddcommon-ffi 0.0.1", "function_name", - "libc 0.2.173", + "libc 0.2.177", "serde", "serde_json", "symbolic-common", @@ -1219,7 +1265,7 @@ dependencies = [ "futures", "glibc_version", "io-lifetimes", - "libc 0.2.173", + "libc 0.2.177", "memfd", "nix", "page_size", @@ -1338,6 +1384,18 @@ dependencies = [ "uuid", ] +[[package]] +name = "datadog-log" +version = "0.0.1" +dependencies = [ + "chrono", + "ddcommon-ffi 0.0.1", + "tempfile", + "tracing", + "tracing-appender", + "tracing-subscriber", +] + [[package]] name = "datadog-php-profiling" version = "0.0.0" @@ -1360,7 +1418,7 @@ dependencies = [ "ddcommon 21.0.0", "env_logger 0.11.6", "lazy_static", - "libc 0.2.173", + "libc 0.2.177", "log", "once_cell", "perfcnt", @@ -1469,7 +1527,7 @@ dependencies = [ "http-body-util", "httpmock", "hyper", - "libc 0.2.173", + "libc 0.2.177", "manual_future", "memory-stats", "microseh", @@ -1513,7 +1571,7 @@ dependencies = [ "ddtelemetry-ffi", "dogstatsd-client", "http", - "libc 0.2.173", + "libc 0.2.177", "paste", "rmp-serde", "tempfile", @@ -1553,6 +1611,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "datadog-trace-stats" +version = "0.0.1" +dependencies = [ + "criterion", + "datadog-ddsketch", + "datadog-trace-protobuf", + "datadog-trace-utils", + "hashbrown 0.15.2", + "rand 0.8.5", +] + [[package]] name = "datadog-trace-utils" version = "0.0.1" @@ -1588,6 +1658,22 @@ dependencies = [ "zstd", ] +[[package]] +name = "datadog-tracer-flare" +version = "0.0.1" +dependencies = [ + "anyhow", + "datadog-remote-config", + "datadog-trace-utils", + "ddcommon 0.0.1", + "hyper", + "serde_json", + "tempfile", + "tokio", + "walkdir", + "zip", +] + [[package]] name = "ddcommon" version = "0.0.1" @@ -1606,7 +1692,7 @@ dependencies = [ "hyper-rustls", "hyper-util", "indexmap 2.7.1", - "libc 0.2.173", + "libc 0.2.177", "maplit", "nix", "pin-project", @@ -1641,7 +1727,7 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "libc 0.2.173", + "libc 0.2.177", "nix", "pin-project", "regex", @@ -1698,6 +1784,7 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", + "libc 0.2.177", "serde", "serde_json", "sys-info", @@ -1706,6 +1793,7 @@ dependencies = [ "tracing", "tracing-subscriber", "uuid", + "winver", ] [[package]] @@ -1717,7 +1805,7 @@ dependencies = [ "ddcommon-ffi 0.0.1", "ddtelemetry", "function_name", - "libc 0.2.173", + "libc 0.2.177", "paste", "tempfile", ] @@ -1739,6 +1827,7 @@ dependencies = [ "datadog-sidecar", "datadog-sidecar-ffi", "datadog-trace-utils", + "datadog-tracer-flare", "ddcommon 0.0.1", "ddcommon-ffi 0.0.1", "ddtelemetry", @@ -1748,7 +1837,7 @@ dependencies = [ "http", "itertools 0.11.0", "lazy_static", - "libc 0.2.173", + "libc 0.2.177", "log", "paste", "regex", @@ -1776,6 +1865,12 @@ dependencies = [ "uuid", ] +[[package]] +name = "deflate64" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26bf8fc351c5ed29b5c2f0cbbac1b209b74f60ecd62e675a998df72c49af5204" + [[package]] name = "deranged" version = "0.3.11" @@ -1786,6 +1881,17 @@ dependencies = [ "serde", ] +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "diff" version = "0.1.13" @@ -1800,6 +1906,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", + "subtle", ] [[package]] @@ -1923,7 +2030,7 @@ version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", "windows-sys 0.59.0", ] @@ -1968,11 +2075,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" dependencies = [ "crc32fast", + "libz-rs-sys", "miniz_oxide", ] @@ -2162,7 +2270,7 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", - "libc 0.2.173", + "libc 0.2.177", "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -2174,7 +2282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ "cfg-if", - "libc 0.2.173", + "libc 0.2.177", "r-efi", "wasi 0.14.2+wasi-0.2.4", ] @@ -2355,6 +2463,15 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + [[package]] name = "home" version = "0.5.9" @@ -2549,7 +2666,7 @@ dependencies = [ "http", "http-body", "hyper", - "libc 0.2.173", + "libc 0.2.177", "pin-project-lite", "socket2", "tokio", @@ -2747,6 +2864,15 @@ dependencies = [ "serde", ] +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + [[package]] name = "integer-encoding" version = "3.0.4" @@ -2760,7 +2886,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi 0.3.9", - "libc 0.2.173", + "libc 0.2.177", "windows-sys 0.48.0", ] @@ -2771,7 +2897,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ "hermit-abi 0.4.0", - "libc 0.2.173", + "libc 0.2.177", "windows-sys 0.52.0", ] @@ -2820,7 +2946,7 @@ version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -2855,6 +2981,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "libbz2-rs-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" + [[package]] name = "libc" version = "0.1.12" @@ -2863,9 +2995,9 @@ checksum = "e32a70cf75e5846d53a673923498228bbec6a8624708a9ea5645f075d6276122" [[package]] name = "libc" -version = "0.2.173" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" @@ -2877,12 +3009,41 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "liblzma" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73c36d08cad03a3fbe2c4e7bb3a9e84c57e4ee4135ed0b065cade3d98480c648" +dependencies = [ + "liblzma-sys", +] + +[[package]] +name = "liblzma-sys" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01b9596486f6d60c3bbe644c0e1be1aa6ccc472ad630fe8927b456973d7cb736" +dependencies = [ + "cc", + "libc 0.2.177", + "pkg-config", +] + [[package]] name = "libm" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +[[package]] +name = "libz-rs-sys" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" +dependencies = [ + "zlib-rs", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -2905,6 +3066,12 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + [[package]] name = "log" version = "0.4.25" @@ -2971,7 +3138,7 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -2989,7 +3156,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c73f5c649995a115e1a0220b35e4df0a1294500477f97a91d0660fb5abeb574a" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", "windows-sys 0.52.0", ] @@ -3000,7 +3167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26b2a7c5ccfb370edd57fda423f3a551516ee127e10bc22a6215e8c63b20a38" dependencies = [ "cc", - "libc 0.2.173", + "libc 0.2.177", "windows-sys 0.42.0", ] @@ -3028,9 +3195,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", "simd-adler32", @@ -3042,7 +3209,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -3081,7 +3248,7 @@ dependencies = [ "bitflags 2.8.0", "cfg-if", "cfg_aliases", - "libc 0.2.173", + "libc 0.2.177", "memoffset", ] @@ -3168,7 +3335,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ "hermit-abi 0.3.9", - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -3286,7 +3453,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", "winapi 0.3.9", ] @@ -3313,7 +3480,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", - "libc 0.2.173", + "libc 0.2.177", "redox_syscall", "smallvec", "windows-targets 0.52.6", @@ -3334,6 +3501,16 @@ dependencies = [ "smallvec", ] +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -3347,7 +3524,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ba1fd955270ca6f8bd8624ec0c4ee1a251dd3cc0cc18e1e2665ca8f5acb1501" dependencies = [ "bitflags 1.3.2", - "libc 0.2.173", + "libc 0.2.177", "mmap", "nom 4.2.3", "x86", @@ -3497,6 +3674,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "ppmd-rust" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c834641d8ad1b348c9ee86dec3b9840d805acd5f24daa5f90c788951a52ff59b" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -3512,7 +3695,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "059a34f111a9dee2ce1ac2826a68b24601c4298cfeb1a587c3cb493d5ab46f52" dependencies = [ - "libc 0.2.173", + "libc 0.1.12", "nix", ] @@ -3742,7 +3925,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" dependencies = [ "fuchsia-cprng", - "libc 0.2.173", + "libc 0.2.177", "rand_core 0.3.1", "rdrand", "winapi 0.3.9", @@ -3754,7 +3937,7 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", "rand_chacha 0.3.1", "rand_core 0.6.4", ] @@ -3980,7 +4163,7 @@ dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", - "libc 0.2.173", + "libc 0.2.177", "untrusted", "windows-sys 0.52.0", ] @@ -3991,7 +4174,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8a29d87a652dc4d43c586328706bb5cdff211f3f39a530f240b53f7221dab8e" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -4055,7 +4238,7 @@ checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" dependencies = [ "bitflags 2.8.0", "errno", - "libc 0.2.173", + "libc 0.2.177", "linux-raw-sys", "windows-sys 0.59.0", ] @@ -4205,7 +4388,7 @@ dependencies = [ "bitflags 2.8.0", "core-foundation", "core-foundation-sys", - "libc 0.2.173", + "libc 0.2.177", "security-framework-sys", ] @@ -4216,7 +4399,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -4234,7 +4417,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "604b71b8fc267e13bb3023a2c901126c8f349393666a6d98ac1ae5729b701798" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", "tokio", ] @@ -4402,7 +4585,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -4465,7 +4648,7 @@ version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ - "libc 0.2.173", + "libc 0.2.177", "windows-sys 0.52.0", ] @@ -4586,7 +4769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" dependencies = [ "cc", - "libc 0.2.173", + "libc 0.2.177", ] [[package]] @@ -4849,7 +5032,7 @@ checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", - "libc 0.2.173", + "libc 0.2.177", "mio", "parking_lot", "pin-project-lite", @@ -5057,6 +5240,18 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" version = "0.1.28" @@ -5102,6 +5297,16 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.19" @@ -5112,12 +5317,15 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", + "tracing-serde", ] [[package]] @@ -5440,6 +5648,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows" version = "0.51.1" @@ -5824,6 +6041,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winver" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e0e7162b9e282fd75a0a832cce93994bdb21208d848a418cd05a5fdd9b9ab33" +dependencies = [ + "windows 0.48.0", +] + [[package]] name = "wit-bindgen-rt" version = "0.39.0" @@ -5957,6 +6183,20 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] [[package]] name = "zerovec" @@ -5980,6 +6220,53 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "zip" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1" +dependencies = [ + "aes", + "arbitrary", + "bzip2", + "constant_time_eq", + "crc32fast", + "deflate64", + "flate2", + "getrandom 0.3.2", + "hmac", + "indexmap 2.7.1", + "liblzma", + "memchr", + "pbkdf2", + "ppmd-rust", + "sha1", + "time", + "zeroize", + "zopfli", + "zstd", +] + +[[package]] +name = "zlib-rs" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" + +[[package]] +name = "zopfli" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +dependencies = [ + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", +] + [[package]] name = "zstd" version = "0.13.3" diff --git a/components-rs/Cargo.toml b/components-rs/Cargo.toml index b22a015daf..66d8884b56 100644 --- a/components-rs/Cargo.toml +++ b/components-rs/Cargo.toml @@ -23,6 +23,7 @@ datadog-trace-utils = { path = "../libdatadog/datadog-trace-utils" } datadog-crashtracker-ffi = { path = "../libdatadog/datadog-crashtracker-ffi", default-features = false, features = ["collector"] } datadog-library-config-ffi = { path = "../libdatadog/datadog-library-config-ffi", default-features = false } spawn_worker = { path = "../libdatadog/spawn_worker" } +datadog-tracer-flare = { path = "../libdatadog/datadog-tracer-flare" } anyhow = { version = "1.0" } const-str = "0.5.6" itertools = "0.11.0" diff --git a/components-rs/remote_config.rs b/components-rs/remote_config.rs index 9b2eaddb3b..a0020376f2 100644 --- a/components-rs/remote_config.rs +++ b/components-rs/remote_config.rs @@ -1,3 +1,4 @@ +use crate::log::ddog_set_log_level; use crate::sidecar::MaybeShmLimiter; use datadog_live_debugger::debugger_defs::{DebuggerData, DebuggerPayload}; use datadog_live_debugger::{FilterList, LiveDebuggingData, ServiceConfiguration}; @@ -6,15 +7,17 @@ use datadog_live_debugger_ffi::evaluator::{ddog_register_expr_evaluator, Evaluat use datadog_live_debugger_ffi::send_data::{ ddog_debugger_diagnostics_create_unboxed, ddog_snapshot_redacted_type, }; +use datadog_remote_config::config::dynamic::{Configs, TracingSamplingRuleProvenance}; use datadog_remote_config::fetch::ConfigInvariants; use datadog_remote_config::{ RemoteConfigCapabilities, RemoteConfigData, RemoteConfigProduct, Target, }; -use datadog_remote_config::config::dynamic::{Configs, TracingSamplingRuleProvenance}; use datadog_sidecar::service::blocking::SidecarTransport; use datadog_sidecar::service::{InstanceId, QueueId}; use datadog_sidecar::shm_remote_config::{RemoteConfigManager, RemoteConfigUpdate}; use datadog_sidecar_ffi::ddog_sidecar_send_debugger_diagnostics; +use datadog_tracer_flare::zip::zip_and_send; +use datadog_tracer_flare::{ReturnAction, TracerFlareManager}; use ddcommon::tag::Tag; use ddcommon::Endpoint; use ddcommon_ffi::slice::AsBytes; @@ -22,12 +25,14 @@ use ddcommon_ffi::{CharSlice, MaybeError}; use itertools::Itertools; use regex_automata::dfa::regex::Regex; use serde::Serialize; +use std::any::Any; use std::borrow::Cow; use std::collections::hash_map::Entry; use std::collections::{HashMap, HashSet}; +use std::env; use std::ffi::c_char; use std::mem; -use std::sync::Arc; +use std::sync::{Arc, LazyLock}; use tracing::debug; type DynamicConfigUpdate = for<'a> extern "C" fn( @@ -39,6 +44,10 @@ type DynamicConfigUpdate = for<'a> extern "C" fn( static mut LIVE_DEBUGGER_CALLBACKS: Option = None; static mut DYNAMIC_CONFIG_UPDATE: Option = None; +// TODO figure out how to find uri to agent +static mut TRACER_FLARE_MANAGER: LazyLock = + LazyLock::new(|| TracerFlareManager::new("", "php")); + type VecRemoteConfigProduct = ddcommon_ffi::Vec; #[no_mangle] pub static mut DDTRACE_REMOTE_CONFIG_PRODUCTS: VecRemoteConfigProduct = ddcommon_ffi::Vec::new(); @@ -263,35 +272,86 @@ pub extern "C" fn ddog_process_remote_configs(remote_config: &mut RemoteConfigSt RemoteConfigUpdate::Add { value, limiter_index, - } => match value.data { - RemoteConfigData::LiveDebugger(debugger) => { - let val = Box::new((debugger, MaybeShmLimiter::open(limiter_index))); - let rc_ref = unsafe { mem::transmute(remote_config as *mut _) }; // sigh, borrow checker - let entry = remote_config.live_debugger.active.entry(value.config_id); - let (debugger, limiter) = &mut **match entry { - Entry::Occupied(mut e) => { - e.insert(val); - e.into_mut() + } => { + let tracer_flare_action = unsafe { + TRACER_FLARE_MANAGER + .handle_remote_config_data(&value.data) + .unwrap_or_else(|_| { + // TODO Log the error + ReturnAction::None + }) + }; + match value.data { + RemoteConfigData::LiveDebugger(debugger) => { + let val = Box::new((debugger, MaybeShmLimiter::open(limiter_index))); + let rc_ref = unsafe { mem::transmute(remote_config as *mut _) }; // sigh, borrow checker + let entry = remote_config.live_debugger.active.entry(value.config_id); + let (debugger, limiter) = &mut **match entry { + Entry::Occupied(mut e) => { + e.insert(val); + e.into_mut() + } + Entry::Vacant(e) => e.insert(val), + }; + apply_config(rc_ref, debugger, limiter); + } + RemoteConfigData::DynamicConfig(config_data) => { + let configs: Vec = config_data.lib_config.into(); + if !configs.is_empty() { + insert_new_configs( + &mut remote_config.dynamic_config.old_config_values, + &mut remote_config.dynamic_config.configs, + configs, + ); + remote_config.dynamic_config.active_config_path = Some(value.config_id); } - Entry::Vacant(e) => e.insert(val), - }; - apply_config(rc_ref, debugger, limiter); - } - RemoteConfigData::DynamicConfig(config_data) => { - let configs: Vec = config_data.lib_config.into(); - if !configs.is_empty() { - insert_new_configs( - &mut remote_config.dynamic_config.old_config_values, - &mut remote_config.dynamic_config.configs, - configs, - ); - remote_config.dynamic_config.active_config_path = Some(value.config_id); } + RemoteConfigData::TracerFlareTask(_) + | RemoteConfigData::TracerFlareConfig(_) => { + match tracer_flare_action { + // If the action returned is None, then nothing. + ReturnAction::None => (), + // If the action is Set with a specified LogLevel, + // then the SDK will have to take care of putting + // the right log level and start collection logs. + ReturnAction::Set(log_level) => { + let _ = log_level; + // TODO Set log level + } + // If the action is Unset, the SDK will have to put + // back the previous log level. + ReturnAction::Unset => { + // TODO Restore log level + } + // If the action is Set with a specified LogLevel, + // then the SDK will have to take care of putting + // the right log level and start collection logs. + ReturnAction::Send(_) => { + let mut log_files: Vec = vec![]; + + match env::var("DD_TRACE_LOG_FILE") { + Ok(tracer_log_file) => { + log_files.push(tracer_log_file); + } + Err(_) => (), + }; + // TODO Add other paths to various log files + + unsafe { + zip_and_send( + log_files, + String::from(""), + &TRACER_FLARE_MANAGER, + tracer_flare_action, + ); + }; + // TODO restore log_level + } + } + } + RemoteConfigData::Ignored(_) => (), } - RemoteConfigData::Ignored(_) => (), - RemoteConfigData::TracerFlareConfig(_) => {} - RemoteConfigData::TracerFlareTask(_) => {} - }, + } RemoteConfigUpdate::Remove(path) => match path.product { RemoteConfigProduct::LiveDebugger => { if let Some(boxed) = remote_config.live_debugger.active.remove(&path.config_id) diff --git a/libdatadog b/libdatadog index 0b59f64c4f..ba8955394c 160000 --- a/libdatadog +++ b/libdatadog @@ -1 +1 @@ -Subproject commit 0b59f64c4fc08105e5b73c5a0752ced3cf8f653e +Subproject commit ba8955394cf35cf24a1a508fbe6264ad84702567