rmuir commented on PR #11923:
URL: https://github.com/apache/lucene/pull/11923#issuecomment-1312221930

   This NarrowCalculation is specific to multiplication, which was the issue 
for #11905. It would not have detected the multiplication issue for the bug 
before that (#11861), as that one never involved `long` at all, just a pure 
integer overflow in integer space.
   
   Instead here, the idea is that its always suspicious if you see `long z = x 
* y`, where x and y are integers. A good example is simpletext code doing stuff 
like `seek(docid * 8)` which is bad, it will overflow at 270M docs. so you 
should do `seek(docid * 8L)` instead.
   
   The "IntLongMath" is more aggressive and looks at not just multiplication 
but other operations too. example of other stuff it picks up:
   ```
   lucene/core/src/java/org/apache/lucene/search/DocIdSetIterator.java:131: 
warning: [IntLongMath] Expression of type int may overflow before being 
assigned to a long
           return maxDoc - minDoc;
                         ^
       (see https://errorprone.info/bugpattern/IntLongMath)
     Did you mean 'return (long) maxDoc - minDoc;'?
   ```
   
   Hence I'm not sure about enabling `IntLongMath`, I think it might be more of 
a hassle than it is worth. I feel like this `NarrowCalculation` is a decent 
tradeoff. Multiplication was responsible for the last 2 overflow bugs in 
vectors. Normally when multiplying the developer starts thinks about overflow 
already, so the suggestions that it makes are not unnatural.


-- 
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: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to