Skip to content

Commit

Permalink
Merge pull request FeatureBaseDB#2067 from jaffee/2066-create-field-race
Browse files Browse the repository at this point in the history
2066 create field race
  • Loading branch information
jaffee authored Sep 24, 2019
2 parents a24482e + 07f8f5b commit b42f4ae
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
2 changes: 1 addition & 1 deletion server.go
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ func (s *Server) receiveMessage(m Message) error {
return fmt.Errorf("local index not found: %s", obj.Index)
}
opt := obj.Meta
_, err := idx.createField(obj.Field, *opt)
_, err := idx.createFieldIfNotExists(obj.Field, *opt)
if err != nil {
return err
}
Expand Down
24 changes: 24 additions & 0 deletions server/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,30 @@ func TestConfig_Parse_DataDir(t *testing.T) {
}
}

func TestConcurrentFieldCreation(t *testing.T) {
cluster := test.MustRunCluster(t, 3)
defer cluster.Close()

api0 := cluster[0].API
if _, err := api0.CreateIndex(context.Background(), "i", pilosa.IndexOptions{}); err != nil {
t.Fatalf("creating index: %v", err)
}
eg := errgroup.Group{}
for i := 0; i < 100; i++ {
i := i
eg.Go(func() error {
if _, err := api0.CreateField(context.Background(), "i", fmt.Sprintf("f%d", i)); err != nil {
return err
}
return nil
})
}
err := eg.Wait()
if err != nil {
t.Fatalf("creating concurrent field: %v", err)
}
}

func TestMain_RecalculateHashes(t *testing.T) {
const clusterSize = 5
cluster := test.MustRunCluster(t, clusterSize)
Expand Down

0 comments on commit b42f4ae

Please sign in to comment.