pull/96032/head
Ryan McKinley 8 months ago
parent 1c511ca8d9
commit e784878aaf
  1. 5
      pkg/storage/unified/apistore/prepare.go
  2. 21
      pkg/storage/unified/resource/memory_backend.go

@ -6,7 +6,9 @@ import (
"fmt"
"time"
"github.com/google/uuid"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apiserver/pkg/storage"
"k8s.io/klog/v2"
@ -32,6 +34,9 @@ func (s *Storage) prepareObjectForStorage(ctx context.Context, newObject runtime
if obj.GetResourceVersion() != "" {
return nil, storage.ErrResourceVersionSetOnCreate
}
if obj.GetUID() == "" {
obj.SetUID(types.UID(uuid.NewString()))
}
obj.SetGenerateName("") // Clear the random name field
obj.SetResourceVersion("")

@ -47,9 +47,11 @@ func (s *memoryBackend) WriteEvent(ctx context.Context, event WriteEvent) (rv in
rv: rv,
ns: event.Key.Namespace,
name: event.Key.Name,
folder: event.Object.GetFolder(),
value: event.Value,
}
if event.Object != nil { // delete does not have an object
value.folder = event.Object.GetFolder()
}
switch event.Type {
case WatchEvent_ADDED:
@ -72,7 +74,7 @@ func (s *memoryBackend) WriteEvent(ctx context.Context, event WriteEvent) (rv in
// ignore
default:
return rv, nil //
// return rv, nil //
}
}
@ -94,12 +96,6 @@ func (s *memoryBackend) ReadResource(ctx context.Context, req *ReadRequest) *Rea
s.mutex.Lock()
defer s.mutex.Unlock()
tree := s.getResourceTree(req.Key)
val := tree.get(req.Key, req.ResourceVersion)
if val == nil {
return &ReadResponse{Error: NewNotFoundError(req.Key)}
}
if req.ResourceVersion > 0 {
if req.ResourceVersion > s.rv.Load() {
return &ReadResponse{
Error: &ErrorResult{
@ -117,6 +113,11 @@ func (s *memoryBackend) ReadResource(ctx context.Context, req *ReadRequest) *Rea
},
}
}
tree := s.getResourceTree(req.Key)
val := tree.get(req.Key, req.ResourceVersion)
if val == nil || val.deleted {
return &ReadResponse{Error: NewNotFoundError(req.Key)}
}
return &ReadResponse{
@ -264,7 +265,7 @@ func (v *memoryValues) get(rv int64) *memoryValue {
for i := len(v.version) - 1; i >= 0; i-- {
v := v.version[i]
if v.rv > rv {
if v.rv >= rv {
return v
}
}
@ -291,7 +292,7 @@ type memoryListIterator struct {
func (c *memoryListIterator) add(ns *memoryNamespace) {
for _, r := range ns.names {
v := r.get(c.rv) // get the closest (but not over)
if v != nil {
if v != nil && !v.deleted {
c.values = append(c.values, v)
}
}

Loading…
Cancel
Save