Store Definition
Unique identifier for the store. Used to reference the store in other configuration sections.
Store type and its configuration. Only one type can be specified per store.
Store Types
- Memory
- Filesystem
- S3
- GCS
- Redis
- GRPC
- Verify
- FastSlow
- Compression
- Shard
- RefStore
- Noop
In-memory hashmap store with optional eviction.
{
name: "MEMORY_STORE",
memory: {
eviction_policy: {
max_bytes: "1gb"
}
}
}
Controls when items are evicted from the store.
Show properties
Show properties
Maximum bytes before eviction (0 = unlimited).
Bytes to evict below max_bytes to create low watermark.
Maximum age in seconds (0 = no time-based eviction).
Maximum number of items (0 = no count-based eviction).
Persistent local filesystem store.
{
name: "FS_STORE",
filesystem: {
content_path: "/var/cache/nativelink/content",
temp_path: "/var/cache/nativelink/tmp",
eviction_policy: { max_bytes: "50gb" }
}
}
Directory for storing content. Scanned on startup.
Temporary directory for uploads. Must be on same filesystem as content_path for atomic moves.
Eviction policy (see Memory store).
Buffer size for file reads (bytes).
Filesystem block size for size calculations (bytes).
Limit concurrent writes to prevent I/O saturation (0 = unlimited).
AWS S3 cloud object storage.
{
name: "S3_STORE",
experimental_cloud_object_store: {
provider: "aws",
region: "us-east-1",
bucket: "my-bucket",
key_prefix: "nativelink/",
retry: {
max_retries: 6,
delay: 0.3,
jitter: 0.5
}
}
}
Must be
"aws".AWS region (e.g.,
us-east-1, eu-west-1).S3 bucket name.
Optional prefix for all keys.
Concurrent multipart upload parts.
Buffer size for retryable uploads (bytes). Set to 0 to disable buffering.
Treat objects older than this as expired (0 = never expire).
Google Cloud Storage.Common fields:
{
name: "GCS_STORE",
experimental_cloud_object_store: {
provider: "gcs",
bucket: "my-bucket",
key_prefix: "nativelink/"
}
}
Must be
"gcs".GCS bucket name.
Chunk size for resumable uploads (bytes).
Error if authentication is not found.
key_prefix, retry, multipart_max_concurrent_uploads, max_retry_buffer_per_request, consider_expired_after_sRedis key-value store.
{
name: "REDIS_STORE",
redis_store: {
addresses: ["redis://127.0.0.1:6379/"],
mode: "standard"
}
}
Redis server URLs. Format:
redis://[user:pass@]host:port/dbRedis mode.Options:
standard, cluster, sentinelPrefix for all keys.
Command timeout (milliseconds).
Connection timeout (milliseconds).
Data read chunk size (bytes).
Number of connections to maintain.
Remote GRPC store proxy.
{
name: "REMOTE_STORE",
grpc: {
instance_name: "main",
endpoints: [
{ address: "grpc://remote:50051" }
],
store_type: "cas"
}
}
Instance name for GRPC calls.
Type of store.Options:
cas, acTCP connections per endpoint for load balancing.
Global concurrent request limit (0 = unlimited).
Validation wrapper for stores.
{
name: "VERIFIED_CAS",
verify: {
backend: { /* store config */ },
verify_size: true,
verify_hash: true
}
}
Underlying store configuration.
Verify blob size matches digest. Use
true for CAS, false for AC.Verify blob hash matches digest. Use
true for CAS, false for AC.Two-tier caching store.
{
name: "CACHE_STORE",
fast_slow: {
fast: { memory: { eviction_policy: { max_bytes: "1gb" } } },
slow: { filesystem: { /* ... */ } }
}
}
Fast store (cache layer).
Slow store (backing storage).
How fast store is used.Options:
both, update, get, read_onlyHow slow store is used.Options:
both, update, get, read_onlyTransparent compression wrapper.
{
name: "COMPRESSED_STORE",
compression: {
backend: { /* store config */ },
compression_algorithm: {
lz4: { block_size: "64kb" }
}
}
}
Underlying store.
Distributes data across multiple stores.
{
name: "SHARDED_STORE",
shard: {
stores: [
{ store: { /* config */ }, weight: 1 },
{ store: { /* config */ }, weight: 2 }
]
}
}
Reference to a named store.
{
name: "ALIAS_STORE",
ref_store: {
name: "ACTUAL_STORE"
}
}
Name of existing store to reference.
Discards all data. Useful for testing or partitioning.
{
name: "DISCARD_STORE",
noop: {}
}
Specialized Stores
Completeness Checking
Verifies Action Cache results reference existing CAS objects.{
name: "AC_STORE",
completeness_checking: {
backend: { /* AC store */ },
cas_store: { ref_store: { name: "CAS_STORE" } }
}
}
Existence Cache
Cacheshas() calls for faster lookups.
{
name: "CACHED_STORE",
existence_cache: {
backend: { /* store config */ },
eviction_policy: { max_seconds: 100 }
}
}
Dedup Store
Content-defined chunking for deduplication.{
name: "DEDUP_STORE",
dedup: {
index_store: { /* small/fast store */ },
content_store: { /* large store */ },
min_size: "64kb",
normal_size: "256kb",
max_size: "512kb"
}
}
Size Partitioning
Routes blobs by size.{
name: "PARTITIONED_STORE",
size_partitioning: {
size: "128mb",
lower_store: { /* small blob store */ },
upper_store: { /* large blob store */ }
}
}