diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d938e90..8e883a9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -29,7 +29,7 @@ jobs: --health-retries 5 strategy: matrix: - rust: [ 1.76.0, stable, nightly ] + rust: [ 1.85.0, stable, nightly ] #features: [ --no-default-features, --all-features ] runs-on: ubuntu-latest steps: @@ -40,7 +40,7 @@ jobs: toolchain: ${{ matrix.rust }} components: rustfmt, clippy - name: Install sqlx-cli - run: cargo install sqlx-cli --no-default-features --features postgres + run: cargo install sqlx-cli --locked --no-default-features --features postgres - name: Setup DB working-directory: ./rexecutor-sqlx run: sqlx database setup @@ -81,7 +81,7 @@ jobs: - name: Install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: Install sqlx-cli - run: cargo install sqlx-cli --no-default-features --features postgres + run: cargo install sqlx-cli --locked --no-default-features --features postgres - name: Setup DB working-directory: ./rexecutor-sqlx run: sqlx database setup diff --git a/Cargo.lock b/Cargo.lock index e346cf3..01743d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -17,19 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "getrandom", - "once_cell", - "version_check", - "zerocopy", -] - [[package]] name = "allocator-api2" version = "0.2.16" @@ -82,7 +69,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -93,7 +80,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -128,9 +115,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -207,6 +194,15 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -255,13 +251,13 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "cron" -version = "0.12.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8c3e73077b4b4a6ab1ea5047c37c57aee77657bc8ecd6f29b0af082d0b0c07" +checksum = "5877d3fbf742507b66bc2a1945106bd30dd8504019d596901ddd012a4dd01740" dependencies = [ "chrono", - "nom", "once_cell", + "winnow", ] [[package]] @@ -362,9 +358,14 @@ dependencies = [ [[package]] name = "event-listener" -version = "2.5.3" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] [[package]] name = "fastrand" @@ -389,6 +390,12 @@ dependencies = [ "spin 0.9.8", ] +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -486,7 +493,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -549,6 +556,18 @@ dependencies = [ "wasi", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + [[package]] name = "gimli" version = "0.28.1" @@ -560,28 +579,32 @@ name = "hashbrown" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "ahash", "allocator-api2", + "equivalent", + "foldhash", ] [[package]] name = "hashlink" -version = "0.8.4" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown", + "hashbrown 0.15.5", ] [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -dependencies = [ - "unicode-segmentation", -] +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -662,16 +685,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", + "hashbrown 0.14.3", ] [[package]] @@ -700,9 +714,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libm" @@ -712,11 +726,10 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libsqlite3-sys" -version = "0.27.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ - "cc", "pkg-config", "vcpkg", ] @@ -759,12 +772,6 @@ version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.7.2" @@ -787,14 +794,13 @@ dependencies = [ [[package]] name = "mockall" -version = "0.12.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43766c2b5203b10de348ffe19f7e54564b64f3d6018ff7648d1e2d6d3a0f0a48" +checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2" dependencies = [ "cfg-if", "downcast", "fragile", - "lazy_static", "mockall_derive", "predicates", "predicates-tree", @@ -802,14 +808,14 @@ dependencies = [ [[package]] name = "mockall_derive" -version = "0.12.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2" +checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898" dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -830,16 +836,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -862,7 +858,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "smallvec", "zeroize", ] @@ -945,7 +941,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -972,6 +968,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.1" @@ -995,12 +997,6 @@ dependencies = [ "windows-targets 0.48.5", ] -[[package]] -name = "paste" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" - [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -1089,9 +1085,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -1105,6 +1101,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -1112,8 +1114,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -1123,7 +1135,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -1132,7 +1154,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.12", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", ] [[package]] @@ -1160,7 +1191,7 @@ dependencies = [ [[package]] name = "rexecutor" -version = "0.1.0" +version = "0.1.1" dependencies = [ "assert_matches", "async-stream", @@ -1170,7 +1201,7 @@ dependencies = [ "futures", "fxhash", "mockall", - "rand", + "rand 0.9.2", "serde", "serde_json", "thiserror", @@ -1182,7 +1213,7 @@ dependencies = [ [[package]] name = "rexecutor-sqlx" -version = "0.1.0" +version = "0.1.1" dependencies = [ "async-stream", "async-trait", @@ -1211,7 +1242,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core", + "rand_core 0.6.4", "signature", "spki", "subtle", @@ -1298,7 +1329,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -1312,6 +1343,18 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -1350,7 +1393,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1367,6 +1410,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -1403,22 +1449,11 @@ dependencies = [ "der", ] -[[package]] -name = "sqlformat" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" -dependencies = [ - "itertools", - "nom", - "unicode_categories", -] - [[package]] name = "sqlx" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" dependencies = [ "sqlx-core", "sqlx-macros", @@ -1429,38 +1464,33 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ - "ahash", - "atoi", - "byteorder", + "base64", "bytes", "chrono", "crc", "crossbeam-queue", "either", "event-listener", - "futures-channel", "futures-core", "futures-intrusive", "futures-io", "futures-util", + "hashbrown 0.15.5", "hashlink", - "hex", "indexmap", "log", "memchr", "native-tls", "once_cell", - "paste", "percent-encoding", "serde", "serde_json", "sha2", "smallvec", - "sqlformat", "thiserror", "tokio", "tokio-stream", @@ -1471,22 +1501,22 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 1.0.109", + "syn", ] [[package]] name = "sqlx-macros-core" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" dependencies = [ "dotenvy", "either", @@ -1502,17 +1532,16 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 1.0.109", - "tempfile", + "syn", "tokio", "url", ] [[package]] name = "sqlx-mysql" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64", @@ -1538,7 +1567,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand", + "rand 0.8.5", "rsa", "serde", "sha1", @@ -1554,9 +1583,9 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64", @@ -1568,7 +1597,6 @@ dependencies = [ "etcetera", "futures-channel", "futures-core", - "futures-io", "futures-util", "hex", "hkdf", @@ -1579,7 +1607,7 @@ dependencies = [ "md-5", "memchr", "once_cell", - "rand", + "rand 0.8.5", "serde", "serde_json", "sha2", @@ -1594,9 +1622,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.7.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" dependencies = [ "atoi", "chrono", @@ -1610,10 +1638,11 @@ dependencies = [ "log", "percent-encoding", "serde", + "serde_urlencoded", "sqlx-core", + "thiserror", "tracing", "url", - "urlencoding", "uuid", ] @@ -1636,20 +1665,9 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.55" +version = "2.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" +checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f" dependencies = [ "proc-macro2", "quote", @@ -1676,22 +1694,22 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.58" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -1744,7 +1762,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -1791,7 +1809,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", ] [[package]] @@ -1856,18 +1874,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" - -[[package]] -name = "unicode_categories" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" - [[package]] name = "url" version = "2.5.0" @@ -1879,12 +1885,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "uuid" version = "1.8.0" @@ -1915,6 +1915,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasite" version = "0.1.0" @@ -1942,7 +1951,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.55", + "syn", "wasm-bindgen-shared", ] @@ -1964,7 +1973,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2149,24 +2158,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] -name = "zerocopy" -version = "0.7.32" +name = "winnow" +version = "0.6.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "1e90edd2ac1aa278a5c4599b1d89cf03074b610800f866d4026dc199d7929a28" dependencies = [ - "zerocopy-derive", + "memchr", ] [[package]] -name = "zerocopy-derive" -version = "0.7.32" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.55", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "zeroize" diff --git a/docker-compose.yml b/docker-compose.yml index 00d6c4c..cd3954e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,6 @@ -version: "3" - services: postgres: - image: public.ecr.aws/bitnami/postgresql:12 + image: postgres:16 ports: - "5432:5432" environment: diff --git a/examples/postgres/Cargo.toml b/examples/postgres/Cargo.toml index b47fb82..6bc7904 100644 --- a/examples/postgres/Cargo.toml +++ b/examples/postgres/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rexecuter-exmample-postgres" version = "0.1.0" -edition = "2021" +edition = "2024" publish = false [dependencies] @@ -12,4 +12,4 @@ chrono = "0.4.37" tokio = { version = "1.37.0", features = ["rt", "macros", "sync", "time", "rt-multi-thread"] } tracing = "0.1.40" tracing-subscriber = "0.3.18" -cron = "0.12.1" +cron = "0.15" diff --git a/rexecutor-sqlx/Cargo.toml b/rexecutor-sqlx/Cargo.toml index 6d4c98c..9a1488a 100644 --- a/rexecutor-sqlx/Cargo.toml +++ b/rexecutor-sqlx/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rexecutor-sqlx" -version = "0.1.0" -edition = "2021" +version = "0.1.1" +edition = "2024" authors = ["John Bell "] @@ -21,7 +21,7 @@ chrono = { version = "0.4.37", features = ["serde"] } futures = "0.3.30" serde = "1.0.197" serde_json = "1.0.115" -sqlx = { version = "0.7.*", features = [ +sqlx = { version = "0.8.*", features = [ "postgres", "runtime-tokio-native-tls", "uuid", @@ -29,7 +29,7 @@ sqlx = { version = "0.7.*", features = [ "chrono", "migrate", ] } -thiserror = "1.0.58" +thiserror = "2.0" tokio = { version = "1.37.0", features = ["rt", "macros", "sync", "time"] } tracing = "0.1.40" async-stream = "0.3.5" diff --git a/rexecutor-sqlx/src/backend.rs b/rexecutor-sqlx/src/backend.rs index 4c38274..d52caca 100644 --- a/rexecutor-sqlx/src/backend.rs +++ b/rexecutor-sqlx/src/backend.rs @@ -13,7 +13,7 @@ use rexecutor::{ use tokio::sync::mpsc; use tracing::instrument; -use crate::{map_err, stream::ReadyJobStream, RexecutorPgBackend}; +use crate::{RexecutorPgBackend, map_err, stream::ReadyJobStream}; impl RexecutorPgBackend { fn handle_update(result: sqlx::Result, job_id: JobId) -> Result<(), BackendError> { @@ -121,8 +121,8 @@ impl Backend for RexecutorPgBackend { #[cfg(test)] mod test { - use crate::types::Job; use crate::JobStatus; + use crate::types::Job; use super::*; use chrono::TimeDelta; diff --git a/rexecutor-sqlx/src/lib.rs b/rexecutor-sqlx/src/lib.rs index 3cf8642..34e50a7 100644 --- a/rexecutor-sqlx/src/lib.rs +++ b/rexecutor-sqlx/src/lib.rs @@ -6,16 +6,16 @@ use std::{collections::HashMap, sync::Arc}; use chrono::{DateTime, Utc}; use rexecutor::{ backend::{BackendError, EnqueuableJob, ExecutionError, Query}, - job::{uniqueness_criteria::Resolution, JobId}, + job::{JobId, uniqueness_criteria::Resolution}, pruner::PruneSpec, }; use serde::Deserialize; use sqlx::{ + PgPool, QueryBuilder, Row, postgres::{PgListener, PgPoolOptions}, types::Text, - PgPool, QueryBuilder, Row, }; -use tokio::sync::{mpsc, RwLock}; +use tokio::sync::{RwLock, mpsc}; use crate::{query::ToQuery, unique::Unique}; diff --git a/rexecutor-sqlx/src/types.rs b/rexecutor-sqlx/src/types.rs index bdf5bde..7ff5074 100644 --- a/rexecutor-sqlx/src/types.rs +++ b/rexecutor-sqlx/src/types.rs @@ -3,10 +3,7 @@ use std::fmt::Display; use chrono::{DateTime, Utc}; use rexecutor::backend::BackendError; use serde::{Deserialize, Serialize}; -use sqlx::{ - postgres::{PgHasArrayType, PgTypeInfo}, - prelude::FromRow, -}; +use sqlx::prelude::FromRow; #[derive(sqlx::Type, Debug, Clone, Copy, Serialize, PartialEq, Eq)] #[sqlx(type_name = "rexecutor_job_state", rename_all = "lowercase")] @@ -19,12 +16,6 @@ pub(crate) enum JobStatus { Discarded, } -impl PgHasArrayType for JobStatus { - fn array_type_info() -> PgTypeInfo { - PgTypeInfo::with_name("rexecutor_job_state[]") - } -} - impl From for rexecutor::job::JobStatus { fn from(value: JobStatus) -> Self { match value { diff --git a/rexecutor/Cargo.toml b/rexecutor/Cargo.toml index 8dd13ba..7abe1fb 100644 --- a/rexecutor/Cargo.toml +++ b/rexecutor/Cargo.toml @@ -1,10 +1,8 @@ [package] name = "rexecutor" -version = "0.1.0" -edition = "2021" -# We need 1.75 for RPIT, however, currently we are using inspect_error, which was released in 1.76.0 -# Should we remove inspect_error to set the MSRV to 1.75.0? -rust-version = "1.76.0" +version = "0.1.1" +edition = "2024" +rust-version = "1.85.0" # TODO: add features like rand, and cron. # TODO: set version to older versions to enable building with projects with out of data deps. @@ -23,13 +21,13 @@ categories = ["asynchronous"] async-stream = "0.3.5" async-trait = "0.1.79" chrono = "0.4.37" -cron = "0.12.1" +cron = "0.15" futures = "0.3.30" fxhash = "0.2.1" -rand = "0.8.5" +rand = "0.9" serde = "1.0.197" serde_json = "1.0.115" -thiserror = "1.0.58" +thiserror = "2.0" tokio = { version = "1.37.0", features = ["rt", "macros", "sync", "time"] } tokio-util = "0.7.10" tracing = "0.1.40" @@ -37,6 +35,6 @@ tracing = "0.1.40" [dev-dependencies] assert_matches = "1.5.0" chrono = {version = "0.4.37", features = ["serde"]} -mockall = "0.12.1" +mockall = "0.13" serde = {version = "1.0.197", features = ["derive", "serde_derive"]} tokio-stream = "0.1.15" diff --git a/rexecutor/src/backend.rs b/rexecutor/src/backend.rs index e3fe56e..ad96301 100644 --- a/rexecutor/src/backend.rs +++ b/rexecutor/src/backend.rs @@ -18,7 +18,7 @@ use tokio_stream::wrappers::UnboundedReceiverStream; use crate::{ executor::ExecutorIdentifier, - job::{self, uniqueness_criteria::UniquenessCriteria, ErrorType, JobError, JobId, JobStatus}, + job::{self, ErrorType, JobError, JobId, JobStatus, uniqueness_criteria::UniquenessCriteria}, pruner::PruneSpec, }; @@ -414,7 +414,7 @@ pub enum BackendError { #[cfg(test)] pub(crate) mod test { use super::*; - use crate::executor::{test::SimpleExecutor, Executor}; + use crate::executor::{Executor, test::SimpleExecutor}; use assert_matches::assert_matches; use chrono::TimeDelta; use std::sync::Arc; @@ -512,22 +512,22 @@ pub(crate) mod test { assert_matches!(query, Query::Not(inner) => { assert_matches!(*inner, Query::And(queries) => { - assert_matches!(&queries[..], [ - Query::DataEquals(encoded_data), - Query::MetadataEquals(encoded_metadata), + assert_matches!(&queries[..], &[ + Query::DataEquals(ref encoded_data), + Query::MetadataEquals(ref encoded_metadata), Query::IdEquals(jid), Query::IdIn(jids), Query::StatusEqual(JobStatus::Complete), Query::TagsAllOf(&["one", "two"]), Query::TagsOneOf(&["three", "four"]), Query::ScheduledAtBefore(scheduled_before), - Query::Or(inner), + Query::Or(ref inner), ] => { assert_eq!(encoded_data, &serde_json::Value::String(data.clone())); assert_eq!(encoded_metadata, &serde_json::Value::String(metadata.clone())); - assert_eq!(jid, &job_id); - assert_eq!(jids, &job_ids); - assert_eq!(scheduled_before, &date); + assert_eq!(jid, job_id); + assert_eq!(jids, job_ids); + assert_eq!(scheduled_before, date); assert_matches!(&inner[..], [ Query::ScheduledAtAfter(scheduled_after), Query::ScheduledAtEqual(scheduled_at), @@ -549,7 +549,7 @@ pub(crate) mod test { .for_executor("executor"); assert_matches!(query, Query::And(queries) => { - assert_matches!(&queries[..], [ + assert_matches!(&queries[..], &[ Query::StatusEqual(JobStatus::Complete), Query::TagsAllOf(&["one", "two"]), Query::ExecutorEqual("executor"), @@ -570,7 +570,7 @@ pub(crate) mod test { Query::ExecutorEqual("executor"), Query::Or(inner), ] => { - assert_matches!(&inner[..], [ + assert_matches!(&inner[..], &[ Query::StatusEqual(JobStatus::Complete), Query::TagsAllOf(&["one", "two"]), ]); @@ -590,10 +590,12 @@ pub(crate) mod test { assert!(smart_pointer_backend.rerun_job(42.into()).await.is_ok()); assert!(smart_pointer_backend.update_job(job).await.is_ok()); - assert!(smart_pointer_backend - .query(Query::ExecutorEqual("")) - .await - .is_ok()); + assert!( + smart_pointer_backend + .query(Query::ExecutorEqual("")) + .await + .is_ok() + ); } #[tokio::test] @@ -608,10 +610,12 @@ pub(crate) mod test { assert!(smart_pointer_backend.rerun_job(42.into()).await.is_ok()); assert!(smart_pointer_backend.update_job(job).await.is_ok()); - assert!(smart_pointer_backend - .query(Query::ExecutorEqual("")) - .await - .is_ok()); + assert!( + smart_pointer_backend + .query(Query::ExecutorEqual("")) + .await + .is_ok() + ); } #[tokio::test] @@ -626,10 +630,12 @@ pub(crate) mod test { assert!(smart_pointer_backend.rerun_job(42.into()).await.is_ok()); assert!(smart_pointer_backend.update_job(job).await.is_ok()); - assert!(smart_pointer_backend - .query(Query::ExecutorEqual("")) - .await - .is_ok()); + assert!( + smart_pointer_backend + .query(Query::ExecutorEqual("")) + .await + .is_ok() + ); } #[tokio::test] @@ -644,9 +650,11 @@ pub(crate) mod test { assert!(smart_pointer_backend.rerun_job(42.into()).await.is_ok()); assert!(smart_pointer_backend.update_job(job).await.is_ok()); - assert!(smart_pointer_backend - .query(Query::ExecutorEqual("")) - .await - .is_ok()); + assert!( + smart_pointer_backend + .query(Query::ExecutorEqual("")) + .await + .is_ok() + ); } } diff --git a/rexecutor/src/backend/memory.rs b/rexecutor/src/backend/memory.rs index 9de5713..a432524 100644 --- a/rexecutor/src/backend/memory.rs +++ b/rexecutor/src/backend/memory.rs @@ -8,16 +8,16 @@ use std::{ ops::Sub, pin::Pin, sync::{ - atomic::{AtomicBool, AtomicI32, Ordering}, Arc, RwLock, + atomic::{AtomicBool, AtomicI32, Ordering}, }, }; use crate::{ executor::ExecutorIdentifier, job::{ - uniqueness_criteria::{Resolution, UniquenessCriteria}, JobError, JobId, JobStatus, + uniqueness_criteria::{Resolution, UniquenessCriteria}, }, pruner::{PruneBy, PruneSpec}, }; @@ -27,7 +27,7 @@ use futures::Stream; use tokio::sync::mpsc; use super::{ - queryable::Queryable, Backend, BackendError, EnqueuableJob, ExecutionError, Job, Query, + Backend, BackendError, EnqueuableJob, ExecutionError, Job, Query, queryable::Queryable, }; use chrono::{DateTime, TimeDelta, Utc}; diff --git a/rexecutor/src/backend/queryable.rs b/rexecutor/src/backend/queryable.rs index 9f63df1..8bdd44a 100644 --- a/rexecutor/src/backend/queryable.rs +++ b/rexecutor/src/backend/queryable.rs @@ -5,7 +5,7 @@ use crate::{ pruner::{PruneSpec, Spec}, }; -use super::{memory::KeyedJob, EnqueuableJob, Query}; +use super::{EnqueuableJob, Query, memory::KeyedJob}; pub(super) trait Queryable { fn matches(&self, job: &KeyedJob) -> bool; diff --git a/rexecutor/src/backend/testing.rs b/rexecutor/src/backend/testing.rs index 1aadc72..fabc3c7 100644 --- a/rexecutor/src/backend/testing.rs +++ b/rexecutor/src/backend/testing.rs @@ -633,10 +633,12 @@ pub async fn mark_job_retryable(backend: impl BackendTesting) { message: "Error Message".to_owned(), }; - assert!(backend - .mark_job_retryable(id, scheduled_at, error.clone()) - .await - .is_ok()); + assert!( + backend + .mark_job_retryable(id, scheduled_at, error.clone()) + .await + .is_ok() + ); let job = backend.get_job(id).await.unwrap(); assert_eq!(job.status, JobStatus::Retryable); diff --git a/rexecutor/src/backoff.rs b/rexecutor/src/backoff.rs index 6c85ed2..4380214 100644 --- a/rexecutor/src/backoff.rs +++ b/rexecutor/src/backoff.rs @@ -206,7 +206,7 @@ impl Jitter { Self::Absolute(delta) => delta.num_milliseconds(), Self::Relative(ratio) => (value.num_milliseconds() as f64 * ratio).round() as i64, }; - let rand_jitter_seconds = rand::thread_rng().gen_range(-milliseconds..=milliseconds); + let rand_jitter_seconds = rand::rng().random_range(-milliseconds..=milliseconds); value + TimeDelta::milliseconds(rand_jitter_seconds) } } diff --git a/rexecutor/src/cron_runner.rs b/rexecutor/src/cron_runner.rs index c8fb752..25ef308 100644 --- a/rexecutor/src/cron_runner.rs +++ b/rexecutor/src/cron_runner.rs @@ -2,7 +2,7 @@ use std::{hash::Hash, marker::PhantomData, ops::Sub, time::Duration}; use chrono::{DateTime, TimeDelta, TimeZone, Utc}; use cron::Schedule; -use serde::{de::DeserializeOwned, Serialize}; +use serde::{Serialize, de::DeserializeOwned}; use tokio_util::sync::CancellationToken; use crate::{backend::Backend, executor::Executor, job::uniqueness_criteria::UniquenessCriteria}; diff --git a/rexecutor/src/executor.rs b/rexecutor/src/executor.rs index 0c47dca..03285dc 100644 --- a/rexecutor/src/executor.rs +++ b/rexecutor/src/executor.rs @@ -110,15 +110,15 @@ //! override this value for a specific job. use async_trait::async_trait; use chrono::TimeDelta; -use serde::{de::DeserializeOwned, Serialize}; +use serde::{Serialize, de::DeserializeOwned}; use std::{error::Error, fmt::Display}; use crate::{ + RexecutorError, backend::{Backend, Query}, backoff::{BackoffStrategy, Exponential, Jitter, Strategy}, global_backend::GlobalBackend, - job::{builder::JobBuilder, query::Where, uniqueness_criteria::UniquenessCriteria, Job, JobId}, - RexecutorError, + job::{Job, JobId, builder::JobBuilder, query::Where, uniqueness_criteria::UniquenessCriteria}, }; type Result = std::result::Result; @@ -795,7 +795,7 @@ pub(crate) mod test { let mut backend = MockBackend::default(); backend.expect_query().returning(move |_| { Ok(vec![ - crate::backend::Job::mock_job::().with_data("Data") + crate::backend::Job::mock_job::().with_data("Data"), ]) }); let query = Where::status_equals(JobStatus::Cancelled); diff --git a/rexecutor/src/global_backend.rs b/rexecutor/src/global_backend.rs index 173c363..d1c652b 100644 --- a/rexecutor/src/global_backend.rs +++ b/rexecutor/src/global_backend.rs @@ -11,7 +11,7 @@ use std::sync::Arc; use tokio::sync::OnceCell; -use crate::{backend::Backend, RexecutorError}; +use crate::{RexecutorError, backend::Backend}; /// The global backend. /// @@ -45,8 +45,8 @@ impl GlobalBackend { /// Calling [`GlobalBackend::as_ref`] before setting the backend returns an error /// /// ``` - /// use rexecutor::global_backend::GlobalBackend; /// use rexecutor::RexecutorError; + /// use rexecutor::global_backend::GlobalBackend; /// /// let result = GlobalBackend::as_ref(); /// diff --git a/rexecutor/src/job/builder.rs b/rexecutor/src/job/builder.rs index e9eaded..0a97e5f 100644 --- a/rexecutor/src/job/builder.rs +++ b/rexecutor/src/job/builder.rs @@ -68,11 +68,11 @@ use std::marker::PhantomData; use crate::{ + RexecutorError, backend::{Backend, EnqueuableJob}, executor::Executor, global_backend::GlobalBackend, job::uniqueness_criteria::UniquenessCriteria, - RexecutorError, }; use chrono::{DateTime, Duration, Utc}; @@ -520,9 +520,9 @@ mod tests { use std::sync::Arc; use crate::{ + Rexecutor, backend::{BackendError, MockBackend}, executor::test::SimpleExecutor, - Rexecutor, }; use super::*; diff --git a/rexecutor/src/job/runner.rs b/rexecutor/src/job/runner.rs index e0c4bac..d22508e 100644 --- a/rexecutor/src/job/runner.rs +++ b/rexecutor/src/job/runner.rs @@ -5,7 +5,7 @@ use futures::StreamExt; use serde::de::DeserializeOwned; use tokio::task::JoinError; use tokio_util::sync::CancellationToken; -use tracing::{instrument, Instrument}; +use tracing::{Instrument, instrument}; use crate::{ backend::Backend, diff --git a/rexecutor/src/lib.rs b/rexecutor/src/lib.rs index c9088da..47bb8ad 100644 --- a/rexecutor/src/lib.rs +++ b/rexecutor/src/lib.rs @@ -449,8 +449,8 @@ use cron_runner::CronRunner; use executor::Executor; use global_backend::GlobalBackend; use job::runner::JobRunner; -use pruner::{runner::PrunerRunner, PrunerConfig}; -use serde::{de::DeserializeOwned, Serialize}; +use pruner::{PrunerConfig, runner::PrunerRunner}; +use serde::{Serialize, de::DeserializeOwned}; use thiserror::Error; use tokio_util::sync::CancellationToken; diff --git a/rexecutor/src/prelude.rs b/rexecutor/src/prelude.rs index 1e6a3a5..7d2d875 100644 --- a/rexecutor/src/prelude.rs +++ b/rexecutor/src/prelude.rs @@ -4,6 +4,7 @@ //! # #![allow(unused_imports)] //! use rexecutor::prelude::*; //! ``` +pub use crate::Rexecutor; pub use crate::backoff::BackoffStrategy; pub use crate::backoff::Jitter; pub use crate::backoff::Strategy; @@ -13,4 +14,3 @@ pub use crate::job::uniqueness_criteria::{Replace, UniquenessCriteria}; pub use crate::job::{Job, JobStatus}; pub use crate::pruner::Pruner; pub use crate::pruner::PrunerConfig; -pub use crate::Rexecutor; diff --git a/rexecutor/src/pruner/runner.rs b/rexecutor/src/pruner/runner.rs index 15eda0c..0050e00 100644 --- a/rexecutor/src/pruner/runner.rs +++ b/rexecutor/src/pruner/runner.rs @@ -1,7 +1,7 @@ use std::{ops::Sub, time::Duration}; use chrono::{TimeDelta, Utc}; -use futures::{stream::FuturesOrdered, StreamExt}; +use futures::{StreamExt, stream::FuturesOrdered}; use tokio_util::sync::CancellationToken; use crate::backend::Backend; diff --git a/rexecutor/src/testing.rs b/rexecutor/src/testing.rs index 01dd772..7921b3a 100644 --- a/rexecutor/src/testing.rs +++ b/rexecutor/src/testing.rs @@ -252,9 +252,9 @@ mod test { use chrono::{TimeDelta, Utc}; use crate::{ - backend::memory::InMemoryBackend, - executor::{test::SimpleExecutor, Executor}, Rexecutor, + backend::memory::InMemoryBackend, + executor::{Executor, test::SimpleExecutor}, }; #[tokio::test]