Files
zot/pkg/storage/constants/constants.go
T
Ramkumar Chinchani 10dcd182f6 refactor(storage): add a common blobstore to store all blobs (#4136)
* feat(storage): add a common blobstore to store all blobs (#3906)

Currently, zot uses one of the existing repos as the master copy for a blob to
achieve dedupe, which complicates dedupe tracking logic. Furthermore, we
have a global storage lock which is becoming a bottleneck. In order to
move to a per-repo lock, we first need to simplify this logic.

Now use a single hidden global repo (_blobstore/) as a blob store instead.

Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com>

* fix(storage): address blobstore cache correctness issues

Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com>

---------

Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com>
2026-06-16 15:30:37 -07:00

44 lines
1.8 KiB
Go

package constants
import (
"time"
)
const (
// BlobUploadDir defines the upload directory for blob uploads.
BlobUploadDir = ".uploads"
SchemaVersion = 2
DefaultFilePerms = 0o600
DefaultDirPerms = 0o700
RLOCK = "RLock"
RWLOCK = "RWLock"
BlobsCache = "blobs"
DuplicatesBucket = "duplicates"
OriginalBucket = "original"
DBExtensionName = ".db"
DBCacheLockCheckTimeout = 10 * time.Second
BoltdbName = "cache"
DynamoDBDriverName = "dynamodb"
RedisDriverName = "redis"
RedisLocksBucket = "locks"
DefaultGCDelay = 1 * time.Hour
DefaultGCInterval = 1 * time.Hour
S3StorageDriverName = "s3"
GCSStorageDriverName = "gcs"
LocalStorageDriverName = "local"
// DedupeRestoreCompleteMarker is written at the image store root when a full dedupe-restore
// pass has completed. Its presence means no deduped blobs remain, so subsequent startups
// with dedupe=false can skip the expensive per-digest restore scan. The marker is deleted
// whenever dedupe is re-enabled, so that the next dedupe→false transition reruns restore.
DedupeRestoreCompleteMarker = "_restore_complete"
// DedupeRestoreMarkerComplete is the content of DedupeRestoreCompleteMarker when a restore
// pass has completed successfully.
DedupeRestoreMarkerComplete = "1"
// DedupeRestoreMarkerInvalid is the content written to DedupeRestoreCompleteMarker to
// invalidate a previous completion, forcing the restore scan to run again.
DedupeRestoreMarkerInvalid = "0"
// GlobalBlobsRepo is the internal directory used as the master copy location for deduped blobs.
// It uses a leading underscore to ensure it can never collide with a valid OCI repository name.
GlobalBlobsRepo = "_blobstore"
)