From fcdfa9a5ef888a4074d8aec0243a813b5ea2817e Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 09:39:12 -0700 Subject: [PATCH 01/11] Install `cargo deny` directly from binary. Signed-off-by: currantw --- .github/workflows/lint.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index eedac611..2265a9ba 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -31,7 +31,9 @@ jobs: key: rust-x86_64-unknown-linux-gnu - name: Install cargo-deny - run: cargo install --locked cargo-deny + uses: taiki-e/install-action@735e5933943122c5ac182670a935f54a949265c1 # v2.52.4 + with: + tool: cargo-deny - name: Install dotnet uses: actions/setup-dotnet@c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7 # v5.2.0 From 76bcff58878f96816297be5e553756fa7db9861b Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 09:40:17 -0700 Subject: [PATCH 02/11] Use `--locked` for `cargo clippy`, which saves time on dependency resolution Signed-off-by: currantw --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index 7c28ea13..30fb2a04 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -171,7 +171,7 @@ tasks: dir: rust cmds: - cargo fmt --all -- --check - - cargo clippy --all-features --all-targets -- -D warnings + - cargo clippy --locked --all-features --all-targets -- -D warnings - cargo deny check - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --document-private-items From 8914a3672902f855185440f86106ddabc383f99b Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 09:50:27 -0700 Subject: [PATCH 03/11] Reduce timeout to 10 min Signed-off-by: currantw --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2265a9ba..210b5ff6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -14,7 +14,7 @@ permissions: jobs: lint: runs-on: ubuntu-latest - timeout-minutes: 20 + timeout-minutes: 10 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 From 5080e0fc848f12cf04054449623f052b539cc5fc Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 09:53:15 -0700 Subject: [PATCH 04/11] Use official `task` install action Signed-off-by: currantw --- .github/actions/run-coverage/action.yml | 4 +--- .github/workflows/check-examples.yml | 2 +- .github/workflows/lint.yml | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/actions/run-coverage/action.yml b/.github/actions/run-coverage/action.yml index 0eafc859..c9e734fb 100644 --- a/.github/actions/run-coverage/action.yml +++ b/.github/actions/run-coverage/action.yml @@ -11,9 +11,7 @@ runs: using: "composite" steps: - name: Install Task - shell: bash - run: | - sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin + uses: go-task/setup-task@dc4f00a24b1b0b5e1a9265f6f4e81d65c0862414 # v2.0.0 - name: Install reportgenerator shell: bash diff --git a/.github/workflows/check-examples.yml b/.github/workflows/check-examples.yml index d9a70d85..5a197b52 100644 --- a/.github/workflows/check-examples.yml +++ b/.github/workflows/check-examples.yml @@ -32,7 +32,7 @@ jobs: python-version: "3.12" - name: Install Task - run: sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin + uses: go-task/setup-task@dc4f00a24b1b0b5e1a9265f6f4e81d65c0862414 # v2.0.0 - name: Build Valkey.Glide run: task build target=lib diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 210b5ff6..04a60b10 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -46,7 +46,7 @@ jobs: curl -fsSL "$ACTIONLINT_URL" | tar xz -C /usr/local/bin actionlint - name: Install Task - run: sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin + uses: go-task/setup-task@dc4f00a24b1b0b5e1a9265f6f4e81d65c0862414 # v2.0.0 - name: Lint run: task lint From a364b63dc52ccc1465ef947c8115051f704e8c37 Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 09:58:36 -0700 Subject: [PATCH 05/11] COnsolidate install actions Signed-off-by: currantw --- .github/workflows/lint.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 04a60b10..7964bd4a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,11 +17,12 @@ jobs: timeout-minutes: 10 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: submodules: true - - name: Install Rust toolchain + - name: Install Rust uses: ./.github/actions/install-rust - name: Cache Rust @@ -30,23 +31,20 @@ jobs: path: rust/target key: rust-x86_64-unknown-linux-gnu - - name: Install cargo-deny + - name: Install cargo-deny and actionlint uses: taiki-e/install-action@735e5933943122c5ac182670a935f54a949265c1 # v2.52.4 with: - tool: cargo-deny + tool: | + cargo-deny + actionlint - name: Install dotnet uses: actions/setup-dotnet@c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7 # v5.2.0 with: dotnet-version: "8" - - name: Install actionlint - run: | - ACTIONLINT_URL=https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz - curl -fsSL "$ACTIONLINT_URL" | tar xz -C /usr/local/bin actionlint - - name: Install Task uses: go-task/setup-task@dc4f00a24b1b0b5e1a9265f6f4e81d65c0862414 # v2.0.0 - - name: Lint + - name: Run lint run: task lint From 1f38da80e445bc82f106a69017ee242e9e67e95d Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 10:54:32 -0700 Subject: [PATCH 06/11] fix(test): test both TimeSpan and DateTime overloads for multi-field hash expiry HashFieldGetAndSetExpiryAsync_MultiField and HashFieldSetAndSetExpiryAsync_MultiField were calling the same TimeSpan-based overload twice. The second assertion now calls the DateTime-based overload to cover both signatures. Signed-off-by: currantw --- .../StackExchange/CommandFlagsTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Valkey.Glide.IntegrationTests/StackExchange/CommandFlagsTests.cs b/tests/Valkey.Glide.IntegrationTests/StackExchange/CommandFlagsTests.cs index bf8c3828..d57f58d0 100644 --- a/tests/Valkey.Glide.IntegrationTests/StackExchange/CommandFlagsTests.cs +++ b/tests/Valkey.Glide.IntegrationTests/StackExchange/CommandFlagsTests.cs @@ -423,7 +423,7 @@ public async Task HashFieldGetAndSetExpiryAsync_MultiField_ThrowsOnCommandFlags( _ = await Assert.ThrowsAsync( () => db.HashFieldGetAndSetExpiryAsync("key", [], flags: UnsupportedFlag)); _ = await Assert.ThrowsAsync( - () => db.HashFieldGetAndSetExpiryAsync("key", [], flags: UnsupportedFlag)); + () => db.HashFieldGetAndSetExpiryAsync("key", [], DateTime.MinValue, UnsupportedFlag)); } [Theory(DisableDiscoveryEnumeration = true)] @@ -443,7 +443,7 @@ public async Task HashFieldSetAndSetExpiryAsync_MultiField_ThrowsOnCommandFlags( _ = await Assert.ThrowsAsync( () => db.HashFieldSetAndSetExpiryAsync("key", [], flags: UnsupportedFlag)); _ = await Assert.ThrowsAsync( - () => db.HashFieldSetAndSetExpiryAsync("key", [], flags: UnsupportedFlag)); + () => db.HashFieldSetAndSetExpiryAsync("key", [], DateTime.MinValue, flags: UnsupportedFlag)); } #endregion From c76817d6d7cd10ee61930bb9e2b55a3d752f8bff Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 12:35:36 -0700 Subject: [PATCH 07/11] Add yaml caching Signed-off-by: currantw --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index 30fb2a04..045a423e 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -217,7 +217,7 @@ tasks: format:yaml: desc: "Run YAML formatting" - cmd: npx prettier --write "**/*.yml" + cmd: npx prettier --write --cache "**/*.yml" format:markdown: desc: "Run Markdown formatting" From a9566ea90cc76bec607a6e0d60e72dae8dbef4c9 Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 13:02:52 -0700 Subject: [PATCH 08/11] fix(ci): address review feedback on lint workflow - Revert --locked on cargo clippy (Cargo.lock is gitignored) - Improve Rust cache key to invalidate when Cargo.toml changes - Pin actionlint to v1.7.12 for reproducible lint results Signed-off-by: currantw --- .github/workflows/lint.yml | 8 ++++++-- Taskfile.yml | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7964bd4a..57890c5b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -29,14 +29,18 @@ jobs: uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: path: rust/target - key: rust-x86_64-unknown-linux-gnu + # Use 'Cargo.toml' hash so the cache invalidates when dependencies change. + key: rust-lint-${{ hashFiles('rust/Cargo.toml') }} + # On cache miss, restore the most recent cache with this prefix so cargo + # only recompiles changed dependencies instead of building from scratch. + restore-keys: rust-lint- - name: Install cargo-deny and actionlint uses: taiki-e/install-action@735e5933943122c5ac182670a935f54a949265c1 # v2.52.4 with: tool: | cargo-deny - actionlint + actionlint@1.7.12 - name: Install dotnet uses: actions/setup-dotnet@c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7 # v5.2.0 diff --git a/Taskfile.yml b/Taskfile.yml index 045a423e..efb174f3 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -171,7 +171,7 @@ tasks: dir: rust cmds: - cargo fmt --all -- --check - - cargo clippy --locked --all-features --all-targets -- -D warnings + - cargo clippy --all-features --all-targets -- -D warnings - cargo deny check - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --document-private-items From 9d2d4523c29a24fca0dc5e6ce7a17cba2ae1e263 Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 13:07:57 -0700 Subject: [PATCH 09/11] fix(ci): correct go-task/setup-task commit SHA Signed-off-by: currantw --- .github/actions/run-coverage/action.yml | 2 +- .github/workflows/check-examples.yml | 2 +- .github/workflows/lint.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/run-coverage/action.yml b/.github/actions/run-coverage/action.yml index c9e734fb..0e2b888e 100644 --- a/.github/actions/run-coverage/action.yml +++ b/.github/actions/run-coverage/action.yml @@ -11,7 +11,7 @@ runs: using: "composite" steps: - name: Install Task - uses: go-task/setup-task@dc4f00a24b1b0b5e1a9265f6f4e81d65c0862414 # v2.0.0 + uses: go-task/setup-task@3be4020d41929789a01026e0e427a4321ce0ad44 # v2.0.0 - name: Install reportgenerator shell: bash diff --git a/.github/workflows/check-examples.yml b/.github/workflows/check-examples.yml index 5a197b52..eefe05c6 100644 --- a/.github/workflows/check-examples.yml +++ b/.github/workflows/check-examples.yml @@ -32,7 +32,7 @@ jobs: python-version: "3.12" - name: Install Task - uses: go-task/setup-task@dc4f00a24b1b0b5e1a9265f6f4e81d65c0862414 # v2.0.0 + uses: go-task/setup-task@3be4020d41929789a01026e0e427a4321ce0ad44 # v2.0.0 - name: Build Valkey.Glide run: task build target=lib diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 57890c5b..cfd9b2b4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -48,7 +48,7 @@ jobs: dotnet-version: "8" - name: Install Task - uses: go-task/setup-task@dc4f00a24b1b0b5e1a9265f6f4e81d65c0862414 # v2.0.0 + uses: go-task/setup-task@3be4020d41929789a01026e0e427a4321ce0ad44 # v2.0.0 - name: Run lint run: task lint From 19634cee997961a9c50ca549e95cfa68006d4384 Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 13:15:10 -0700 Subject: [PATCH 10/11] fix(ci): split actionlint install from taiki-e/install-action actionlint is not in taiki-e's supported tools manifest, so version pinning fails. Use direct curl download instead (pinned to v1.7.12). Signed-off-by: currantw --- .github/workflows/lint.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index cfd9b2b4..edc7ce97 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -35,12 +35,13 @@ jobs: # only recompiles changed dependencies instead of building from scratch. restore-keys: rust-lint- - - name: Install cargo-deny and actionlint + - name: Install cargo-deny uses: taiki-e/install-action@735e5933943122c5ac182670a935f54a949265c1 # v2.52.4 with: - tool: | - cargo-deny - actionlint@1.7.12 + tool: cargo-deny + + - name: Install actionlint + run: curl -fsSL https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz | tar xz -C /usr/local/bin actionlint - name: Install dotnet uses: actions/setup-dotnet@c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7 # v5.2.0 From 36bad0d5ddbbc0806a31ea319de401eae1fd6aad Mon Sep 17 00:00:00 2001 From: currantw Date: Tue, 12 May 2026 13:37:21 -0700 Subject: [PATCH 11/11] fix(ci): pin cargo-deny to 0.19 for CVSS 4.0 support The advisory database now contains CVSS 4.0 entries which older cargo-deny versions cannot parse. Signed-off-by: currantw --- .github/workflows/lint.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index edc7ce97..0d603737 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -38,10 +38,11 @@ jobs: - name: Install cargo-deny uses: taiki-e/install-action@735e5933943122c5ac182670a935f54a949265c1 # v2.52.4 with: - tool: cargo-deny + tool: cargo-deny@0.19 - name: Install actionlint - run: curl -fsSL https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz | tar xz -C /usr/local/bin actionlint + run: | + curl -fsSL https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz | tar xz -C /usr/local/bin actionlint - name: Install dotnet uses: actions/setup-dotnet@c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7 # v5.2.0