reswqa commented on code in PR #2820:
URL: https://github.com/apache/celeborn/pull/2820#discussion_r1818427848
##########
worker/src/main/java/org/apache/celeborn/service/deploy/worker/storage/MapPartitionDataReader.java:
##########
@@ -255,11 +241,44 @@ public synchronized void sendData() {
}
}
- private long getIndexRegionSize() {
+ public RequestMessage generateReadDataMessage(
+ long streamId, int subPartitionId, ByteBuf byteBuf) {
+ return new ReadData(streamId, byteBuf);
+ }
+
+ protected void sendDataInternal(RecyclableBuffer buffer) {
+ final RecyclableBuffer wrappedBuffer = buffer;
+ int readableBytes = wrappedBuffer.byteBuf.readableBytes();
+ if (logger.isDebugEnabled()) {
+ logger.debug("send data start: {}, {}", streamId, readableBytes);
+ }
+
+ RequestMessage readData =
+ generateReadDataMessage(streamId, wrappedBuffer.subPartitionId,
wrappedBuffer.byteBuf);
+ associatedChannel
+ .writeAndFlush(readData)
+ .addListener(
+ (ChannelFutureListener)
+ future -> {
+ try {
+ if (!future.isSuccess()) {
+ recycleOnError(future.cause());
+ }
+ } finally {
+ logger.debug("send data end: {}, {}", streamId,
readableBytes);
+ wrappedBuffer.recycle();
+ numInUseBuffers.decrementAndGet();
+ }
+ });
+ int currentCredit = credits.decrementAndGet();
Review Comment:
If the future is not success, this reader will be release, the value of
this field(i.e. credits) is meaningless then.
##########
worker/src/main/java/org/apache/celeborn/service/deploy/worker/storage/MapPartitionDataReader.java:
##########
@@ -255,11 +241,44 @@ public synchronized void sendData() {
}
}
- private long getIndexRegionSize() {
+ public RequestMessage generateReadDataMessage(
+ long streamId, int subPartitionId, ByteBuf byteBuf) {
+ return new ReadData(streamId, byteBuf);
+ }
+
+ protected void sendDataInternal(RecyclableBuffer buffer) {
+ final RecyclableBuffer wrappedBuffer = buffer;
+ int readableBytes = wrappedBuffer.byteBuf.readableBytes();
+ if (logger.isDebugEnabled()) {
+ logger.debug("send data start: {}, {}", streamId, readableBytes);
+ }
+
+ RequestMessage readData =
+ generateReadDataMessage(streamId, wrappedBuffer.subPartitionId,
wrappedBuffer.byteBuf);
+ associatedChannel
+ .writeAndFlush(readData)
+ .addListener(
+ (ChannelFutureListener)
+ future -> {
+ try {
+ if (!future.isSuccess()) {
+ recycleOnError(future.cause());
+ }
+ } finally {
+ logger.debug("send data end: {}, {}", streamId,
readableBytes);
+ wrappedBuffer.recycle();
+ numInUseBuffers.decrementAndGet();
+ }
+ });
+ int currentCredit = credits.decrementAndGet();
Review Comment:
If the future is not success, this reader will be released, the value of
this field(i.e. credits) is meaningless then.
--
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]