File locking supported on all platforms?

Stefan Reich stefan.reich.maker.of.eye at googlemail.com
Mon Sep 14 12:27:55 UTC 2020


Thanks Peter, that sounds pretty cool actually.

Stefan

On Mon, 14 Sep 2020 at 11:58, Peter Levart <peter.levart at gmail.com> wrote:

> Hi Stefan,
>
> You can always use the "create file exclusively" feature that should work
> on any POSIX compliant filesystem (NFS included):
>
> Files.createFile(path)
>
> ...you could implement an "exclusive lock" mechanism with this by creating
> and then updating a lock file periodically so that its "last modified" time
> is kept recent. Unlock would just remove the file. Observing the file with
> expired timestamp will give you permission to remove it even if you are not
> the lock owner.
>
> Regards, Peter
>
> On 7/11/20 12:13 PM, Stefan Reich wrote:
>
> Hmm that's what I feared. So to be really sure I should do an actual test.
> Maybe I can get away with doing two locks on the same file within one JVM
> for testing the feature? I should try that.
>
> Thanks
>
> On Sat, 11 Jul 2020 at 12:10, Jonas Konrad <me at yawk.at> wrote:
>
>> I think it should just fail silently / without error, that's what fcntl
>> does at least. I'm not sure if there's a good way to determine whether
>> locking will actually work.
>>
>> - Jonas
>>
>> On 7/11/20 11:47 AM, Stefan Reich wrote:
>> > Hi Jonas,
>> >
>> > what would happen if I try to lock a file on these platforms? Can I
>> > reliably detect this case? That would already help a lot.
>> >
>> > The use case is ensuring a database's consistency which I now do over a
>> > socket protocol, but file locks would be faster and more reliable.
>> >
>> > Stefan
>> >
>> > On Sat, 11 Jul 2020 at 11:45, Jonas Konrad <me at yawk.at
>> > <mailto:me at yawk.at>> wrote:
>> >
>> >     Hey,
>> >
>> >     Some file systems on Linux, eg old NFS, do not support locking at
>> all.
>> >
>> >     - Jonas
>> >
>> >     On 7/11/20 11:36 AM, Stefan Reich wrote:
>> >      > Hi,
>> >      >
>> >      > a quick question regarding file locks in Java. I seem to remember
>> >      > reading somewhere that this feature isn't guaranteed to work on
>> all
>> >      > platforms. However, I can now find no mention of that e.g. here
>> >      >
>> >     <
>> https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileLock.html
>> >.
>> >      >
>> >      > The page does list that numerous special assumptions may fail,
>> for
>> >      > example that programs which /don't/ lock a file are prevented
>> from
>> >      > changing it when it is locked by another program.
>> >      >
>> >      > However, I only care about the basic feature, namely that one
>> >     local file
>> >      > cannot be locked by two Java programs at once and will cause one
>> >     of them
>> >      > to throw an exception.
>> >      >
>> >      > Is this guaranteed to work everywhere?
>> >      >
>> >      > Many greetings
>> >      > Stefan
>> >      >
>> >      > --
>> >      > Stefan Reich
>> >      > BotCompany.de // Java-based operating systems
>> >
>> >
>> >
>> > --
>> > Stefan Reich
>> > BotCompany.de // Java-based operating systems
>>
>
>
> --
> Stefan Reich
> BotCompany.de // Java-based operating systems
>
>
>

-- 
Stefan Reich
BotCompany.de // Java-based operating systems
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/nio-dev/attachments/20200914/b19b622e/attachment-0001.htm>


More information about the nio-dev mailing list