lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yonik Seeley (JIRA)" <>
Subject [jira] [Updated] (SOLR-2700) transaction logging
Date Thu, 11 Aug 2011 20:38:27 GMT


Yonik Seeley updated SOLR-2700:

    Attachment: SOLR-2700.patch

Here's the latest prototype patch. I've hit a bit of an oddity with locking though that causes
TestRealTimeGet to hang.

I put a ReentrantLock around the commit in the update hander.  The test hangs with one or
more of the writer threads blocked on the .lock().

- .unlock is called in a finally block - so it should always get called
- I added a counter that is incremented after the lock and decremented after the unlock. 
it shows "0" in the debugger after the hang, meaning that we unlocked as many times as we
- the *only* place that touches that lock is DUH2.commit()
- if I look into the Sync object inside the ReentrantLock, the state is 1 (meaning locked
I think).  The exclusiveOwnerThread is "main" for some reason.
- I think what I am seeing is that unlock() seems to normally fail to take effect.  The normal
course is that cleanIndex() causes the main thread to do a deleteByQuery + commit, and even
though the print says the lock was released, main retains it and no one else can ever acquire

I can see the output via intellij, but not from the command line (since output seems to be
buffered until the end of the test).

> transaction logging
> -------------------
>                 Key: SOLR-2700
>                 URL:
>             Project: Solr
>          Issue Type: New Feature
>            Reporter: Yonik Seeley
>         Attachments: SOLR-2700.patch, SOLR-2700.patch, SOLR-2700.patch
> A transaction log is needed for durability of updates, for a more performant realtime-get,
and for replaying updates to recovering peers.

This message is automatically generated by JIRA.
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message