ref

package
v0.69.1 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2022 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const BatchUpdateSQLSize = 10000
View Source
const IteratorPrefetchSize = 1000

IteratorPrefetchSize is the amount of records to maybeFetch from PG

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 ErrIteratorClosed = errors.New("iterator already closed")

Functions

func FindMergeBase added in v0.41.1

func FindMergeBase(ctx context.Context, getter CommitGetter, repositoryID graveler.RepositoryID, 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, repositoryID graveler.RepositoryID, rawRef graveler.RawRef) (*graveler.ResolvedRef, error)

Types

type BranchIterator

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

func NewBranchIterator

func NewBranchIterator(ctx context.Context, db db.Database, repositoryID graveler.RepositoryID, prefetchSize int, opts ...BranchIteratorOption) *BranchIterator

func (*BranchIterator) Close

func (ri *BranchIterator) Close()

func (*BranchIterator) Err

func (ri *BranchIterator) Err() error

func (*BranchIterator) Next

func (ri *BranchIterator) Next() bool

func (*BranchIterator) SeekGE

func (ri *BranchIterator) SeekGE(id graveler.BranchID)

func (*BranchIterator) Value

func (ri *BranchIterator) Value() *graveler.BranchRecord

type BranchIteratorOption added in v0.45.1

type BranchIteratorOption func(bi *BranchIterator)

func WithOrderByCommitID added in v0.48.1

func WithOrderByCommitID() BranchIteratorOption

type BranchLocker

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

BranchLocker enforces the branch locking logic with Postgres advisory lock The lock can be held by an arbitrary number of Writers or a single MetadataUpdater.

func NewBranchLocker

func NewBranchLocker(db db.Database) *BranchLocker

func (*BranchLocker) MetadataUpdater

func (l *BranchLocker) MetadataUpdater(ctx context.Context, repositoryID graveler.RepositoryID, branchID graveler.BranchID, lockedFn graveler.BranchLockerFunc) (interface{}, error)

MetadataUpdater tries to lock as committer using a Postgres advisory lock for the span of calling `lockedFn`. It returns ErrLockNotAcquired if it fails to acquire the lock.

func (*BranchLocker) Writer

func (l *BranchLocker) Writer(ctx context.Context, repositoryID graveler.RepositoryID, branchID graveler.BranchID, lockedFn graveler.BranchLockerFunc) (interface{}, error)

Writer tries to acquire a write lock using a Postgres advisory lock for the span of calling `lockedFn`. Returns ErrLockNotAcquired if it cannot acquire the lock.

type CommitGetter

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

type CommitIterator

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

func NewCommitIterator

func NewCommitIterator(ctx context.Context, db db.Database, repositoryID graveler.RepositoryID, start graveler.CommitID) *CommitIterator

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 a new

The list of commit

func (*CommitIterator) Value

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

type CommitNode added in v0.62.0

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

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 DBManager added in v0.69.1

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

func NewPGRefManager

func NewPGRefManager(executor batch.Batcher, db db.Database, addressProvider ident.AddressProvider) *DBManager

func (*DBManager) AddCommit added in v0.69.1

func (m *DBManager) AddCommit(ctx context.Context, repositoryID graveler.RepositoryID, commit graveler.Commit) (graveler.CommitID, error)

func (*DBManager) CreateBareRepository added in v0.69.1

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

func (*DBManager) CreateBranch added in v0.69.1

func (m *DBManager) CreateBranch(ctx context.Context, repositoryID graveler.RepositoryID, branchID graveler.BranchID, branch graveler.Branch) error

func (*DBManager) CreateRepository added in v0.69.1

func (m *DBManager) CreateRepository(ctx context.Context, repositoryID graveler.RepositoryID, repository graveler.Repository, token graveler.StagingToken) error

func (*DBManager) CreateTag added in v0.69.1

func (m *DBManager) CreateTag(ctx context.Context, repositoryID graveler.RepositoryID, tagID graveler.TagID, commitID graveler.CommitID) error

func (*DBManager) DeleteBranch added in v0.69.1

func (m *DBManager) DeleteBranch(ctx context.Context, repositoryID graveler.RepositoryID, branchID graveler.BranchID) error

func (*DBManager) DeleteRepository added in v0.69.1

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

func (*DBManager) DeleteTag added in v0.69.1

func (m *DBManager) DeleteTag(ctx context.Context, repositoryID graveler.RepositoryID, tagID graveler.TagID) error

func (*DBManager) FillGenerations added in v0.69.1

func (m *DBManager) FillGenerations(ctx context.Context, repositoryID graveler.RepositoryID) error

func (*DBManager) FindMergeBase added in v0.69.1

func (m *DBManager) FindMergeBase(ctx context.Context, repositoryID graveler.RepositoryID, commitIDs ...graveler.CommitID) (*graveler.Commit, error)

func (*DBManager) GetBranch added in v0.69.1

func (m *DBManager) GetBranch(ctx context.Context, repositoryID graveler.RepositoryID, branchID graveler.BranchID) (*graveler.Branch, error)

func (*DBManager) GetCommit added in v0.69.1

func (m *DBManager) GetCommit(ctx context.Context, repositoryID graveler.RepositoryID, commitID graveler.CommitID) (*graveler.Commit, error)

func (*DBManager) GetCommitByPrefix added in v0.69.1

func (m *DBManager) GetCommitByPrefix(ctx context.Context, repositoryID graveler.RepositoryID, prefix graveler.CommitID) (*graveler.Commit, error)

func (*DBManager) GetRepository added in v0.69.1

func (m *DBManager) GetRepository(ctx context.Context, repositoryID graveler.RepositoryID) (*graveler.Repository, error)

func (*DBManager) GetTag added in v0.69.1

func (m *DBManager) GetTag(ctx context.Context, repositoryID graveler.RepositoryID, tagID graveler.TagID) (*graveler.CommitID, error)

func (*DBManager) ListBranches added in v0.69.1

func (m *DBManager) ListBranches(ctx context.Context, repositoryID graveler.RepositoryID) (graveler.BranchIterator, error)

func (*DBManager) ListCommits added in v0.69.1

func (m *DBManager) ListCommits(ctx context.Context, repositoryID graveler.RepositoryID) (graveler.CommitIterator, error)

func (*DBManager) ListRepositories added in v0.69.1

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

func (*DBManager) ListTags added in v0.69.1

func (m *DBManager) ListTags(ctx context.Context, repositoryID graveler.RepositoryID) (graveler.TagIterator, error)

func (*DBManager) Log added in v0.69.1

func (*DBManager) ParseRef added in v0.69.1

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

func (*DBManager) ResolveRawRef added in v0.69.1

func (m *DBManager) ResolveRawRef(ctx context.Context, repositoryID graveler.RepositoryID, raw graveler.RawRef) (*graveler.ResolvedRef, error)

func (*DBManager) SetBranch added in v0.69.1

func (m *DBManager) SetBranch(ctx context.Context, repositoryID graveler.RepositoryID, branchID graveler.BranchID, branch graveler.Branch) error

type DBTagIterator added in v0.69.1

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

func NewDBTagIterator added in v0.69.1

func NewDBTagIterator(ctx context.Context, db db.Database, repositoryID graveler.RepositoryID, fetchSize int) (*DBTagIterator, error)

func (*DBTagIterator) Close added in v0.69.1

func (ri *DBTagIterator) Close()

func (*DBTagIterator) Err added in v0.69.1

func (ri *DBTagIterator) Err() error

func (*DBTagIterator) Next added in v0.69.1

func (ri *DBTagIterator) Next() bool

func (*DBTagIterator) SeekGE added in v0.69.1

func (ri *DBTagIterator) SeekGE(id graveler.TagID)

func (*DBTagIterator) Value added in v0.69.1

func (ri *DBTagIterator) Value() *graveler.TagRecord

type KVManager added in v0.69.1

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

func NewKVRefManager added in v0.69.1

func NewKVRefManager(executor batch.Batcher, kvStore kv.StoreMessage, db db.Database, addressProvider ident.AddressProvider) *KVManager

func (*KVManager) AddCommit added in v0.69.1

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

func (*KVManager) CreateBareRepository added in v0.69.1

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

func (*KVManager) CreateBranch added in v0.69.1

func (m *KVManager) CreateBranch(ctx context.Context, repositoryID graveler.RepositoryID, 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, token graveler.StagingToken) error

func (*KVManager) CreateTag added in v0.69.1

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

func (*KVManager) DeleteBranch added in v0.69.1

func (m *KVManager) DeleteBranch(ctx context.Context, repositoryID graveler.RepositoryID, 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, repositoryID graveler.RepositoryID, tagID graveler.TagID) error

func (*KVManager) FillGenerations added in v0.69.1

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

func (*KVManager) FindMergeBase added in v0.69.1

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

func (*KVManager) GetBranch added in v0.69.1

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

func (*KVManager) GetCommit added in v0.69.1

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

func (*KVManager) GetCommitByPrefix added in v0.69.1

func (m *KVManager) GetCommitByPrefix(ctx context.Context, repositoryID graveler.RepositoryID, 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.Repository, error)

func (*KVManager) GetTag added in v0.69.1

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

func (*KVManager) ListBranches added in v0.69.1

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

func (*KVManager) ListCommits added in v0.69.1

func (m *KVManager) ListCommits(ctx context.Context, repositoryID graveler.RepositoryID) (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, repositoryID graveler.RepositoryID) (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) ResolveRawRef added in v0.69.1

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

func (*KVManager) SetBranch added in v0.69.1

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

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, repositoryID graveler.RepositoryID) (*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 OrderedCommitIterator

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

func NewOrderedCommitIterator

func NewOrderedCommitIterator(ctx context.Context, database db.Database, repositoryID graveler.RepositoryID, prefetchSize int, opts ...OrderedCommitIteratorOption) *OrderedCommitIterator

NewOrderedCommitIterator returns an iterator over all commits in the given repository. Ordering is based on the Commit ID value.

func (*OrderedCommitIterator) Close

func (iter *OrderedCommitIterator) Close()

func (*OrderedCommitIterator) Err

func (iter *OrderedCommitIterator) Err() error

func (*OrderedCommitIterator) Next

func (iter *OrderedCommitIterator) Next() bool

func (*OrderedCommitIterator) SeekGE

func (iter *OrderedCommitIterator) SeekGE(id graveler.CommitID)

func (*OrderedCommitIterator) Value

type OrderedCommitIteratorOption added in v0.45.1

type OrderedCommitIteratorOption func(oci *OrderedCommitIterator)

func WithOnlyAncestryLeaves added in v0.45.1

func WithOnlyAncestryLeaves() OrderedCommitIteratorOption

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.

type RepositoryIterator

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

func NewRepositoryIterator

func NewRepositoryIterator(ctx context.Context, db db.Database, fetchSize int) *RepositoryIterator

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

type Store

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

Jump to

Keyboard shortcuts

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