Sfoglia il codice sorgente

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 anni fa
parent
commit
d1bfb5ef61
2 ha cambiato i file con 16 aggiunte e 1 eliminazioni
  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)
 			be.Add(err)
 		}
 		}
 	}
 	}
-
+	// reset resources
+	manager.resources = make(map[string]io.Closer)
 	return be.Err()
 	return be.Err()
 }
 }
 
 

+ 14 - 0
core/syncx/resourcemanager_test.go

@@ -44,3 +44,17 @@ func TestResourceManager_GetResourceError(t *testing.T) {
 		assert.NotNil(t, err)
 		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))
+}