瀏覽代碼

Merge pull request #10526 from jingyih/improve_mvcc_index_concurrency

mvcc: release lock early when traversing index
Xiang Li 7 年之前
父節點
當前提交
949bcbddbe
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      mvcc/index.go

+ 3 - 2
mvcc/index.go

@@ -92,9 +92,10 @@ func (ti *treeIndex) visit(key, end []byte, f func(ki *keyIndex)) {
 	keyi, endi := &keyIndex{key: key}, &keyIndex{key: end}
 
 	ti.RLock()
-	defer ti.RUnlock()
+	clone := ti.tree.Clone()
+	ti.RUnlock()
 
-	ti.tree.AscendGreaterOrEqual(keyi, func(item btree.Item) bool {
+	clone.AscendGreaterOrEqual(keyi, func(item btree.Item) bool {
 		if len(endi.key) > 0 && !item.Less(endi) {
 			return false
 		}