Merge pull request #73202 from wojtek-t/fix_tools_cache_tests

Couple fixes to DeltaFIFO machinery
pull/564/head
Kubernetes Prow Robot 2019-01-23 22:06:38 -08:00 committed by GitHub
commit 1fc7b07bba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 5 deletions

View File

@ -28,9 +28,9 @@ import (
// Config contains all the settings for a Controller. // Config contains all the settings for a Controller.
type Config struct { type Config struct {
// The queue for your objects; either a FIFO or // The queue for your objects - has to be a DeltaFIFO due to
// a DeltaFIFO. Your Process() function should accept // assumptions in the implementation. Your Process() function
// the output of this Queue's Pop() method. // should accept 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.

View File

@ -466,6 +466,7 @@ func (f *DeltaFIFO) Replace(list []interface{}, resourceVersion string) error {
if f.knownObjects == nil { if f.knownObjects == nil {
// Do deletion detection against our own list. // Do deletion detection against our own list.
queuedDeletions := 0
for k, oldItem := range f.items { for k, oldItem := range f.items {
if keys.Has(k) { if keys.Has(k) {
continue continue
@ -474,6 +475,7 @@ func (f *DeltaFIFO) Replace(list []interface{}, resourceVersion string) error {
if n := oldItem.Newest(); n != nil { if n := oldItem.Newest(); n != nil {
deletedObj = n.Object deletedObj = n.Object
} }
queuedDeletions++
if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil { if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil {
return err return err
} }
@ -481,7 +483,9 @@ func (f *DeltaFIFO) Replace(list []interface{}, resourceVersion string) error {
if !f.populated { if !f.populated {
f.populated = true f.populated = true
f.initialPopulationCount = len(list) // While there shouldn't be any queued deletions in the initial
// population of the queue, it's better to be on the safe side.
f.initialPopulationCount = len(list) + queuedDeletions
} }
return nil return nil

View File

@ -338,6 +338,7 @@ func TestDeltaFIFO_HasSyncedCorrectOnDeletion(t *testing.T) {
// Since "bar" didn't have a delete event and wasn't in the Replace list // Since "bar" didn't have a delete event and wasn't in the Replace list
// it should get a tombstone key with the right Obj. // it should get a tombstone key with the right Obj.
{{Deleted, DeletedFinalStateUnknown{Key: "bar", Obj: mkFifoObj("bar", 6)}}}, {{Deleted, DeletedFinalStateUnknown{Key: "bar", Obj: mkFifoObj("bar", 6)}}},
{{Deleted, DeletedFinalStateUnknown{Key: "baz", Obj: mkFifoObj("baz", 7)}}},
} }
for _, expected := range expectedList { for _, expected := range expectedList {
@ -349,7 +350,7 @@ func TestDeltaFIFO_HasSyncedCorrectOnDeletion(t *testing.T) {
t.Errorf("Expected %#v, got %#v", e, a) t.Errorf("Expected %#v, got %#v", e, a)
} }
} }
if f.HasSynced() { if !f.HasSynced() {
t.Errorf("Expected HasSynced to be true") t.Errorf("Expected HasSynced to be true")
} }
} }