Merge pull request #853 from kuba--/fix-translate_index_keys

Fix translation index keys
This commit is contained in:
Kuba Podgórski 2020-09-16 15:21:31 +02:00 committed by GitHub
commit dd4ffff704
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 12 deletions

View file

@ -2368,7 +2368,7 @@ func (c *cluster) translateFieldKeys(ctx context.Context, field *Field, keys []s
if err == nil {
return ids, nil
}
return ids, errors.Wrap(err, "translating keys on coordinator")
return ids, errors.Wrap(err, "translating field keys on coordinator")
}
return ids, err
}
@ -2392,9 +2392,11 @@ func (c *cluster) translateIndexKeys(ctx context.Context, indexName string, keys
return nil, err
}
ids := make([]uint64, len(keys))
for i := range keys {
ids[i] = keyMap[keys[i]]
ids := make([]uint64, 0, len(keys))
for _, k := range keys {
if id := keyMap[k]; id != 0 {
ids = append(ids, id)
}
}
return ids, nil
}
@ -2435,12 +2437,12 @@ func (c *cluster) translateIndexKeySet(ctx context.Context, indexName string, ke
}
mu.Lock()
defer mu.Unlock()
for i := range keys {
if id := ids[i]; id != 0 {
for i, id := range ids {
if id != 0 {
keyMap[keys[i]] = id
}
}
mu.Unlock()
return nil
})
}

View file

@ -331,7 +331,7 @@ func TestTranslation_KeyNotFound(t *testing.T) {
node0 := c.GetNode(0)
node1 := c.GetNode(1)
node2 := c.GetNode(2)
// node2 := c.GetNode(2)
node3 := c.GetNode(3)
ctx := context.Background()
@ -381,10 +381,10 @@ func TestTranslation_KeyNotFound(t *testing.T) {
if err = node3.API.Serializer.Unmarshal(buf, &resp); err != nil {
t.Fatal(err)
} else if resp.IDs != nil {
t.Fatalf("TranslateKeys(%+v): expected: nil, got: %d", req, resp)
t.Fatalf("TranslateKeys(%+v): expected: nil, got: %d", string(req), resp)
}
req, err = node2.API.Serializer.Marshal(&pilosa.TranslateKeysRequest{
req, err = node1.API.Serializer.Marshal(&pilosa.TranslateKeysRequest{
Index: idx,
Keys: []string{"k2"},
NotWritable: true,
@ -392,10 +392,10 @@ func TestTranslation_KeyNotFound(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if buf, err = node2.API.TranslateKeys(ctx, bytes.NewReader(req)); err != nil {
if buf, err = node1.API.TranslateKeys(ctx, bytes.NewReader(req)); err != nil {
t.Fatal(err)
}
if err = node2.API.Serializer.Unmarshal(buf, &resp); err != nil {
if err = node1.API.Serializer.Unmarshal(buf, &resp); err != nil {
t.Fatal(err)
} else if resp.IDs != nil {
t.Fatalf("TranslateKeys(%+v): expected: nil, got: %d", req, resp)