repository

package
v1.0.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 6, 2026 License: ISC Imports: 33 Imported by: 45

Documentation

Index

Constants

View Source
const LOCK_REFRESH_RATE = 5 * time.Minute
View Source
const LOCK_TTL = 2 * LOCK_REFRESH_RATE
View Source
const LOCK_VERSION = "1.0.0"

Variables

View Source
var (
	ErrPackfileNotFound = errors.New("packfile not found")
	ErrBlobNotFound     = errors.New("blob not found")
	ErrNotReadable      = errors.New("repository is not readable")
)
View Source
var ErrStoreReadOnly = errors.New("read only store")

Functions

This section is empty.

Types

type HasherPool

type HasherPool struct {
	// contains filtered or unexported fields
}

HasherPool pools hash.Hash instances

func NewHasherPool

func NewHasherPool(newHasher func() hash.Hash) *HasherPool

NewHasherPool creates a new hasher pool

func (*HasherPool) Get

func (hp *HasherPool) Get() hash.Hash

Get retrieves a hasher from the pool

func (*HasherPool) Put

func (hp *HasherPool) Put(hasher hash.Hash)

Put returns a hasher to the pool

type Lock

type Lock struct {
	Version   versioning.Version `msgpack:"version"`
	Timestamp time.Time          `msgpack:"timestamp"`
	Hostname  string             `msgpack:"hostname"`
	Exclusive bool               `msgpack:"exclusive"`
}

func NewExclusiveLock

func NewExclusiveLock(hostname string) *Lock

func NewLockFromStream

func NewLockFromStream(rd io.Reader) (*Lock, error)

func NewSharedLock

func NewSharedLock(hostname string) *Lock

func (*Lock) IsStale

func (lock *Lock) IsStale() bool

func (*Lock) SerializeToStream

func (lock *Lock) SerializeToStream(w io.Writer) error

type Repository

type Repository struct {
	// contains filtered or unexported fields
}

func Inexistent

func Inexistent(ctx *kcontext.KContext, storeConfig map[string]string) (*Repository, error)

func New

func New(ctx *kcontext.KContext, secret []byte, store storage.Store, config []byte) (*Repository, error)

func NewNoRebuild

func NewNoRebuild(ctx *kcontext.KContext, secret []byte, store storage.Store, config []byte) (*Repository, error)

func (*Repository) AppContext

func (r *Repository) AppContext() *kcontext.KContext

func (*Repository) BlobExists

func (r *Repository) BlobExists(Type resources.Type, mac objects.MAC) bool

func (*Repository) Chunker

func (r *Repository) Chunker(rd io.Reader) (*chunkers.Chunker, error)

func (*Repository) Close

func (r *Repository) Close() error

func (*Repository) ComputeMAC

func (r *Repository) ComputeMAC(data []byte) objects.MAC

func (*Repository) Configuration

func (r *Repository) Configuration() storage.Configuration

func (*Repository) DeleteLock

func (r *Repository) DeleteLock(lockID objects.MAC) error

func (*Repository) DeletePackfile

func (r *Repository) DeletePackfile(mac objects.MAC) error

Deletes a packfile from the store. Warning this is a true delete and is unrecoverable.

func (*Repository) DeleteSnapshot

func (r *Repository) DeleteSnapshot(snapshotID objects.MAC) error

func (*Repository) DeleteState

func (r *Repository) DeleteState(mac objects.MAC) error

func (*Repository) GetBlob

func (r *Repository) GetBlob(Type resources.Type, mac objects.MAC) (io.ReadSeeker, error)

func (*Repository) GetBlobBytes

func (r *Repository) GetBlobBytes(Type resources.Type, mac objects.MAC) ([]byte, error)

func (*Repository) GetLock

func (r *Repository) GetLock(lockID objects.MAC) (io.ReadCloser, error)

func (*Repository) GetLocks

func (r *Repository) GetLocks() ([]objects.MAC, error)

func (*Repository) GetMACHasher

func (r *Repository) GetMACHasher() hash.Hash

func (*Repository) GetObjectContent added in v1.0.3

func (r *Repository) GetObjectContent(obj *objects.Object, start int, maxSize uint32) iter.Seq2[[]byte, error]

func (*Repository) GetPackfile

func (r *Repository) GetPackfile(mac objects.MAC) (*packfile.PackfileInMemory, error)

func (*Repository) GetPackfileBlob

func (r *Repository) GetPackfileBlob(loc state.Location) (io.ReadSeeker, error)

func (*Repository) GetPackfileForBlob

func (r *Repository) GetPackfileForBlob(Type resources.Type, mac objects.MAC) (objects.MAC, bool, error)

func (*Repository) GetPackfileRange added in v1.0.3

func (r *Repository) GetPackfileRange(loc state.Location) ([]byte, error)

func (*Repository) GetPackfiles

func (r *Repository) GetPackfiles() ([]objects.MAC, error)

func (*Repository) GetPooledMACHasher

func (r *Repository) GetPooledMACHasher() (hash.Hash, func())

func (*Repository) GetSnapshots

func (r *Repository) GetSnapshots() ([]objects.MAC, error)

func (*Repository) GetState

func (r *Repository) GetState(mac objects.MAC) (io.ReadCloser, error)

func (*Repository) GetStates

func (r *Repository) GetStates() ([]objects.MAC, error)

func (*Repository) HasDeletedPackfile

func (r *Repository) HasDeletedPackfile(mac objects.MAC) (bool, error)

func (*Repository) ListDeletedPackfiles

func (r *Repository) ListDeletedPackfiles() iter.Seq2[objects.MAC, time.Time]

func (*Repository) ListDeletedSnapShots

func (r *Repository) ListDeletedSnapShots() iter.Seq2[objects.MAC, time.Time]

func (*Repository) ListOrphanBlobs

func (r *Repository) ListOrphanBlobs() iter.Seq2[state.DeltaEntry, error]

func (*Repository) ListPackfileEntries added in v1.0.10

func (r *Repository) ListPackfileEntries() iter.Seq2[state.PackfileEntry, error]

func (*Repository) ListPackfiles

func (r *Repository) ListPackfiles() iter.Seq[objects.MAC]

func (*Repository) ListSnapshots

func (r *Repository) ListSnapshots() iter.Seq[objects.MAC]

func (*Repository) Location

func (r *Repository) Location() (string, error)

func (*Repository) Logger

func (r *Repository) Logger() *logging.Logger

func (*Repository) NewRepositoryWriter

func (r *Repository) NewRepositoryWriter(cache *caching.ScanCache, id objects.MAC, typ RepositoryType, tmpPackfileDir string) *RepositoryWriter

func (*Repository) PutCurrentState

func (r *Repository) PutCurrentState() error

Saves the full aggregated state to the repository, might be heavy handed use with care.

func (*Repository) PutLock

func (r *Repository) PutLock(lockID objects.MAC, rd io.Reader) (int64, error)

func (*Repository) PutState

func (r *Repository) PutState(mac objects.MAC, rd io.Reader) error

func (*Repository) RBytes

func (r *Repository) RBytes() int64

func (*Repository) RebuildState

func (r *Repository) RebuildState() error

func (*Repository) RebuildStateWithCache

func (r *Repository) RebuildStateWithCache(cacheInstance caching.StateCache) error

func (*Repository) RemoveBlob

func (r *Repository) RemoveBlob(Type resources.Type, mac, packfileMAC objects.MAC) error

Removes the provided blob from our state, making it unreachable

func (*Repository) RemoveDeletedPackfile

func (r *Repository) RemoveDeletedPackfile(packfileMAC objects.MAC) error

Removes the deleted packfile entry from the state.

func (*Repository) RemovePackfile

func (r *Repository) RemovePackfile(packfileMAC objects.MAC) error

Removes the packfile from the state, making it unreachable.

func (*Repository) StorageSize

func (r *Repository) StorageSize() (int64, error)

func (*Repository) Store

func (r *Repository) Store() storage.Store

func (*Repository) WBytes

func (r *Repository) WBytes() int64

type RepositoryStore

type RepositoryStore[K, V any] struct {
	// contains filtered or unexported fields
}

func NewRepositoryStore

func NewRepositoryStore[K, V any](repo *Repository, blobtype resources.Type) *RepositoryStore[K, V]

func (*RepositoryStore[K, V]) Close added in v1.0.13

func (rs *RepositoryStore[K, V]) Close() error

func (*RepositoryStore[K, V]) Get

func (rs *RepositoryStore[K, V]) Get(sum objects.MAC) (*btree.Node[K, objects.MAC, V], error)

func (*RepositoryStore[K, V]) Put

func (rs *RepositoryStore[K, V]) Put(node *btree.Node[K, objects.MAC, V]) (csum objects.MAC, err error)

func (*RepositoryStore[K, V]) Update

func (rs *RepositoryStore[K, V]) Update(sum objects.MAC, node *btree.Node[K, objects.MAC, V]) error

type RepositoryType

type RepositoryType int
const (
	DefaultType RepositoryType = iota
	PtarType                   = iota
)

type RepositoryWriter

type RepositoryWriter struct {
	*Repository

	PackerManager packer.PackerManagerInt
	// contains filtered or unexported fields
}

func (*RepositoryWriter) BlobExists

func (r *RepositoryWriter) BlobExists(Type resources.Type, mac objects.MAC) bool

func (*RepositoryWriter) CommitTransaction

func (r *RepositoryWriter) CommitTransaction(oldStateID objects.MAC) error

func (*RepositoryWriter) DeleteStateResource

func (r *RepositoryWriter) DeleteStateResource(Type resources.Type, mac objects.MAC) error

func (*RepositoryWriter) MergeLocalStateWith added in v1.0.10

func (r *RepositoryWriter) MergeLocalStateWith(stateID objects.MAC, oldCache *caching.ScanCache) error

func (*RepositoryWriter) PutBlob

func (r *RepositoryWriter) PutBlob(Type resources.Type, mac objects.MAC, data []byte) error

func (*RepositoryWriter) PutBlobIfNotExists

func (r *RepositoryWriter) PutBlobIfNotExists(Type resources.Type, mac objects.MAC, data []byte) error

func (*RepositoryWriter) PutBlobIfNotExistsWithHint

func (r *RepositoryWriter) PutBlobIfNotExistsWithHint(hint int, Type resources.Type, mac objects.MAC, data []byte) error

func (*RepositoryWriter) PutBlobWithHint

func (r *RepositoryWriter) PutBlobWithHint(hint int, Type resources.Type, mac objects.MAC, data []byte) error

func (*RepositoryWriter) PutPackfile

func (r *RepositoryWriter) PutPackfile(pfile packfile.Packfile) error

func (*RepositoryWriter) PutPtarPackfile

func (r *RepositoryWriter) PutPtarPackfile(packfile *packer.PackWriter) error

func (*RepositoryWriter) RemoveTransaction added in v1.0.10

func (r *RepositoryWriter) RemoveTransaction(stateID objects.MAC)

func (*RepositoryWriter) RotateTransaction added in v1.0.10

func (r *RepositoryWriter) RotateTransaction(newCache *caching.ScanCache, oldStateID, newStateID objects.MAC) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL