I'm not seeing anything there that would synchronize, or serialize, the
read after the write and commit. Did you expect that for some reason?

On Fri, Nov 9, 2018, 6:00 AM Boris Petrov <boris_pet...@live.com wrote:

> Hi all,
>
> I'm using Lucene version 7.5.0. We have a test that does something like:
>
> Thread 1:
>
>             Field idStringField = new StringField("id", id,
> Field.Store.YES);
>             Field contentsField = new TextField("contents", reader);
>             Document document = new Document();
>             document.add(idStringField);
>             document.add(contentsField);
>
>             writer.updateDocument(new Term(ID_FIELD, id), document);
>             writer.flush(); // not sure this flush is needed?
>             writer.commit();
>
> Thread 2:
>
>             searchManager.maybeRefreshBlocking();
>             IndexSearcher searcher = searchManager.acquire();
>             try {
>                 QueryParser parser = new QueryParser("contents", analyzer);
>                 Query luceneQuery = parser.parse(queryText);
>                 ScoreDoc[] hits = searcher.search(luceneQuery,
> 50).scoreDocs;
>             } finally {
>                 searchManager.release(searcher);
>             }
>
> Thread 1 happens before Thread 2.
>
> Sometimes, only sometimes, the commit from thread 1 is not *immediately*
> visible in Thread 2. If I put a "Thread.sleep(1000)" it always works.
> Without it, sometimes the search is empty. I'm not sure if I'm doing
> something wrong or this is a bug?
>
> Thanks!
>
>

Reply via email to