Pause queues (#15928)
* Start adding mechanism to return unhandled data Signed-off-by: Andrew Thornton <[email protected]> * Create pushback interface Signed-off-by: Andrew Thornton <[email protected]> * Add Pausable interface to WorkerPool and Manager Signed-off-by: Andrew Thornton <[email protected]> * Implement Pausable and PushBack for the bytefifos Signed-off-by: Andrew Thornton <[email protected]> * Implement Pausable and Pushback for ChannelQueues and ChannelUniqueQueues Signed-off-by: Andrew Thornton <[email protected]> * Wire in UI for pausing Signed-off-by: Andrew Thornton <[email protected]> * add testcases and fix a few issues Signed-off-by: Andrew Thornton <[email protected]> * fix build Signed-off-by: Andrew Thornton <[email protected]> * prevent "race" in the test Signed-off-by: Andrew Thornton <[email protected]> * fix jsoniter mismerge Signed-off-by: Andrew Thornton <[email protected]> * fix conflicts Signed-off-by: Andrew Thornton <[email protected]> * fix format Signed-off-by: Andrew Thornton <[email protected]> * Add warnings for no worker configurations and prevent data-loss with redis/levelqueue Signed-off-by: Andrew Thornton <[email protected]> * Use StopTimer Signed-off-by: Andrew Thornton <[email protected]> Co-authored-by: Lauris BH <[email protected]> Co-authored-by: 6543 <[email protected]> Co-authored-by: techknowlogick <[email protected]> Co-authored-by: wxiaoguang <[email protected]>
This commit is contained in:
co-authored by
Lauris BH
6543
techknowlogick
wxiaoguang
parent
27ee01e1e8
commit
a82fd98d53
@@ -73,7 +73,7 @@ func NewWrappedUniqueQueue(handle HandlerFunc, cfg, exemplar interface{}) (Queue
|
||||
|
||||
// wrapped.handle is passed to the delayedStarting internal queue and is run to handle
|
||||
// data passed to
|
||||
wrapped.handle = func(data ...Data) {
|
||||
wrapped.handle = func(data ...Data) (unhandled []Data) {
|
||||
for _, datum := range data {
|
||||
wrapped.tlock.Lock()
|
||||
if !wrapped.ready {
|
||||
@@ -87,8 +87,11 @@ func NewWrappedUniqueQueue(handle HandlerFunc, cfg, exemplar interface{}) (Queue
|
||||
}
|
||||
}
|
||||
wrapped.tlock.Unlock()
|
||||
handle(datum)
|
||||
if u := handle(datum); u != nil {
|
||||
unhandled = append(unhandled, u...)
|
||||
}
|
||||
}
|
||||
return unhandled
|
||||
}
|
||||
_ = GetManager().Add(queue, WrappedUniqueQueueType, config, exemplar)
|
||||
return wrapped, nil
|
||||
|
||||
Reference in New Issue
Block a user