feat(backup): support incremental backups via baseBackupId - #473
Closed
gkampitakis wants to merge 1 commit into
Closed
gkampitakis wants to merge 1 commit into
gkampitakis wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Orca Security Scan Summary
| Status | Check | Issues by priority | |
|---|---|---|---|
| Infrastructure as Code | View in Orca | ||
| SAST | View in Orca | ||
| Secrets | View in Orca | ||
| Vulnerabilities | View in Orca |
Weaviate 1.34.18/1.35.13/1.36.3/1.37.0 accept `incremental_base_backup_id`
on `POST /v1/backups/{backend}` to build a file-based incremental backup on
top of an existing one, but the client had no way to set it and dropped the
field from list/status responses.
Mirrors the Go v6 client, which exposes `CreateOptions.BaseBackupID` as a
top-level create option and `Info.BaseBackupID` on returned backups.
- `backup.create` and `collection.backup.create` accept `baseBackupId`
- `BackupCreator.withBaseBackupId` sends `incremental_base_backup_id`
- `getCreateStatus` and `list` map `incremental_base_backup_id` to
`baseBackupId` on the return type
Weaviate only returns the base backup ID to root users, so `baseBackupId`
is often absent on reads even when the backup is incremental.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NZ2p2CzXLS92ThnvDjnxAE
gkampitakis
force-pushed
the
feature/incremental-backups
branch
from
September 2, 2026 12:28
eb71991 to
cb75e66
Compare
Collaborator
|
@gkampitakis I think this is a duplicate of #459 |
Member
Author
🙈 Should have checked first, sorry @bevzzz . Closing it over #459 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Weaviate accepts
incremental_base_backup_idonPOST /v1/backups/{backend}to build a file-based incremental backup on top of an existing one (added in weaviate#10275, released in1.34.18/1.35.13/1.36.3/1.37.0). The client had no way to set it, and dropped the field from list/status responses, so incremental backups were unreachable from TypeScript.This mirrors the Go v6 client, which exposes it as a top-level
CreateOptions.BaseBackupID(not nested under config) and surfacesInfo.BaseBackupIDon returned backups.Changes
client.backup.createandcollection.backup.createaccept an optionalbaseBackupId, via the newBackupCreateArgs/BackupCollectionCreateArgstypes. Restore args are untouched — the field is create-only, as in Go.BackupCreator.withBaseBackupId()puts it on the request asincremental_base_backup_id.BackupStatusReturngainsbaseBackupId;getCreateStatusandlistmapincremental_base_backup_idonto it.All additive — no existing signature changes meaning, and
BackupCreateArgsis a superset ofBackupArgs<BackupConfigCreate>.Notes
incremental_base_backup_idto callers it has confirmed as root users, sobaseBackupIdis often absent on reads even when the backup is incremental. Documented on the type.SUCCESS, be strictly older, share the same compression type, and the whole ancestor chain is walked for cycles. No client-side duplication of that.Testing
test/collections/backup/mock.test.ts: asserts the create request carriesincremental_base_backup_id(and omits it for a full backup), and that status/list responses map it tobaseBackupId.test/collections/backup/integration.test.ts: full backup → insert more data → incremental backup on that base → restore → assert both objects are present. Also asserts an unknown base is rejected. Gated withrequireAtLeast(1, 34, 18).Verified locally against Weaviate
1.36.10: all backup mock + integration tests pass.npm run lint,npm run format:checkandnpm run docsare clean (no new warnings).🤖 Generated with Claude Code
https://claude.ai/code/session_01NZ2p2CzXLS92ThnvDjnxAE