Skip to content

Commit cd5c3a3

Browse files
authored
Fix empty deleteTimeseries requests (#18012)
1 parent e0e79aa commit cd5c3a3

5 files changed

Lines changed: 28 additions & 0 deletions

File tree

‎iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,9 @@ private TSStatus insertTabletsInternal(TSInsertTabletsReq request) throws TExcep
864864

865865
protected void deleteTimeseries(List<String> paths)
866866
throws IoTDBConnectionException, StatementExecutionException {
867+
if (paths.isEmpty()) {
868+
return;
869+
}
867870
callWithRetryAndVerify(() -> client.deleteTimeseries(sessionId, paths));
868871
}
869872

‎iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2013,6 +2013,9 @@ public void deleteTimeseries(String path)
20132013
@Override
20142014
public void deleteTimeseries(List<String> paths)
20152015
throws IoTDBConnectionException, StatementExecutionException {
2016+
if (paths.isEmpty()) {
2017+
return;
2018+
}
20162019
ISession session = getSession();
20172020
try {
20182021
session.deleteTimeseries(paths);

‎iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionConnectionTest.java‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,14 @@ public void testInsertRecord()
351351
sessionConnection.deleteTimeseries(Arrays.asList("root.sg1.d1.s1"));
352352
}
353353

354+
@Test
355+
public void testDeleteEmptyTimeseries()
356+
throws IoTDBConnectionException, StatementExecutionException, TException {
357+
sessionConnection.deleteTimeseries(Collections.emptyList());
358+
359+
Mockito.verify(client, Mockito.never()).deleteTimeseries(anyLong(), any());
360+
}
361+
354362
@Test
355363
public void testDeleteData() throws IoTDBConnectionException, StatementExecutionException {
356364
sessionConnection.deleteData(new TSDeleteDataReq());

‎iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,17 @@ public void testDeleteTimeseriesList()
777777
((ConcurrentLinkedDeque<ISession>) Whitebox.getInternalState(sessionPool, "queue")).size());
778778
}
779779

780+
@Test
781+
public void testDeleteEmptyTimeseriesList()
782+
throws IoTDBConnectionException, StatementExecutionException {
783+
sessionPool.deleteTimeseries(Collections.emptyList());
784+
785+
Mockito.verify(session, Mockito.never()).deleteTimeseries(Mockito.<List<String>>any());
786+
assertEquals(
787+
1,
788+
((ConcurrentLinkedDeque<ISession>) Whitebox.getInternalState(sessionPool, "queue")).size());
789+
}
790+
780791
@Test
781792
public void testDeleteData() throws IoTDBConnectionException, StatementExecutionException {
782793
String path = "root.device1.temperature";

‎iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2026,6 +2026,9 @@ public TSStatus deleteTimeseries(long sessionId, List<String> path) {
20262026
return getNotLoggedInStatus();
20272027
}
20282028

2029+
if (path.isEmpty()) {
2030+
return RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS);
2031+
}
20292032
// Step 1: transfer from DeleteStorageGroupsReq to Statement
20302033
DeleteTimeSeriesStatement statement =
20312034
StatementGenerator.createDeleteTimeSeriesStatement(path);

0 commit comments

Comments
 (0)