fix(daytona): paginate ListSnapshots for v0.189 (#52)#53
Merged
Conversation
v0.189 paginates GET /api/snapshots as {items,total,page,totalPages} with a
default page size of 100. ListSnapshots read only the first page, so the list
silently truncated once the registry held >100 snapshots — breaking sealed-create
image resolution (snapshot not found) and risking wrongful derived-tag GC.
Walk every page until page >= totalPages, mirroring the ListSandboxes cursor walk
added in #51. Add unit tests covering the multi-page walk (the prior tests only
exercised the single-page shape).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Closes #52.
Problem
Client.ListSnapshotsread only the first page ofGET /api/snapshots. Daytona v0.189 paginates that endpoint as{items, total, page, totalPages}with a default page size of 100, so the list silently truncated once the registry held more than 100 snapshots — breaking sealed-create image resolution ("snapshot not found") and risking wrongful derived-tag GC.Same v0.189 root cause as the
ListSandboxespagination fixed in #51, but that PR did not touchListSnapshots.Fix
Walk pages with
limit=100&page=Nuntilpage >= totalPages(or an empty page), mirroring theListSandboxescursor walk.Tests
TestListSnapshots_WalksAllPages(2-page walk, asserts both pages requested and all items collected),TestListSnapshots_SinglePage,TestListSnapshots_NonOK_ReturnsError. Prior tests only exercised the single-page shape.limit=1→ walker requested pages [1,2,3] and collected all 3, byte-identical to thelimit=200full list; temporary snapshots cleaned up afterward (back to total=1).🤖 Generated with Claude Code