Merge pull request #100737 from Iceber/fix-delta-fifo

client-go/cache: fix the AddIfNotPresent method of the DeltaFIFO

Kubernetes-commit: 1c9563d5d5e6345fc2f1a835b456a8ce916474bf
This commit is contained in:
Kubernetes Publisher 2021-04-19 20:54:33 -07:00
commit 10997424fc
2 changed files with 7 additions and 1 deletions

View File

@ -340,7 +340,7 @@ func (f *DeltaFIFO) AddIfNotPresent(obj interface{}) error {
if !ok {
return fmt.Errorf("object must be of type deltas, but got: %#v", obj)
}
id, err := f.KeyOf(deltas.Newest().Object)
id, err := f.KeyOf(deltas)
if err != nil {
return KeyError{obj, err}
}

View File

@ -17,6 +17,7 @@ limitations under the License.
package cache
import (
"errors"
"fmt"
"reflect"
"runtime"
@ -541,6 +542,11 @@ func TestDeltaFIFO_detectLineJumpers(t *testing.T) {
func TestDeltaFIFO_addIfNotPresent(t *testing.T) {
f := NewDeltaFIFOWithOptions(DeltaFIFOOptions{KeyFunction: testFifoObjectKeyFunc})
emptyDeltas := Deltas{}
if err := f.AddIfNotPresent(emptyDeltas); err == nil || !errors.Is(err, ErrZeroLengthDeltasObject) {
t.Errorf("Expected error '%v', got %v", ErrZeroLengthDeltasObject, err)
}
f.Add(mkFifoObj("b", 3))
b3 := Pop(f)
f.Add(mkFifoObj("c", 4))