Improve godoc for goroutinemap

This commit is contained in:
Paul Morie 2016-08-25 14:25:05 -04:00
parent b44b716965
commit 1294267450

View File

@ -43,7 +43,10 @@ const (
maxDurationBeforeRetry = 2 * time.Minute
)
// GoRoutineMap defines the supported set of operations.
// 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.
type GoRoutineMap interface {
// Run adds operation name to the list of running operations and spawns a
// new go routine to execute the operation.
@ -59,8 +62,8 @@ type GoRoutineMap interface {
// and evaluate results after that.
Wait()
// IsOperationPending returns true if the operation is pending, otherwise
// returns false
// IsOperationPending returns true if the operation is pending (currently
// running), otherwise returns false.
IsOperationPending(operationName string) bool
}
@ -82,6 +85,7 @@ type goRoutineMap struct {
lock sync.RWMutex
}
// operation holds the state of a single goroutine.
type operation struct {
operationPending bool
expBackoff exponentialbackoff.ExponentialBackoff
@ -122,6 +126,8 @@ func (grm *goRoutineMap) Run(
return nil
}
// operationComplete handles the completion of a goroutine run in the
// goRoutineMap.
func (grm *goRoutineMap) operationComplete(
operationName string, err *error) {
// Defer operations are executed in Last-In is First-Out order. In this case