Documentation
¶
Index ¶
- Constants
- Variables
- func CommitDataToCommitRecord(c *graveler.CommitData) *graveler.CommitRecord
- func FindMergeBase(ctx context.Context, getter CommitGetter, ...) (*graveler.Commit, error)
- func ParseRef(r graveler.Ref) (graveler.RawRef, error)
- func ResolveRawRef(ctx context.Context, store Store, addressProvider ident.AddressProvider, ...) (*graveler.ResolvedRef, error)
- type BranchByCommitIterator
- func (b *BranchByCommitIterator) Close()
- func (b *BranchByCommitIterator) Err() error
- func (b *BranchByCommitIterator) Next() bool
- func (b *BranchByCommitIterator) SeekGE(_ graveler.BranchID)
- func (b *BranchByCommitIterator) SortByCommitID(i, j int) bool
- func (b *BranchByCommitIterator) Value() *graveler.BranchRecord
- type BranchSimpleIterator
- type CacheConfig
- type CommitGetter
- type CommitIterator
- type CommitsGenerationPriorityQueue
- type CompareFunc
- type Manager
- func (m *Manager) AddCommit(ctx context.Context, repository *graveler.RepositoryRecord, ...) (graveler.CommitID, error)
- func (m *Manager) BranchUpdate(ctx context.Context, repository *graveler.RepositoryRecord, ...) error
- func (m *Manager) CreateBareRepository(ctx context.Context, repositoryID graveler.RepositoryID, ...) (*graveler.RepositoryRecord, error)
- func (m *Manager) CreateBranch(ctx context.Context, repository *graveler.RepositoryRecord, ...) error
- func (m *Manager) CreateRepository(ctx context.Context, repositoryID graveler.RepositoryID, ...) (*graveler.RepositoryRecord, error)
- func (m *Manager) CreateTag(ctx context.Context, repository *graveler.RepositoryRecord, ...) error
- func (m *Manager) DeleteBranch(ctx context.Context, repository *graveler.RepositoryRecord, ...) error
- func (m *Manager) DeleteRepository(ctx context.Context, repositoryID graveler.RepositoryID) error
- func (m *Manager) DeleteTag(ctx context.Context, repository *graveler.RepositoryRecord, ...) error
- func (m *Manager) FindMergeBase(ctx context.Context, repository *graveler.RepositoryRecord, ...) (*graveler.Commit, error)
- func (m *Manager) GCBranchIterator(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.BranchIterator, error)
- func (m *Manager) GCCommitIterator(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.CommitIterator, error)
- func (m *Manager) GetBranch(ctx context.Context, repository *graveler.RepositoryRecord, ...) (*graveler.Branch, error)
- func (m *Manager) GetCommit(ctx context.Context, repository *graveler.RepositoryRecord, ...) (*graveler.Commit, error)
- func (m *Manager) GetCommitByPrefix(ctx context.Context, repository *graveler.RepositoryRecord, ...) (*graveler.Commit, error)
- func (m *Manager) GetRepository(ctx context.Context, repositoryID graveler.RepositoryID) (*graveler.RepositoryRecord, error)
- func (m *Manager) GetTag(ctx context.Context, repository *graveler.RepositoryRecord, ...) (*graveler.CommitID, error)
- func (m *Manager) ListBranches(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.BranchIterator, error)
- func (m *Manager) ListCommits(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.CommitIterator, error)
- func (m *Manager) ListRepositories(ctx context.Context) (graveler.RepositoryIterator, error)
- func (m *Manager) ListTags(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.TagIterator, error)
- func (m *Manager) Log(ctx context.Context, repository *graveler.RepositoryRecord, ...) (graveler.CommitIterator, error)
- func (m *Manager) ParseRef(ref graveler.Ref) (graveler.RawRef, error)
- func (m *Manager) RemoveCommit(ctx context.Context, repository *graveler.RepositoryRecord, ...) error
- func (m *Manager) ResolveRawRef(ctx context.Context, repository *graveler.RepositoryRecord, ...) (*graveler.ResolvedRef, error)
- func (m *Manager) SetBranch(ctx context.Context, repository *graveler.RepositoryRecord, ...) error
- type ManagerConfig
- type OrderedCommitIterator
- type RepositoryIterator
- type Store
- type TagIterator
Constants ¶
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 ¶
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 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 (b *BranchByCommitIterator) SeekGE(_ graveler.BranchID)
func (*BranchByCommitIterator) SortByCommitID ¶ added in v0.70.0
func (b *BranchByCommitIterator) SortByCommitID(i, j int) bool
func (*BranchByCommitIterator) Value ¶ added in v0.70.0
func (b *BranchByCommitIterator) Value() *graveler.BranchRecord
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
func (bi *BranchSimpleIterator) Value() *graveler.BranchRecord
type CacheConfig ¶ added in v0.84.0
type CommitGetter ¶
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 (c CommitsGenerationPriorityQueue) Len() int
func (CommitsGenerationPriorityQueue) Less ¶ added in v0.41.1
func (c CommitsGenerationPriorityQueue) Less(i, j int) bool
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
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 Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func NewRefManager ¶ added in v0.89.0
func NewRefManager(cfg ManagerConfig) *Manager
func (*Manager) BranchUpdate ¶ added in v0.89.0
func (m *Manager) BranchUpdate(ctx context.Context, repository *graveler.RepositoryRecord, branchID graveler.BranchID, f graveler.BranchUpdateFunc) error
func (*Manager) CreateBareRepository ¶
func (m *Manager) CreateBareRepository(ctx context.Context, repositoryID graveler.RepositoryID, repository graveler.Repository) (*graveler.RepositoryRecord, error)
func (*Manager) CreateBranch ¶ added in v0.54.0
func (*Manager) CreateRepository ¶
func (m *Manager) CreateRepository(ctx context.Context, repositoryID graveler.RepositoryID, repository graveler.Repository) (*graveler.RepositoryRecord, error)
func (*Manager) DeleteBranch ¶
func (*Manager) DeleteRepository ¶
func (*Manager) FindMergeBase ¶
func (*Manager) GCBranchIterator ¶ added in v0.89.0
func (m *Manager) GCBranchIterator(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.BranchIterator, error)
func (*Manager) GCCommitIterator ¶ added in v0.89.0
func (m *Manager) GCCommitIterator(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.CommitIterator, error)
func (*Manager) GetCommitByPrefix ¶
func (*Manager) GetRepository ¶
func (m *Manager) GetRepository(ctx context.Context, repositoryID graveler.RepositoryID) (*graveler.RepositoryRecord, error)
func (*Manager) ListBranches ¶
func (m *Manager) ListBranches(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.BranchIterator, error)
func (*Manager) ListCommits ¶
func (m *Manager) ListCommits(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.CommitIterator, error)
func (*Manager) ListRepositories ¶
func (*Manager) ListTags ¶
func (m *Manager) ListTags(ctx context.Context, repository *graveler.RepositoryRecord) (graveler.TagIterator, error)
func (*Manager) Log ¶
func (m *Manager) Log(ctx context.Context, repository *graveler.RepositoryRecord, from graveler.CommitID) (graveler.CommitIterator, error)
func (*Manager) RemoveCommit ¶ added in v0.89.0
func (*Manager) ResolveRawRef ¶ added in v0.44.1
func (m *Manager) ResolveRawRef(ctx context.Context, repository *graveler.RepositoryRecord, raw graveler.RawRef) (*graveler.ResolvedRef, error)
type ManagerConfig ¶ added in v0.84.0
type ManagerConfig struct { Executor batch.Batcher KvStore *kv.StoreMessage AddressProvider ident.AddressProvider RepositoryCacheConfig CacheConfig CommitCacheConfig CacheConfig }
type OrderedCommitIterator ¶
type OrderedCommitIterator struct {
// contains filtered or unexported fields
}
func NewOrderedCommitIterator ¶
func NewOrderedCommitIterator(ctx context.Context, store *kv.StoreMessage, repo *graveler.RepositoryRecord, onlyAncestryLeaves bool) (*OrderedCommitIterator, error)
NewOrderedCommitIterator 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 (*OrderedCommitIterator) Close ¶
func (i *OrderedCommitIterator) Close()
func (*OrderedCommitIterator) Err ¶
func (i *OrderedCommitIterator) Err() error
func (*OrderedCommitIterator) Next ¶
func (i *OrderedCommitIterator) Next() bool
func (*OrderedCommitIterator) SeekGE ¶
func (i *OrderedCommitIterator) SeekGE(id graveler.CommitID)
func (*OrderedCommitIterator) Value ¶
func (i *OrderedCommitIterator) Value() *graveler.CommitRecord
type RepositoryIterator ¶
type RepositoryIterator struct {
// contains filtered or unexported fields
}
func NewRepositoryIterator ¶
func NewRepositoryIterator(ctx context.Context, store *kv.StoreMessage) (*RepositoryIterator, error)
func (*RepositoryIterator) Close ¶
func (ri *RepositoryIterator) Close()
func (*RepositoryIterator) Err ¶
func (ri *RepositoryIterator) Err() error
func (*RepositoryIterator) Next ¶
func (ri *RepositoryIterator) Next() bool
func (*RepositoryIterator) SeekGE ¶
func (ri *RepositoryIterator) SeekGE(id graveler.RepositoryID)
func (*RepositoryIterator) Value ¶
func (ri *RepositoryIterator) Value() *graveler.RepositoryRecord
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) }
type TagIterator ¶
type TagIterator struct {
// contains filtered or unexported fields
}
func NewTagIterator ¶
func NewTagIterator(ctx context.Context, store *kv.StoreMessage, repo *graveler.RepositoryRecord) (*TagIterator, error)
func (*TagIterator) Close ¶
func (i *TagIterator) Close()
func (*TagIterator) Err ¶
func (i *TagIterator) Err() error
func (*TagIterator) Next ¶
func (i *TagIterator) Next() bool
func (*TagIterator) SeekGE ¶
func (i *TagIterator) SeekGE(id graveler.TagID)
func (*TagIterator) Value ¶
func (i *TagIterator) Value() *graveler.TagRecord