paulirwin commented on code in PR #1138:
URL: https://github.com/apache/lucenenet/pull/1138#discussion_r1987678092


##########
src/Lucene.Net/Store/MMapDirectory.cs:
##########
@@ -314,7 +314,7 @@ internal virtual ByteBuffer[] Map(MMapIndexInput input, 
FileStream fc, long offs
                 input.memoryMappedFile = MemoryMappedFile.CreateFromFile(
                     fileStream: fc,
                     mapName: null,
-                    capacity: length,
+                    capacity: fc.Length, // use the full length of the file

Review Comment:
   If `FileStream.Length` is not reliable (I do not believe this to be the 
case) then we have bigger problems, because the only caller to this internal 
method passes in `fc.Length` as the `length` argument (see line 243). My 
hypothesis (since this bug is not reproducible) was that the file length on 
disk was growing between the call to this method and the call to create the 
memory mapped file as a race condition. I'm fine with reverting it and letting 
this fail in that case, it might have just been a one-off fluke. But note that 
if the reason for reverting it is that `FileStream.Length` is unreliable, then 
the calling code would be invalid as well (additionally, CreateFromFile would 
be bogus too, as no matter what we pass, it uses that same property to check 
the capacity argument). I do not think we should assume that it is unreliable 
and try to work around that unless you have a proposed solution. But I'm also 
fine with accepting this code as possibly rarely concurrency-unsafe.



-- 
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: dev-unsubscr...@lucenenet.apache.org

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

Reply via email to