Tagir Valeev created AVRO-3657:
----------------------------------

             Summary: Computation of initial buffer size in OutputBuffer makes 
no sense
                 Key: AVRO-3657
                 URL: https://issues.apache.org/jira/browse/AVRO-3657
             Project: Apache Avro
          Issue Type: Bug
          Components: java
            Reporter: Tagir Valeev


As you can see, OutputBuffer calls the superclass constructor in the following 
way:

[https://github.com/apache/avro/blame/1119b6eb5b92730b27e9798793bc67f192591c15/lang/java/trevni/core/src/main/java/org/apache/trevni/OutputBuffer.java#L32]

 

public OutputBuffer() { super((BLOCK_SIZE + BLOCK_SIZE) >> 2); }

 

Before 3d51ba5e965561 change it was 

 

public OutputBuffer() { super(BLOCK_SIZE + BLOCK_SIZE >> 2); }

 

Which looked like the author did not know that >> has lower precedence than + 
and forgot to put parentheses. It looks like, the 3d51ba5e965561 change blindly 
applied static analyzer suggestions and added parentheses to preserve the 
current semantics. However, `(BLOCK_SIZE + BLOCK_SIZE) >> 2` is simply 
`BLOCK_SIZE`.

 

My suggestion is the following:
 * If everybody is fine with current behavior, let's update this to 
`super(BLOCK_SIZE);` to avoid confusion.
 * If we would like to preserve the original author's intention to allocate 
more, let's place the parentheses in another way: `super(BLOCK_SIZE + 
(BLOCK_SIZE >> 2));`



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to