Skip to content

Commit b4c4e54

Browse files
authored
Fix stale deletion resource manager reuse (#18057)
1 parent 3bc7b90 commit b4c4e54

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResourceManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ public void close() {
132132
LOGGER.info(DataNodePipeMessages.CLOSING_DELETION_RESOURCE_MANAGER_FOR, dataRegionId);
133133
this.deleteNode2ResourcesMap.clear();
134134
this.deletionBuffer.close();
135+
if (DeletionResourceManagerHolder.CONSENSUS_GROUP_ID_2_INSTANCE_MAP != null) {
136+
DeletionResourceManagerHolder.CONSENSUS_GROUP_ID_2_INSTANCE_MAP.remove(dataRegionId, this);
137+
}
135138
LOGGER.info(
136139
DataNodePipeMessages.DELETION_RESOURCE_MANAGER_FOR_HAS_BEEN_SUCCESSFULLY, dataRegionId);
137140
}

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/consensus/DeletionResourceTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,16 @@ public void testCreateBaseDir() {
102102
Assert.assertTrue(dataRegionDir.exists());
103103
}
104104

105+
@Test
106+
public void testGetInstanceAfterCloseReturnsFreshManager() {
107+
DeletionResourceManager closedDeletionResourceManager =
108+
DeletionResourceManager.getInstance(FAKE_DATA_REGION_IDS[0]);
109+
closedDeletionResourceManager.close();
110+
111+
deletionResourceManager = DeletionResourceManager.getInstance(FAKE_DATA_REGION_IDS[0]);
112+
Assert.assertNotSame(closedDeletionResourceManager, deletionResourceManager);
113+
}
114+
105115
@Test
106116
public void testAddBatchDeletionResource()
107117
throws IllegalPathException, IOException, InterruptedException {

0 commit comments

Comments
 (0)