Skip to content

Commit 5694ca5

Browse files
m25naimichelle
authored andcommitted
Synchronize access to fakeCronStore
Signed-off-by: Matthew Conger-Eldeen <matthewco@vmware.com>
1 parent f835b42 commit 5694ca5

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/vizier/services/query_broker/script_runner/cloud_source_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -497,10 +497,10 @@ func TestCloudScriptsSource_Updates(t *testing.T) {
497497
switch update.Msg.(type) {
498498
case *cvmsgspb.CronScriptUpdate_UpsertReq:
499499
req := update.GetUpsertReq()
500-
require.Contains(t, fcs.scripts, utils.UUIDFromProtoOrNil(req.GetScript().GetID()))
500+
require.Contains(t, fcs.Scripts(), utils.UUIDFromProtoOrNil(req.GetScript().GetID()))
501501
case *cvmsgspb.CronScriptUpdate_DeleteReq:
502502
req := update.GetDeleteReq()
503-
require.NotContains(t, fcs.scripts, utils.UUIDFromProtoOrNil(req.GetScriptID()))
503+
require.NotContains(t, fcs.Scripts(), utils.UUIDFromProtoOrNil(req.GetScriptID()))
504504
}
505505
}
506506
})

src/vizier/services/query_broker/script_runner/helper_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package scriptrunner
2121
import (
2222
"context"
2323
"errors"
24+
"sync"
2425
"testing"
2526
"time"
2627

@@ -97,12 +98,15 @@ func errorSource(err error) Source {
9798
}
9899

99100
type fakeCronStore struct {
101+
scriptsMu sync.Mutex
100102
scripts map[uuid.UUID]*cvmsgspb.CronScript
101103
receivedResultRequestCh chan<- *metadatapb.RecordExecutionResultRequest
102104
}
103105

104106
// GetScripts fetches all scripts in the cron script store.
105107
func (s *fakeCronStore) GetScripts(ctx context.Context, req *metadatapb.GetScriptsRequest, opts ...grpc.CallOption) (*metadatapb.GetScriptsResponse, error) {
108+
s.scriptsMu.Lock()
109+
defer s.scriptsMu.Unlock()
106110
if s.scripts == nil {
107111
return &metadatapb.GetScriptsResponse{}, nil
108112
}
@@ -116,8 +120,20 @@ func (s *fakeCronStore) GetScripts(ctx context.Context, req *metadatapb.GetScrip
116120
}, nil
117121
}
118122

123+
func (s *fakeCronStore) Scripts() map[uuid.UUID]*cvmsgspb.CronScript {
124+
s.scriptsMu.Lock()
125+
defer s.scriptsMu.Unlock()
126+
result := make(map[uuid.UUID]*cvmsgspb.CronScript, len(s.scripts))
127+
for id, script := range s.scripts {
128+
result[id] = script
129+
}
130+
return result
131+
}
132+
119133
// AddOrUpdateScript updates or adds a cron script to the store, based on ID.
120134
func (s *fakeCronStore) AddOrUpdateScript(ctx context.Context, req *metadatapb.AddOrUpdateScriptRequest, opts ...grpc.CallOption) (*metadatapb.AddOrUpdateScriptResponse, error) {
135+
s.scriptsMu.Lock()
136+
defer s.scriptsMu.Unlock()
121137
if s.scripts == nil {
122138
s.scripts = map[uuid.UUID]*cvmsgspb.CronScript{}
123139
}
@@ -128,6 +144,8 @@ func (s *fakeCronStore) AddOrUpdateScript(ctx context.Context, req *metadatapb.A
128144

129145
// DeleteScript deletes a cron script from the store by ID.
130146
func (s *fakeCronStore) DeleteScript(ctx context.Context, req *metadatapb.DeleteScriptRequest, opts ...grpc.CallOption) (*metadatapb.DeleteScriptResponse, error) {
147+
s.scriptsMu.Lock()
148+
defer s.scriptsMu.Unlock()
131149
_, ok := s.scripts[utils.UUIDFromProtoOrNil(req.ScriptID)]
132150
if ok {
133151
delete(s.scripts, utils.UUIDFromProtoOrNil(req.ScriptID))
@@ -138,6 +156,8 @@ func (s *fakeCronStore) DeleteScript(ctx context.Context, req *metadatapb.Delete
138156

139157
// SetScripts sets the list of all cron scripts to match the given set of scripts.
140158
func (s *fakeCronStore) SetScripts(ctx context.Context, req *metadatapb.SetScriptsRequest, opts ...grpc.CallOption) (*metadatapb.SetScriptsResponse, error) {
159+
s.scriptsMu.Lock()
160+
defer s.scriptsMu.Unlock()
141161
m := make(map[uuid.UUID]*cvmsgspb.CronScript)
142162
for k, v := range req.Scripts {
143163
m[uuid.FromStringOrNil(k)] = v

0 commit comments

Comments
 (0)