Documentation ¶
Overview ¶
Package exportroots contains methods for reading and writing export root records in Spanner. Export roots are stored for each invocation and are used to facilitate low-latency exports of invocations inside each root.
Index ¶
- func Create(root ExportRoot) *spanner.Mutation
- func ReadForInvocations(ctx context.Context, invocationIDs invocations.IDSet, ...) (map[invocations.ID]map[invocations.ID]ExportRoot, error)
- func SetForTesting(ctx context.Context, exportRoots []ExportRoot) error
- func SetInheritedSources(root ExportRoot) *spanner.Mutation
- func SetNotified(root ExportRoot) *spanner.Mutation
- type Builder
- func (b *Builder) Build() ExportRoot
- func (b *Builder) WithInheritedSources(inheritedSources *pb.Sources) *Builder
- func (b *Builder) WithInvocation(invocation invocations.ID) *Builder
- func (b *Builder) WithNotified(notifiedTime time.Time) *Builder
- func (b *Builder) WithRootInvocation(rootInvocation invocations.ID) *Builder
- func (b *Builder) WithoutInheritedSources() *Builder
- func (b *Builder) WithoutNotified() *Builder
- type ExportRoot
- type RootRestriction
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Create ¶
func Create(root ExportRoot) *spanner.Mutation
Create returns a mutation to create the given ExportRoot row. The specified NotifiedTime is ignored and set to the commit timestamp if IsNotified is set.
func ReadForInvocations ¶
func ReadForInvocations(ctx context.Context, invocationIDs invocations.IDSet, rootInvocationIDs invocations.IDSet) (map[invocations.ID]map[invocations.ID]ExportRoot, error)
ReadForInvocations reads given export roots for the given invocations, limited to the export roots in the given root invocation IDs. Results are grouped by invocation ID and then root invocation ID.
func SetForTesting ¶
func SetForTesting(ctx context.Context, exportRoots []ExportRoot) error
SetForTesting replaces the set of stored export roots to match the given set.
func SetInheritedSources ¶
func SetInheritedSources(root ExportRoot) *spanner.Mutation
SetInheritedSources creates a mutation to set the given export root's inherited sources.
Before calling this method, the caller *must* confirm that the export root's inherited sources are not already set, in the same Read/Write transaction as this update.
func SetNotified ¶
func SetNotified(root ExportRoot) *spanner.Mutation
SetNotified creates a mutation to set the given export root as notified.
Before calling this method, the caller *must* confirm that the export root was NOT already notified, in the same Read/Write transaction as this update.
Types ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
func NewBuilder ¶
NewBuilder starts building a new export root.
func (*Builder) WithInheritedSources ¶
WithInheritedSources sets the inherited sources.
func (*Builder) WithInvocation ¶
func (b *Builder) WithInvocation(invocation invocations.ID) *Builder
WithInvocation sets the invocation ID.
func (*Builder) WithNotified ¶
WithNotified sets that the export root was notified to pub/sub at the given time.
func (*Builder) WithRootInvocation ¶
func (b *Builder) WithRootInvocation(rootInvocation invocations.ID) *Builder
WithRootInvocation sets the root invocation ID.
func (*Builder) WithoutInheritedSources ¶
WithoutInheritedSources clears the inherited sources.
func (*Builder) WithoutNotified ¶
WithoutNotified clears the notified flag and time.
type ExportRoot ¶
type ExportRoot struct { // The identity of the invocation. Invocation invocations.ID // The identity of the invocation that is the export root. RootInvocation invocations.ID // Whether inherited sources for this invocation have been resolved. // The value is then stored in InheritedSources. IsInheritedSourcesSet bool // The sources this invocation is eligible to inherit for its inclusion // (directly or indirectly) from RootInvocationId. // This may to a concrete luci.resultdb.v1.Sources value (if concrete // sources are eligible to be inherited) or to a nil value (if empty // sources are eligible to be inherited). // To be able to distinguish inheriting empty/nil sources and the inherited // sources not being resolved yet, see HasInheritedSourcesResolved. InheritedSources *pb.Sources // Whether an `invocation-ready-for-export` pub/sub notification was // sent for this row. IsNotified bool // The timestamp a `invocation-ready-for-export` pub/sub notification was // sent for this row. Used for debugging and to avoid triggering // pub/sub notifications that were already sent. NotifiedTime time.Time }
func ReadAllForTesting ¶
func ReadAllForTesting(ctx context.Context) ([]ExportRoot, error)
ReadAllForTesting reads all export roots. Useful for unit testing. Do not use in production, will not scale.
func ReadForInvocation ¶
func ReadForInvocation(ctx context.Context, invocationID invocations.ID, rootRestriction RootRestriction) ([]ExportRoot, error)
ReadForInvocation reads export roots for the given invocation. rootRestriction restricts which export roots are returned.
type RootRestriction ¶
type RootRestriction struct { // Whether to restrict the root invocations returned. UseRestriction bool // The root invocations to return. Used if UseRestriction is set. InvocationIDs invocations.IDSet }