Package tasks implements asynchronous invocation processing.
AllTypes is a slice of all known types of tasks.
ErrConflict is returned by Lease if the task does not exist or is already leased.
Delete deletes a task.
Enqueue inserts one row to InvocationTasks.
func EnqueueBQExport(invID span.InvocationID, payload *pb.BigQueryExport, processAfter time.Time) *spanner.Mutation
EnqueueBQExport inserts one row to InvocationTasks for a bq export task.
Lease leases an invocation task if it can. If the task does not exist or is already leased, returns ErrConflict.
Sample randomly picks sampleSize of tasks of a given type with ProcessAfter earlier than processTime.
func StartInvocationFinalization(ctx context.Context, txn *spanner.ReadWriteTransaction, id span.InvocationID, interrupted bool) error
StartInvocationFinalization changes invocation state to FINALIZING and enqueues a TryFinalizeInvocation task.
The caller is responsible for ensuring that the invocation is active.
TODO(nodir): this package is not a great place for this function, but there is no better package at the moment. Keep it here for now, but consider a new package as the code base grows.
Type is a value for InvocationTasks.TaskType column. It defines what a task does.
const ( // BQExport is a type of task that exports an invocation to BigQuery. // The task payload is binary-encoded BigQueryExport message. BQExport Type = "bq_export" // TryFinalizeInvocation is a type of task that tries to finalize an // invocation. No payload. TryFinalizeInvocation Type = "finalize" )
Types of invocation tasks. Used as InvocationTasks.TaskType column value.
Key returns a Spanner key for the InvocationTasks row.