浏览代码

Fix the `resources` variable not reset after the resource manager is closed (#1105)

* Fix the resource variable not reset after the resource manager is closed

* Format code
chenquan 3 年之前
父节点
当前提交
d1bfb5ef61
共有 2 个文件被更改,包括 16 次插入1 次删除
  1. 2 1
      core/syncx/resourcemanager.go
  2. 14 0
      core/syncx/resourcemanager_test.go

+ 2 - 1
core/syncx/resourcemanager.go

@@ -33,7 +33,8 @@ func (manager *ResourceManager) Close() error {
 			be.Add(err)
 		}
 	}
-
+	// reset resources
+	manager.resources = make(map[string]io.Closer)
 	return be.Err()
 }
 

+ 14 - 0
core/syncx/resourcemanager_test.go

@@ -44,3 +44,17 @@ func TestResourceManager_GetResourceError(t *testing.T) {
 		assert.NotNil(t, err)
 	}
 }
+
+func TestResourceManager_Close(t *testing.T) {
+	manager := NewResourceManager()
+
+	for i := 0; i < 10; i++ {
+		_, err := manager.GetResource("key", func() (io.Closer, error) {
+			return nil, errors.New("fail")
+		})
+		assert.NotNil(t, err)
+	}
+	err := manager.Close()
+	assert.NoError(t, err)
+	assert.Equal(t, 0, len(manager.resources))
+}