TODOs around stopping informers

pull/6/head
Joe Beda 2016-10-20 14:04:49 -07:00
parent 453bb17c3c
commit e0c6bf13b1
No known key found for this signature in database
GPG Key ID: 4296898C63A3591D
3 changed files with 12 additions and 4 deletions

View File

@ -29,7 +29,7 @@ import (
type Config struct { type Config struct {
// The queue for your objects; either a FIFO or // The queue for your objects; either a FIFO or
// a DeltaFIFO. Your Process() function should accept // a DeltaFIFO. Your Process() function should accept
// the output of this Oueue's Pop() method. // the output of this Queue's Pop() method.
Queue Queue
// Something that can list and watch your objects. // Something that can list and watch your objects.
@ -121,6 +121,11 @@ func (c *Controller) Requeue(obj interface{}) error {
// TODO: Consider doing the processing in parallel. This will require a little thought // TODO: Consider doing the processing in parallel. This will require a little thought
// to make sure that we don't end up processing the same object multiple times // to make sure that we don't end up processing the same object multiple times
// concurrently. // concurrently.
//
// TODO: Plumb through the stopCh here (and down to the queue) so that this can
// actually exit when the controller is stopped. Or just give up on this stuff
// ever being stoppable. Converting this whole package to use Context would
// also be helpful.
func (c *Controller) processLoop() { func (c *Controller) processLoop() {
for { for {
obj, err := c.config.Queue.Pop(PopProcessFunc(c.config.Process)) obj, err := c.config.Queue.Pop(PopProcessFunc(c.config.Process))

View File

@ -283,6 +283,9 @@ func TestHammerController(t *testing.T) {
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
close(stop) close(stop)
// TODO: Verify that no goroutines were leaked here and that everything shut
// down cleanly.
outputSetLock.Lock() outputSetLock.Lock()
t.Logf("got: %#v", outputSet) t.Logf("got: %#v", outputSet)
} }