Implements {@link LockFactory} using native OS file locks
(available through java.nio.*). Note that for certain
filesystems native locks are possible but must be
explicity configured and enabled (and may be disabled by
default). For example, for NFS servers there sometimes
must be a separate lockd process running, and other
configuration may be required such as running the server
in kernel mode. Other filesystems may not even support
native OS locks in which case you must use a different
{@link LockFactory} implementation.
The advantage of this lock factory over
{@link SimpleFSLockFactory} is that the locks should be
"correct", whereas {@link SimpleFSLockFactory} uses
java.io.File.createNewFile which
has warnings about not
using it for locking. Furthermore, if the JVM crashes,
the OS will free any held locks, whereas
{@link SimpleFSLockFactory} will keep the locks held, requiring
manual removal before re-running Lucene.
Note that, unlike {@link SimpleFSLockFactory}, the existence of
leftover lock files in the filesystem on exiting the JVM
is fine because the OS will free the locks held against
these files even though the files still remain.
Native locks file names have the substring "-n-", which
you can use to differentiate them from lock files created
by {@link SimpleFSLockFactory}. |