mirror of
https://github.com/grafana/grafana.git
synced 2025-08-06 05:30:12 +08:00
Unified Storage: Don't read before create (#102906)
* Unified Storage: Don't read before create * test: use the existing test infra * fix: support pq We use pgx, but it seems to be wrapped in a pq driver shim, causing the errors to be remapped to pq's type. Weird situation. * feat: support CDK backend * revert: there is a postgres_tests block * fix(CDK): only check existence on ADDED updates * fix(CDK): use ReadResource to deal with deleted files
This commit is contained in:

committed by
GitHub

parent
827d86a985
commit
f0a6327edc
@ -23,6 +23,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
|
||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||
"github.com/grafana/grafana/pkg/storage/unified/backend"
|
||||
)
|
||||
|
||||
type CDKBackendOptions struct {
|
||||
@ -116,6 +117,17 @@ func (s *cdkBackend) GetResourceStats(ctx context.Context, namespace string, min
|
||||
}
|
||||
|
||||
func (s *cdkBackend) WriteEvent(ctx context.Context, event WriteEvent) (rv int64, err error) {
|
||||
if event.Type == WatchEvent_ADDED {
|
||||
// ReadResource deals with deleted values (i.e. a file exists but has generation -999).
|
||||
resp := s.ReadResource(ctx, &ReadRequest{Key: event.Key})
|
||||
if resp.Error != nil && resp.Error.Code != http.StatusNotFound {
|
||||
return 0, GetError(resp.Error)
|
||||
}
|
||||
if resp.Value != nil {
|
||||
return 0, backend.ErrResourceAlreadyExists
|
||||
}
|
||||
}
|
||||
|
||||
// Scope the lock
|
||||
{
|
||||
s.mutex.Lock()
|
||||
|
Reference in New Issue
Block a user