RFR 4823133: RandomAccessFile.length() is not thread-safe

vyom vyom.tewari at oracle.com
Fri Dec 18 20:42:00 UTC 2015


Hi Dmitry,

thanks for the review can you please explain little bit more, as per my 
testing and implementation i did not found any differences with fix and 
without fix. Even i checked the java.io.File.length() and there also it 
looks like we are using stat64().

as per you mail i truncate the file and with and without fix length is 
102400, can you please explain little bit more about the problem that 
you mention it will be help full for me to debug further.

Thanks,
Vyom


On Friday 18 December 2015 05:35 PM, Dmitry Samersoff wrote:
> Vyom,
>
> If I read the changes correctly, current code returns result of lseek()
> but your code returns result of fstat().
>
> I'm not sure it's a correct replacement.
>
>
> dooku:test#truncate --size=102400 test.me
>
> dooku:test#./test
> STAT: 102400 0 Success
> SEEK: 2 0 Success
>
> Moreover, if you truncate a file to value that large than available free
> space, lseek returns appropriate error but stat - not.
>
> -Dmitry
>
>
>
> On 2015-12-16 11:56, vyom wrote:
>> Hi All,
>>
>> Please find the updated
>> webrev(http://cr.openjdk.java.net/~vtewari/4823133/webrev0.1/
>> <http://cr.openjdk.java.net/%7Evtewari/4823133/webrev0.1/>). I
>> incorporated the review comments by Roger Riggs.
>>
>> Thanks,
>> Vyom
>>
>>
>> On Tuesday 15 December 2015 10:01 PM, Roger Riggs wrote:
>>> Hi Yvom,
>>>
>>> Minor comments:
>>>
>>> src/java.base/share/native/libjava/RandomAccessFile.c:
>>>   - "length fail" might be clearer as "GetLength failed"
>>>
>>> src/java.base/unix/native/libjava/io_util_md.c:
>>>
>>>   - Please add a comment before the define of FILE_OFFSET_BITS to
>>> indicate where it is used and why it is there.
>>>   - BTW, are there any unintended side effects?
>>>     Perhaps a different issue but perhaps 64 bit offsets should be used
>>> everywhere
>>>
>>> src/java.base/windows/native/libjava/io_util_md.c
>>>   - Line 592: Using INVALID_HANDLE_VALUE is better than -1 and is used
>>> elsewhere in the file
>>>     BTW, Testing for invalid handle might be unnecessary since the call
>>> to GetFileSizeEx will fail
>>>     if it is invalid, yielding the same result.
>>>
>>> Roger
>>>
>>> On 12/10/2015 5:52 AM, vyom wrote:
>>>> Hi All,
>>>>
>>>> Please review my changes for below bug.
>>>>
>>>> Bug: JDK-4823133 : RandomAccessFile.length() is not thread-safe
>>>>
>>>> Webrev:http://cr.openjdk.java.net/~vtewari/4823133/webrev0.0/
>>>> <http://cr.openjdk.java.net/%7Evtewari/4823133/webrev0.0/>
>>>>
>>>> This change ensure that  length() does not temporarily changes the
>>>> file pointer and it will make sure that there is no race
>>>> condition in case of multi thread uses.
>>>>
>>>> Thanks,
>>>> Vyom
>>>>
>>>>
>>>>
>>>>
>




More information about the core-libs-dev mailing list