Hi Maik, So what happens in this case:
IndexAccessProvider accessProvider = new IndexAccessProvider(directory, analyzer); LuceneIndexAccessor accessor = new LuceneIndexAccessor(accessProvider); accessor.open(); IndexWriter writer = accessor.getWriter(); // reference to the same instance? IndexWriter writer2 = accessor.getWriter(); writer.addDocument(....); writer2.addDocument(....); // I didn't release the writer yet // will this block? IndexReader reader = accessor.getReader(); reader.delete(....); It looks like you answered that in Bugzilla already. But doesn't that make management of IndexWriter/IndexReader as "involved" as doing it directly? Is the idea that this shields the user from needing to do his own synchronization? Actually, I can see how working with this code can be simpler than dealing with details yourself. Is there a way to time out the blocking getWriter/Reader()? To deal with managing index-modifying access to the index I often use code that acts as a facade to IndexReader/Writer and provides methods such as index(....), optimize(), and delete(....). All of these methods have index-modifying code inside a "synchronized (_myDirInstanceHere)" block. And that seems to work without the need to open, close, and release explicitly. I guess such code doesn't give you direct access to IndexReader/Writer, so that's the drawback.... and I guess the synchronization really blocking as well. :) Otis --- Maik Schreiber <[EMAIL PROTECTED]> wrote: > > I didn't follow this closely, but are you saying that > > LuceneIndexAccessor then replaces IOError caused by locking with > > blocking calls? It sounds like the client of LuceneIndexAccessor > still > > needs to keep track of open IndexReaders, IndexWriters, etc., or > else > > one can end up with a hard-to-track blocked call somewhere in the > code, > > no? It would be nice to see how this works via a unit test. > > Please see http://issues.apache.org/bugzilla/show_bug.cgi?id=34995#c3 > > The client just does getWriter(), getReader() or whatever it wishes, > then > uses release() to give the instances back. The index accessor is > responsible > for synchronizing access such that no two writers can be open at the > same > time etc. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]