Sanne,<br /><br />That error looks suspiciously familiar to an old Lucene error they had. Could they have regressed?<br /><br />John Griffin<br /><br />On Sep 27, 2009 2:00pm, Łukasz Moreń &lt;lukasz.moren@gmail.com&gt; wrote:<br />&gt; 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 />&gt; <br />&gt; An example stacktrace is:<br />&gt; <br />&gt; <br />&gt; 21:22:44,441 ERROR InfinispanDirectoryTest:142 - Error<br />&gt; java.io.IOException: File [ segments_nl ] for index [ indexName ] was not found<br />&gt;     at org.hibernate.search.store.infinispan.InfinispanIndexIO$InfinispanIndexInput.(InfinispanIndexIO.java:79)<br />&gt; <br />&gt;     at org.hibernate.search.store.infinispan.InfinispanDirectory.openInput(InfinispanDirectory.java:201)<br />&gt;     at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:214)<br />&gt;     at org.apache.lucene.index.DirectoryIndexReader$1.doBody(DirectoryIndexReader.java:95)<br />&gt; <br />&gt;     at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:653)<br />&gt;     at org.apache.lucene.index.DirectoryIndexReader.open(DirectoryIndexReader.java:115)<br />&gt;     at org.apache.lucene.index.IndexReader.open(IndexReader.java:316)<br />&gt; <br />&gt;     at org.apache.lucene.index.IndexReader.open(IndexReader.java:227)<br />&gt;     at org.apache.lucene.search.IndexSearcher.(IndexSearcher.java:55)<br />&gt;     at org.hibernate.search.test.directoryProvider.infinispan.CacheTestSupport.doReadOperation(CacheTestSupport.java:106)<br />&gt; <br />&gt;     at org.hibernate.search.test.directoryProvider.infinispan.InfinispanDirectoryTest$InfinispanDirectoryThread.run(InfinispanDirectoryTest.java:130)<br />&gt; <br />&gt; Cheers,<br />&gt; Lukasz<br />&gt; <br />&gt; 2009/9/27 Sanne Grinovero sanne.grinovero@gmail.com&gt;<br />&gt; <br />&gt; Hi Łukasz,<br />&gt; <br />&gt; I&#39;m unable to reproduce the problem, you said it happens randomly:<br />&gt; <br />&gt; I&#39;ve tried several times<br />&gt; <br />&gt; and I&#39;m not getting errors. Do you know something I could do to make it happen?<br />&gt; <br />&gt; Could you share a stacktrace?<br />&gt; <br />&gt; <br />&gt; <br />&gt; Anyway if you are confident it&#39;s about the segments getting lost when<br />&gt; <br />&gt; they are still being read,<br />&gt; <br />&gt; you could introduce a per-segment counter of usage; like it starts at<br />&gt; <br />&gt; value 1 to mark the segment<br />&gt; <br />&gt; as &quot;most current&quot;, gets a +1 vote at each reader opening it, -1<br />&gt; <br />&gt; closing, and -1 deleting.<br />&gt; <br />&gt; Each decrement method should check for the value reaching 0 to really delete it,<br />&gt; <br />&gt; and this counting method would be easy to add inside the Directory.<br />&gt; <br />&gt; When opening a new indexReader, you<br />&gt; <br />&gt; 1) get the SegmentsInfo<br />&gt; <br />&gt; 2) increment all counters (eager-lock, verify&gt;0 or retry : set changed<br />&gt; <br />&gt; counters back and get a new SegmentsInfo--&gt;1)<br />&gt; <br />&gt; 3) get the needed segments<br />&gt; <br />&gt; <br />&gt; <br />&gt; Getting a counter should be much faster than getting a segment in case<br />&gt; <br />&gt; the data is downloaded<br />&gt; <br />&gt; from another node, so we can use a different key while still relating<br />&gt; <br />&gt; to the segment.<br />&gt; <br />&gt; <br />&gt; <br />&gt; Sanne<br />&gt; <br />&gt; <br />&gt; <br />&gt; 2009/9/23 Łukasz Moreń lukasz.moren@gmail.com&gt;:<br />&gt; <br />&gt; <br />&gt; &gt; I agree that Infinispan case is not much different from RamDirectory. The<br />&gt; <br />&gt; &gt; major difference is that in RD (also FileDirectory) changes are not batched<br />&gt; <br />&gt; &gt; like in ID. If I do not wrap changes in InfinispanDirectory(simple remove<br />&gt; <br />&gt; &gt; tx.begin() from obtain() method and tx.commit() from release() in<br />&gt; <br />&gt; &gt; InfinispanLock), and immediately commit every change made by IW it works<br />&gt; <br />&gt; &gt; well. Hovewer it makes indexing really slower, because of frequent<br />&gt; <br />&gt; &gt; replication to other nodes.<br />&gt; <br />&gt; &gt; Sanne it&#39;s good remark that IW commit is kind of flush.<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt; I&#39;ve attached patch with InfinispanDirectory, failing test is<br />&gt; <br />&gt; &gt; testDirectoryWithMultipleThreads in InfinispanDirectoryTest class. It fails<br />&gt; <br />&gt; &gt; randomly. I think problem is Infinispan commit on lockRelease() in<br />&gt; <br />&gt; &gt; org.apache.lucene.index.IndexWriter (line 1658) is after IW commit() (line<br />&gt; <br />&gt; &gt; 1654).<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; Is it because, the IndexWriter only clean files if no indexReaders are<br />&gt; <br />&gt; &gt;&gt; reading them (how would that be detected)?<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt; It can happen if IndexWriter clean file, and IndexReader try to access that<br />&gt; <br />&gt; &gt; cleaned file.<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt; 2009/9/23 Sanne Grinovero sanne.grinovero@gmail.com&gt;<br />&gt; <br />&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; I agree It should work the same way; The IndexWriter cleans files<br />&gt; <br />&gt; &gt;&gt; whenever it likes to, it doesn&#39;t try to detect readers, and this<br />&gt; <br />&gt; &gt;&gt; shouldn&#39;t have any effect on the working of readers.<br />&gt; <br />&gt; &gt;&gt; The IndexReader opens the &quot;SegmentsInfo&quot; first, and immediately<br />&gt; <br />&gt; &gt;&gt; after** gets a reference to the segments listed in this SegmentsInfo.<br />&gt; <br />&gt; &gt;&gt; No IndexWriter will ever change an existing segment, only add new<br />&gt; <br />&gt; &gt;&gt; files or eventually delete old ones (segments merge,optimize).<br />&gt; <br />&gt; &gt;&gt; The deletion of segments is the interesting subject: when using Files<br />&gt; <br />&gt; &gt;&gt; it uses &quot;delete at last close&quot;, which works because the IR needing it<br />&gt; <br />&gt; &gt;&gt; have it opened already**; when using the RAMDirectory they have a<br />&gt; <br />&gt; &gt;&gt; reference preventing garbage collection.<br />&gt; <br />&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; ( the two &quot;**&quot; are assuming the same event occurred correctly,<br />&gt; <br />&gt; &gt;&gt; otherwise an exception is thrown at opening)<br />&gt; <br />&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; When using Infinispan it shouldn&#39;t be much different than the<br />&gt; <br />&gt; &gt;&gt; RAMDirectory? so even if the needed segment is deleted, the IR holds a<br />&gt; <br />&gt; &gt;&gt; reference to the Java object locally since it was opened.<br />&gt; <br />&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt;  Łukcasz, do you have some failing test?<br />&gt; <br />&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; Sanne<br />&gt; <br />&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; 2009/9/23 Emmanuel Bernard emmanuel@hibernate.org&gt;:<br />&gt; <br />&gt; &gt;&gt; &gt; Conceptually I don&#39;t understand why it does work in a pure file system<br />&gt; <br />&gt; &gt;&gt; &gt; directory (ie IndexReader can go and process queries with the<br />&gt; <br />&gt; &gt;&gt; &gt; IndexWriter<br />&gt; <br />&gt; &gt;&gt; &gt; goes about its business) and not when using Infinispan.<br />&gt; <br />&gt; &gt;&gt; &gt; Is it because, the IndexWriter only clean files if no indexReaders are<br />&gt; <br />&gt; &gt;&gt; &gt; reading them (how would that be detected)?<br />&gt; <br />&gt; &gt;&gt; &gt; On 22 sept. 09, at 20:46, Łukasz Moreń wrote:<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt; I need to provide this same lifecycle for IndexWriter as for Infinispan<br />&gt; <br />&gt; &gt;&gt; &gt; tx -<br />&gt; <br />&gt; &gt;&gt; &gt; IW is created: tx is started, IW is commited: tx is commited. It assures<br />&gt; <br />&gt; &gt;&gt; &gt; that IndexReader doesn&#39;t read old data from directory.<br />&gt; <br />&gt; &gt;&gt; &gt; Infinispan transaction can be started when IW acquires the lock, but its<br />&gt; <br />&gt; &gt;&gt; &gt; commit on IW lock release, as it is done so far, causes a problem:<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt; index writer close {<br />&gt; <br />&gt; &gt;&gt; &gt;   index writer commit(); //changes are visible for IndexReaders<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;        //Index reader starts reading here, i.e. tries to access file &quot;A&quot;<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;   index writer lockRelease(); //changes in Infinispan directory are<br />&gt; <br />&gt; &gt;&gt; &gt; commited, file &quot;A&quot; was removed, IndexReader cannot find it and crashes<br />&gt; <br />&gt; &gt;&gt; &gt; }<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt; I think Infinispan tx have to be commited just before IW commit, and the<br />&gt; <br />&gt; &gt;&gt; &gt; problem is where to put in code.<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt; W dniu 22 września 2009 18:24 użytkownik Emmanuel Bernard<br />&gt; <br />&gt; &gt;&gt; &gt; emmanuel@hibernate.org&gt; napisał:<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; Can you explain in more details what is going on.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; Aside from that Workspace has been Sanne&#39;s baby lately so he will be<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; the<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; best to see what design will work in HSearch. That being said, I don&#39;t<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; like<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; the idea of subclassing / overriding very much. In my experience, it<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; has<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; lead to more bad and unmaintainable code than anything else.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; On 22 sept. 09, at 02:16, Łukasz Moreń wrote:<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; Hi,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; Thanks for explanation.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; Maybe better I will concentrate on the first release and postpone<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; distributed writing.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; There is already LockStrategy that uses Infinispan. With using it I was<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; wrapping changes made by IndexWriter in Infinispan transaction, because<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; of<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; performance reasons -<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; on lock obtaining transaction was started, on lock release transaction<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; was<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; commited. Hovewer Ispn transaction commit on lock release is not good<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; idea<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; since IndexWriter calls index commit before lock is released(and ispn<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; transaction is committed).<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; I was thinking to override Workspace class and getIndexWriter(start<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; infinispan tx), commitIndexWriter (commit tx) methods to wrap<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; IndexWrite<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; lifecycle, but this needs few other changes. Some other ideas?<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; Cheers,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; Lukasz<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt; 2009/9/21 Sanne Grinovero sanne.grinovero@gmail.com&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; Hi Łukasz,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; you&#39;ve rightful concerns, because the way the IndexWriter tries to<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; achieve the lock<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; that will bring some trouble; As far as I remember we decided in this<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; first release<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; to avoid multiple writer nodes because of this reasons<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; (that&#39;s written in your docs?)<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; Actually it shouldn&#39;t be very hard to do, as the LockStrategy is<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; pluggable (see changes from HSEARCH-345)<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; and you could implement one delegating to an Infinispan eager lock on<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; some key,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; like the default LockStrategy takes a file lock in the index<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; directory.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; Maybe it&#39;s simpler to support this distributed writing instead of<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; sending the queue to some single<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; (elected) node? Would be cool, as the Document Analysis effort would<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; be distributed,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; but I have no idea if this would be more or less efficient than a<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; single node writing; it could<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; bring some huge data transfers along the wire during segments merging<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; (basically fetching<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; the whole index data at each node performing a segment merge); maybe<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; you&#39;ll need to<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; play with IndexWriter settings (<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; http://docs.jboss.org/hibernate/stable/search/reference/en/html_single/#lucene-indexing-performance<br />&gt; <br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; )<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; probably need to find the sweet spot for &quot;merge_factor&quot;.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; I just saw now that MergePolicy is now re-implementable, but I hope<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; that won&#39;t be needed.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; Sanne<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; 2009/9/21 Łukasz Moreń lukasz.moren@gmail.com&gt;:<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; Hi,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; I&#39;m wondering if it is reasonable to have multiple threads/nodes<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; that<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; modifies indexes in Lucene Directory based on Infinispan? Let&#39;s<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; assume<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; that<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; two nodes try to update index in this same time. First one creates<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; IndexWriter and obtains<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; write lock. There is high propability that second node throws<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; LockObtainFailedException (as one IndexWriter is allowed on single<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; index)<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; and index is not modified. How is that? Should be always only one<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; node<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; that<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; makes changes in<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; the index?<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; Cheers,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; Lukasz<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; W dniu 15 września 2009 01:39 użytkownik Łukasz Moreń<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt; lukasz.moren@gmail.com&gt; napisał:<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Hi,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; With using JMeter I wanted to check if Infinispan dir does not<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; crash<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; under<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; heavy load in &quot;real&quot; use and check performance in comparison with<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; none/other<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; directories.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; However appeared problem when multiple IndexWriters tries to modify<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; index<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; (test InfinispanDirectoryTest) - random deadlocks, and Lucene<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; exceptions.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; IndexWriter tries to access files in index that were removed<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; before.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; I&#39;m<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; looking into it, but not having good idea.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Concerning the last part, I think similar thing is done in<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; InfinispanDirectoryProviderTest. Many threads are making changes<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; and<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; searching (not checking if db is in sync with index).<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; If threads finish their work, with Lucene query I&#39;m checking if<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; index<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; contains as many results as expected. Maybe you meant something<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; else?<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Would be good to run each node in different VM.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Great ! Looking forward to it. What state are things in at the<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; moment<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; if I want to play around with it ?<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Should work with with one master(updates index) and one many slave<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; nodes<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; (sends changes to master). I tried with one master and one slave<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; (both<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; with<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; jms and jgroups backend) and worked ok. Still fails if multiple<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; nodes<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; want<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to modify index.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; I&#39;ve attached patch with current version.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Cheers,<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Łukasz<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; 2009/9/13 Michael Neale michael.neale@gmail.com&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Great ! Looking forward to it. What state are things in at the<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; moment<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; if I want to play around with it ?<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Sent from my phone.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; On 13/09/2009, at 7:26 PM, Sanne Grinovero<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; sanne.grinovero@gmail.com&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; wrote:<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; 2009/9/12 Michael Neale michael.neale@gmail.com&gt;:<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; That does sounds pretty cool. Would be nice if the lucene<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; indexes<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; could scale along with how people will want to use infinispan.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; Probably worth playing with.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;<br />&gt; <br />&gt; &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; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; some good Directories, but we&#39;re building our own as one based<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; on Infinispan is not yet available.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; Sent from my phone.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; On 13/09/2009, at 8:37 AM, Jeff Ramsdale<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; jeff.ramsdale@gmail.com&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; wrote:<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &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; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; implementation<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; closely, but have you looked at the Compass Project?<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; (http://www.compass-project.org/overview.html) It provides a<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; simplified interface to Lucene (optional) as well as Directory<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; implementations built on Terracotta, Gigaspaces and Coherence.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; The<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; latter, in particular, might be a useful guide for the<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Infinispan<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; implementation. I believe it&#39;s mature enough to have solved<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; many<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; of<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; the most difficult problems of implementing Directory on a<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; distributed<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Map.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; If someone has any experience with Compass (particularly it&#39;s<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Directory implementations) I&#39;d be interested in hearing about<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; it...<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; It&#39;s Apache 2.0 licensed, btw.<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; -jeff<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; _______________________________________________<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; infinispan-dev mailing list<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; infinispan-dev@lists.jboss.org<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; _______________________________________________<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; infinispan-dev mailing list<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; infinispan-dev@lists.jboss.org<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; _______________________________________________<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; infinispan-dev mailing list<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; infinispan-dev@lists.jboss.org<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; &gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; _______________________________________________<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; infinispan-dev mailing list<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; infinispan-dev@lists.jboss.org<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;&gt; &gt;<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; <br />&gt; <br />&gt; <br />&gt; <br />&gt;