luci: Index | Files | Directories

package internal

import ""


Package Files



var ErrStaleReminder = errors.New("the reminder is stale already")

ErrStaleReminder is returned by ProcessReminderPostTxn.

func ProcessReminderPostTxn Uses

func ProcessReminderPostTxn(ctx context.Context, s Submitter, db db.DB, r *reminder.Reminder) error

ProcessReminderPostTxn is called right after the transaction that saves the reminder.

If the reminder is fresh enough, it means the sweeper hasn't picked it up yet and we can submit the task right now. This is the "happy" path. If the reminder is sufficiently old, or if SubmitFromReminder fails, we'll let the sweeper try to submit the task. It is the "sweep" path.

Returns ErrStaleReminder if the reminder is stale and should be handled by the sweeper.

func Submit Uses

func Submit(ctx context.Context, s Submitter, payload *reminder.Payload, path TxnPath) error

Submit submits the prepared request through the given submitter.

Recognizes AlreadyExists as success. Annotates retriable errors with transient.Tag.

func SubmitBatch Uses

func SubmitBatch(ctx context.Context, sub Submitter, db db.DB, batch []*reminder.Reminder) (int, error)

SubmitBatch process a batch of reminders by submitting corresponding tasks and deleting reminders.

Reminders batch will be modified to fetch Reminders' payloads. RAM usage is equivalent to O(total payload size of each Reminder in batch).

Logs errors inside. Returns the total number of successfully processed reminders.

func SubmitFromReminder Uses

func SubmitFromReminder(ctx context.Context, s Submitter, db db.DB, r *reminder.Reminder, t TxnPath) error

SubmitFromReminder submits the request and deletes the reminder on success or a fatal error.

Mutates `r` by deserializing the payload, if necessary.

type Submitter Uses

type Submitter interface {
    // Submit submits a task, returning a gRPC status.
    Submit(ctx context.Context, payload *reminder.Payload) error

Submitter is used by the dispatcher and the sweeper to submit tasks.

type TxnPath Uses

type TxnPath string

TxnPath indicates a code path a task can take.

const (
    TxnPathNone  TxnPath = "none"  // not a transactional task
    TxnPathHappy TxnPath = "happy" // the reminder was processed right after txn landed
    TxnPathSweep TxnPath = "sweep" // the reminder was processed during a sweep


dbPackage db defines common database interface.
lessorPackage lessor defines common lessor interface.
partitionPackage partition encapsulates partitioning and querying large keyspace which can't be expressed even as uint64.
reminderPackage reminder holds Reminder to avoid circular dependencies.
testutilPackage testutil provides fakes for testing TQ guts.
worksetPackage workset contains a synchronized work queue implementation used by inproc sweeper.

Package internal imports 13 packages (graph) and is imported by 4 packages. Updated 2021-01-26. Refresh now. Tools for package owners.