Skip to content

feat(preprod): Add snapshots subcommand#3110

Merged
lcian merged 50 commits intomasterfrom
lcian/feat/snapshots
Feb 27, 2026
Merged

feat(preprod): Add snapshots subcommand#3110
lcian merged 50 commits intomasterfrom
lcian/feat/snapshots

Conversation

@lcian
Copy link
Member

@lcian lcian commented Jan 28, 2026

Updated version of #3049 to discuss and iterate on things.

Notable changes:

  • Removed shard_index parameter from the command. I'm not sure what the purpose of that was originally.
  • This uses the new many (batch) API from objectstore_client. All uploads are executed as batch requests, reducing network overhead. Unfortunately, with they way things are implemented now, we will still have to buffer all files in memory before sending the request, as we need to hash their contents to determine the filename. If we could just use the filename as the key in objectstore, it would be much better because that way we could stream the files over.

Note that the objectstore endpoint is currently gated by a feature flag, and only enabled for internal orgs/teams.

Ref FS-233

@github-actions

This comment was marked as outdated.

@linear
Copy link

linear bot commented Jan 28, 2026

@lcian lcian marked this pull request as ready for review February 5, 2026 18:32
@lcian lcian requested review from a team and szokeasaurusrex as code owners February 5, 2026 18:32
@szokeasaurusrex
Copy link
Member

Hey @lcian, are you ready for me to review this, or are you still planning to check the feedback from Bugbot and/or iterate further?

Copy link
Member

rbro112 commented Feb 10, 2026

This stack of pull requests is managed by Graphite. Learn more about stacking.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Copy link
Member

@szokeasaurusrex szokeasaurusrex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking mostly good!

Most of the comments I left are optional (marked with "l"). The comment about optimizing memory usage (marked "m") can be implemented in a follow-up PR, as we agreed offline.

The two things blocking a merge, from my perspective, are that:

  • We are depending on a branch of the objectstore-client repository, rather than a released version.
  • I am a bit concerned about how we handle the auth token; it seems that we could easily end up logging the token in an error message

It would also be good to fix the hidden file implementation, but I think that is also ok to ship as a follow up

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable autofix in the Cursor dashboard.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable autofix in the Cursor dashboard.

cursor[bot]

This comment was marked as resolved.

Copy link
Member

@szokeasaurusrex szokeasaurusrex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm 🚀

I have added some minor, optional-to-address comments

height: image.height,
},
);
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lcian Please consider making an issue so this comment doesn't get lost after we merge the PR

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

@lcian lcian enabled auto-merge (squash) February 27, 2026 13:56
@lcian lcian disabled auto-merge February 27, 2026 13:56
@lcian lcian enabled auto-merge (squash) February 27, 2026 13:57
@lcian lcian merged commit 2c5d857 into master Feb 27, 2026
26 checks passed
@lcian lcian deleted the lcian/feat/snapshots branch February 27, 2026 14:01
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

width: image.width,
height: image.height,
},
);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate-content images silently dropped from manifest

Low Severity

When two image files have identical content (same SHA256 hash), both uploads are queued in many_builder, but the second manifest_entries.insert(hash, ...) silently overwrites the first entry's ImageMetadata, including its image_file_name. The manifest sent to the server will have fewer entries than the number of images processed, with no warning to the user. The "Uploaded N image files" message uses image_count (total images) while the manifest may contain fewer entries, creating a silent inconsistency.

Fix in Cursor Fix in Web

sourcemap = { version = "9.3.0", features = ["ram_bundle"] }
symbolic = { version = "12.13.3", features = ["debuginfo-serde", "il2cpp"] }
thiserror = "1.0.38"
tokio = { version = "1.47", features = ["rt"] }
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tokio dependency missing required feature flags for I/O

Low Severity

The tokio dependency declares only features = ["rt"], but the code calls enable_all() on the runtime builder, which conditionally enables I/O and time drivers only if the net and time features are compiled in. Currently this works because reqwest (via objectstore-client) transitively enables these features, but the explicit dependency doesn't document the actual requirements. If the transitive dependency chain changes, enable_all() becomes a no-op for I/O, causing silent runtime failures during HTTP requests.

Additional Locations (1)

Fix in Cursor Fix in Web

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.

5 participants