Documentation ¶
Overview ¶
Package goroutinemap implements a data structure for managing go routines by name. It prevents the creation of new go routines if an existing go routine with the same name exists.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsAlreadyExists ¶
IsAlreadyExists returns true if an error returned from GoRoutineMap indicates a new operation can not be started because an operation with the same operation name is already executing.
func NewAlreadyExistsError ¶ added in v1.3.4
NewAlreadyExistsError returns a new instance of AlreadyExists error.
Types ¶
type GoRoutineMap ¶
type GoRoutineMap interface { // Run adds operation name to the list of running operations and spawns a // new go routine to execute the operation. // If an operation with the same operation name already exists, an // AlreadyExists or ExponentialBackoff error is returned. // Once the operation is complete, the go routine is terminated and the // operation name is removed from the list of executing operations allowing // a new operation to be started with the same operation name without error. Run(operationName string, operationFunc func() error) error // Wait blocks until all operations are completed. This is typically // necessary during tests - the test should wait until all operations finish // and evaluate results after that. Wait() // IsOperationPending returns true if the operation is pending (currently // running), otherwise returns false. IsOperationPending(operationName string) bool }
GoRoutineMap defines a type that can run named goroutines and track their state. It prevents the creation of multiple goroutines with the same name and may prevent recreation of a goroutine until after the a backoff time has elapsed after the last goroutine with that name finished.
func NewGoRoutineMap ¶
func NewGoRoutineMap(exponentialBackOffOnError bool) GoRoutineMap
NewGoRoutineMap returns a new instance of GoRoutineMap.
Directories ¶
Path | Synopsis |
---|---|
Package exponentialbackoff contains logic for implementing exponential backoff for GoRoutineMap and NestedPendingOperations.
|
Package exponentialbackoff contains logic for implementing exponential backoff for GoRoutineMap and NestedPendingOperations. |