I checked, and I don't see that disclaimer in the latest POSIX documentation.

-----Original Message-----
>From: Robert Engels <[EMAIL PROTECTED]>
>Sent: Jan 24, 2007 9:04 AM
>To: java-dev@lucene.apache.org
>Subject: Re: [jira] Commented: (LUCENE-710) Implement
>
>Curious, I guess I don't understand the BSD disclaimer. The application should 
>not need to track any of this. The OS should be tracking open FD and locks for 
>the process, and when it closes a FD on behalf of a process it should also 
>remove the locks.
>
>-----Original Message-----
>>From: "Marvin Humphrey (JIRA)" <[EMAIL PROTECTED]>
>>Sent: Jan 23, 2007 10:56 PM
>>To: java-dev@lucene.apache.org
>>Subject: [jira] Commented: (LUCENE-710) Implement "point in time" searching 
>>without relying on filesystem semantics
>>
>>
>>    [ 
>> https://issues.apache.org/jira/browse/LUCENE-710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12466911
>>  ] 
>>
>>Marvin Humphrey commented on LUCENE-710:
>>----------------------------------------
>>
>>On Jan 23, 2007, at 2:19 PM, Michael McCandless (JIRA) wrote:
>>
>>> First do no harm.
>>
>>If that was really your guiding philosophy, you would never change anything.
>>
>>> And Sun's Javadocs on the equivalent Java method, File.createNewFile, has a
>>> warning about not relying on this for locking:
>>> 
>>>   http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html#createNewFile()
>>
>>That page recommends that you use FileLock instead, which maps to Fcntl on
>>some systems.  The FreeBSD manpage on Fcntl uses less delicate language than
>>Sun in pointing out the drawbacks:
>>
>>     This interface follows the completely stupid semantics of System V and
>>     IEEE Std 1003.1-1988 (``POSIX.1'') that require that all locks associated
>>     with a file for a given process are removed when any file descriptor for
>>     that file is closed by that process.  This semantic means that applica-
>>     tions must be aware of any files that a subroutine library may access.
>>
>>Trying to guarantee that kind of discipline from library code severely limits
>>your options.
>>
>>> This warning is why we created the NativeFSLockFactory for Directory locking
>>> in the first place.
>>
>>Take a look at this bug, which explains how that warning got added.
>>
>>http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4676183
>>
>>Read the comment below -- the problem with the "protocol" they warn you
>>against using is with deleteOnExit(), not createNewFile().  I think you're
>>better off with dot-locks.
>>
>>> OK.  You could implement this in Lucene as a custom deletion policy once we
>>> get this commmitted (I think this is 6 proposals now for "deletion policy"
>>> for NFS), plus a wrapper around IndexReader.
>>
>>This was the response I got on the KinoSearch list:
>>
>>    We do not enable NFS writes, only reads (which is why Slashdot is able to
>>    reliably use NFS for its heavy load :-).  So I don't think that will work,
>>    if I understand you correctly.
>>
>>Lack of bulletproof support for NFS ain't gonna hold up my next release any
>>longer.  What a freakin' nightmare...
>>
>>> Implement "point in time" searching without relying on filesystem semantics
>>> ---------------------------------------------------------------------------
>>>
>>>                 Key: LUCENE-710
>>>                 URL: https://issues.apache.org/jira/browse/LUCENE-710
>>>             Project: Lucene - Java
>>>          Issue Type: Improvement
>>>          Components: Index
>>>    Affects Versions: 2.1
>>>            Reporter: Michael McCandless
>>>         Assigned To: Michael McCandless
>>>            Priority: Minor
>>>
>>> This was touched on in recent discussion on dev list:
>>>   http://www.gossamer-threads.com/lists/lucene/java-dev/41700#41700
>>> and then more recently on the user list:
>>>   http://www.gossamer-threads.com/lists/lucene/java-user/42088
>>> Lucene's "point in time" searching currently relies on how the
>>> underlying storage handles deletion files that are held open for
>>> reading.
>>> This is highly variable across filesystems.  For example, UNIX-like
>>> filesystems usually do "close on last delete", and Windows filesystem
>>> typically refuses to delete a file open for reading (so Lucene retries
>>> later).  But NFS just removes the file out from under the reader, and
>>> for that reason "point in time" searching doesn't work on NFS
>>> (see LUCENE-673 ).
>>> With the lockless commits changes (LUCENE-701 ), it's quite simple to
>>> re-implement "point in time searching" so as to not rely on filesystem
>>> semantics: we can just keep more than the last segments_N file (as
>>> well as all files they reference).
>>> This is also in keeping with the design goal of "rely on as little as
>>> possible from the filesystem".  EG with lockless we no longer re-use
>>> filenames (don't rely on filesystem cache being coherent) and we no
>>> longer use file renaming (because on Windows it can fails).  This
>>> would be another step of not relying on semantics of "deleting open
>>> files".  The less we require from filesystem the more portable Lucene
>>> will be!
>>> Where it gets interesting is what "policy" we would then use for
>>> removing segments_N files.  The policy now is "remove all but the last
>>> one".  I think we would keep this policy as the default.  Then you
>>> could imagine other policies:
>>>   * Keep past N day's worth
>>>   * Keep the last N
>>>   * Keep only those in active use by a reader somewhere (note: tricky
>>>     how to reliably figure this out when readers have crashed, etc.)
>>>   * Keep those "marked" as rollback points by some transaction, or
>>>     marked explicitly as a "snaphshot".
>>>   * Or, roll your own: the "policy" would be an interface or abstract
>>>     class and you could make your own implementation.
>>> I think for this issue we could just create the framework
>>> (interface/abstract class for "policy" and invoke it from
>>> IndexFileDeleter) and then implement the current policy (delete all
>>> but most recent segments_N) as the default policy.
>>> In separate issue(s) we could then create the above more interesting
>>> policies.
>>> I think there are some important advantages to doing this:
>>>   * "Point in time" searching would work on NFS (it doesn't now
>>>     because NFS doesn't do "delete on last close"; see LUCENE-673 )
>>>     and any other Directory implementations that don't work
>>>     currently.
>>>   * Transactional semantics become a possibility: you can set a
>>>     snapshot, do a bunch of stuff to your index, and then rollback to
>>>     the snapshot at a later time.
>>>   * If a reader crashes or machine gets rebooted, etc, it could choose
>>>     to re-open the snapshot it had previously been using, whereas now
>>>     the reader must always switch to the last commit point.
>>>   * Searchers could search the same snapshot for follow-on actions.
>>>     Meaning, user does search, then next page, drill down (Solr),
>>>     drill up, etc.  These are each separate trips to the server and if
>>>     searcher has been re-opened, user can get inconsistent results (=
>>>     lost trust).  But with, one series of search interactions could
>>>     explicitly stay on the snapshot it had started with.
>>
>>-- 
>>This message is automatically generated by JIRA.
>>-
>>You can reply to this email to add a comment to the issue online.
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to