@@ -2,7 +2,6 @@ package state
22
33import (
44 "context"
5- "strings"
65 "time"
76
87 "github.com/cockroachdb/errors"
@@ -82,13 +81,12 @@ func (m *Manager) EnsureStore(ctx context.Context, config *StoreConfig) error {
8281 )
8382 defer span .End ()
8483
85- storeName := strings .TrimSpace (config .Name )
86- if storeName == "" {
87- span .SetStatus (codes .Error , "store required" )
88- return errors .WithStack (ErrStoreRequired )
84+ if ! IsValidStoreName (config .Name ) {
85+ span .SetStatus (codes .Error , "invalid store name" )
86+ return newValidationError ("invalid store name: " + config .Name )
8987 }
9088
91- _ , err := m .stores .Get (ctx , storeName )
89+ _ , err := m .stores .Get (ctx , config . Name )
9290 if errors .Is (err , ErrStoreNotFound ) {
9391 _ , err = m .js .CreateKeyValue (ctx , jetstream.KeyValueConfig {
9492 Bucket : config .Name ,
@@ -124,17 +122,10 @@ func (m *Manager) Get(ctx context.Context, store string, key string) (*Entry, er
124122 )
125123 defer span .End ()
126124
127- store = strings .TrimSpace (store )
128- key = strings .TrimSpace (key )
129-
130- if store == "" {
131- span .SetStatus (codes .Error , "store required" )
132- return nil , errors .WithStack (ErrStoreRequired )
133- }
134-
135- if key == "" {
136- span .SetStatus (codes .Error , "key required" )
137- return nil , errors .WithStack (ErrKeyRequired )
125+ err := validatePreconditions (store , key )
126+ if err != nil {
127+ span .SetStatus (codes .Error , err .Error ())
128+ return nil , err
138129 }
139130
140131 bucket , err := m .stores .Get (ctx , store )
@@ -187,17 +178,10 @@ func (m *Manager) Create(ctx context.Context, store string, key string, value *a
187178 )
188179 defer span .End ()
189180
190- store = strings .TrimSpace (store )
191- key = strings .TrimSpace (key )
192-
193- if store == "" {
194- span .SetStatus (codes .Error , "store required" )
195- return 0 , errors .WithStack (ErrStoreRequired )
196- }
197-
198- if key == "" {
199- span .SetStatus (codes .Error , "key required" )
200- return 0 , errors .WithStack (ErrKeyRequired )
181+ err := validatePreconditions (store , key )
182+ if err != nil {
183+ span .SetStatus (codes .Error , err .Error ())
184+ return 0 , err
201185 }
202186
203187 bucket , err := m .stores .Get (ctx , store )
@@ -244,6 +228,12 @@ func (m *Manager) Set(ctx context.Context, store string, key string, value *anyp
244228 )
245229 defer span .End ()
246230
231+ err := validatePreconditions (store , key )
232+ if err != nil {
233+ span .SetStatus (codes .Error , err .Error ())
234+ return 0 , err
235+ }
236+
247237 bucket , err := m .stores .Get (ctx , store )
248238 if err != nil {
249239 span .RecordError (err )
@@ -286,6 +276,12 @@ func (m *Manager) Update(ctx context.Context, store string, key string, value *a
286276 )
287277 defer span .End ()
288278
279+ err := validatePreconditions (store , key )
280+ if err != nil {
281+ span .SetStatus (codes .Error , err .Error ())
282+ return 0 , err
283+ }
284+
289285 bucket , err := m .stores .Get (ctx , store )
290286 if err != nil {
291287 span .RecordError (err )
@@ -339,6 +335,12 @@ func (m *Manager) Delete(ctx context.Context, store string, key string) error {
339335 )
340336 defer span .End ()
341337
338+ err := validatePreconditions (store , key )
339+ if err != nil {
340+ span .SetStatus (codes .Error , err .Error ())
341+ return err
342+ }
343+
342344 bucket , err := m .stores .Get (ctx , store )
343345 if err != nil {
344346 span .RecordError (err )
@@ -373,6 +375,12 @@ func (m *Manager) DeleteWithRevision(ctx context.Context, store string, key stri
373375 )
374376 defer span .End ()
375377
378+ err := validatePreconditions (store , key )
379+ if err != nil {
380+ span .SetStatus (codes .Error , err .Error ())
381+ return err
382+ }
383+
376384 bucket , err := m .stores .Get (ctx , store )
377385 if err != nil {
378386 span .RecordError (err )
@@ -390,3 +398,14 @@ func (m *Manager) DeleteWithRevision(ctx context.Context, store string, key stri
390398 span .SetStatus (codes .Ok , "" )
391399 return nil
392400}
401+
402+ func validatePreconditions (store string , key string ) error {
403+ if ! IsValidStoreName (store ) {
404+ return newValidationError ("invalid store name: " + store )
405+ }
406+
407+ if ! IsValidKey (key ) {
408+ return newValidationError ("invalid key: " + key )
409+ }
410+ return nil
411+ }
0 commit comments