fix: use global --header flag for Tigris consistency on all rclone transactions

--header-download and --header-upload only apply to GET and PUT requests.
bisync starts by listing files via S3 ListObjectsV2 — neither a download
nor upload — so the consistency header was never sent on list requests.
Non-US users saw stale edge-cached metadata and bisync reported "0 changes."

--header is rclone's global flag that applies to ALL HTTP transactions
(list, download, upload), which is a superset of the previous two flags.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: phernandez <paul@basicmachines.co>
This commit is contained in:
phernandez
2026-02-12 13:34:30 -06:00
parent 88a5b07b89
commit 0eae0e1678
2 changed files with 13 additions and 12 deletions
@@ -28,11 +28,13 @@ console = Console()
MIN_RCLONE_VERSION_EMPTY_DIRS = (1, 64, 0)
# Tigris edge caching returns stale data for users outside the origin region (iad).
# These headers bypass edge cache and force reads/writes against the origin.
# --header is rclone's global flag that applies to ALL HTTP transactions (list, download,
# upload). This is critical because bisync starts with S3 ListObjectsV2, which is neither
# a download nor upload — so --header-download/--header-upload would miss list requests.
# See: https://www.tigrisdata.com/docs/objects/consistency/
TIGRIS_CONSISTENCY_HEADERS = [
"--header-download", "X-Tigris-Consistent: true",
"--header-upload", "X-Tigris-Consistent: true",
"--header",
"X-Tigris-Consistent: true",
]
+8 -9
View File
@@ -41,15 +41,14 @@ class _Runner:
def _assert_has_consistency_headers(cmd: list[str]) -> None:
"""Assert the rclone command includes Tigris consistency headers."""
assert "--header-download" in cmd
assert "X-Tigris-Consistent: true" in cmd
assert "--header-upload" in cmd
# Verify upload header value follows --header-upload
upload_idx = cmd.index("--header-upload")
assert cmd[upload_idx + 1] == "X-Tigris-Consistent: true"
download_idx = cmd.index("--header-download")
assert cmd[download_idx + 1] == "X-Tigris-Consistent: true"
"""Assert the rclone command includes Tigris consistency headers.
Uses --header (global flag) so the header applies to ALL HTTP transactions,
including S3 list requests that bisync issues before any download/upload.
"""
assert "--header" in cmd
header_idx = cmd.index("--header")
assert cmd[header_idx + 1] == "X-Tigris-Consistent: true"
def _write_filter_file(tmp_path: Path) -> Path: