You can try to incease TURNS_NUM (I&#39;ve tried with 1000) and THREADS_NUM (200) fields in InfinispanDirectoryTest to make it more propable. Same problem appears also in InfinispanDirectoryProviderTest<br><br>An example stacktrace is:<br>
<br>21:22:44,441 ERROR InfinispanDirectoryTest:142 - Error<br>java.io.IOException: File [ segments_nl ] for index [ indexName ] was not found<br>    at org.hibernate.search.store.infinispan.InfinispanIndexIO$InfinispanIndexInput.&lt;init&gt;(InfinispanIndexIO.java:79)<br>
    at org.hibernate.search.store.infinispan.InfinispanDirectory.openInput(InfinispanDirectory.java:201)<br>    at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:214)<br>    at org.apache.lucene.index.DirectoryIndexReader$1.doBody(DirectoryIndexReader.java:95)<br>
    at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:653)<br>    at org.apache.lucene.index.DirectoryIndexReader.open(DirectoryIndexReader.java:115)<br>    at org.apache.lucene.index.IndexReader.open(IndexReader.java:316)<br>
    at org.apache.lucene.index.IndexReader.open(IndexReader.java:227)<br>    at org.apache.lucene.search.IndexSearcher.&lt;init&gt;(IndexSearcher.java:55)<br>    at org.hibernate.search.test.directoryProvider.infinispan.CacheTestSupport.doReadOperation(CacheTestSupport.java:106)<br>
    at org.hibernate.search.test.directoryProvider.infinispan.InfinispanDirectoryTest$InfinispanDirectoryThread.run(InfinispanDirectoryTest.java:130)<br><br>Cheers,<br>Lukasz<br><br><div class="gmail_quote">2009/9/27 Sanne Grinovero <span dir="ltr">&lt;<a href="mailto:sanne.grinovero@gmail.com">sanne.grinovero@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Łukasz,<br>
I&#39;m unable to reproduce the problem, you said it happens randomly:<br>
I&#39;ve tried several times<br>
and I&#39;m not getting errors. Do you know something I could do to make it happen?<br>
Could you share a stacktrace?<br>
<br>
Anyway if you are confident it&#39;s about the segments getting lost when<br>
they are still being read,<br>
you could introduce a per-segment counter of usage; like it starts at<br>
value 1 to mark the segment<br>
as &quot;most current&quot;, gets a +1 vote at each reader opening it, -1<br>
closing, and -1 deleting.<br>
Each decrement method should check for the value reaching 0 to really delete it,<br>
and this counting method would be easy to add inside the Directory.<br>
When opening a new indexReader, you<br>
1) get the SegmentsInfo<br>
2) increment all counters (eager-lock, verify&gt;0 or retry : set changed<br>
counters back and get a new SegmentsInfo--&gt;1)<br>
3) get the needed segments<br>
<br>
Getting a counter should be much faster than getting a segment in case<br>
the data is downloaded<br>
from another node, so we can use a different key while still relating<br>
to the segment.<br>
<br>
Sanne<br>
<br>
2009/9/23 Łukasz Moreń &lt;<a href="mailto:lukasz.moren@gmail.com">lukasz.moren@gmail.com</a>&gt;:<br>
<div><div></div><div class="h5">&gt; I agree that Infinispan case is not much different from RamDirectory. The<br>
&gt; major difference is that in RD (also FileDirectory) changes are not batched<br>
&gt; like in ID. If I do not wrap changes in InfinispanDirectory(simple remove<br>
&gt; tx.begin() from obtain() method and tx.commit() from release() in<br>
&gt; InfinispanLock), and immediately commit every change made by IW it works<br>
&gt; well. Hovewer it makes indexing really slower, because of frequent<br>
&gt; replication to other nodes.<br>
&gt; Sanne it&#39;s good remark that IW commit is kind of flush.<br>
&gt;<br>
&gt; I&#39;ve attached patch with InfinispanDirectory, failing test is<br>
&gt; testDirectoryWithMultipleThreads in InfinispanDirectoryTest class. It fails<br>
&gt; randomly. I think problem is Infinispan commit on lockRelease() in<br>
&gt; org.apache.lucene.index.IndexWriter (line 1658) is after IW commit() (line<br>
&gt; 1654).<br>
&gt;<br>
&gt;&gt; Is it because, the IndexWriter only clean files if no indexReaders are<br>
&gt;&gt; reading them (how would that be detected)?<br>
&gt;<br>
&gt; It can happen if IndexWriter clean file, and IndexReader try to access that<br>
&gt; cleaned file.<br>
&gt;<br>
&gt; 2009/9/23 Sanne Grinovero &lt;<a href="mailto:sanne.grinovero@gmail.com">sanne.grinovero@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; I agree It should work the same way; The IndexWriter cleans files<br>
&gt;&gt; whenever it likes to, it doesn&#39;t try to detect readers, and this<br>
&gt;&gt; shouldn&#39;t have any effect on the working of readers.<br>
&gt;&gt; The IndexReader opens the &quot;SegmentsInfo&quot; first, and immediately<br>
&gt;&gt; after** gets a reference to the segments listed in this SegmentsInfo.<br>
&gt;&gt; No IndexWriter will ever change an existing segment, only add new<br>
&gt;&gt; files or eventually delete old ones (segments merge,optimize).<br>
&gt;&gt; The deletion of segments is the interesting subject: when using Files<br>
&gt;&gt; it uses &quot;delete at last close&quot;, which works because the IR needing it<br>
&gt;&gt; have it opened already**; when using the RAMDirectory they have a<br>
&gt;&gt; reference preventing garbage collection.<br>
&gt;&gt;<br>
&gt;&gt; ( the two &quot;**&quot; are assuming the same event occurred correctly,<br>
&gt;&gt; otherwise an exception is thrown at opening)<br>
&gt;&gt;<br>
&gt;&gt; When using Infinispan it shouldn&#39;t be much different than the<br>
&gt;&gt; RAMDirectory? so even if the needed segment is deleted, the IR holds a<br>
&gt;&gt; reference to the Java object locally since it was opened.<br>
&gt;&gt;<br>
&gt;&gt;  Łukcasz, do you have some failing test?<br>
&gt;&gt;<br>
&gt;&gt; Sanne<br>
&gt;&gt;<br>
&gt;&gt; 2009/9/23 Emmanuel Bernard &lt;<a href="mailto:emmanuel@hibernate.org">emmanuel@hibernate.org</a>&gt;:<br>
&gt;&gt; &gt; Conceptually I don&#39;t understand why it does work in a pure file system<br>
&gt;&gt; &gt; directory (ie IndexReader can go and process queries with the<br>
&gt;&gt; &gt; IndexWriter<br>
&gt;&gt; &gt; goes about its business) and not when using Infinispan.<br>
&gt;&gt; &gt; Is it because, the IndexWriter only clean files if no indexReaders are<br>
&gt;&gt; &gt; reading them (how would that be detected)?<br>
&gt;&gt; &gt; On 22 sept. 09, at 20:46, Łukasz Moreń wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I need to provide this same lifecycle for IndexWriter as for Infinispan<br>
&gt;&gt; &gt; tx -<br>
&gt;&gt; &gt; IW is created: tx is started, IW is commited: tx is commited. It assures<br>
&gt;&gt; &gt; that IndexReader doesn&#39;t read old data from directory.<br>
&gt;&gt; &gt; Infinispan transaction can be started when IW acquires the lock, but its<br>
&gt;&gt; &gt; commit on IW lock release, as it is done so far, causes a problem:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; index writer close {<br>
&gt;&gt; &gt;   index writer commit(); //changes are visible for IndexReaders<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;        //Index reader starts reading here, i.e. tries to access file &quot;A&quot;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;   index writer lockRelease(); //changes in Infinispan directory are<br>
&gt;&gt; &gt; commited, file &quot;A&quot; was removed, IndexReader cannot find it and crashes<br>
&gt;&gt; &gt; }<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I think Infinispan tx have to be commited just before IW commit, and the<br>
&gt;&gt; &gt; problem is where to put in code.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; W dniu 22 września 2009 18:24 użytkownik Emmanuel Bernard<br>
&gt;&gt; &gt; &lt;<a href="mailto:emmanuel@hibernate.org">emmanuel@hibernate.org</a>&gt; napisał:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Can you explain in more details what is going on.<br>
&gt;&gt; &gt;&gt; Aside from that Workspace has been Sanne&#39;s baby lately so he will be<br>
&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; best to see what design will work in HSearch. That being said, I don&#39;t<br>
&gt;&gt; &gt;&gt; like<br>
&gt;&gt; &gt;&gt; the idea of subclassing / overriding very much. In my experience, it<br>
&gt;&gt; &gt;&gt; has<br>
&gt;&gt; &gt;&gt; lead to more bad and unmaintainable code than anything else.<br>
&gt;&gt; &gt;&gt; On 22 sept. 09, at 02:16, Łukasz Moreń wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Thanks for explanation.<br>
&gt;&gt; &gt;&gt; Maybe better I will concentrate on the first release and postpone<br>
&gt;&gt; &gt;&gt; distributed writing.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; There is already LockStrategy that uses Infinispan. With using it I was<br>
&gt;&gt; &gt;&gt; wrapping changes made by IndexWriter in Infinispan transaction, because<br>
&gt;&gt; &gt;&gt; of<br>
&gt;&gt; &gt;&gt; performance reasons -<br>
&gt;&gt; &gt;&gt; on lock obtaining transaction was started, on lock release transaction<br>
&gt;&gt; &gt;&gt; was<br>
&gt;&gt; &gt;&gt; commited. Hovewer Ispn transaction commit on lock release is not good<br>
&gt;&gt; &gt;&gt; idea<br>
&gt;&gt; &gt;&gt; since IndexWriter calls index commit before lock is released(and ispn<br>
&gt;&gt; &gt;&gt; transaction is committed).<br>
&gt;&gt; &gt;&gt; I was thinking to override Workspace class and getIndexWriter(start<br>
&gt;&gt; &gt;&gt; infinispan tx), commitIndexWriter (commit tx) methods to wrap<br>
&gt;&gt; &gt;&gt; IndexWrite<br>
&gt;&gt; &gt;&gt; lifecycle, but this needs few other changes. Some other ideas?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Cheers,<br>
&gt;&gt; &gt;&gt; Lukasz<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 2009/9/21 Sanne Grinovero &lt;<a href="mailto:sanne.grinovero@gmail.com">sanne.grinovero@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Hi Łukasz,<br>
&gt;&gt; &gt;&gt;&gt; you&#39;ve rightful concerns, because the way the IndexWriter tries to<br>
&gt;&gt; &gt;&gt;&gt; achieve the lock<br>
&gt;&gt; &gt;&gt;&gt; that will bring some trouble; As far as I remember we decided in this<br>
&gt;&gt; &gt;&gt;&gt; first release<br>
&gt;&gt; &gt;&gt;&gt; to avoid multiple writer nodes because of this reasons<br>
&gt;&gt; &gt;&gt;&gt; (that&#39;s written in your docs?)<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Actually it shouldn&#39;t be very hard to do, as the LockStrategy is<br>
&gt;&gt; &gt;&gt;&gt; pluggable (see changes from HSEARCH-345)<br>
&gt;&gt; &gt;&gt;&gt; and you could implement one delegating to an Infinispan eager lock on<br>
&gt;&gt; &gt;&gt;&gt; some key,<br>
&gt;&gt; &gt;&gt;&gt; like the default LockStrategy takes a file lock in the index<br>
&gt;&gt; &gt;&gt;&gt; directory.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Maybe it&#39;s simpler to support this distributed writing instead of<br>
&gt;&gt; &gt;&gt;&gt; sending the queue to some single<br>
&gt;&gt; &gt;&gt;&gt; (elected) node? Would be cool, as the Document Analysis effort would<br>
&gt;&gt; &gt;&gt;&gt; be distributed,<br>
&gt;&gt; &gt;&gt;&gt; but I have no idea if this would be more or less efficient than a<br>
&gt;&gt; &gt;&gt;&gt; single node writing; it could<br>
&gt;&gt; &gt;&gt;&gt; bring some huge data transfers along the wire during segments merging<br>
&gt;&gt; &gt;&gt;&gt; (basically fetching<br>
&gt;&gt; &gt;&gt;&gt; the whole index data at each node performing a segment merge); maybe<br>
&gt;&gt; &gt;&gt;&gt; you&#39;ll need to<br>
&gt;&gt; &gt;&gt;&gt; play with IndexWriter settings (<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; <a href="http://docs.jboss.org/hibernate/stable/search/reference/en/html_single/#lucene-indexing-performance" target="_blank">http://docs.jboss.org/hibernate/stable/search/reference/en/html_single/#lucene-indexing-performance</a><br>

&gt;&gt; &gt;&gt;&gt; )<br>
&gt;&gt; &gt;&gt;&gt; probably need to find the sweet spot for &quot;merge_factor&quot;.<br>
&gt;&gt; &gt;&gt;&gt; I just saw now that MergePolicy is now re-implementable, but I hope<br>
&gt;&gt; &gt;&gt;&gt; that won&#39;t be needed.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Sanne<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; 2009/9/21 Łukasz Moreń &lt;<a href="mailto:lukasz.moren@gmail.com">lukasz.moren@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt; &gt; Hi,<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; I&#39;m wondering if it is reasonable to have multiple threads/nodes<br>
&gt;&gt; &gt;&gt;&gt; &gt; that<br>
&gt;&gt; &gt;&gt;&gt; &gt; modifies indexes in Lucene Directory based on Infinispan? Let&#39;s<br>
&gt;&gt; &gt;&gt;&gt; &gt; assume<br>
&gt;&gt; &gt;&gt;&gt; &gt; that<br>
&gt;&gt; &gt;&gt;&gt; &gt; two nodes try to update index in this same time. First one creates<br>
&gt;&gt; &gt;&gt;&gt; &gt; IndexWriter and obtains<br>
&gt;&gt; &gt;&gt;&gt; &gt; write lock. There is high propability that second node throws<br>
&gt;&gt; &gt;&gt;&gt; &gt; LockObtainFailedException (as one IndexWriter is allowed on single<br>
&gt;&gt; &gt;&gt;&gt; &gt; index)<br>
&gt;&gt; &gt;&gt;&gt; &gt; and index is not modified. How is that? Should be always only one<br>
&gt;&gt; &gt;&gt;&gt; &gt; node<br>
&gt;&gt; &gt;&gt;&gt; &gt; that<br>
&gt;&gt; &gt;&gt;&gt; &gt; makes changes in<br>
&gt;&gt; &gt;&gt;&gt; &gt; the index?<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; Cheers,<br>
&gt;&gt; &gt;&gt;&gt; &gt; Lukasz<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; W dniu 15 września 2009 01:39 użytkownik Łukasz Moreń<br>
&gt;&gt; &gt;&gt;&gt; &gt; &lt;<a href="mailto:lukasz.moren@gmail.com">lukasz.moren@gmail.com</a>&gt; napisał:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; With using JMeter I wanted to check if Infinispan dir does not<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; crash<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; under<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; heavy load in &quot;real&quot; use and check performance in comparison with<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; none/other<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; directories.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; However appeared problem when multiple IndexWriters tries to modify<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; index<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; (test InfinispanDirectoryTest) - random deadlocks, and Lucene<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; exceptions.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; IndexWriter tries to access files in index that were removed<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; before.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; I&#39;m<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; looking into it, but not having good idea.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Concerning the last part, I think similar thing is done in<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; InfinispanDirectoryProviderTest. Many threads are making changes<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; searching (not checking if db is in sync with index).<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; If threads finish their work, with Lucene query I&#39;m checking if<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; index<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; contains as many results as expected. Maybe you meant something<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; else?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Would be good to run each node in different VM.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Great ! Looking forward to it. What state are things in at the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; moment<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; if I want to play around with it ?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Should work with with one master(updates index) and one many slave<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; nodes<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; (sends changes to master). I tried with one master and one slave<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; (both<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; with<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; jms and jgroups backend) and worked ok. Still fails if multiple<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; nodes<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; want<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; to modify index.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; I&#39;ve attached patch with current version.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Cheers,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Łukasz<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; 2009/9/13 Michael Neale &lt;<a href="mailto:michael.neale@gmail.com">michael.neale@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Great ! Looking forward to it. What state are things in at the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; moment<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; if I want to play around with it ?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Sent from my phone.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; On 13/09/2009, at 7:26 PM, Sanne Grinovero<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &lt;<a href="mailto:sanne.grinovero@gmail.com">sanne.grinovero@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; 2009/9/12 Michael Neale &lt;<a href="mailto:michael.neale@gmail.com">michael.neale@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; That does sounds pretty cool. Would be nice if the lucene<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; indexes<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; could scale along with how people will want to use infinispan.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; Probably worth playing with.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; Sure, this is the goal of Łukasz&#39;s work; We know compass has<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; some good Directories, but we&#39;re building our own as one based<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; on Infinispan is not yet available.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; Sent from my phone.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; On 13/09/2009, at 8:37 AM, Jeff Ramsdale<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; &lt;<a href="mailto:jeff.ramsdale@gmail.com">jeff.ramsdale@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; I&#39;m afraid I haven&#39;t followed the Infinispan-Lucene<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; implementation<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; closely, but have you looked at the Compass Project?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; (<a href="http://www.compass-project.org/overview.html" target="_blank">http://www.compass-project.org/overview.html</a>) It provides a<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; simplified interface to Lucene (optional) as well as Directory<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; implementations built on Terracotta, Gigaspaces and Coherence.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; The<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; latter, in particular, might be a useful guide for the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Infinispan<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; implementation. I believe it&#39;s mature enough to have solved<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; many<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; of<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; the most difficult problems of implementing Directory on a<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; distributed<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Map.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; If someone has any experience with Compass (particularly it&#39;s<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Directory implementations) I&#39;d be interested in hearing about<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; it...<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; It&#39;s Apache 2.0 licensed, btw.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; -jeff<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; infinispan-dev mailing list<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; infinispan-dev mailing list<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; infinispan-dev mailing list<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; infinispan-dev mailing list<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>