Fix data race in query service (#9454)

Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
This commit is contained in:
bigsheeper 2021-10-08 17:41:49 +08:00 committed by GitHub
parent d4232f88a2
commit ce17e12819
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 6 deletions

View File

@ -240,9 +240,6 @@ func (node *QueryNode) Stop() error {
if node.queryService != nil {
node.queryService.close()
}
if node.queryService != nil {
node.queryService.close()
}
return nil
}

View File

@ -95,10 +95,12 @@ func newQueryService(ctx context.Context,
func (q *queryService) close() {
log.Debug("search service closed")
for collectionID := range q.queryCollections {
q.stopQueryCollection(collectionID)
}
q.queryCollectionMu.Lock()
for collectionID, sc := range q.queryCollections {
sc.close()
sc.cancel()
delete(q.queryCollections, collectionID)
}
q.queryCollections = make(map[UniqueID]*queryCollection)
q.queryCollectionMu.Unlock()
q.cancel()

View File

@ -241,4 +241,7 @@ func TestQueryService_addQueryCollection(t *testing.T) {
err = qs.addQueryCollection(invalidCollectionID)
assert.Error(t, err)
assert.Len(t, qs.queryCollections, 1)
qs.close()
assert.Len(t, qs.queryCollections, 0)
}