jpountz commented on issue #14985:
URL: https://github.com/apache/lucene/issues/14985#issuecomment-3114138600

   Yes, like I wrote above we try to only delegate abstract methods in our 
`Filter*` classes. For instance, imagine a `FilterDirectory` that adds some 
magic bytes to the beginning of every file. It overrides `createOutput` to 
write these bytes and `openInput` to skip these bytes. The default 
implementation of `copyFrom` only relies on `createOutput`, so it works. If now 
you start delegating `copyFrom` in `FilterDirectory`, it would copy files as-is 
without adding the magic bytes at the beginning. In general, this causes two 
problems:
    - this may break existing implementations,
    - to be correct, all `FilterDirectory` implementations should review 
whether they need to override `copyFrom`, while `copyFrom` is always correct 
today.
   
   Your point is valid though, `copyFrom` being correct is one thing, but if 
it's inefficient, there's still a bug. In similar situations in the past, we 
made such methods abstract to convey the expectation that implementations 
should carefully consider whether/how to implement 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: 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