Skip to content

docs(ha): document the conditional request requirement for S3-compatible stores - #617

Open
eugenels wants to merge 3 commits into
mainfrom
docs/s3-compatible-conditional-requests
Open

eugenels wants to merge 3 commits into
mainfrom
docs/s3-compatible-conditional-requests

Conversation

@eugenels

@eugenels eugenels commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Documents the object store requirement added by questdb/questdb-enterprise#1345 and questdb/questdb-enterprise#1327. The replication primary now writes index.msgpack, and backups write backup/<backup_instance_name>/index.msgpack, with conditional requests: If-None-Match to create the index, If-Match to replace it. An S3-compatible store must support or ignore both headers on PutObject. On a store that rejects them, a primary cannot start or be promoted, and every backup fails. No setting turns the requests off. AWS S3, Azure Blob Storage and Google Cloud Storage support conditional writes, and on an fs (NFS) store both indexes are written without them.

  • high-availability/setup.md: new S3-compatible stores section under Configure object storage. It states the requirement for replication and backups, and what fails on a store that rejects the headers: a primary exits during startup, a promotion fails and leaves the node UNKNOWN, and backups fail. It ends with how to check a store before upgrading: the first backup of a new instance sends both headers.
  • operations/backup.md: a warning under Supported storage backends.
  • configuration/database-replication.md: one paragraph under replication.object.store that links to the new section.
  • changelog.mdx: an Updated entry in a new November 2026 section.

Dependencies

Merge once the QuestDB Enterprise release that includes questdb/questdb-enterprise#1327 and #1345 ships. Until then, the pages describe a requirement that 4.1.0 does not have.

The pages call that release 4.2.0, as #609 does. If it ships under another number, update the version on the three pages and in the changelog entry. Move the changelog entry if the merge lands after November 2026.

…ble stores

From QuestDB Enterprise 4.2.0, the replication primary and backups write
their index.msgpack files with If-None-Match and If-Match
(questdb/questdb-enterprise#1345 and #1327). An S3-compatible store must
support or ignore both headers on PutObject. On a store that rejects them,
a primary cannot start or be promoted, and every backup fails.
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

🚀 Build success!

Latest successful preview: https://preview-617--questdb-documentation.netlify.app/docs/

Commit SHA: 4bf5261

📦 Build generates a preview & updates the link on each commit.

The "Configure object storage" section is shared with cold storage, which
needs more from the store, so the note now says it covers replication and
backups. A failed promotion is accepted first and fails while it runs, and
retrying it fails the same way. Google Cloud Storage gets its own
preconditions, not the two headers. The store check links to the backup
quick start and says how to read the result. The connection sentence is
dropped: it left out the required region.
javier
javier previously approved these changes Nov 5, 2026
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.

2 participants