mirror of
https://github.com/rustfs/rustfs.git
synced 2026-03-17 14:24:08 +00:00
build(deps): bump the dependencies group with 19 updates (#1745)
This commit is contained in:
@@ -67,7 +67,7 @@ To send telemetry data from your application, configure your OpenTelemetry SDK t
|
||||
For example, in a Rust application using the `rustfs-obs` library:
|
||||
|
||||
```bash
|
||||
export RUSTFS_OBS_ENDPOINT=http://localhost:4317
|
||||
export RUSTFS_OBS_ENDPOINT=http://localhost:4318
|
||||
export RUSTFS_OBS_SERVICE_NAME=yourservice
|
||||
export RUSTFS_OBS_SERVICE_VERSION=1.0.0
|
||||
export RUSTFS_OBS_ENVIRONMENT=development
|
||||
|
||||
456
Cargo.lock
generated
456
Cargo.lock
generated
@@ -19,11 +19,11 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
||||
|
||||
[[package]]
|
||||
name = "aead"
|
||||
version = "0.6.0-rc.5"
|
||||
version = "0.6.0-rc.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "67a578e7d4edaef88aeb9cdd81556f4a62266ce26601317c006a79e8bc58b5af"
|
||||
checksum = "6b657e772794c6b04730ea897b66a058ccd866c16d1967da05eeeecec39043fe"
|
||||
dependencies = [
|
||||
"crypto-common 0.2.0-rc.9",
|
||||
"crypto-common 0.2.0",
|
||||
"inout 0.2.2",
|
||||
]
|
||||
|
||||
@@ -40,24 +40,24 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "aes"
|
||||
version = "0.9.0-rc.2"
|
||||
version = "0.9.0-rc.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd9e1c818b25efb32214df89b0ec22f01aa397aaeb718d1022bf0635a3bfd1a8"
|
||||
checksum = "04097e08a47d9ad181c2e1f4a5fabc9ae06ce8839a333ba9a949bcb0d31fd2a3"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cipher 0.5.0-rc.3",
|
||||
"cipher 0.5.0",
|
||||
"cpubits",
|
||||
"cpufeatures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aes-gcm"
|
||||
version = "0.11.0-rc.2"
|
||||
version = "0.11.0-rc.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f5c07f414d7dc0755870f84c7900425360288d24e0eae4836f9dee19a30fa5f"
|
||||
checksum = "e22c0c90bbe8d4f77c3ca9ddabe41a1f8382d6fc1f7cea89459d0f320371f972"
|
||||
dependencies = [
|
||||
"aead",
|
||||
"aes 0.9.0-rc.2",
|
||||
"cipher 0.5.0-rc.3",
|
||||
"aes 0.9.0-rc.4",
|
||||
"cipher 0.5.0",
|
||||
"ctr",
|
||||
"ghash",
|
||||
"subtle",
|
||||
@@ -192,9 +192,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.100"
|
||||
version = "1.0.101"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
|
||||
checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea"
|
||||
|
||||
[[package]]
|
||||
name = "ar_archive_writer"
|
||||
@@ -216,12 +216,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "argon2"
|
||||
version = "0.6.0-rc.6"
|
||||
version = "0.6.0-rc.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "39b5afeb474438603309cd6e638f6baff5b8f4eb4605d63c761516712e044e5c"
|
||||
checksum = "5cc32af0fde8095068147d01a5dfbc0e0b06307924138d992df7c8f18d34c585"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
"blake2 0.11.0-rc.3",
|
||||
"blake2 0.11.0-rc.5",
|
||||
"cpufeatures",
|
||||
"password-hash",
|
||||
]
|
||||
@@ -530,9 +530,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "async-compression"
|
||||
version = "0.4.37"
|
||||
version = "0.4.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40"
|
||||
checksum = "82da0ea54ea533ec09d949717c6386a1c34f2d9b51c1fcc7eef8b9ce0b690a3e"
|
||||
dependencies = [
|
||||
"compression-codecs",
|
||||
"compression-core",
|
||||
@@ -1200,11 +1200,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "blake2"
|
||||
version = "0.11.0-rc.3"
|
||||
version = "0.11.0-rc.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "679065eb2b85a078ace42411e657bef3a6afe93a40d1b9cb04e39ca303cc3f36"
|
||||
checksum = "d52965399b470437fc7f4d4b51134668dbc96573fea6f1b83318a420e4605745"
|
||||
dependencies = [
|
||||
"digest 0.11.0-rc.5",
|
||||
"digest 0.11.0-rc.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1217,7 +1217,7 @@ dependencies = [
|
||||
"arrayvec",
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"constant_time_eq 0.4.2",
|
||||
"constant_time_eq",
|
||||
"cpufeatures",
|
||||
"memmap2",
|
||||
"rayon-core",
|
||||
@@ -1394,25 +1394,25 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
||||
|
||||
[[package]]
|
||||
name = "chacha20"
|
||||
version = "0.10.0-rc.6"
|
||||
version = "0.10.0-rc.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f895fb33c1ad22da4bc79d37c0bddff8aee2ba4575705345eb73b8ffbc386074"
|
||||
checksum = "14f3c04cdd19f5ed3271e460267fb1d94b7899ae1f7bb10ac3dfc3afb749d659"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cipher 0.5.0-rc.3",
|
||||
"cipher 0.5.0",
|
||||
"cpufeatures",
|
||||
"rand_core 0.10.0-rc-3",
|
||||
"rand_core 0.10.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "chacha20poly1305"
|
||||
version = "0.11.0-rc.2"
|
||||
version = "0.11.0-rc.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c662d31454533832974f2b2b3fcbd552ed3cde94c95e614a5039d297dd97076f"
|
||||
checksum = "1c9ed179664f12fd6f155f6dd632edf5f3806d48c228c67ff78366f2a0eb6b5e"
|
||||
dependencies = [
|
||||
"aead",
|
||||
"chacha20",
|
||||
"cipher 0.5.0-rc.3",
|
||||
"cipher 0.5.0",
|
||||
"poly1305",
|
||||
]
|
||||
|
||||
@@ -1479,12 +1479,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "cipher"
|
||||
version = "0.5.0-rc.3"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "98d708bac5451350d56398433b19a7889022fa9187df1a769c0edbc3b2c03167"
|
||||
checksum = "64727038c8c5e2bb503a15b9f5b9df50a1da9a33e83e1f93067d914f2c6604a5"
|
||||
dependencies = [
|
||||
"block-buffer 0.11.0",
|
||||
"crypto-common 0.2.0-rc.9",
|
||||
"crypto-common 0.2.0",
|
||||
"inout 0.2.2",
|
||||
]
|
||||
|
||||
@@ -1539,9 +1539,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "cmov"
|
||||
version = "0.5.0-pre.0"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5417da527aa9bf6a1e10a781231effd1edd3ee82f27d5f8529ac9b279babce96"
|
||||
checksum = "de0758edba32d61d1fd9f4d69491b47604b91ee2f7e6b33de7e54ca4ebe55dc3"
|
||||
|
||||
[[package]]
|
||||
name = "colorchoice"
|
||||
@@ -1672,12 +1672,6 @@ 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 = "constant_time_eq"
|
||||
version = "0.4.2"
|
||||
@@ -1748,6 +1742,12 @@ dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cpubits"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ef0c543070d296ea414df2dd7625d1b24866ce206709d8a4a424f28377f5861"
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.17"
|
||||
@@ -1910,13 +1910,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "crypto-bigint"
|
||||
version = "0.7.0-rc.18"
|
||||
version = "0.7.0-rc.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "37387ceb32048ff590f2cbd24d8b05fffe63c3f69a5cfa089d4f722ca4385a19"
|
||||
checksum = "cba9eeeb213f7fd29353032f71f7c173e5f6d95d85151cb3a47197b0ea7e8be7"
|
||||
dependencies = [
|
||||
"cpubits",
|
||||
"ctutils",
|
||||
"num-traits",
|
||||
"rand_core 0.10.0-rc-3",
|
||||
"rand_core 0.10.0",
|
||||
"serdect",
|
||||
"zeroize",
|
||||
]
|
||||
@@ -1933,24 +1934,24 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "crypto-common"
|
||||
version = "0.2.0-rc.9"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41b8986f836d4aeb30ccf4c9d3bd562fd716074cfd7fc4a2948359fbd21ed809"
|
||||
checksum = "211f05e03c7d03754740fd9e585de910a095d6b99f8bcfffdef8319fa02a8331"
|
||||
dependencies = [
|
||||
"getrandom 0.4.0-rc.0",
|
||||
"getrandom 0.4.1",
|
||||
"hybrid-array",
|
||||
"rand_core 0.10.0-rc-3",
|
||||
"rand_core 0.10.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crypto-primes"
|
||||
version = "0.7.0-pre.6"
|
||||
version = "0.7.0-pre.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e79c98a281f9441200b24e3151407a629bfbe720399186e50516da939195e482"
|
||||
checksum = "334a79c97c0b7fa536716dc132fd417d0afbf471440a41fc25a5d9f66d8771cd"
|
||||
dependencies = [
|
||||
"crypto-bigint 0.7.0-rc.18",
|
||||
"crypto-bigint 0.7.0-rc.25",
|
||||
"libm",
|
||||
"rand_core 0.10.0-rc-3",
|
||||
"rand_core 0.10.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1976,18 +1977,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ctr"
|
||||
version = "0.10.0-rc.2"
|
||||
version = "0.10.0-rc.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d0ec605a95e78815a4c4b8040217d56d5a1ab37043851ee9e7e65b89afa00e3"
|
||||
checksum = "65ea71550d18331d179854662ab330bb54306b9b56020d0466aae2a58f4e17c1"
|
||||
dependencies = [
|
||||
"cipher 0.5.0-rc.3",
|
||||
"cipher 0.5.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ctutils"
|
||||
version = "0.3.2"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "758e5ed90be3c8abff7f9a6f37ab7f6d8c59c2210d448b81f3f508134aec84e4"
|
||||
checksum = "1005a6d4446f5120ef475ad3d2af2b30c49c2c9c6904258e3bb30219bebed5e4"
|
||||
dependencies = [
|
||||
"cmov",
|
||||
]
|
||||
@@ -2968,13 +2969,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.11.0-rc.5"
|
||||
version = "0.11.0-rc.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ebf9423bafb058e4142194330c52273c343f8a5beb7176d052f0e73b17dd35b9"
|
||||
checksum = "02b42f1d9edf5207c137646b568a0168ca0ec25b7f9eaf7f9961da51a3d91cea"
|
||||
dependencies = [
|
||||
"block-buffer 0.11.0",
|
||||
"const-oid 0.10.2",
|
||||
"crypto-common 0.2.0-rc.9",
|
||||
"crypto-common 0.2.0",
|
||||
"subtle",
|
||||
]
|
||||
|
||||
@@ -3042,7 +3043,7 @@ dependencies = [
|
||||
"flatbuffers",
|
||||
"futures",
|
||||
"md5",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"rcgen",
|
||||
"reqwest 0.13.1",
|
||||
"rmp-serde",
|
||||
@@ -3057,7 +3058,7 @@ dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serial_test",
|
||||
"sha2 0.11.0-rc.3",
|
||||
"sha2 0.11.0-rc.5",
|
||||
"suppaftp",
|
||||
"tokio",
|
||||
"tokio-stream",
|
||||
@@ -3541,15 +3542,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.4.0-rc.0"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3b99f0d993a2b9b97b9a201193aa8ad21305cde06a3be9a7e1f8f4201e5cc27e"
|
||||
checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"libc",
|
||||
"r-efi",
|
||||
"rand_core 0.10.0-rc-3",
|
||||
"rand_core 0.10.0",
|
||||
"wasip2",
|
||||
"wasip3",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3566,9 +3570,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ghash"
|
||||
version = "0.6.0-rc.3"
|
||||
version = "0.6.0-rc.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "333de57ed9494a40df4bbb866752b100819dde0d18f2264c48f5a08a85fe673d"
|
||||
checksum = "f484be0236661c5ba22d445ed75d3624ba5544541c647549f867fb576e55b2a2"
|
||||
dependencies = [
|
||||
"polyval",
|
||||
]
|
||||
@@ -3945,11 +3949,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "hmac"
|
||||
version = "0.13.0-rc.3"
|
||||
version = "0.13.0-rc.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1c597ac7d6cc8143e30e83ef70915e7f883b18d8bec2e2b2bce47f5bbb06d57"
|
||||
checksum = "ef451d73f36d8a3f93ad32c332ea01146c9650e1ec821a9b0e46c01277d544f8"
|
||||
dependencies = [
|
||||
"digest 0.11.0-rc.5",
|
||||
"digest 0.11.0-rc.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4228,6 +4232,12 @@ dependencies = [
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "id-arena"
|
||||
version = "2.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
|
||||
|
||||
[[package]]
|
||||
name = "ident_case"
|
||||
version = "1.0.1"
|
||||
@@ -4453,9 +4463,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "jiff"
|
||||
version = "0.2.18"
|
||||
version = "0.2.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50"
|
||||
checksum = "d89a5b5e10d5a9ad6e5d1f4bd58225f655d6fe9767575a5e8ac5a6fe64e04495"
|
||||
dependencies = [
|
||||
"jiff-static",
|
||||
"jiff-tzdb-platform",
|
||||
@@ -4468,9 +4478,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "jiff-static"
|
||||
version = "0.2.18"
|
||||
version = "0.2.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78"
|
||||
checksum = "ff7a39c8862fc1369215ccf0a8f12dd4598c7f6484704359f0351bd617034dbf"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -4600,6 +4610,12 @@ version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||
|
||||
[[package]]
|
||||
name = "leb128fmt"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
||||
|
||||
[[package]]
|
||||
name = "lexical-core"
|
||||
version = "1.0.6"
|
||||
@@ -4926,12 +4942,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "md-5"
|
||||
version = "0.11.0-rc.3"
|
||||
version = "0.11.0-rc.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "64dd2c9099caf8e29b629305199dddb1c6d981562b62c089afea54b0b4b5c333"
|
||||
checksum = "59e715bb6f273068fc89403d6c4f5eeb83708c62b74c8d43e3e8772ca73a6288"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"digest 0.11.0-rc.5",
|
||||
"digest 0.11.0-rc.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5631,11 +5647,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "password-hash"
|
||||
version = "0.6.0-rc.10"
|
||||
version = "0.6.0-rc.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "80b7795f59c339f0458e0213b31e01f45de7f061bdfc52857386f457d94c2cb8"
|
||||
checksum = "5fa9e3d1c7b6f3e230b60fa44adc855cb8e24eede37236621f2cc1940d95564f"
|
||||
dependencies = [
|
||||
"getrandom 0.4.0-rc.0",
|
||||
"getrandom 0.4.1",
|
||||
"phc",
|
||||
]
|
||||
|
||||
@@ -5687,12 +5703,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pbkdf2"
|
||||
version = "0.13.0-rc.8"
|
||||
version = "0.13.0-rc.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "626220f48328b90cad8393e99e9ef80503970e6e86e77f32f7e42227972e7c2c"
|
||||
checksum = "c8dfa4e14084d963d35bfb4cdb38712cde78dcf83054c0e8b9b8e899150f374e"
|
||||
dependencies = [
|
||||
"digest 0.11.0-rc.5",
|
||||
"hmac 0.13.0-rc.3",
|
||||
"digest 0.11.0-rc.11",
|
||||
"hmac 0.13.0-rc.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5739,7 +5755,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "71d390c5fe8d102c2c18ff39f1e72b9ad5996de282c2d831b0312f56910f5508"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
"getrandom 0.4.0-rc.0",
|
||||
"getrandom 0.4.1",
|
||||
"subtle",
|
||||
]
|
||||
|
||||
@@ -5865,9 +5881,9 @@ checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3"
|
||||
|
||||
[[package]]
|
||||
name = "poly1305"
|
||||
version = "0.9.0-rc.3"
|
||||
version = "0.9.0-rc.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d9c0749ae91cfe6e68c77c4d48802d9720ee06aed3f7100a38975fb0962d50bc"
|
||||
checksum = "518693a4015fbfd281debf35bcac145ba2e180ae325ec855fdb405be0b2971fb"
|
||||
dependencies = [
|
||||
"cpufeatures",
|
||||
"universal-hash",
|
||||
@@ -5875,11 +5891,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "polyval"
|
||||
version = "0.7.0-rc.3"
|
||||
version = "0.7.0-rc.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ad60831c19edda4b20878a676595c357e93a9b4e6dca2ba98d75b01066b317b"
|
||||
checksum = "63641a86fddf4b5274f31c43734458ec7acd3133016dbaa37e4e247e1e9acd46"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpubits",
|
||||
"cpufeatures",
|
||||
"universal-hash",
|
||||
]
|
||||
@@ -6322,13 +6338,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.10.0-rc.6"
|
||||
version = "0.10.0-rc.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bccc05ac8fad6ee391f3cc6725171817eed960345e2fb42ad229d486c1ca2d98"
|
||||
checksum = "9a8cd8be2e7e2fd2ee3e09045798e65c906682ec9f16293defc4790dd775d5a3"
|
||||
dependencies = [
|
||||
"chacha20",
|
||||
"getrandom 0.4.0-rc.0",
|
||||
"rand_core 0.10.0-rc-3",
|
||||
"getrandom 0.4.1",
|
||||
"rand_core 0.10.0",
|
||||
"serde",
|
||||
]
|
||||
|
||||
@@ -6362,9 +6378,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.10.0-rc-3"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f66ee92bc15280519ef199a274fe0cafff4245d31bc39aaa31c011ad56cb1f05"
|
||||
checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
|
||||
|
||||
[[package]]
|
||||
name = "rayon"
|
||||
@@ -6699,18 +6715,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rsa"
|
||||
version = "0.10.0-rc.12"
|
||||
version = "0.10.0-rc.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c9a2b1eacbc34fbaf77f6f1db1385518446008d49b9f9f59dc9d1340fce4ca9e"
|
||||
checksum = "1b342b99544549f37509ed7fd42b0cea04bfd9ce07c16ca56094cf0fbeefbbcd"
|
||||
dependencies = [
|
||||
"const-oid 0.10.2",
|
||||
"crypto-bigint 0.7.0-rc.18",
|
||||
"crypto-bigint 0.7.0-rc.25",
|
||||
"crypto-primes",
|
||||
"digest 0.11.0-rc.5",
|
||||
"digest 0.11.0-rc.11",
|
||||
"pkcs1",
|
||||
"pkcs8 0.11.0-rc.10",
|
||||
"rand_core 0.10.0-rc-3",
|
||||
"signature 3.0.0-rc.6",
|
||||
"rand_core 0.10.0",
|
||||
"signature 3.0.0-rc.10",
|
||||
"spki 0.8.0-rc.4",
|
||||
"zeroize",
|
||||
]
|
||||
@@ -6835,7 +6851,7 @@ dependencies = [
|
||||
"opentelemetry",
|
||||
"pin-project-lite",
|
||||
"pprof",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"reqwest 0.13.1",
|
||||
"rmp-serde",
|
||||
"rust-embed",
|
||||
@@ -6901,7 +6917,7 @@ name = "rustfs-appauth"
|
||||
version = "0.0.5"
|
||||
dependencies = [
|
||||
"base64-simd",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"rsa",
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -6937,10 +6953,10 @@ dependencies = [
|
||||
"bytes",
|
||||
"crc-fast",
|
||||
"http 1.4.0",
|
||||
"md-5 0.11.0-rc.3",
|
||||
"md-5 0.11.0-rc.5",
|
||||
"pretty_assertions",
|
||||
"sha1 0.11.0-rc.3",
|
||||
"sha2 0.11.0-rc.3",
|
||||
"sha1 0.11.0-rc.5",
|
||||
"sha2 0.11.0-rc.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6973,7 +6989,7 @@ name = "rustfs-credentials"
|
||||
version = "0.0.5"
|
||||
dependencies = [
|
||||
"base64-simd",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"time",
|
||||
@@ -6988,10 +7004,10 @@ dependencies = [
|
||||
"cfg-if",
|
||||
"chacha20poly1305",
|
||||
"jsonwebtoken",
|
||||
"pbkdf2 0.13.0-rc.8",
|
||||
"rand 0.10.0-rc.6",
|
||||
"pbkdf2 0.13.0-rc.9",
|
||||
"rand 0.10.0-rc.9",
|
||||
"serde_json",
|
||||
"sha2 0.11.0-rc.3",
|
||||
"sha2 0.11.0-rc.5",
|
||||
"test-case",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
@@ -7024,7 +7040,7 @@ dependencies = [
|
||||
"google-cloud-auth",
|
||||
"google-cloud-storage",
|
||||
"hex-simd",
|
||||
"hmac 0.13.0-rc.3",
|
||||
"hmac 0.13.0-rc.5",
|
||||
"http 1.4.0",
|
||||
"http-body 1.0.1",
|
||||
"http-body-util",
|
||||
@@ -7032,14 +7048,14 @@ dependencies = [
|
||||
"hyper-rustls",
|
||||
"hyper-util",
|
||||
"lazy_static",
|
||||
"md-5 0.11.0-rc.3",
|
||||
"md-5 0.11.0-rc.5",
|
||||
"moka",
|
||||
"num_cpus",
|
||||
"parking_lot",
|
||||
"path-absolutize",
|
||||
"pin-project-lite",
|
||||
"quick-xml 0.39.0",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"reed-solomon-simd",
|
||||
"regex",
|
||||
"reqwest 0.13.1",
|
||||
@@ -7063,8 +7079,8 @@ dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_urlencoded",
|
||||
"sha1 0.11.0-rc.3",
|
||||
"sha2 0.11.0-rc.3",
|
||||
"sha1 0.11.0-rc.5",
|
||||
"sha2 0.11.0-rc.5",
|
||||
"shadow-rs",
|
||||
"smallvec",
|
||||
"temp-env",
|
||||
@@ -7140,7 +7156,7 @@ dependencies = [
|
||||
"futures",
|
||||
"jsonwebtoken",
|
||||
"pollster",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"rustfs-credentials",
|
||||
"rustfs-crypto",
|
||||
"rustfs-ecstore",
|
||||
@@ -7168,11 +7184,11 @@ dependencies = [
|
||||
"jiff",
|
||||
"md5",
|
||||
"moka",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"reqwest 0.13.1",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha2 0.11.0-rc.3",
|
||||
"sha2 0.11.0-rc.5",
|
||||
"tempfile",
|
||||
"thiserror 2.0.18",
|
||||
"tokio",
|
||||
@@ -7323,9 +7339,7 @@ name = "rustfs-protocols"
|
||||
version = "0.0.5"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"base64",
|
||||
"bytes",
|
||||
"futures",
|
||||
"futures-util",
|
||||
"libunftp",
|
||||
"rustfs-credentials",
|
||||
@@ -7335,13 +7349,10 @@ dependencies = [
|
||||
"rustls",
|
||||
"s3s",
|
||||
"serde_json",
|
||||
"suppaftp",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tracing",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -7369,17 +7380,17 @@ dependencies = [
|
||||
"futures",
|
||||
"hex-simd",
|
||||
"http 1.4.0",
|
||||
"md-5 0.11.0-rc.3",
|
||||
"md-5 0.11.0-rc.5",
|
||||
"pin-project-lite",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"reqwest 0.13.1",
|
||||
"rustfs-config",
|
||||
"rustfs-utils",
|
||||
"s3s",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha1 0.11.0-rc.3",
|
||||
"sha2 0.11.0-rc.3",
|
||||
"sha1 0.11.0-rc.5",
|
||||
"sha2 0.11.0-rc.5",
|
||||
"thiserror 2.0.18",
|
||||
"tokio",
|
||||
"tokio-test",
|
||||
@@ -7438,7 +7449,7 @@ dependencies = [
|
||||
"futures",
|
||||
"http 1.4.0",
|
||||
"path-clean",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"rmp-serde",
|
||||
"rustfs-common",
|
||||
"rustfs-config",
|
||||
@@ -7531,15 +7542,15 @@ dependencies = [
|
||||
"hashbrown 0.16.1",
|
||||
"hex-simd",
|
||||
"highway",
|
||||
"hmac 0.13.0-rc.3",
|
||||
"hmac 0.13.0-rc.5",
|
||||
"http 1.4.0",
|
||||
"hyper",
|
||||
"libc",
|
||||
"local-ip-address",
|
||||
"lz4",
|
||||
"md-5 0.11.0-rc.3",
|
||||
"md-5 0.11.0-rc.5",
|
||||
"netif",
|
||||
"rand 0.10.0-rc.6",
|
||||
"rand 0.10.0-rc.9",
|
||||
"regex",
|
||||
"rustfs-config",
|
||||
"rustix 1.1.3",
|
||||
@@ -7548,8 +7559,8 @@ dependencies = [
|
||||
"rustls-pki-types",
|
||||
"s3s",
|
||||
"serde",
|
||||
"sha1 0.11.0-rc.3",
|
||||
"sha2 0.11.0-rc.3",
|
||||
"sha1 0.11.0-rc.5",
|
||||
"sha2 0.11.0-rc.5",
|
||||
"siphasher",
|
||||
"snap",
|
||||
"sysinfo",
|
||||
@@ -7762,7 +7773,7 @@ checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
|
||||
[[package]]
|
||||
name = "s3s"
|
||||
version = "0.13.0-alpha.2"
|
||||
source = "git+https://github.com/rustfs/s3s.git?rev=13f968fc89e3bd286d308ca855456b23734d4f74#13f968fc89e3bd286d308ca855456b23734d4f74"
|
||||
source = "git+https://github.com/s3s-project/s3s.git?rev=355141446e358fdd4d71a32408b9fbebd65359c7#355141446e358fdd4d71a32408b9fbebd65359c7"
|
||||
dependencies = [
|
||||
"arc-swap",
|
||||
"arrayvec",
|
||||
@@ -7777,14 +7788,14 @@ dependencies = [
|
||||
"crc-fast",
|
||||
"futures",
|
||||
"hex-simd",
|
||||
"hmac 0.13.0-rc.3",
|
||||
"hmac 0.13.0-rc.5",
|
||||
"http 1.4.0",
|
||||
"http-body 1.0.1",
|
||||
"http-body-util",
|
||||
"httparse",
|
||||
"hyper",
|
||||
"itoa",
|
||||
"md-5 0.11.0-rc.3",
|
||||
"md-5 0.11.0-rc.5",
|
||||
"memchr",
|
||||
"mime",
|
||||
"nom 8.0.0",
|
||||
@@ -7792,9 +7803,10 @@ dependencies = [
|
||||
"pin-project-lite",
|
||||
"quick-xml 0.37.5",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_urlencoded",
|
||||
"sha1 0.11.0-rc.3",
|
||||
"sha2 0.11.0-rc.3",
|
||||
"sha1 0.11.0-rc.5",
|
||||
"sha2 0.11.0-rc.5",
|
||||
"smallvec",
|
||||
"std-next",
|
||||
"subtle",
|
||||
@@ -8115,13 +8127,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.11.0-rc.3"
|
||||
version = "0.11.0-rc.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aa1ae819b9870cadc959a052363de870944a1646932d274a4e270f64bf79e5ef"
|
||||
checksum = "3b167252f3c126be0d8926639c4c4706950f01445900c4b3db0fd7e89fcb750a"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest 0.11.0-rc.5",
|
||||
"digest 0.11.0-rc.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8137,13 +8149,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sha2"
|
||||
version = "0.11.0-rc.3"
|
||||
version = "0.11.0-rc.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19d43dc0354d88b791216bb5c1bfbb60c0814460cc653ae0ebd71f286d0bd927"
|
||||
checksum = "7c5f3b1e2dc8aad28310d8410bd4d7e180eca65fca176c52ab00d364475d0024"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest 0.11.0-rc.5",
|
||||
"digest 0.11.0-rc.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8215,12 +8227,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "signature"
|
||||
version = "3.0.0-rc.6"
|
||||
version = "3.0.0-rc.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "597a96996ccff7dfa16f052bd995b4cecc72af22c35138738dc029f0ead6608d"
|
||||
checksum = "7f1880df446116126965eeec169136b2e0251dba37c6223bcc819569550edea3"
|
||||
dependencies = [
|
||||
"digest 0.11.0-rc.5",
|
||||
"rand_core 0.10.0-rc-3",
|
||||
"digest 0.11.0-rc.11",
|
||||
"rand_core 0.10.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9418,11 +9430,11 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
||||
|
||||
[[package]]
|
||||
name = "universal-hash"
|
||||
version = "0.6.0-rc.4"
|
||||
version = "0.6.0-rc.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0386f227888b17b65d3e38219a7d41185035471300855c285667811907bb1677"
|
||||
checksum = "058482a494bb3c9c39447d8b40a3a0f38ebb3dccaf02c5a2d681e69035f8da11"
|
||||
dependencies = [
|
||||
"crypto-common 0.2.0-rc.9",
|
||||
"crypto-common 0.2.0",
|
||||
"subtle",
|
||||
]
|
||||
|
||||
@@ -9589,6 +9601,15 @@ dependencies = [
|
||||
"wit-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasip3"
|
||||
version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
|
||||
dependencies = [
|
||||
"wit-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.108"
|
||||
@@ -9648,6 +9669,28 @@ dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-encoder"
|
||||
version = "0.244.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
|
||||
dependencies = [
|
||||
"leb128fmt",
|
||||
"wasmparser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-metadata"
|
||||
version = "0.244.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 2.13.0",
|
||||
"wasm-encoder",
|
||||
"wasmparser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-streams"
|
||||
version = "0.4.2"
|
||||
@@ -9661,6 +9704,18 @@ dependencies = [
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasmparser"
|
||||
version = "0.244.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
|
||||
dependencies = [
|
||||
"bitflags 2.10.0",
|
||||
"hashbrown 0.15.5",
|
||||
"indexmap 2.13.0",
|
||||
"semver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.85"
|
||||
@@ -10114,6 +10169,88 @@ name = "wit-bindgen"
|
||||
version = "0.51.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
|
||||
dependencies = [
|
||||
"wit-bindgen-rust-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen-core"
|
||||
version = "0.51.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"heck",
|
||||
"wit-parser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen-rust"
|
||||
version = "0.51.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"heck",
|
||||
"indexmap 2.13.0",
|
||||
"prettyplease",
|
||||
"syn 2.0.114",
|
||||
"wasm-metadata",
|
||||
"wit-bindgen-core",
|
||||
"wit-component",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen-rust-macro"
|
||||
version = "0.51.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"prettyplease",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"wit-bindgen-core",
|
||||
"wit-bindgen-rust",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wit-component"
|
||||
version = "0.244.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bitflags 2.10.0",
|
||||
"indexmap 2.13.0",
|
||||
"log",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"wasm-encoder",
|
||||
"wasm-metadata",
|
||||
"wasmparser",
|
||||
"wit-parser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wit-parser"
|
||||
version = "0.244.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"id-arena",
|
||||
"indexmap 2.13.0",
|
||||
"log",
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"unicode-xid",
|
||||
"wasmparser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wrapcenum-derive"
|
||||
@@ -10230,18 +10367,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.38"
|
||||
version = "0.8.39"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57cf3aa6855b23711ee9852dfc97dfaa51c45feaba5b645d0c777414d494a961"
|
||||
checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.8.38"
|
||||
version = "0.8.39"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a616990af1a287837c4fe6596ad77ef57948f787e46ce28e166facc0cc1cb75"
|
||||
checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -10324,18 +10461,17 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zip"
|
||||
version = "7.2.0"
|
||||
version = "7.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c42e33efc22a0650c311c2ef19115ce232583abbe80850bc8b66509ebef02de0"
|
||||
checksum = "cc12baa6db2b15a140161ce53d72209dacea594230798c24774139b54ecaa980"
|
||||
dependencies = [
|
||||
"aes 0.8.4",
|
||||
"bzip2",
|
||||
"constant_time_eq 0.3.1",
|
||||
"constant_time_eq",
|
||||
"crc32fast",
|
||||
"deflate64",
|
||||
"flate2",
|
||||
"generic-array",
|
||||
"getrandom 0.3.4",
|
||||
"getrandom 0.4.1",
|
||||
"hmac 0.12.1",
|
||||
"indexmap 2.13.0",
|
||||
"lzma-rust2",
|
||||
|
||||
38
Cargo.toml
38
Cargo.toml
@@ -103,7 +103,7 @@ rustfs-protocols = { path = "crates/protocols", version = "0.0.5" }
|
||||
|
||||
# Async Runtime and Networking
|
||||
async-channel = "2.5.0"
|
||||
async-compression = { version = "0.4.37" }
|
||||
async-compression = { version = "0.4.38" }
|
||||
async-recursion = "1.1.1"
|
||||
async-trait = "0.1.89"
|
||||
axum = "0.8.8"
|
||||
@@ -148,32 +148,32 @@ serde_urlencoded = "0.7.1"
|
||||
schemars = "1.2.1"
|
||||
|
||||
# Cryptography and Security
|
||||
aes-gcm = { version = "0.11.0-rc.2", features = ["rand_core"] }
|
||||
argon2 = { version = "0.6.0-rc.6" }
|
||||
aes-gcm = { version = "0.11.0-rc.3", features = ["rand_core"] }
|
||||
argon2 = { version = "0.6.0-rc.7" }
|
||||
blake3 = { version = "1.8.3", features = ["rayon", "mmap"] }
|
||||
chacha20poly1305 = { version = "0.11.0-rc.2" }
|
||||
chacha20poly1305 = { version = "0.11.0-rc.3" }
|
||||
crc-fast = "1.9.0"
|
||||
hmac = { version = "0.13.0-rc.3" }
|
||||
hmac = { version = "0.13.0-rc.5" }
|
||||
jsonwebtoken = { version = "10.3.0", features = ["aws_lc_rs"] }
|
||||
pbkdf2 = "0.13.0-rc.8"
|
||||
rsa = { version = "0.10.0-rc.12" }
|
||||
pbkdf2 = "0.13.0-rc.9"
|
||||
rsa = { version = "0.10.0-rc.15" }
|
||||
rustls = { version = "0.23.36", default-features = false, features = ["aws-lc-rs", "logging", "tls12", "prefer-post-quantum", "std"] }
|
||||
rustls-pemfile = "2.2.0"
|
||||
rustls-pki-types = "1.14.0"
|
||||
sha1 = "0.11.0-rc.3"
|
||||
sha2 = "0.11.0-rc.3"
|
||||
sha1 = "0.11.0-rc.5"
|
||||
sha2 = "0.11.0-rc.5"
|
||||
subtle = "2.6"
|
||||
zeroize = { version = "1.8.2", features = ["derive"] }
|
||||
|
||||
# Time and Date
|
||||
chrono = { version = "0.4.43", features = ["serde"] }
|
||||
humantime = "2.3.0"
|
||||
jiff = { version = "0.2.18", features = ["serde"] }
|
||||
time = { version = "0.3.46", features = ["std", "parsing", "formatting", "macros", "serde"] }
|
||||
jiff = { version = "0.2.19", features = ["serde"] }
|
||||
time = { version = "0.3.47", features = ["std", "parsing", "formatting", "macros", "serde"] }
|
||||
|
||||
# Utilities and Tools
|
||||
anyhow = "1.0.100"
|
||||
arc-swap = "1.8.0"
|
||||
anyhow = "1.0.101"
|
||||
arc-swap = "1.8.1"
|
||||
astral-tokio-tar = "0.5.6"
|
||||
atoi = "2.0.0"
|
||||
atomic_enum = "0.3.0"
|
||||
@@ -195,7 +195,7 @@ datafusion = "52.1.0"
|
||||
derive_builder = "0.20.2"
|
||||
enumset = "1.1.10"
|
||||
faster-hex = "0.10.0"
|
||||
flate2 = "1.1.8"
|
||||
flate2 = "1.1.9"
|
||||
flexi_logger = { version = "0.31.8", features = ["trc", "dont_minimize_extra_stacks", "compress", "kv", "json"] }
|
||||
glob = "0.3.3"
|
||||
google-cloud-storage = "1.7.0"
|
||||
@@ -210,7 +210,7 @@ libsystemd = "0.7.2"
|
||||
local-ip-address = "0.6.10"
|
||||
lz4 = "1.28.1"
|
||||
matchit = "0.9.1"
|
||||
md-5 = "0.11.0-rc.3"
|
||||
md-5 = "0.11.0-rc.5"
|
||||
md5 = "0.8.0"
|
||||
mime_guess = "2.0.5"
|
||||
moka = { version = "0.12.13", features = ["future"] }
|
||||
@@ -224,15 +224,15 @@ path-absolutize = "3.1.1"
|
||||
path-clean = "1.0.1"
|
||||
pin-project-lite = "0.2.16"
|
||||
pretty_assertions = "1.4.1"
|
||||
rand = { version = "0.10.0-rc.6", features = ["serde"] }
|
||||
rand = { version = "0.10.0-rc.9", features = ["serde"] }
|
||||
rayon = "1.11.0"
|
||||
reed-solomon-simd = { version = "3.1.0" }
|
||||
regex = { version = "1.12.2" }
|
||||
regex = { version = "1.12.3" }
|
||||
rumqttc = { version = "0.25.1" }
|
||||
rustix = { version = "1.1.3", features = ["fs"] }
|
||||
rust-embed = { version = "8.11.0" }
|
||||
rustc-hash = { version = "2.1.1" }
|
||||
s3s = { version = "0.13.0-alpha.2", features = ["minio"], git = "https://github.com/rustfs/s3s.git", rev = "13f968fc89e3bd286d308ca855456b23734d4f74" }
|
||||
s3s = { version = "0.13.0-alpha.2", features = ["minio"], git = "https://github.com/s3s-project/s3s.git", rev = "355141446e358fdd4d71a32408b9fbebd65359c7" }
|
||||
serial_test = "3.3.1"
|
||||
shadow-rs = { version = "1.7.0", default-features = false }
|
||||
siphasher = "1.0.2"
|
||||
@@ -261,7 +261,7 @@ walkdir = "2.5.0"
|
||||
wildmatch = { version = "2.6.1", features = ["serde"] }
|
||||
windows = { version = "0.62.2" }
|
||||
xxhash-rust = { version = "0.8.15", features = ["xxh64", "xxh3"] }
|
||||
zip = "7.2.0"
|
||||
zip = "7.4.0"
|
||||
zstd = "0.13.3"
|
||||
|
||||
# Observability and Metrics
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
// limitations under the License.
|
||||
|
||||
use crate::{DEFAULT_SECRET_KEY, ENV_RPC_SECRET, IAM_POLICY_CLAIM_NAME_SA, INHERITED_POLICY_TYPE};
|
||||
use rand::{Rng, RngCore};
|
||||
use rand::{Rng, RngExt};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
use std::collections::HashMap;
|
||||
|
||||
@@ -58,7 +58,7 @@ fn encrypt<T: aes_gcm::aead::Aead>(
|
||||
use crate::error::Error;
|
||||
use aes_gcm::AeadCore;
|
||||
use aes_gcm::aead::array::Array;
|
||||
use rand::RngCore;
|
||||
use rand::Rng;
|
||||
|
||||
let mut nonce: Array<u8, <T as AeadCore>::NonceSize> = Array::default();
|
||||
rand::rng().fill_bytes(&mut nonce);
|
||||
|
||||
@@ -117,7 +117,7 @@ pub async fn create_default_key(
|
||||
|
||||
/// Create a KMS key with a specific ID (by directly writing to the key directory)
|
||||
pub async fn create_key_with_specific_id(key_dir: &str, key_id: &str) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
use rand::RngCore;
|
||||
use rand::Rng;
|
||||
use std::collections::HashMap;
|
||||
use tokio::fs;
|
||||
|
||||
|
||||
@@ -782,7 +782,7 @@ impl<S: StorageAPI> ReplicationPool<S> {
|
||||
}
|
||||
|
||||
// Generate random duration between 0 and 1 minute
|
||||
use rand::Rng;
|
||||
use rand::RngExt;
|
||||
let duration_millis = rand::rng().random_range(0..60_000);
|
||||
let mut duration = Duration::from_millis(duration_millis);
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ use hyper_rustls::{ConfigBuilderExt, HttpsConnector};
|
||||
use hyper_util::{client::legacy::Client, client::legacy::connect::HttpConnector, rt::TokioExecutor};
|
||||
use md5::Digest;
|
||||
use md5::Md5;
|
||||
use rand::Rng;
|
||||
use rand::{Rng, RngExt};
|
||||
use rustfs_config::MAX_S3_CLIENT_RESPONSE_SIZE;
|
||||
use rustfs_rio::HashReader;
|
||||
use rustfs_utils::HashAlgorithm;
|
||||
|
||||
@@ -620,7 +620,7 @@ pub async fn load_data_usage_cache(store: &crate::set_disk::SetDisks, name: &str
|
||||
use crate::disk::{BUCKET_META_PREFIX, RUSTFS_META_BUCKET};
|
||||
use crate::store_api::{ObjectIO, ObjectOptions};
|
||||
use http::HeaderMap;
|
||||
use rand::Rng;
|
||||
use rand::RngExt;
|
||||
use std::path::Path;
|
||||
use std::time::Duration;
|
||||
use tokio::time::sleep;
|
||||
|
||||
@@ -66,7 +66,7 @@ use crate::{
|
||||
use futures::future::join_all;
|
||||
use http::HeaderMap;
|
||||
use lazy_static::lazy_static;
|
||||
use rand::Rng as _;
|
||||
use rand::RngExt as _;
|
||||
use rustfs_common::heal_channel::{HealItemType, HealOpts};
|
||||
use rustfs_common::{GLOBAL_LOCAL_NODE_NAME, GLOBAL_RUSTFS_HOST, GLOBAL_RUSTFS_PORT};
|
||||
use rustfs_filemeta::FileInfo;
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
use bytes::Bytes;
|
||||
use http::status::StatusCode;
|
||||
use lazy_static::lazy_static;
|
||||
use rand::Rng;
|
||||
use rand::{Rng, RngExt};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{
|
||||
collections::{HashMap, hash_map::Entry},
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
// limitations under the License.
|
||||
|
||||
use jsonwebtoken::{Algorithm, DecodingKey, EncodingKey, Header};
|
||||
use rand::{Rng, RngCore};
|
||||
use rand::{Rng, RngExt};
|
||||
use serde::{Serialize, de::DeserializeOwned};
|
||||
use std::io::{Error, Result};
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ use aes_gcm::{
|
||||
use async_trait::async_trait;
|
||||
use base64::{Engine as _, engine::general_purpose::STANDARD as BASE64};
|
||||
use jiff::Zoned;
|
||||
use rand::Rng;
|
||||
use rand::RngExt;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::collections::HashMap;
|
||||
use std::path::PathBuf;
|
||||
|
||||
@@ -21,7 +21,7 @@ use aes_gcm::{
|
||||
aead::{Aead, KeyInit},
|
||||
};
|
||||
use chacha20poly1305::ChaCha20Poly1305;
|
||||
use rand::Rng;
|
||||
use rand::RngExt;
|
||||
|
||||
/// Trait for object encryption ciphers
|
||||
#[cfg_attr(not(test), allow(dead_code))]
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
use crate::error::{KmsError, Result};
|
||||
use async_trait::async_trait;
|
||||
use jiff::Zoned;
|
||||
use rand::RngCore;
|
||||
use rand::Rng;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::collections::HashMap;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ categories = ["network-programming", "filesystem"]
|
||||
|
||||
[features]
|
||||
default = []
|
||||
ftps = ["libunftp", "suppaftp", "rustls"]
|
||||
ftps = ["dep:libunftp", "dep:rustls"]
|
||||
|
||||
[dependencies]
|
||||
# Core RustFS dependencies
|
||||
@@ -39,7 +39,6 @@ rustfs-utils = { workspace = true }
|
||||
# Async dependencies
|
||||
tokio = { workspace = true, features = ["fs", "io-util", "sync", "time"] }
|
||||
tracing = { workspace = true }
|
||||
futures = { workspace = true }
|
||||
futures-util = { workspace = true }
|
||||
|
||||
# Error handling
|
||||
@@ -50,9 +49,6 @@ serde_json = { workspace = true }
|
||||
|
||||
# Utilities
|
||||
async-trait = { workspace = true }
|
||||
base64 = { workspace = true }
|
||||
uuid = { workspace = true }
|
||||
tokio-util = { workspace = true, features = ["io"] }
|
||||
time = { workspace = true }
|
||||
bytes = { workspace = true }
|
||||
|
||||
@@ -61,7 +57,6 @@ s3s = { workspace = true }
|
||||
|
||||
# FTPS specific dependencies (optional)
|
||||
libunftp = { workspace = true, optional = true }
|
||||
suppaftp = { workspace = true, optional = true }
|
||||
rustls = { workspace = true, optional = true }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
|
||||
@@ -505,7 +505,7 @@ pub fn get_content_checksum(headers: &HeaderMap) -> Result<Option<Checksum>, std
|
||||
|
||||
for header in trailing_headers {
|
||||
let mut duplicates = false;
|
||||
for &checksum_type in crate::checksum::BASE_CHECKSUM_TYPES {
|
||||
for &checksum_type in BASE_CHECKSUM_TYPES {
|
||||
if let Some(key) = checksum_type.key()
|
||||
&& header.eq_ignore_ascii_case(key)
|
||||
{
|
||||
@@ -570,17 +570,17 @@ fn get_content_checksum_direct(headers: &HeaderMap) -> (ChecksumType, String) {
|
||||
if checksum_type.is_set()
|
||||
&& let Some(key) = checksum_type.key()
|
||||
{
|
||||
if let Some(value) = headers.get(key).and_then(|v| v.to_str().ok()) {
|
||||
return (checksum_type, value.to_string());
|
||||
return if let Some(value) = headers.get(key).and_then(|v| v.to_str().ok()) {
|
||||
(checksum_type, value.to_string())
|
||||
} else {
|
||||
return (ChecksumType::NONE, String::new());
|
||||
}
|
||||
(ChecksumType::NONE, String::new())
|
||||
};
|
||||
}
|
||||
return (checksum_type, String::new());
|
||||
}
|
||||
|
||||
// Check individual checksum headers
|
||||
for &ct in crate::checksum::BASE_CHECKSUM_TYPES {
|
||||
for &ct in BASE_CHECKSUM_TYPES {
|
||||
if let Some(key) = ct.key()
|
||||
&& let Some(value) = headers.get(key).and_then(|v| v.to_str().ok())
|
||||
{
|
||||
|
||||
@@ -439,6 +439,7 @@ mod tests {
|
||||
use crate::WarpReader;
|
||||
|
||||
use super::*;
|
||||
use rand::RngExt;
|
||||
use std::io::Cursor;
|
||||
use tokio::io::{AsyncReadExt, BufReader};
|
||||
|
||||
@@ -494,7 +495,6 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_compress_reader_large() {
|
||||
use rand::Rng;
|
||||
// Generate 1MB of random bytes
|
||||
let mut data = vec![0u8; 1024 * 1024 * 32];
|
||||
rand::rng().fill(&mut data[..]);
|
||||
@@ -513,7 +513,6 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_compress_reader_large_deflate() {
|
||||
use rand::Rng;
|
||||
// Generate 1MB of random bytes
|
||||
let mut data = vec![0u8; 1024 * 1024 * 3 + 512];
|
||||
rand::rng().fill(&mut data[..]);
|
||||
|
||||
@@ -487,7 +487,7 @@ mod tests {
|
||||
use crate::WarpReader;
|
||||
|
||||
use super::*;
|
||||
use rand::RngCore;
|
||||
use rand::{Rng, RngExt};
|
||||
use tokio::io::{AsyncReadExt, BufReader};
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
@@ -112,6 +112,7 @@ mod tests {
|
||||
use crate::WarpReader;
|
||||
|
||||
use super::*;
|
||||
use rand::RngExt;
|
||||
use std::io::Cursor;
|
||||
use tokio::io::{AsyncReadExt, BufReader};
|
||||
|
||||
@@ -191,7 +192,6 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_etag_reader_large_data() {
|
||||
use rand::Rng;
|
||||
// Generate 3MB random data
|
||||
let size = 3 * 1024 * 1024;
|
||||
let mut data = vec![0u8; size];
|
||||
|
||||
@@ -562,6 +562,7 @@ impl TryGetIndex for HashReader {
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::{DecryptReader, WarpReader, encrypt_reader};
|
||||
use rand::RngExt;
|
||||
use std::io::Cursor;
|
||||
use tokio::io::{AsyncReadExt, BufReader};
|
||||
|
||||
@@ -656,7 +657,6 @@ mod tests {
|
||||
use crate::{CompressReader, DecompressReader};
|
||||
use md5::{Digest, Md5};
|
||||
use rand::Rng;
|
||||
use rand::RngCore;
|
||||
use rustfs_utils::compress::CompressionAlgorithm;
|
||||
|
||||
// Generate 1MB random data
|
||||
|
||||
@@ -122,9 +122,9 @@ impl<R> TryGetIndex for LimitReader<R> where R: AsyncRead + Unpin + Send + Sync
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::io::Cursor;
|
||||
|
||||
use super::*;
|
||||
use rand::RngExt;
|
||||
use std::io::Cursor;
|
||||
use tokio::io::{AsyncReadExt, BufReader};
|
||||
|
||||
#[tokio::test]
|
||||
@@ -186,7 +186,6 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_limit_reader_large_file() {
|
||||
use rand::Rng;
|
||||
// Generate a 3MB random byte array for testing
|
||||
let size = 3 * 1024 * 1024;
|
||||
let mut data = vec![0u8; size];
|
||||
|
||||
@@ -77,11 +77,7 @@ impl Writer {
|
||||
}
|
||||
|
||||
impl AsyncWrite for Writer {
|
||||
fn poll_write(
|
||||
self: std::pin::Pin<&mut Self>,
|
||||
cx: &mut std::task::Context<'_>,
|
||||
buf: &[u8],
|
||||
) -> std::task::Poll<std::io::Result<usize>> {
|
||||
fn poll_write(self: Pin<&mut Self>, cx: &mut std::task::Context<'_>, buf: &[u8]) -> std::task::Poll<std::io::Result<usize>> {
|
||||
match self.get_mut() {
|
||||
Writer::Cursor(w) => Pin::new(w).poll_write(cx, buf),
|
||||
Writer::Http(w) => Pin::new(w).poll_write(cx, buf),
|
||||
@@ -89,14 +85,14 @@ impl AsyncWrite for Writer {
|
||||
}
|
||||
}
|
||||
|
||||
fn poll_flush(self: std::pin::Pin<&mut Self>, cx: &mut std::task::Context<'_>) -> std::task::Poll<std::io::Result<()>> {
|
||||
fn poll_flush(self: Pin<&mut Self>, cx: &mut std::task::Context<'_>) -> std::task::Poll<std::io::Result<()>> {
|
||||
match self.get_mut() {
|
||||
Writer::Cursor(w) => Pin::new(w).poll_flush(cx),
|
||||
Writer::Http(w) => Pin::new(w).poll_flush(cx),
|
||||
Writer::Other(w) => Pin::new(w.as_mut()).poll_flush(cx),
|
||||
}
|
||||
}
|
||||
fn poll_shutdown(self: std::pin::Pin<&mut Self>, cx: &mut std::task::Context<'_>) -> std::task::Poll<std::io::Result<()>> {
|
||||
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut std::task::Context<'_>) -> std::task::Poll<std::io::Result<()>> {
|
||||
match self.get_mut() {
|
||||
Writer::Cursor(w) => Pin::new(w).poll_shutdown(cx),
|
||||
Writer::Http(w) => Pin::new(w).poll_shutdown(cx),
|
||||
|
||||
@@ -22,7 +22,7 @@ repository.workspace = true
|
||||
rust-version.workspace = true
|
||||
homepage.workspace = true
|
||||
description = "RustFS Scanner provides scanning capabilities for data integrity checks, health monitoring, and storage analysis."
|
||||
keywords = ["RustFS", "scanner", "health-monitoring", "data-integrity", "storage-analysis", "Minio"]
|
||||
keywords = ["RustFS", "scanner", "health-monitoring", "data-integrity", "storage-analysis"]
|
||||
categories = ["web-programming", "development-tools", "filesystem"]
|
||||
documentation = "https://docs.rs/rustfs-scanner/latest/rustfs_scanner/"
|
||||
|
||||
@@ -47,7 +47,7 @@ rmp-serde = { workspace = true }
|
||||
rustfs-filemeta = { workspace = true }
|
||||
rustfs-madmin = { workspace = true }
|
||||
tokio-util = { workspace = true }
|
||||
rustfs-ecstore = { workspace = true }
|
||||
rustfs-ecstore = { workspace = true }
|
||||
http = { workspace = true }
|
||||
rand = { workspace = true }
|
||||
s3s = { workspace = true }
|
||||
|
||||
@@ -502,8 +502,8 @@ impl Metrics {
|
||||
}
|
||||
|
||||
// Type aliases for compatibility with existing code
|
||||
pub type UpdateCurrentPathFn = Arc<dyn Fn(&str) -> Pin<Box<dyn std::future::Future<Output = ()> + Send>> + Send + Sync>;
|
||||
pub type CloseDiskFn = Arc<dyn Fn() -> Pin<Box<dyn std::future::Future<Output = ()> + Send>> + Send + Sync>;
|
||||
pub type UpdateCurrentPathFn = Arc<dyn Fn(&str) -> Pin<Box<dyn Future<Output = ()> + Send>> + Send + Sync>;
|
||||
pub type CloseDiskFn = Arc<dyn Fn() -> Pin<Box<dyn Future<Output = ()> + Send>> + Send + Sync>;
|
||||
|
||||
/// Create a current path updater for tracking scan progress
|
||||
pub fn current_path_updater(disk: &str, initial: &str) -> (UpdateCurrentPathFn, CloseDiskFn) {
|
||||
@@ -519,7 +519,7 @@ pub fn current_path_updater(disk: &str, initial: &str) -> (UpdateCurrentPathFn,
|
||||
|
||||
let update_fn = {
|
||||
let tracker = Arc::clone(&tracker);
|
||||
Arc::new(move |path: &str| -> Pin<Box<dyn std::future::Future<Output = ()> + Send>> {
|
||||
Arc::new(move |path: &str| -> Pin<Box<dyn Future<Output = ()> + Send>> {
|
||||
let tracker = Arc::clone(&tracker);
|
||||
let path = path.to_string();
|
||||
Box::pin(async move {
|
||||
@@ -530,7 +530,7 @@ pub fn current_path_updater(disk: &str, initial: &str) -> (UpdateCurrentPathFn,
|
||||
|
||||
let done_fn = {
|
||||
let disk_name = disk_name.clone();
|
||||
Arc::new(move || -> Pin<Box<dyn std::future::Future<Output = ()> + Send>> {
|
||||
Arc::new(move || -> Pin<Box<dyn Future<Output = ()> + Send>> {
|
||||
let disk_name = disk_name.clone();
|
||||
Box::pin(async move {
|
||||
global_metrics().current_paths.write().await.remove(&disk_name);
|
||||
@@ -555,7 +555,7 @@ impl CloseDiskGuard {
|
||||
}
|
||||
|
||||
pub async fn close(&self) {
|
||||
(self.0)().await;
|
||||
self.0().await;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,13 +86,10 @@ pub async fn read_background_heal_info(storeapi: Arc<ECStore>) -> BackgroundHeal
|
||||
|
||||
// Get last healing information
|
||||
match read_config(storeapi, &BACKGROUND_HEAL_INFO_PATH).await {
|
||||
Ok(buf) => match serde_json::from_slice::<BackgroundHealInfo>(&buf) {
|
||||
Ok(info) => info,
|
||||
Err(e) => {
|
||||
error!("Failed to unmarshal background heal info from {}: {}", &*BACKGROUND_HEAL_INFO_PATH, e);
|
||||
BackgroundHealInfo::default()
|
||||
}
|
||||
},
|
||||
Ok(buf) => serde_json::from_slice::<BackgroundHealInfo>(&buf).unwrap_or_else(|e| {
|
||||
error!("Failed to unmarshal background heal info from {}: {}", &*BACKGROUND_HEAL_INFO_PATH, e);
|
||||
BackgroundHealInfo::default()
|
||||
}),
|
||||
Err(e) => {
|
||||
// Only log if it's not a ConfigNotFound error
|
||||
if e != EcstoreError::ConfigNotFound {
|
||||
@@ -194,7 +191,7 @@ pub async fn run_data_scanner(ctx: CancellationToken, storeapi: Arc<ECStore>) ->
|
||||
|
||||
|
||||
|
||||
let (sender, receiver) = tokio::sync::mpsc::channel::<DataUsageInfo>(1);
|
||||
let (sender, receiver) = mpsc::channel::<DataUsageInfo>(1);
|
||||
let storeapi_clone = storeapi.clone();
|
||||
let ctx_clone = ctx.clone();
|
||||
tokio::spawn(async move {
|
||||
|
||||
@@ -1086,7 +1086,7 @@ pub async fn scan_data_folder(
|
||||
|
||||
// Create skip_heal flag
|
||||
let is_erasure_mode = is_erasure().await;
|
||||
let skip_heal = std::sync::Arc::new(std::sync::atomic::AtomicBool::new(!is_erasure_mode || cache.info.skip_healing));
|
||||
let skip_heal = Arc::new(std::sync::atomic::AtomicBool::new(!is_erasure_mode || cache.info.skip_healing));
|
||||
|
||||
// Create heal_object_select flag
|
||||
let heal_object_select = if is_erasure_mode && !cache.info.skip_healing {
|
||||
@@ -1144,11 +1144,11 @@ pub async fn scan_data_folder(
|
||||
new_cache.info.last_update = Some(SystemTime::now());
|
||||
new_cache.info.next_cycle = cache.info.next_cycle;
|
||||
|
||||
(close_disk)().await;
|
||||
close_disk().await;
|
||||
Ok(new_cache.clone())
|
||||
}
|
||||
Err(e) => {
|
||||
(close_disk)().await;
|
||||
close_disk().await;
|
||||
// No useful information, return original cache
|
||||
Err(e)
|
||||
}
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
// Copyright 2024 RustFS Team
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
use crate::scanner_folder::{ScannerItem, scan_data_folder};
|
||||
use crate::{
|
||||
DATA_USAGE_CACHE_NAME, DATA_USAGE_ROOT, DataUsageCache, DataUsageCacheInfo, DataUsageEntry, DataUsageEntryInfo,
|
||||
@@ -114,7 +128,7 @@ impl ScannerIO for ECStore {
|
||||
let results_mutex_clone = results_mutex.clone();
|
||||
let first_err_mutex_clone = first_err_mutex.clone();
|
||||
|
||||
let (tx, mut rx) = tokio::sync::mpsc::channel::<DataUsageCache>(1);
|
||||
let (tx, mut rx) = mpsc::channel::<DataUsageCache>(1);
|
||||
|
||||
// Spawn task to receive and store results
|
||||
let receiver_fut = tokio::spawn(async move {
|
||||
|
||||
@@ -165,7 +165,7 @@ pub fn is_request_error_retryable(_err: std::io::Error) -> bool {
|
||||
mod tests {
|
||||
use super::*;
|
||||
use futures::StreamExt;
|
||||
use rand::Rng;
|
||||
use rand::RngExt;
|
||||
use std::time::UNIX_EPOCH;
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// use async_zip::tokio::read::seek::ZipFileReader;
|
||||
// use async_zip::tokio::write::ZipFileWriter;
|
||||
// use async_zip::{Compression, ZipEntryBuilder};
|
||||
use async_compression::tokio::bufread::{BzDecoder, GzipDecoder, XzDecoder, ZlibDecoder, ZstdDecoder};
|
||||
use async_compression::tokio::write::{BzEncoder, GzipEncoder, XzEncoder, ZlibEncoder, ZstdEncoder};
|
||||
use std::path::Path;
|
||||
@@ -115,6 +112,15 @@ impl CompressionFormat {
|
||||
|
||||
Ok(decoder)
|
||||
}
|
||||
/// Convert CompressionLevel to async_compression::Level
|
||||
fn convert_level(level: CompressionLevel) -> async_compression::Level {
|
||||
match level {
|
||||
CompressionLevel::Fastest => async_compression::Level::Fastest,
|
||||
CompressionLevel::Best => async_compression::Level::Best,
|
||||
CompressionLevel::Default => async_compression::Level::Default,
|
||||
CompressionLevel::Level(n) => async_compression::Level::Precise(n as i32),
|
||||
}
|
||||
}
|
||||
|
||||
/// Create compressor
|
||||
pub fn get_encoder<W>(&self, output: W, level: CompressionLevel) -> io::Result<Box<dyn AsyncWrite + Send + Unpin>>
|
||||
@@ -125,48 +131,23 @@ impl CompressionFormat {
|
||||
|
||||
let encoder: Box<dyn AsyncWrite + Send + Unpin + 'static> = match self {
|
||||
CompressionFormat::Gzip => {
|
||||
let level = match level {
|
||||
CompressionLevel::Fastest => async_compression::Level::Fastest,
|
||||
CompressionLevel::Best => async_compression::Level::Best,
|
||||
CompressionLevel::Default => async_compression::Level::Default,
|
||||
CompressionLevel::Level(n) => async_compression::Level::Precise(n as i32),
|
||||
};
|
||||
let level = Self::convert_level(level);
|
||||
Box::new(GzipEncoder::with_quality(writer, level))
|
||||
}
|
||||
CompressionFormat::Bzip2 => {
|
||||
let level = match level {
|
||||
CompressionLevel::Fastest => async_compression::Level::Fastest,
|
||||
CompressionLevel::Best => async_compression::Level::Best,
|
||||
CompressionLevel::Default => async_compression::Level::Default,
|
||||
CompressionLevel::Level(n) => async_compression::Level::Precise(n as i32),
|
||||
};
|
||||
let level = Self::convert_level(level);
|
||||
Box::new(BzEncoder::with_quality(writer, level))
|
||||
}
|
||||
CompressionFormat::Zlib => {
|
||||
let level = match level {
|
||||
CompressionLevel::Fastest => async_compression::Level::Fastest,
|
||||
CompressionLevel::Best => async_compression::Level::Best,
|
||||
CompressionLevel::Default => async_compression::Level::Default,
|
||||
CompressionLevel::Level(n) => async_compression::Level::Precise(n as i32),
|
||||
};
|
||||
let level = Self::convert_level(level);
|
||||
Box::new(ZlibEncoder::with_quality(writer, level))
|
||||
}
|
||||
CompressionFormat::Xz => {
|
||||
let level = match level {
|
||||
CompressionLevel::Fastest => async_compression::Level::Fastest,
|
||||
CompressionLevel::Best => async_compression::Level::Best,
|
||||
CompressionLevel::Default => async_compression::Level::Default,
|
||||
CompressionLevel::Level(n) => async_compression::Level::Precise(n as i32),
|
||||
};
|
||||
let level = Self::convert_level(level);
|
||||
Box::new(XzEncoder::with_quality(writer, level))
|
||||
}
|
||||
CompressionFormat::Zstd => {
|
||||
let level = match level {
|
||||
CompressionLevel::Fastest => async_compression::Level::Fastest,
|
||||
CompressionLevel::Best => async_compression::Level::Best,
|
||||
CompressionLevel::Default => async_compression::Level::Default,
|
||||
CompressionLevel::Level(n) => async_compression::Level::Precise(n as i32),
|
||||
};
|
||||
let level = Self::convert_level(level);
|
||||
Box::new(ZstdEncoder::with_quality(writer, level))
|
||||
}
|
||||
CompressionFormat::Tar => Box::new(writer),
|
||||
@@ -189,7 +170,7 @@ impl CompressionFormat {
|
||||
pub async fn decompress<R, F>(input: R, format: CompressionFormat, mut callback: F) -> io::Result<()>
|
||||
where
|
||||
R: AsyncRead + Send + Unpin + 'static,
|
||||
F: AsyncFnMut(tokio_tar::Entry<Archive<Box<dyn AsyncRead + Send + Unpin + 'static>>>) -> std::io::Result<()> + Send + 'static,
|
||||
F: AsyncFnMut(tokio_tar::Entry<Archive<Box<dyn AsyncRead + Send + Unpin + 'static>>>) -> io::Result<()> + Send + 'static,
|
||||
{
|
||||
let decoder = format.get_decoder(input)?;
|
||||
let mut ar = Archive::new(decoder);
|
||||
@@ -258,7 +239,7 @@ impl Compressor {
|
||||
let cursor = std::io::Cursor::new(output);
|
||||
let mut encoder = self.format.get_encoder(cursor, self.level)?;
|
||||
|
||||
tokio::io::copy(&mut std::io::Cursor::new(input), &mut encoder).await?;
|
||||
io::copy(&mut std::io::Cursor::new(input), &mut encoder).await?;
|
||||
encoder.shutdown().await?;
|
||||
|
||||
// Get compressed data
|
||||
@@ -273,7 +254,7 @@ impl Compressor {
|
||||
let cursor = std::io::Cursor::new(input);
|
||||
let mut decoder = self.format.get_decoder(cursor)?;
|
||||
|
||||
tokio::io::copy(&mut decoder, &mut output).await?;
|
||||
io::copy(&mut decoder, &mut output).await?;
|
||||
|
||||
Ok(output)
|
||||
}
|
||||
@@ -302,7 +283,7 @@ impl Decompressor {
|
||||
let mut decoder = self.format.get_decoder(input_file)?;
|
||||
let mut writer = BufWriter::new(output_file);
|
||||
|
||||
tokio::io::copy(&mut decoder, &mut writer).await?;
|
||||
io::copy(&mut decoder, &mut writer).await?;
|
||||
writer.shutdown().await?;
|
||||
|
||||
Ok(())
|
||||
@@ -538,15 +519,12 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_compression_format_memory_efficiency() {
|
||||
// Test memory efficiency of enum
|
||||
use std::mem;
|
||||
|
||||
// Verify enum size is reasonable
|
||||
let size = mem::size_of::<CompressionFormat>();
|
||||
let size = size_of::<CompressionFormat>();
|
||||
assert!(size <= 8, "CompressionFormat should be memory efficient, got {size} bytes");
|
||||
|
||||
// Verify Option<CompressionFormat> size
|
||||
let option_size = mem::size_of::<Option<CompressionFormat>>();
|
||||
let option_size = size_of::<Option<CompressionFormat>>();
|
||||
assert!(
|
||||
option_size <= 16,
|
||||
"Option<CompressionFormat> should be efficient, got {option_size} bytes"
|
||||
|
||||
@@ -34,6 +34,7 @@ path = "src/main.rs"
|
||||
default = ["metrics"]
|
||||
metrics = []
|
||||
ftps = ["rustfs-protocols/ftps"]
|
||||
full = ["metrics", "ftps"]
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
use backtrace::Backtrace;
|
||||
use pprof::protos::Message;
|
||||
use rand::Rng;
|
||||
use rand::RngExt;
|
||||
use starshard::ShardedHashMap;
|
||||
use std::alloc::{GlobalAlloc, Layout};
|
||||
use std::cell::Cell;
|
||||
|
||||
@@ -78,7 +78,7 @@ use aes_gcm::{
|
||||
};
|
||||
use async_trait::async_trait;
|
||||
use base64::{Engine, engine::general_purpose::STANDARD as BASE64_STANDARD};
|
||||
use rand::RngCore;
|
||||
use rand::Rng;
|
||||
use rustfs_ecstore::error::StorageError;
|
||||
use rustfs_filemeta::ObjectPartInfo;
|
||||
use rustfs_kms::{
|
||||
|
||||
Reference in New Issue
Block a user