fix: use global --header for Tigris consistency on all rclone transactions (#564)

Signed-off-by: phernandez <paul@basicmachines.co>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Paul Hernandez
2026-02-12 15:43:05 -06:00
committed by GitHub
parent f1a065bce3
commit b609c4e531
5 changed files with 26 additions and 16 deletions
+11
View File
@@ -1,5 +1,16 @@
# CHANGELOG
## v0.18.3 (2026-02-12)
### Bug Fixes
- Use global `--header` flag for Tigris consistency on all rclone transactions
([`7fcf587`](https://github.com/basicmachines-co/basic-memory/commit/7fcf587))
- `--header-download` / `--header-upload` only apply to GET/PUT requests, missing S3
ListObjectsV2 calls that bisync issues first. Non-US users saw stale edge-cached metadata.
- `--header` applies to ALL HTTP transactions (list, download, upload), fixing bisync for
users outside the Tigris origin region.
## v0.18.2 (2026-02-11)
### Bug Fixes
+2 -2
View File
@@ -6,12 +6,12 @@
"url": "https://github.com/basicmachines-co/basic-memory.git",
"source": "github"
},
"version": "0.18.2",
"version": "0.18.3",
"packages": [
{
"registryType": "pypi",
"identifier": "basic-memory",
"version": "0.18.2",
"version": "0.18.3",
"runtimeHint": "uvx",
"runtimeArguments": [
{"type": "positional", "value": "basic-memory"},
+1 -1
View File
@@ -1,7 +1,7 @@
"""basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs"""
# Package version - updated by release automation
__version__ = "0.18.2"
__version__ = "0.18.3"
# API version for FastAPI - independent of package version
__api_version__ = "v0"
@@ -28,12 +28,12 @@ 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",
"--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: