mirror of https://github.com/k3s-io/k3s
Merge pull request #73202 from wojtek-t/fix_tools_cache_tests
Couple fixes to DeltaFIFO machinerypull/564/head
commit
1fc7b07bba
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue