Skip to content

Commit cf94f1e

Browse files
authored
Pipe: Avoid unnecessary close-client in async client (Follow up fix for #16008)
1 parent 2624cc0 commit cf94f1e

3 files changed

Lines changed: 18 additions & 10 deletions

File tree

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/IoTDBDataRegionAsyncSink.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -756,7 +756,7 @@ public synchronized void close() {
756756
.forEach(
757757
handler -> {
758758
handler.clearEventsReferenceCount();
759-
eliminateHandler(handler);
759+
eliminateHandler(handler, true);
760760
});
761761
}
762762

@@ -813,7 +813,11 @@ public void trackHandler(final PipeTransferTrackableHandler handler) {
813813
pendingHandlers.put(handler, handler);
814814
}
815815

816-
public void eliminateHandler(final PipeTransferTrackableHandler handler) {
816+
public void eliminateHandler(
817+
final PipeTransferTrackableHandler handler, final boolean closeClient) {
818+
if (closeClient) {
819+
handler.closeClient();
820+
}
817821
handler.close();
818822
pendingHandlers.remove(handler);
819823
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/handler/PipeTransferTrackableHandler.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public PipeTransferTrackableHandler(final IoTDBDataRegionAsyncSink connector) {
4646
public void onComplete(final TPipeTransferResp response) {
4747
if (connector.isClosed()) {
4848
clearEventsReferenceCount();
49-
connector.eliminateHandler(this);
49+
connector.eliminateHandler(this, true);
5050
return;
5151
}
5252

@@ -55,20 +55,20 @@ public void onComplete(final TPipeTransferResp response) {
5555
// completed
5656
// NOTE: We should not clear the reference count of events, as this would cause the
5757
// `org.apache.iotdb.pipe.it.dual.tablemodel.manual.basic.IoTDBPipeDataSinkIT#testSinkTsFileFormat3` test to fail.
58-
connector.eliminateHandler(this);
58+
connector.eliminateHandler(this, false);
5959
}
6060
}
6161

6262
@Override
6363
public void onError(final Exception exception) {
6464
if (connector.isClosed()) {
6565
clearEventsReferenceCount();
66-
connector.eliminateHandler(this);
66+
connector.eliminateHandler(this, true);
6767
return;
6868
}
6969

7070
onErrorInternal(exception);
71-
connector.eliminateHandler(this);
71+
connector.eliminateHandler(this, false);
7272
}
7373

7474
/**
@@ -90,7 +90,7 @@ protected boolean tryTransfer(
9090
connector.trackHandler(this);
9191
if (connector.isClosed()) {
9292
clearEventsReferenceCount();
93-
connector.eliminateHandler(this);
93+
connector.eliminateHandler(this, true);
9494
client.setShouldReturnSelf(true);
9595
try {
9696
client.returnSelf();
@@ -119,8 +119,7 @@ protected abstract void doTransfer(
119119

120120
public abstract void clearEventsReferenceCount();
121121

122-
@Override
123-
public void close() {
122+
public void closeClient() {
124123
if (Objects.isNull(client)) {
125124
return;
126125
}
@@ -135,4 +134,9 @@ public void close() {
135134
e);
136135
}
137136
}
137+
138+
@Override
139+
public void close() {
140+
// Do nothing
141+
}
138142
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/handler/PipeTransferTsFileHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ private void returnClientIfNecessary() {
418418
}
419419

420420
if (connector.isClosed()) {
421-
close();
421+
closeClient();
422422
}
423423

424424
client.setShouldReturnSelf(true);

0 commit comments

Comments
 (0)