horizonzy commented on code in PR #4038:
URL: https://github.com/apache/bookkeeper/pull/4038#discussion_r1484921503


##########
bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BufferedReadChannel.java:
##########
@@ -64,10 +71,22 @@ public int read(ByteBuf dest, long pos) throws IOException {
         return read(dest, pos, dest.writableBytes());
     }
 
+    @Override
+    public long size() throws IOException {
+        if (sealed) {
+            if (fileSize == -1) {
+                fileSize = validateAndGetFileChannel().size();
+            }
+            return fileSize;
+        } else {
+            return validateAndGetFileChannel().size();
+        }
+    }

Review Comment:
   I'm not got you fully, the BufferedChannel means the corresponding file is 
writing, it override the `BufferedReadChannel#read` method, it know the file 
end position.
   
   > Is the challenge in that case that the same file could have a 
BufferedReadChannel instance and a BufferedChannel instance at the same time?
   
   https://github.com/apache/bookkeeper/pull/4038#issuecomment-1652685967 
   The test contains the case.



-- 
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]

Reply via email to