Skip to content

airstore: remove getdeps manifest, getdeps sandcastle integration#199

Closed
codyohl wants to merge 1 commit into
facebook:mainfrom
codyohl:export-D57985865
Closed

airstore: remove getdeps manifest, getdeps sandcastle integration#199
codyohl wants to merge 1 commit into
facebook:mainfrom
codyohl:export-D57985865

Conversation

@codyohl

@codyohl codyohl commented May 30, 2024

Copy link
Copy Markdown
Contributor

Summary:
X-link: facebook/wangle#233

X-link: facebookexperimental/rust-shed#54

X-link: facebookincubator/hsthrift#132

X-link: https://github.com/facebookincubator/zstrong/pull/846

takes AIRStore off of getdeps!

  • remove our manifest file
  • remove our native-getdeps sandcastle integration

Differential Revision: D57985865

Summary:
X-link: facebook/wangle#233

X-link: facebookexperimental/rust-shed#54

X-link: facebookincubator/hsthrift#132

X-link: https://github.com/facebookincubator/zstrong/pull/846

takes AIRStore off of getdeps!
- remove our manifest file
- remove our native-getdeps sandcastle integration

Differential Revision: D57985865
@facebook-github-bot

Copy link
Copy Markdown
Contributor

This pull request was exported from Phabricator. Differential Revision: D57985865

@Scott8440 Scott8440 closed this Aug 14, 2025
raghav-nexthop added a commit to nexthop-ai/fboss that referenced this pull request Feb 6, 2026
**Pre-submission checklist**
- [X] I've ran the linters locally and fixed lint errors related to the
files I modified in this PR. You can install the linters by running `pip
install -r requirements-dev.txt && pre-commit install`
- [X] `pre-commit run`

# Summary

ArtifactStore provides persistent storage for various distro_cli
artifacts.

ArtifactStore is designed to provide persistent storage for distro_cli
artifacts. At the heart, the design separates artifact storage from
cache validation logic. Unlike traditional caching systems that embed
validation logic such as lookups, timestamps, or checksum-based checks,
ArtifactStore delegates cache evaluation to caller-provided functions,
enabling component-specific caching strategies without coupling the
cache layer to any particular validation mechanism.

Design:
Lazy Evaluation: The get() method accepts a fetch_fn callback that
receives cached files and determines cache validity. This allows each
component to implement custom validation logic (e.g., version checks,
checksums) without modifying the cache layer.
Data/Metadata Separation: Artifacts are stored in separate data/ and
metadata/ subdirectories, enabling efficient metadata-only operations
(e.g., ETag validation) without transferring large data files.
Store Keys: Store keys are hashed to create filesystem-safe
subdirectories, preventing collisions and enabling deterministic store
lookups.
Caller-Controlled Lifecycle: The store layer makes no assumptions about
cache validation logic. Caller supplied fetch_fn explicitly controls
cache updates by returning (cache_hit, new_files, new_metadata) from
their fetch functions.

The above design supports diverse artifact caching scenarios—from simple
file-based builds to remote artifact downloads with conditional
requests.

# Test Plan

Added unit tests.
<!-- Demonstrate the code is solid. Example: The exact commands you ran
and their output, screenshots / videos if the pull request changes the
user interface. How exactly did you verify that your PR solves the issue
you wanted to solve? -->

<!-- If a relevant Github issue exists for this PR, please make sure you
link that issue to this PR -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants