Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AsyncCompleter ¶ added in v0.1.0
type AsyncCompleter struct { baseservice.BaseService startstop.BaseStartStop // contains filtered or unexported fields }
func NewAsyncCompleter ¶
func NewAsyncCompleter(archetype *baseservice.Archetype, exec riverdriver.Executor, subscribeCh SubscribeChan) *AsyncCompleter
func (*AsyncCompleter) JobSetStateIfRunning ¶ added in v0.1.0
func (c *AsyncCompleter) JobSetStateIfRunning(ctx context.Context, stats *jobstats.JobStatistics, params *riverdriver.JobSetStateIfRunningParams) error
func (*AsyncCompleter) ResetSubscribeChan ¶ added in v0.7.0
func (c *AsyncCompleter) ResetSubscribeChan(subscribeCh SubscribeChan)
type BatchCompleter ¶ added in v0.1.0
type BatchCompleter struct { baseservice.BaseService startstop.BaseStartStop // contains filtered or unexported fields }
BatchCompleter accumulates incoming completions, and instead of completing them immediately, every so often complete many of them as a single efficient batch. To minimize the amount of driver surface area we need, the batching is only performed for jobs being changed to a `completed` state, which we expect to the vast common case under normal operation. The completer embeds an AsyncCompleter to perform other non-`completed` state completions.
func NewBatchCompleter ¶ added in v0.1.0
func NewBatchCompleter(archetype *baseservice.Archetype, exec riverdriver.Executor, pilot riverpilot.Pilot, subscribeCh SubscribeChan) *BatchCompleter
func (*BatchCompleter) JobSetStateIfRunning ¶ added in v0.1.0
func (c *BatchCompleter) JobSetStateIfRunning(ctx context.Context, stats *jobstats.JobStatistics, params *riverdriver.JobSetStateIfRunningParams) error
func (*BatchCompleter) ResetSubscribeChan ¶ added in v0.7.0
func (c *BatchCompleter) ResetSubscribeChan(subscribeCh SubscribeChan)
type CompleterJobUpdated ¶
type CompleterJobUpdated struct { Job *rivertype.JobRow JobStats *jobstats.JobStatistics }
type InlineCompleter ¶ added in v0.1.0
type InlineCompleter struct { baseservice.BaseService startstop.BaseStartStop // contains filtered or unexported fields }
func NewInlineCompleter ¶
func NewInlineCompleter(archetype *baseservice.Archetype, exec riverdriver.Executor, subscribeCh SubscribeChan) *InlineCompleter
func (*InlineCompleter) JobSetStateIfRunning ¶ added in v0.1.0
func (c *InlineCompleter) JobSetStateIfRunning(ctx context.Context, stats *jobstats.JobStatistics, params *riverdriver.JobSetStateIfRunningParams) error
func (*InlineCompleter) ResetSubscribeChan ¶ added in v0.7.0
func (c *InlineCompleter) ResetSubscribeChan(subscribeCh SubscribeChan)
type JobCompleter ¶
type JobCompleter interface { startstop.Service // JobSetState sets a new state for the given job, as long as it's // still running (i.e. its state has not changed to something else already). JobSetStateIfRunning(ctx context.Context, stats *jobstats.JobStatistics, params *riverdriver.JobSetStateIfRunningParams) error // ResetSubscribeChan resets the subscription channel for the completer. It // must only be called when the completer is stopped. ResetSubscribeChan(subscribeCh SubscribeChan) }
JobCompleter is an interface to a service that "completes" jobs by marking them with an appropriate state and any other necessary metadata in the database. It's a generic interface to let us experiment with the speed of a number of implementations, although River will likely always prefer our most optimized one.
type SubscribeChan ¶ added in v0.7.0
type SubscribeChan chan<- []CompleterJobUpdated
type SubscribeFunc ¶ added in v0.7.0
type SubscribeFunc func(update CompleterJobUpdated)
SubscribeFunc will be invoked whenever a job is updated.