Skip to content

[codex] Support TiDB Cloud Native e2e provisioning#677

Open
mashenjun wants to merge 7 commits into
mainfrom
smk/issue-676-e2e-tidbcloud-native
Open

[codex] Support TiDB Cloud Native e2e provisioning#677
mashenjun wants to merge 7 commits into
mainfrom
smk/issue-676-e2e-tidbcloud-native

Conversation

@mashenjun

@mashenjun mashenjun commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add a shared e2e /v1/provision helper that preserves empty-body provisioning by default.
  • Send public_key / private_key when DRIVE9_TIDBCLOUD_PUBLIC_KEY and DRIVE9_TIDBCLOUD_PRIVATE_KEY are set, with optional numeric DRIVE9_TIDBCLOUD_SPENDING_LIMIT mapped to tidbcloud_spending_limit.
  • Update standard fresh-tenant e2e smoke scripts to use the helper and relax the API smoke provision response assertion for tidb_cloud_native cloud_provider / region metadata.
  • Preserve TiDB Cloud Native mode metadata for CLI fork smoke and map e2e credential env vars into the CLI's existing DRIVE9_PUBLIC_KEY / DRIVE9_PRIVATE_KEY names for context operations.
  • Document the TiDB Cloud Native credential env vars and smoke-all usage.

Refs #676

Validation

  • bash -n e2e/*.sh e2e/server-quota/*.sh
  • git diff --check
  • Helper body tests for empty-body, credential body, spending-limit body, partial credential failure, and invalid spending-limit failure.
  • DRIVE9_BASE=https://aws-ap-southeast-1.drive9.ai CLI_SOURCE=build bash e2e/cli-smoke-test.shRESULT: 94 passed, 0 failed, 0 skipped, 94 total
  • DRIVE9_BASE=https://aws-ap-southeast-1.drive9.ai CLI_SOURCE=build bash e2e/smoke-all.shPASS=6 FAIL=0

The live smoke run used credentials from the local EC2 env file and did not print key material.

Summary by CodeRabbit

  • New Features
    • Added TiDB Cloud Native hosted provisioning support to E2E smoke tests, including optional public/private keys and spending-limit handling.
    • Introduced registry-based hosted cleanup with configurable opt-in modes, plus automatic retry of pending cleanup after interrupted runs.
  • Bug Fixes
    • Improved provisioning and response handling across E2E scripts, with more consistent temp artifacts and provisioning capture.
  • Documentation
    • Expanded hosted-run and scheduled smoke-all failure-handling guidance, including new temp-root and cleanup environment-variable behavior.
  • Chores
    • Standardized E2E temp artifact paths via DRIVE9_E2E_TMPDIR and changed default FUSE_MOUNT_ROOT from /tmp to DRIVE9_E2E_TMPDIR.

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 28c89c8d-a303-415f-bdf9-421726fcbaaf

📥 Commits

Reviewing files that changed from the base of the PR and between d717de3 and 6c7418a.

📒 Files selected for processing (31)
  • e2e/AGENTS.md
  • e2e/README.md
  • e2e/_feature-matrix-runner.sh
  • e2e/api-smoke-test-existing-key.sh
  • e2e/api-smoke-test.sh
  • e2e/cleanup-helper.sh
  • e2e/cleanup-pending.sh
  • e2e/cli-smoke-test.sh
  • e2e/fuse-concurrency-stress.sh
  • e2e/fuse-correctness-workload.sh
  • e2e/fuse-crash-recovery-test.sh
  • e2e/fuse-performance-baseline.sh
  • e2e/fuse-posix-fsx-gate.sh
  • e2e/fuse-smoke-test.sh
  • e2e/fuse-sqlite-correctness.sh
  • e2e/fuse-write-perf-budget-test.sh
  • e2e/git-ops-smoke-test.sh
  • e2e/git-workspace-smoke-test.sh
  • e2e/journal-smoke-test.sh
  • e2e/layer-fs-smoke-test.sh
  • e2e/local-smoke.sh
  • e2e/native-smoke-test.sh
  • e2e/portable-pack-unpack-e2e.sh
  • e2e/posix-permission-smoke-test.sh
  • e2e/provision-helper.sh
  • e2e/server-quota/quota-server-e2e.sh
  • e2e/smoke-all.sh
  • e2e/tmp-helper.sh
  • e2e/verify-description-e2e.sh
  • e2e/verify-description-tidb-zero-e2e.sh
  • scripts/verify_description.sh

📝 Walkthrough

Walkthrough

Adds shared e2e helpers for TiDB Cloud Native provisioning, registry-based cleanup, and temporary-directory handling. Smoke runners and test scripts now use the shared flows, while documentation covers hosted credentials, cleanup retries, temp roots, and scheduled failure handling.

Changes

Hosted e2e infrastructure and smoke coverage

Layer / File(s) Summary
Shared temporary-directory handling
e2e/tmp-helper.sh, e2e/local-smoke.sh, e2e/native-smoke-test.sh, e2e/server-quota/..., e2e/verify-description-*.sh, scripts/verify_description.sh, e2e/*smoke*.sh
Adds shared temp initialization and relocates logs, fixtures, FUSE roots, and generated artifacts from fixed /tmp paths.
Cleanup registry lifecycle
e2e/cleanup-helper.sh, e2e/cleanup-pending.sh, e2e/smoke-all.sh
Adds scoped resource registries, validation, deletion verification, retention, pending cleanup, and smoke-run exit handling.
Shared provisioning flow
e2e/provision-helper.sh, e2e/_feature-matrix-runner.sh, e2e/fuse-*.sh, e2e/git-*.sh, e2e/journal-smoke-test.sh, e2e/layer-fs-smoke-test.sh, e2e/portable-pack-unpack-e2e.sh, e2e/posix-permission-smoke-test.sh
Adds TiDB Cloud credential payloads, retrying provisioning requests, response helpers, and cleanup registration, then routes provisioning through the shared helper.
API and CLI smoke integration
e2e/api-smoke-test.sh, e2e/cli-smoke-test.sh
Allows documented provisioning metadata, wires TiDB Cloud context arguments, registers fork resources, changes fork deletion, and updates local fixture paths.
Hosted-run documentation
e2e/AGENTS.md, e2e/README.md
Documents hosted credentials, temp roots, cleanup modes and retries, smoke commands, and scheduled failure handling.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related issues

Possibly related PRs

  • mem9-ai/drive9#557: Adds the server-side credential-aware provisioning flow consumed by these e2e helpers.
  • mem9-ai/drive9#575: Defines server-side validation for TiDB Cloud credential fields sent by this PR.
  • mem9-ai/drive9#533: Both changes modify smoke-all.sh suite orchestration and run_case integration.

Suggested reviewers: qiffang, mornyx

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly captures the main change: adding TiDB Cloud Native e2e provisioning support.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch smk/issue-676-e2e-tidbcloud-native

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@mashenjun
mashenjun force-pushed the smk/issue-676-e2e-tidbcloud-native branch from fa605b2 to 62d9275 Compare July 6, 2026 13:07
@mashenjun
mashenjun force-pushed the smk/issue-676-e2e-tidbcloud-native branch from 2df9690 to a83676e Compare July 7, 2026 03:22
@mashenjun
mashenjun marked this pull request as ready for review July 7, 2026 05:56

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
e2e/fuse-posix-fsx-gate.sh (1)

614-614: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Provisioning call loses 403/5xx retry coverage.

This file's own curl_body_code (lines 209-240) retried provisioning on 429, 403, and any 5xx response. The new drive9_provision_curl_body_code path only retries 429 (per drive9_provision_to_file's if [ "$code" != "429" ] ... check). This is the richest retry logic lost among the scripts in this batch — a transient 403 or 5xx during the fsx-gate run will now fail immediately instead of retrying.

Same root-cause concern as flagged in e2e/fuse-concurrency-stress.sh (Line 702); the fix belongs in provision-helper.sh's retry condition.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/fuse-posix-fsx-gate.sh` at line 614, The provisioning path now only
retries on 429, dropping the existing 403 and 5xx retry coverage used by the
fsx-gate flow. Update the retry condition in provision-helper.sh inside
drive9_provision_to_file so it matches the broader behavior previously handled
by curl_body_code, and ensure drive9_provision_curl_body_code can still retry
transient 403 and 5xx responses instead of failing immediately.
🧹 Nitpick comments (2)
e2e/smoke-all.sh (1)

43-49: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Guard drive9_cleanup_init_run failure.

The return value is ignored. If setup fails (e.g., mkdir/chmod/validation), the registry env vars aren't exported, but trap cleanup_exit EXIT is still installed and every sub-suite's drive9_cleanup_require_ready will then fail, turning a setup error into cascading suite failures. Abort early instead.

♻️ Suggested guard
 if [ "$CLEANUP_ENABLED" = "1" ]; then
   if [ "${DRIVE9_E2E_CLEANUP_PENDING:-1}" = "1" ]; then
     drive9_cleanup_run_pending
   fi
-  drive9_cleanup_init_run
+  drive9_cleanup_init_run || { echo "cleanup init failed; aborting" >&2; exit 1; }
   trap cleanup_exit EXIT
 fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/smoke-all.sh` around lines 43 - 49, `drive9_cleanup_init_run` is
currently called without checking whether setup succeeded, so failures still
leave `trap cleanup_exit EXIT` installed and cause later
`drive9_cleanup_require_ready` errors. In `e2e/smoke-all.sh`, update the
`CLEANUP_ENABLED` block to check the return from `drive9_cleanup_init_run` and
abort immediately if it fails, only installing `trap cleanup_exit EXIT` after a
successful init; use the existing `drive9_cleanup_init_run`, `cleanup_exit`, and
`drive9_cleanup_require_ready` flow to locate the fix.
e2e/cleanup-helper.sh (1)

415-425: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Verification runs immediately after an async 202 delete with no poll/backoff.

DELETE returns 202 (accepted, async), but drive9_cleanup_verify_deleted queries /v1/status immediately. A tenant still mid-deletion may return 200/active, which is counted as a failure, keeps the registry pending, and makes drive9_cleanup_run_registry return non-zero for otherwise-successful deletions. Consider a short bounded poll (a few retries with sleep) for the deleting|deleted/401|403|404 terminal states before declaring failure.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/cleanup-helper.sh` around lines 415 - 425, The post-DELETE verification
in drive9_cleanup_verify_deleted is running too early after an async 202
response, so cleanup can fail while the tenant is still transitioning. Update
the verification flow in cleanup-helper.sh to add a short bounded poll/backoff
loop before treating the delete as failed, and only return failure after
repeated checks still don’t reach a terminal state. Use the existing
drive9_cleanup_verify_deleted and drive9_cleanup_run_registry paths as the place
to wait for deleting|deleted or 401|403|404 before marking the registry entry
pending.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@e2e/cleanup-helper.sh`:
- Around line 302-316: Persist the TiDB Cloud cleanup credentials needed for
deferred retries: drive9_cleanup_body_args currently rebuilds the DELETE body
only from environment variables, but cleanup-pending.sh later replays pending
tidb_cloud_native entries without its own TiDB Cloud keys. Update the
registry/pending cleanup flow so the native DELETE request can be reconstructed
from stored data, or make the pending replay logic explicitly require and carry
the TiDB Cloud public/private keys before invoking drive9_cleanup_body_args and
related replay paths.

In `@e2e/fuse-smoke-test.sh`:
- Line 818: The provisioning response assignment in the smoke test script should
be guarded so a non-zero return from drive9_provision_curl_body_code does not
terminate the shell early under set -euo pipefail. Update the resp capture near
the POST /v1/provision check to use a fallback assignment (for example, preserve
a default empty value on failure) so the existing check_eq validation and the
cleanup/summary path still run.

---

Duplicate comments:
In `@e2e/fuse-posix-fsx-gate.sh`:
- Line 614: The provisioning path now only retries on 429, dropping the existing
403 and 5xx retry coverage used by the fsx-gate flow. Update the retry condition
in provision-helper.sh inside drive9_provision_to_file so it matches the broader
behavior previously handled by curl_body_code, and ensure
drive9_provision_curl_body_code can still retry transient 403 and 5xx responses
instead of failing immediately.

---

Nitpick comments:
In `@e2e/cleanup-helper.sh`:
- Around line 415-425: The post-DELETE verification in
drive9_cleanup_verify_deleted is running too early after an async 202 response,
so cleanup can fail while the tenant is still transitioning. Update the
verification flow in cleanup-helper.sh to add a short bounded poll/backoff loop
before treating the delete as failed, and only return failure after repeated
checks still don’t reach a terminal state. Use the existing
drive9_cleanup_verify_deleted and drive9_cleanup_run_registry paths as the place
to wait for deleting|deleted or 401|403|404 before marking the registry entry
pending.

In `@e2e/smoke-all.sh`:
- Around line 43-49: `drive9_cleanup_init_run` is currently called without
checking whether setup succeeded, so failures still leave `trap cleanup_exit
EXIT` installed and cause later `drive9_cleanup_require_ready` errors. In
`e2e/smoke-all.sh`, update the `CLEANUP_ENABLED` block to check the return from
`drive9_cleanup_init_run` and abort immediately if it fails, only installing
`trap cleanup_exit EXIT` after a successful init; use the existing
`drive9_cleanup_init_run`, `cleanup_exit`, and `drive9_cleanup_require_ready`
flow to locate the fix.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d8a30e0e-3296-4515-89a0-2895cdea7784

📥 Commits

Reviewing files that changed from the base of the PR and between 61d1363 and 0dcb2de.

📒 Files selected for processing (23)
  • e2e/AGENTS.md
  • e2e/README.md
  • e2e/_feature-matrix-runner.sh
  • e2e/api-smoke-test.sh
  • e2e/cleanup-helper.sh
  • e2e/cleanup-pending.sh
  • e2e/cli-smoke-test.sh
  • e2e/fuse-concurrency-stress.sh
  • e2e/fuse-correctness-workload.sh
  • e2e/fuse-crash-recovery-test.sh
  • e2e/fuse-performance-baseline.sh
  • e2e/fuse-posix-fsx-gate.sh
  • e2e/fuse-smoke-test.sh
  • e2e/fuse-sqlite-correctness.sh
  • e2e/fuse-write-perf-budget-test.sh
  • e2e/git-ops-smoke-test.sh
  • e2e/git-workspace-smoke-test.sh
  • e2e/journal-smoke-test.sh
  • e2e/layer-fs-smoke-test.sh
  • e2e/portable-pack-unpack-e2e.sh
  • e2e/posix-permission-smoke-test.sh
  • e2e/provision-helper.sh
  • e2e/smoke-all.sh

Comment thread e2e/cleanup-helper.sh
Comment thread e2e/fuse-smoke-test.sh Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0dcb2dec64

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread e2e/provision-helper.sh Outdated
code=$(curl -sS -o "$output_file" -w "%{http_code}" -X POST "$base/v1/provision")
fi

if [ "$code" != "429" ] || [ "$attempt" -ge "$max_retries" ]; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore provision retry coverage

When this helper replaces each suite's local /v1/provision call, this condition now retries only HTTP 429; I checked e2e/layer-fs-smoke-test.sh, whose existing wrapper retried 000|429|5??, and e2e/fuse-correctness-workload.sh, which also retried transient 403s. On hosted runs where provisioning briefly returns a connection failure, 5xx, or 403 throttling, those suites now fail immediately instead of honoring their configured retry budget, making scheduled e2e runs much flakier. Please carry forward the prior retry classes and guard non-zero curl exits before returning.

Useful? React with 👍 / 👎.

Comment thread e2e/cleanup-helper.sh
drive9_cleanup_validate_registry_name "$registry" || return 1
drive9_cleanup_validate_registry_run_id "$registry" "$run_id" || return 1

umask 077

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore the caller's umask after registry setup

When DRIVE9_E2E_CLEANUP=always or success is used with smoke-all.sh, drive9_cleanup_init_run runs before any child suite and this permanent umask 077 is inherited by all later e2e scripts. That changes default modes for files and directories created through local fixtures, Git, and FUSE from the caller's normal environment to 0600/0700, so cleanup-enabled scheduled runs no longer exercise the same permission behavior as ordinary runs and can mask or create mode-sensitive failures. Capture the previous umask and restore it after creating/chmodding the registry files.

Useful? React with 👍 / 👎.

Comment thread e2e/provision-helper.sh Outdated
if [ -n "$body" ]; then
code=$(curl -sS -o "$output_file" -w "%{http_code}" -X POST \
-H "Content-Type: application/json" \
--data-binary "$body" \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep TiDB credentials out of curl argv

On credentialed TiDB Cloud Native e2e runs, $body contains private_key, and passing it directly as the curl --data-binary argument exposes the key in the curl process argv while the request is in flight. This is avoidable by writing the JSON to a 0600 temp file or streaming it on stdin, so the scheduled smoke host does not leak TiDB Cloud credentials via process listings.

Useful? React with 👍 / 👎.

Comment thread e2e/cleanup-pending.sh
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document cleanup-pending as manual-only

This adds a new executable under e2e/, but I checked .github/workflows/local-e2e.yml and the README's CI automation tiers section and cleanup-pending.sh is neither wired into automation nor documented there as manual-only with a reason. That violates e2e/AGENTS.md's CI wiring rule for new e2e scripts, so future maintainers cannot tell whether this entrypoint is intentionally manual or simply dead code.

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
e2e/posix-permission-smoke-test.sh (1)

291-291: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Guard the provisioning response assignment. e2e/posix-permission-smoke-test.sh:291 runs under set -euo pipefail, so resp=$(drive9_provision_curl_body_code "$BASE") will abort the script on a helper failure and skip the remaining checks and cleanup. Use a guarded assignment here, e.g. resp=$(...) || resp="".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/posix-permission-smoke-test.sh` at line 291, The provisioning response
assignment in the posix permission smoke test is not guarded, so a helper
failure can terminate the script early under set -euo pipefail. Update the resp
assignment in the smoke test flow to tolerate drive9_provision_curl_body_code
failures by using a guarded assignment and preserving the remaining checks and
cleanup. Keep the fix localized around the resp capture in the provisioning step
so the rest of the script can continue handling the failure path.
🧹 Nitpick comments (1)
e2e/tmp-helper.sh (1)

4-4: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Unused load-guard variable.

DRIVE9_TMP_HELPER_LOADED is set but never checked, so it doesn't actually prevent duplicate sourcing (flagged by shellcheck SC2034). Either implement the guard or drop the variable.

♻️ Optional: implement an actual idempotent-load guard
-DRIVE9_TMP_HELPER_LOADED=1
+if [ -n "${DRIVE9_TMP_HELPER_LOADED:-}" ]; then
+  return 0 2>/dev/null || exit 0
+fi
+DRIVE9_TMP_HELPER_LOADED=1
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/tmp-helper.sh` at line 4, The load-guard variable in the tmp helper is
set but never used, so the script is not actually idempotent. Update the tmp
helper sourcing logic to either check DRIVE9_TMP_HELPER_LOADED before loading
and exit early on repeat loads, or remove the variable entirely if you do not
want a guard; reference DRIVE9_TMP_HELPER_LOADED and the tmp-helper script’s
top-level initialization block when making the change.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@e2e/posix-permission-smoke-test.sh`:
- Line 291: The provisioning response assignment in the posix permission smoke
test is not guarded, so a helper failure can terminate the script early under
set -euo pipefail. Update the resp assignment in the smoke test flow to tolerate
drive9_provision_curl_body_code failures by using a guarded assignment and
preserving the remaining checks and cleanup. Keep the fix localized around the
resp capture in the provisioning step so the rest of the script can continue
handling the failure path.

---

Nitpick comments:
In `@e2e/tmp-helper.sh`:
- Line 4: The load-guard variable in the tmp helper is set but never used, so
the script is not actually idempotent. Update the tmp helper sourcing logic to
either check DRIVE9_TMP_HELPER_LOADED before loading and exit early on repeat
loads, or remove the variable entirely if you do not want a guard; reference
DRIVE9_TMP_HELPER_LOADED and the tmp-helper script’s top-level initialization
block when making the change.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9549f6fc-6073-4b64-b64b-3b7044f403b2

📥 Commits

Reviewing files that changed from the base of the PR and between 0dcb2de and 79d9743.

📒 Files selected for processing (29)
  • e2e/AGENTS.md
  • e2e/README.md
  • e2e/_feature-matrix-runner.sh
  • e2e/api-smoke-test.sh
  • e2e/cleanup-helper.sh
  • e2e/cleanup-pending.sh
  • e2e/cli-smoke-test.sh
  • e2e/fuse-concurrency-stress.sh
  • e2e/fuse-correctness-workload.sh
  • e2e/fuse-crash-recovery-test.sh
  • e2e/fuse-performance-baseline.sh
  • e2e/fuse-posix-fsx-gate.sh
  • e2e/fuse-smoke-test.sh
  • e2e/fuse-sqlite-correctness.sh
  • e2e/fuse-write-perf-budget-test.sh
  • e2e/git-ops-smoke-test.sh
  • e2e/git-workspace-smoke-test.sh
  • e2e/layer-fs-smoke-test.sh
  • e2e/local-smoke.sh
  • e2e/native-smoke-test.sh
  • e2e/portable-pack-unpack-e2e.sh
  • e2e/posix-permission-smoke-test.sh
  • e2e/provision-helper.sh
  • e2e/server-quota/quota-server-e2e.sh
  • e2e/smoke-all.sh
  • e2e/tmp-helper.sh
  • e2e/verify-description-e2e.sh
  • e2e/verify-description-tidb-zero-e2e.sh
  • scripts/verify_description.sh
✅ Files skipped from review due to trivial changes (1)
  • e2e/AGENTS.md
🚧 Files skipped from review as they are similar to previous changes (13)
  • e2e/cleanup-pending.sh
  • e2e/fuse-correctness-workload.sh
  • e2e/git-workspace-smoke-test.sh
  • e2e/fuse-write-perf-budget-test.sh
  • e2e/fuse-performance-baseline.sh
  • e2e/fuse-posix-fsx-gate.sh
  • e2e/fuse-concurrency-stress.sh
  • e2e/fuse-sqlite-correctness.sh
  • e2e/smoke-all.sh
  • e2e/portable-pack-unpack-e2e.sh
  • e2e/README.md
  • e2e/cli-smoke-test.sh
  • e2e/provision-helper.sh

@mashenjun

Copy link
Copy Markdown
Collaborator Author

Review notes on 79d97439 Add configurable e2e temp root:

  1. e2e/api-smoke-test-existing-key.sh still does not source tmp-helper.sh, so DRIVE9_E2E_TMPDIR=... does not affect its mktemp calls. It only writes small response bodies, so this is not the 100MB failure path, but it is inconsistent with the new docs promise that scripts export TMPDIR from DRIVE9_E2E_TMPDIR. Suggested fix: source tmp-helper.sh near the top and call drive9_e2e_init_tmpdir.

  2. e2e/tmp-helper.sh currently calls umask 077 globally. That secures the temp root, but it also changes default permissions for the rest of every script that sources the helper. Prefer avoiding the global side effect and making the temp root permission explicit, e.g. mkdir -p "$tmp_root" || return 1 then chmod 700 "$tmp_root" || return 1.

  3. Please keep the env name consistent across docs, scheduler commands, and scripts. The commit uses DRIVE9_E2E_TMPDIR, which is fine and matches TMPDIR; avoid also documenting/using DRIVE9_E2E_TMP_ROOT.

I checked the main large-file paths and they look covered: API, CLI, layer large fixtures/downloads, and smoke-all.sh propagation of DRIVE9_E2E_TMPDIR, TMPDIR, and FUSE_MOUNT_ROOT.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
e2e/provision-helper.sh (1)

67-89: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Validate retry configuration before numeric comparisons.

If DRIVE9_PROVISION_MAX_RETRIES is non-numeric, [ "$attempt" -ge "$max_retries" ] errors and retryable responses can loop forever. Validate max_retries and retry_sleep once before the loop.

Suggested patch
   max_retries="${DRIVE9_PROVISION_MAX_RETRIES:-${REQUEST_MAX_RETRIES:-${CLI_MAX_RETRIES:-1}}}"
   retry_sleep="${DRIVE9_PROVISION_RETRY_SLEEP_S:-${REQUEST_RETRY_SLEEP_S:-${CLI_RETRY_SLEEP_S:-2}}}"
+  case "$max_retries" in
+    ''|*[!0-9]*|0)
+      echo "invalid DRIVE9_PROVISION_MAX_RETRIES/REQUEST_MAX_RETRIES/CLI_MAX_RETRIES: $max_retries" >&2
+      return 1
+      ;;
+  esac
+  case "$retry_sleep" in
+    ''|*[!0-9]*)
+      echo "invalid DRIVE9_PROVISION_RETRY_SLEEP_S/REQUEST_RETRY_SLEEP_S/CLI_RETRY_SLEEP_S: $retry_sleep" >&2
+      return 1
+      ;;
+  esac
   attempt=1
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/provision-helper.sh` around lines 67 - 89, The retry logic in
drive9_provision should validate the DRIVEN9_PROVISION_MAX_RETRIES and
retry_sleep values before entering the loop, since the numeric test on attempt
and max_retries can fail or misbehave when either variable is non-numeric. Add a
pre-loop validation step in provision-helper.sh around the drive9_provision
retry block to ensure both values are valid integers, and fail fast with a clear
error if they are not.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@e2e/provision-helper.sh`:
- Around line 58-64: The two curl invocations in provision_helper.sh can block
indefinitely before the retry logic in the provisioning flow can run; update the
POST calls that assign to code to use bounded connect and total timeouts, and
make those timeout values configurable via environment variables for slower
endpoints. Apply the fix in the provision request path around the curl commands
so the retry loop can recover instead of hanging.

---

Outside diff comments:
In `@e2e/provision-helper.sh`:
- Around line 67-89: The retry logic in drive9_provision should validate the
DRIVEN9_PROVISION_MAX_RETRIES and retry_sleep values before entering the loop,
since the numeric test on attempt and max_retries can fail or misbehave when
either variable is non-numeric. Add a pre-loop validation step in
provision-helper.sh around the drive9_provision retry block to ensure both
values are valid integers, and fail fast with a clear error if they are not.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: af1ffd54-c34e-4086-af57-5ffe810ebf0f

📥 Commits

Reviewing files that changed from the base of the PR and between 79d9743 and ca7e079.

📒 Files selected for processing (23)
  • e2e/AGENTS.md
  • e2e/README.md
  • e2e/_feature-matrix-runner.sh
  • e2e/api-smoke-test-existing-key.sh
  • e2e/api-smoke-test.sh
  • e2e/cleanup-helper.sh
  • e2e/cli-smoke-test.sh
  • e2e/fuse-concurrency-stress.sh
  • e2e/fuse-correctness-workload.sh
  • e2e/fuse-crash-recovery-test.sh
  • e2e/fuse-performance-baseline.sh
  • e2e/fuse-posix-fsx-gate.sh
  • e2e/fuse-smoke-test.sh
  • e2e/fuse-sqlite-correctness.sh
  • e2e/fuse-write-perf-budget-test.sh
  • e2e/git-ops-smoke-test.sh
  • e2e/git-workspace-smoke-test.sh
  • e2e/journal-smoke-test.sh
  • e2e/layer-fs-smoke-test.sh
  • e2e/portable-pack-unpack-e2e.sh
  • e2e/posix-permission-smoke-test.sh
  • e2e/provision-helper.sh
  • e2e/tmp-helper.sh
🚧 Files skipped from review as they are similar to previous changes (20)
  • e2e/journal-smoke-test.sh
  • e2e/git-workspace-smoke-test.sh
  • e2e/git-ops-smoke-test.sh
  • e2e/AGENTS.md
  • e2e/portable-pack-unpack-e2e.sh
  • e2e/fuse-performance-baseline.sh
  • e2e/fuse-sqlite-correctness.sh
  • e2e/fuse-smoke-test.sh
  • e2e/fuse-concurrency-stress.sh
  • e2e/fuse-crash-recovery-test.sh
  • e2e/posix-permission-smoke-test.sh
  • e2e/fuse-posix-fsx-gate.sh
  • e2e/layer-fs-smoke-test.sh
  • e2e/_feature-matrix-runner.sh
  • e2e/fuse-write-perf-budget-test.sh
  • e2e/api-smoke-test.sh
  • e2e/fuse-correctness-workload.sh
  • e2e/cli-smoke-test.sh
  • e2e/cleanup-helper.sh
  • e2e/README.md

Comment thread e2e/provision-helper.sh
Comment on lines +58 to +64
code=$(printf '%s' "$body" | curl -sS -o "$output_file" -w "%{http_code}" -X POST \
-H "Content-Type: application/json" \
--data-binary @- \
"$base/v1/provision" || true)
else
code=$(curl -sS -o "$output_file" -w "%{http_code}" -X POST "$base/v1/provision" || true)
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Add curl timeouts so retries can actually recover.

Both provision calls can hang indefinitely before the retry loop gets control. Add bounded connect/total timeouts, ideally env-configurable for slower hosted endpoints.

Suggested patch
+    local curl_connect_timeout="${DRIVE9_PROVISION_CONNECT_TIMEOUT_S:-10}"
+    local curl_max_time="${DRIVE9_PROVISION_MAX_TIME_S:-120}"
     if [ -n "$body" ]; then
-      code=$(printf '%s' "$body" | curl -sS -o "$output_file" -w "%{http_code}" -X POST \
+      code=$(printf '%s' "$body" | curl -sS --connect-timeout "$curl_connect_timeout" --max-time "$curl_max_time" -o "$output_file" -w "%{http_code}" -X POST \
         -H "Content-Type: application/json" \
         --data-binary `@-` \
         "$base/v1/provision" || true)
     else
-      code=$(curl -sS -o "$output_file" -w "%{http_code}" -X POST "$base/v1/provision" || true)
+      code=$(curl -sS --connect-timeout "$curl_connect_timeout" --max-time "$curl_max_time" -o "$output_file" -w "%{http_code}" -X POST "$base/v1/provision" || true)
     fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
code=$(printf '%s' "$body" | curl -sS -o "$output_file" -w "%{http_code}" -X POST \
-H "Content-Type: application/json" \
--data-binary @- \
"$base/v1/provision" || true)
else
code=$(curl -sS -o "$output_file" -w "%{http_code}" -X POST "$base/v1/provision" || true)
fi
local curl_connect_timeout="${DRIVE9_PROVISION_CONNECT_TIMEOUT_S:-10}"
local curl_max_time="${DRIVE9_PROVISION_MAX_TIME_S:-120}"
if [ -n "$body" ]; then
code=$(printf '%s' "$body" | curl -sS --connect-timeout "$curl_connect_timeout" --max-time "$curl_max_time" -o "$output_file" -w "%{http_code}" -X POST \
-H "Content-Type: application/json" \
--data-binary `@-` \
"$base/v1/provision" || true)
else
code=$(curl -sS --connect-timeout "$curl_connect_timeout" --max-time "$curl_max_time" -o "$output_file" -w "%{http_code}" -X POST "$base/v1/provision" || true)
fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/provision-helper.sh` around lines 58 - 64, The two curl invocations in
provision_helper.sh can block indefinitely before the retry logic in the
provisioning flow can run; update the POST calls that assign to code to use
bounded connect and total timeouts, and make those timeout values configurable
via environment variables for slower endpoints. Apply the fix in the provision
request path around the curl commands so the retry loop can recover instead of
hanging.

@mashenjun
mashenjun force-pushed the smk/issue-676-e2e-tidbcloud-native branch 2 times, most recently from d717de3 to 8aef6cf Compare July 11, 2026 02:57
@mashenjun
mashenjun force-pushed the smk/issue-676-e2e-tidbcloud-native branch from 8aef6cf to 6c7418a Compare July 14, 2026 06:30

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
e2e/provision-helper.sh (1)

56-64: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Unbounded curl calls across the shared e2e helpers can hang indefinitely. None of these curl invocations set --connect-timeout/--max-time; curl has no default operation timeout, so a slow or unresponsive hosted endpoint stalls the calling script (and, for the cleanup paths, blocks smoke-all.sh's EXIT trap from ever finishing).

  • e2e/provision-helper.sh#L56-L64: add --connect-timeout/--max-time (env-configurable) to both the body and no-body POST branches in drive9_provision_to_file.
  • e2e/cleanup-helper.sh#L362-L393: add the same timeouts to the GET /v1/status call in drive9_cleanup_verify_deleted.
  • e2e/cleanup-helper.sh#L420-L437: add the same timeouts to both DELETE branches in drive9_cleanup_delete_record.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/provision-helper.sh` around lines 56 - 64, Unbounded curl requests can
hang indefinitely. Add shared, environment-configurable --connect-timeout and
--max-time options to every request: both POST branches in
drive9_provision_to_file (e2e/provision-helper.sh, lines 56-64), the GET
/v1/status request in drive9_cleanup_verify_deleted (e2e/cleanup-helper.sh,
lines 362-393), and both DELETE branches in drive9_cleanup_delete_record
(e2e/cleanup-helper.sh, lines 420-437).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@e2e/layer-fs-smoke-test.sh`:
- Line 1023: Replace the hardcoded /tmp/ paths in the rollback layer tests with
drive9_e2e_tmp_path: update rollback_fuse_base_local at
e2e/layer-fs-smoke-test.sh lines 1023-1023, and wrap local_rb and log_rb at
lines 1038-1039 using the same helper while preserving their filenames.

---

Duplicate comments:
In `@e2e/provision-helper.sh`:
- Around line 56-64: Unbounded curl requests can hang indefinitely. Add shared,
environment-configurable --connect-timeout and --max-time options to every
request: both POST branches in drive9_provision_to_file
(e2e/provision-helper.sh, lines 56-64), the GET /v1/status request in
drive9_cleanup_verify_deleted (e2e/cleanup-helper.sh, lines 362-393), and both
DELETE branches in drive9_cleanup_delete_record (e2e/cleanup-helper.sh, lines
420-437).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 28c89c8d-a303-415f-bdf9-421726fcbaaf

📥 Commits

Reviewing files that changed from the base of the PR and between d717de3 and 6c7418a.

📒 Files selected for processing (31)
  • e2e/AGENTS.md
  • e2e/README.md
  • e2e/_feature-matrix-runner.sh
  • e2e/api-smoke-test-existing-key.sh
  • e2e/api-smoke-test.sh
  • e2e/cleanup-helper.sh
  • e2e/cleanup-pending.sh
  • e2e/cli-smoke-test.sh
  • e2e/fuse-concurrency-stress.sh
  • e2e/fuse-correctness-workload.sh
  • e2e/fuse-crash-recovery-test.sh
  • e2e/fuse-performance-baseline.sh
  • e2e/fuse-posix-fsx-gate.sh
  • e2e/fuse-smoke-test.sh
  • e2e/fuse-sqlite-correctness.sh
  • e2e/fuse-write-perf-budget-test.sh
  • e2e/git-ops-smoke-test.sh
  • e2e/git-workspace-smoke-test.sh
  • e2e/journal-smoke-test.sh
  • e2e/layer-fs-smoke-test.sh
  • e2e/local-smoke.sh
  • e2e/native-smoke-test.sh
  • e2e/portable-pack-unpack-e2e.sh
  • e2e/posix-permission-smoke-test.sh
  • e2e/provision-helper.sh
  • e2e/server-quota/quota-server-e2e.sh
  • e2e/smoke-all.sh
  • e2e/tmp-helper.sh
  • e2e/verify-description-e2e.sh
  • e2e/verify-description-tidb-zero-e2e.sh
  • scripts/verify_description.sh

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

♻️ Duplicate comments (1)
e2e/provision-helper.sh (1)

56-64: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Unbounded curl calls across the shared e2e helpers can hang indefinitely. None of these curl invocations set --connect-timeout/--max-time; curl has no default operation timeout, so a slow or unresponsive hosted endpoint stalls the calling script (and, for the cleanup paths, blocks smoke-all.sh's EXIT trap from ever finishing).

  • e2e/provision-helper.sh#L56-L64: add --connect-timeout/--max-time (env-configurable) to both the body and no-body POST branches in drive9_provision_to_file.
  • e2e/cleanup-helper.sh#L362-L393: add the same timeouts to the GET /v1/status call in drive9_cleanup_verify_deleted.
  • e2e/cleanup-helper.sh#L420-L437: add the same timeouts to both DELETE branches in drive9_cleanup_delete_record.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/provision-helper.sh` around lines 56 - 64, Unbounded curl requests can
hang indefinitely. Add shared, environment-configurable --connect-timeout and
--max-time options to every request: both POST branches in
drive9_provision_to_file (e2e/provision-helper.sh, lines 56-64), the GET
/v1/status request in drive9_cleanup_verify_deleted (e2e/cleanup-helper.sh,
lines 362-393), and both DELETE branches in drive9_cleanup_delete_record
(e2e/cleanup-helper.sh, lines 420-437).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@e2e/layer-fs-smoke-test.sh`:
- Line 1023: Replace the hardcoded /tmp/ paths in the rollback layer tests with
drive9_e2e_tmp_path: update rollback_fuse_base_local at
e2e/layer-fs-smoke-test.sh lines 1023-1023, and wrap local_rb and log_rb at
lines 1038-1039 using the same helper while preserving their filenames.

---

Duplicate comments:
In `@e2e/provision-helper.sh`:
- Around line 56-64: Unbounded curl requests can hang indefinitely. Add shared,
environment-configurable --connect-timeout and --max-time options to every
request: both POST branches in drive9_provision_to_file
(e2e/provision-helper.sh, lines 56-64), the GET /v1/status request in
drive9_cleanup_verify_deleted (e2e/cleanup-helper.sh, lines 362-393), and both
DELETE branches in drive9_cleanup_delete_record (e2e/cleanup-helper.sh, lines
420-437).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 28c89c8d-a303-415f-bdf9-421726fcbaaf

📥 Commits

Reviewing files that changed from the base of the PR and between d717de3 and 6c7418a.

📒 Files selected for processing (31)
  • e2e/AGENTS.md
  • e2e/README.md
  • e2e/_feature-matrix-runner.sh
  • e2e/api-smoke-test-existing-key.sh
  • e2e/api-smoke-test.sh
  • e2e/cleanup-helper.sh
  • e2e/cleanup-pending.sh
  • e2e/cli-smoke-test.sh
  • e2e/fuse-concurrency-stress.sh
  • e2e/fuse-correctness-workload.sh
  • e2e/fuse-crash-recovery-test.sh
  • e2e/fuse-performance-baseline.sh
  • e2e/fuse-posix-fsx-gate.sh
  • e2e/fuse-smoke-test.sh
  • e2e/fuse-sqlite-correctness.sh
  • e2e/fuse-write-perf-budget-test.sh
  • e2e/git-ops-smoke-test.sh
  • e2e/git-workspace-smoke-test.sh
  • e2e/journal-smoke-test.sh
  • e2e/layer-fs-smoke-test.sh
  • e2e/local-smoke.sh
  • e2e/native-smoke-test.sh
  • e2e/portable-pack-unpack-e2e.sh
  • e2e/posix-permission-smoke-test.sh
  • e2e/provision-helper.sh
  • e2e/server-quota/quota-server-e2e.sh
  • e2e/smoke-all.sh
  • e2e/tmp-helper.sh
  • e2e/verify-description-e2e.sh
  • e2e/verify-description-tidb-zero-e2e.sh
  • scripts/verify_description.sh
🛑 Comments failed to post (1)
e2e/layer-fs-smoke-test.sh (1)

1023-1023: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use drive9_e2e_tmp_path instead of hardcoding /tmp/.

The newly added rollback layer tests hardcode /tmp/ for their temporary files instead of using drive9_e2e_tmp_path. This bypasses the dynamic temporary directory logic ($DRIVE9_E2E_TMPDIR) introduced in this PR.

  • e2e/layer-fs-smoke-test.sh#L1023-L1023: wrap the path in drive9_e2e_tmp_path "drive9-layer-rollback-base-${ts}.txt"
  • e2e/layer-fs-smoke-test.sh#L1038-L1039: wrap the paths for local_rb and log_rb in drive9_e2e_tmp_path.
📍 Affects 1 file
  • e2e/layer-fs-smoke-test.sh#L1023-L1023 (this comment)
  • e2e/layer-fs-smoke-test.sh#L1038-L1039
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/layer-fs-smoke-test.sh` at line 1023, Replace the hardcoded /tmp/ paths
in the rollback layer tests with drive9_e2e_tmp_path: update
rollback_fuse_base_local at e2e/layer-fs-smoke-test.sh lines 1023-1023, and wrap
local_rb and log_rb at lines 1038-1039 using the same helper while preserving
their filenames.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant