_writesWaiting.incrementAndGet();
_writeLock.lock();
_writesWaiting.decrementAndGet();
indexAction.setWritesWaiting(_writesWaiting);
waitUntilNotNull(_writer);
BlurIndexWriter writer = _writer.get();
IndexSearcherClosable indexSearcher = null;
try {
indexSearcher = getIndexSearcher();
indexAction.performMutate(indexSearcher, writer);
indexAction.doPreCommit(indexSearcher, writer);
commit();
indexAction.doPostCommit(writer);
} catch (Exception e) {
indexAction.doPreRollback(writer);
writer.rollback();
openWriter();
indexAction.doPostRollback(writer);
throw new IOException("Unknown error during mutation", e);
} finally {
if (indexSearcher != null) {