resources: Don't double close on Running restart
If we use the "retry" metaparam on a Watch, we want to avoid a double close due to the second Running() signal. This avoids this with a simple flag.
This commit is contained in:
@@ -197,6 +197,7 @@ type BaseRes struct {
|
||||
state ResState
|
||||
working bool // is the Worker() loop running ?
|
||||
started chan struct{} // closed when worker is started/running
|
||||
isStarted bool // did the started chan already close?
|
||||
starter bool // does this have indegree == 0 ? XXX: usually?
|
||||
isStateOK bool // whether the state is okay based on events or not
|
||||
isGrouped bool // am i contained within a group?
|
||||
|
||||
@@ -108,8 +108,11 @@ func (obj *BaseRes) Running(processChan chan *event.Event) error {
|
||||
cuid.SetConverged(true) // a reasonable initial assumption
|
||||
}
|
||||
|
||||
obj.StateOK(false) // assume we're initially dirty
|
||||
close(obj.started) // send started signal
|
||||
obj.StateOK(false) // assume we're initially dirty
|
||||
if !obj.isStarted { // this avoids a double close when/if watch retries
|
||||
obj.isStarted = true
|
||||
close(obj.started) // send started signal
|
||||
}
|
||||
|
||||
var err error
|
||||
if obj.starter { // vertices of indegree == 0 should send initial pokes
|
||||
|
||||
Reference in New Issue
Block a user