ref

package
v0.88.0 Latest Latest
Warning

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

Go to latest
Published: Dec 22, 2022 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultRepositoryCacheSize   = 1000
	DefaultRepositoryCacheExpiry = 5 * time.Second
	DefaultRepositoryCacheJitter = DefaultRepositoryCacheExpiry / 2

	DefaultCommitCacheSize   = 1000
	DefaultCommitCacheExpiry = 30 * time.Second
	DefaultCommitCacheJitter = DefaultRepositoryCacheExpiry / 2
)
View Source
const MaxBatchDelay = time.Millisecond * 3

MaxBatchDelay - 3ms was chosen as a max delay time for critical path queries. It trades off amount of queries per second (and thus effectiveness of the batching mechanism) with added latency. Since reducing # of expensive operations is only beneficial when there are a lot of concurrent requests,

the sweet spot is probably between 1-5 milliseconds (representing 200-1000 requests/second to the data store).

3ms of delay with ~300 requests/second per resource sounds like a reasonable tradeoff.

Variables

View Source
var (
	DefaultRepositoryCacheConfig = &CacheConfig{
		Size:   DefaultRepositoryCacheSize,
		Expiry: DefaultRepositoryCacheExpiry,
		Jitter: DefaultRepositoryCacheJitter,
	}

	DefaultCommitCacheConfig = &CacheConfig{
		Size:   DefaultCommitCacheSize,
		Expiry: DefaultCommitCacheExpiry,
		Jitter: DefaultCommitCacheJitter,
	}
)
View Source
var ErrIteratorClosed = errors.New("iterator already closed")

Functions

func CommitDataToCommitRecord added in v0.70.0

func CommitDataToCommitRecord(c *graveler.CommitData) *graveler.CommitRecord

func FindMergeBase added in v0.41.1

func FindMergeBase(ctx context.Context, getter CommitGetter, repository *graveler.RepositoryRecord, leftID, rightID graveler.CommitID) (*graveler.Commit, error)

FindMergeBase finds the best common ancestor according to the definition in the git-merge-base documentation: https://git-scm.com/docs/git-merge-base One common ancestor is better than another common ancestor if the latter is an ancestor of the former.

func ParseRef added in v0.44.1

func ParseRef(r graveler.Ref) (graveler.RawRef, error)

func ResolveRawRef added in v0.44.1

func ResolveRawRef(ctx context.Context, store Store, addressProvider ident.AddressProvider, repository *graveler.RepositoryRecord, rawRef graveler.RawRef) (*graveler.ResolvedRef, error)

Types

type BranchByCommitIterator added in v0.70.0

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

BranchByCommitIterator iterates over repository's branches ordered by Commit ID. Currently, implemented as in-mem iterator

func NewBranchByCommitIterator added in v0.70.0

func NewBranchByCommitIterator(ctx context.Context, store *kv.StoreMessage, repo *graveler.RepositoryRecord) (*BranchByCommitIterator, error)

func (*BranchByCommitIterator) Close added in v0.70.0

func (b *BranchByCommitIterator) Close()

func (*BranchByCommitIterator) Err added in v0.70.0

func (b *BranchByCommitIterator) Err() error

func (*BranchByCommitIterator) Next added in v0.70.0

func (b *BranchByCommitIterator) Next() bool

func (*BranchByCommitIterator) SeekGE added in v0.70.0

func (*BranchByCommitIterator) SortByCommitID added in v0.70.0

func (b *BranchByCommitIterator) SortByCommitID(i, j int) bool

func (*BranchByCommitIterator) Value added in v0.70.0

type BranchSimpleIterator added in v0.70.0

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

BranchSimpleIterator Iterates over repository's branches in a sorted way, since the branches are already sorted in DB according to BranchID

func NewBranchSimpleIterator added in v0.70.0

func NewBranchSimpleIterator(ctx context.Context, store *kv.StoreMessage, repo *graveler.RepositoryRecord) (*BranchSimpleIterator, error)

func (*BranchSimpleIterator) Close added in v0.70.0

func (bi *BranchSimpleIterator) Close()

func (*BranchSimpleIterator) Err added in v0.70.0

func (bi *BranchSimpleIterator) Err() error

func (*BranchSimpleIterator) Next added in v0.70.0

func (bi *BranchSimpleIterator) Next() bool

func (*BranchSimpleIterator) SeekGE added in v0.70.0

func (bi *BranchSimpleIterator) SeekGE(id graveler.BranchID)

func (*BranchSimpleIterator) Value added in v0.70.0

type CacheConfig added in v0.84.0

type CacheConfig struct {
	Size   int
	Expiry time.Duration
	Jitter time.Duration
}

type CommitGetter

type CommitGetter interface {
	GetCommit(ctx context.Context, repository *graveler.RepositoryRecord, commitID graveler.CommitID) (*graveler.Commit, error)
}

type CommitIterator

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

func NewCommitIterator

func NewCommitIterator(ctx context.Context, repository *graveler.RepositoryRecord, start graveler.CommitID, manager graveler.RefManager) *CommitIterator

NewCommitIterator returns an iterator over all commits in the given repository. Ordering is based on the Commit Creation Date.

func (*CommitIterator) Close

func (ci *CommitIterator) Close()

func (*CommitIterator) Err

func (ci *CommitIterator) Err() error

func (*CommitIterator) Next

func (ci *CommitIterator) Next() bool

func (*CommitIterator) SeekGE

func (ci *CommitIterator) SeekGE(id graveler.CommitID)

SeekGE skip under the point of 'id' commit ID based on a new

The list of commit

func (*CommitIterator) Value

func (ci *CommitIterator) Value() *graveler.CommitRecord

type CommitsGenerationPriorityQueue added in v0.41.1

type CommitsGenerationPriorityQueue []*graveler.CommitRecord

CommitsGenerationPriorityQueue implements heap.Interface such that the commit with the greatest Generation value is at the root of the heap.

func NewCommitsGenerationPriorityQueue added in v0.41.1

func NewCommitsGenerationPriorityQueue() CommitsGenerationPriorityQueue

func (CommitsGenerationPriorityQueue) Len added in v0.41.1

func (CommitsGenerationPriorityQueue) Less added in v0.41.1

func (*CommitsGenerationPriorityQueue) Pop added in v0.41.1

func (c *CommitsGenerationPriorityQueue) Pop() interface{}

func (*CommitsGenerationPriorityQueue) Push added in v0.41.1

func (c *CommitsGenerationPriorityQueue) Push(x interface{})

func (CommitsGenerationPriorityQueue) Swap added in v0.41.1

func (c CommitsGenerationPriorityQueue) Swap(i, j int)

type CompareFunc added in v0.70.0

type CompareFunc func(i, j int) bool

CompareFunc type used for sorting in InMemIterator, it is a strictly bigger comparison function required for the sort.Slice algorithm, implementors need to decide how to handle equal values

type KVManager added in v0.69.1

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

func NewKVRefManager added in v0.69.1

func NewKVRefManager(cfg ManagerConfig) *KVManager

func (*KVManager) AddCommit added in v0.69.1

func (m *KVManager) AddCommit(ctx context.Context, repository *graveler.RepositoryRecord, commit graveler.Commit) (graveler.CommitID, error)

func (*KVManager) BranchUpdate added in v0.70.0

func (m *KVManager) BranchUpdate(ctx context.Context, repository *graveler.RepositoryRecord, branchID graveler.BranchID, f graveler.BranchUpdateFunc) error

func (*KVManager) CreateBareRepository added in v0.69.1

func (m *KVManager) CreateBareRepository(ctx context.Context, repositoryID graveler.RepositoryID, repository graveler.Repository) (*graveler.RepositoryRecord, error)

func (*KVManager) CreateBranch added in v0.69.1

func (m *KVManager) CreateBranch(ctx context.Context, repository *graveler.RepositoryRecord, branchID graveler.BranchID, branch graveler.Branch) error

func (*KVManager) CreateRepository added in v0.69.1

func (m *KVManager) CreateRepository(ctx context.Context, repositoryID graveler.RepositoryID, repository graveler.Repository) (*graveler.RepositoryRecord, error)

func (*KVManager) CreateTag added in v0.69.1

func (m *KVManager) CreateTag(ctx context.Context, repository *graveler.RepositoryRecord, tagID graveler.TagID, commitID graveler.CommitID) error

func (*KVManager) DeleteBranch added in v0.69.1

func (m *KVManager) DeleteBranch(ctx context.Context, repository *graveler.RepositoryRecord, branchID graveler.BranchID) error

func (*KVManager) DeleteRepository added in v0.69.1

func (m *KVManager) DeleteRepository(ctx context.Context, repositoryID graveler.RepositoryID) error

func (*KVManager) DeleteTag added in v0.69.1

func (m *KVManager) DeleteTag(ctx context.Context, repository *graveler.RepositoryRecord, tagID graveler.TagID) error

func (*KVManager) FindMergeBase added in v0.69.1

func (m *KVManager) FindMergeBase(ctx context.Context, repository *graveler.RepositoryRecord, commitIDs ...graveler.CommitID) (*graveler.Commit, error)

func (*KVManager) GCBranchIterator added in v0.70.0

func (m *KVManager) GCBranchIterator(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.BranchIterator, error)

func (*KVManager) GCCommitIterator added in v0.70.0

func (m *KVManager) GCCommitIterator(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.CommitIterator, error)

func (*KVManager) GetBranch added in v0.69.1

func (m *KVManager) GetBranch(ctx context.Context, repository *graveler.RepositoryRecord, branchID graveler.BranchID) (*graveler.Branch, error)

func (*KVManager) GetCommit added in v0.69.1

func (m *KVManager) GetCommit(ctx context.Context, repository *graveler.RepositoryRecord, commitID graveler.CommitID) (*graveler.Commit, error)

func (*KVManager) GetCommitByPrefix added in v0.69.1

func (m *KVManager) GetCommitByPrefix(ctx context.Context, repository *graveler.RepositoryRecord, prefix graveler.CommitID) (*graveler.Commit, error)

func (*KVManager) GetRepository added in v0.69.1

func (m *KVManager) GetRepository(ctx context.Context, repositoryID graveler.RepositoryID) (*graveler.RepositoryRecord, error)

func (*KVManager) GetTag added in v0.69.1

func (m *KVManager) GetTag(ctx context.Context, repository *graveler.RepositoryRecord, tagID graveler.TagID) (*graveler.CommitID, error)

func (*KVManager) ListBranches added in v0.69.1

func (m *KVManager) ListBranches(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.BranchIterator, error)

func (*KVManager) ListCommits added in v0.69.1

func (m *KVManager) ListCommits(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.CommitIterator, error)

func (*KVManager) ListRepositories added in v0.69.1

func (m *KVManager) ListRepositories(ctx context.Context) (graveler.RepositoryIterator, error)

func (*KVManager) ListTags added in v0.69.1

func (m *KVManager) ListTags(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.TagIterator, error)

func (*KVManager) Log added in v0.69.1

func (*KVManager) ParseRef added in v0.69.1

func (m *KVManager) ParseRef(ref graveler.Ref) (graveler.RawRef, error)

func (*KVManager) RemoveCommit added in v0.70.0

func (m *KVManager) RemoveCommit(ctx context.Context, repository *graveler.RepositoryRecord, commitID graveler.CommitID) error

func (*KVManager) ResolveRawRef added in v0.69.1

func (m *KVManager) ResolveRawRef(ctx context.Context, repository *graveler.RepositoryRecord, raw graveler.RawRef) (*graveler.ResolvedRef, error)

func (*KVManager) SetBranch added in v0.69.1

func (m *KVManager) SetBranch(ctx context.Context, repository *graveler.RepositoryRecord, branchID graveler.BranchID, branch graveler.Branch) error

type KVOrderedCommitIterator added in v0.70.0

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

func NewKVOrderedCommitIterator added in v0.70.0

func NewKVOrderedCommitIterator(ctx context.Context, store *kv.StoreMessage, repo *graveler.RepositoryRecord, onlyAncestryLeaves bool) (*KVOrderedCommitIterator, error)

NewKVOrderedCommitIterator returns an iterator over all commits in the given repository. Ordering is based on the Commit ID value. WithOnlyAncestryLeaves causes the iterator to return only commits which are not the first parent of any other commit. Consider a commit graph where all non-first-parent edges are removed. This graph is a tree, and ancestry leaves are its leaves.

func (*KVOrderedCommitIterator) Close added in v0.70.0

func (i *KVOrderedCommitIterator) Close()

func (*KVOrderedCommitIterator) Err added in v0.70.0

func (i *KVOrderedCommitIterator) Err() error

func (*KVOrderedCommitIterator) Next added in v0.70.0

func (i *KVOrderedCommitIterator) Next() bool

func (*KVOrderedCommitIterator) SeekGE added in v0.70.0

func (*KVOrderedCommitIterator) Value added in v0.70.0

type KVRepositoryIterator added in v0.70.0

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

func NewKVRepositoryIterator added in v0.70.0

func NewKVRepositoryIterator(ctx context.Context, store *kv.StoreMessage) (*KVRepositoryIterator, error)

func (*KVRepositoryIterator) Close added in v0.70.0

func (ri *KVRepositoryIterator) Close()

func (*KVRepositoryIterator) Err added in v0.70.0

func (ri *KVRepositoryIterator) Err() error

func (*KVRepositoryIterator) Next added in v0.70.0

func (ri *KVRepositoryIterator) Next() bool

func (*KVRepositoryIterator) SeekGE added in v0.70.0

func (*KVRepositoryIterator) Value added in v0.70.0

type KVTagIterator added in v0.69.1

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

func NewKVTagIterator added in v0.69.1

func NewKVTagIterator(ctx context.Context, store *kv.StoreMessage, repo *graveler.RepositoryRecord) (*KVTagIterator, error)

func (*KVTagIterator) Close added in v0.69.1

func (i *KVTagIterator) Close()

func (*KVTagIterator) Err added in v0.69.1

func (i *KVTagIterator) Err() error

func (*KVTagIterator) Next added in v0.69.1

func (i *KVTagIterator) Next() bool

func (*KVTagIterator) SeekGE added in v0.69.1

func (i *KVTagIterator) SeekGE(id graveler.TagID)

func (*KVTagIterator) Value added in v0.69.1

func (i *KVTagIterator) Value() *graveler.TagRecord

type ManagerConfig added in v0.84.0

type ManagerConfig struct {
	Executor          batch.Batcher
	KvStore           *kv.StoreMessage
	AddressProvider   ident.AddressProvider
	RepoCacheConfig   *CacheConfig
	CommitCacheConfig *CacheConfig
}

type RepositoryIterator

type RepositoryIterator interface {
	Next() bool
	SeekGE(id graveler.RepositoryID)
	Value() *graveler.RepositoryRecord
	Err() error
	Close()
}

type Store

type Store interface {
	GetBranch(ctx context.Context, repository *graveler.RepositoryRecord, branchID graveler.BranchID) (*graveler.Branch, error)
	GetTag(ctx context.Context, repository *graveler.RepositoryRecord, tagID graveler.TagID) (*graveler.CommitID, error)
	GetCommitByPrefix(ctx context.Context, repository *graveler.RepositoryRecord, prefix graveler.CommitID) (*graveler.Commit, error)
	GetCommit(ctx context.Context, repository *graveler.RepositoryRecord, prefix graveler.CommitID) (*graveler.Commit, error)
}

Jump to

Keyboard shortcuts

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