Caideyipi commented on code in PR #18090:
URL: https://github.com/apache/iotdb/pull/18090#discussion_r3517854498
##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java:
##########
@@ -442,8 +444,18 @@ public synchronized TPipeTransferResp receive(final
TPipeTransferReq req) {
}
case TRANSFER_COMPRESSED:
{
+ long requestedMemorySizeInBytes = 0;
try {
- return
receive(PipeTransferCompressedReq.fromTPipeTransferReq(req));
+ requestedMemorySizeInBytes =
+
PipeTransferCompressedReq.getMaxDecompressedLengthInBytes(req);
+ try (final PipeMemoryBlock ignored =
+ tryAllocateReceiverMemory(requestedMemorySizeInBytes)) {
+ return
receive(PipeTransferCompressedReq.fromTPipeTransferReq(req));
+ }
+ } catch (final PipeRuntimeOutOfMemoryCriticalException e) {
+ return new TPipeTransferResp(
+ getReceiverTemporaryUnavailableStatus(
+ "decompressing pipe transfer request",
requestedMemorySizeInBytes, e));
Review Comment:
Applied in 9213e481eb4: the receiver OOM status text now uses the DataNode
pipe i18n messages with English and Chinese entries.
##########
iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java:
##########
@@ -419,6 +420,18 @@ protected final TPipeTransferResp handleTransferFilePiece(
writingFileWriter.write(req.getFilePiece());
return PipeTransferFilePieceResp.toTPipeTransferResp(
RpcUtils.SUCCESS_STATUS, writingFileWriter.length());
+ } catch (final PipeRuntimeOutOfMemoryCriticalException e) {
+ final TSStatus status =
+ getReceiverTemporaryUnavailableStatus(
+ "receiving pipe file piece", getFilePieceSizeInBytes(req), e);
+ PipeLogger.log(
+ LOGGER::warn, e, PipeMessages.RECEIVER_FAILED_WRITE_FILE_PIECE,
receiverId.get(), req);
+ try {
+ return PipeTransferFilePieceResp.toTPipeTransferResp(
+ status, PipeTransferFilePieceResp.ERROR_END_OFFSET);
+ } catch (Exception ex) {
+ return PipeTransferFilePieceResp.toTPipeTransferResp(status);
+ }
Review Comment:
Applied in 9213e481eb4: the returned status now keeps the receiver OOM
context and includes the root-cause exception message instead of dropping it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]