diff --git a/kaldb/src/main/java/com/slack/kaldb/logstore/LuceneIndexStoreImpl.java b/kaldb/src/main/java/com/slack/kaldb/logstore/LuceneIndexStoreImpl.java index f60d8a93b6..935056bd3c 100644 --- a/kaldb/src/main/java/com/slack/kaldb/logstore/LuceneIndexStoreImpl.java +++ b/kaldb/src/main/java/com/slack/kaldb/logstore/LuceneIndexStoreImpl.java @@ -257,11 +257,16 @@ private void handleNonFatal(Throwable ex) { public void addMessage(LogMessage message) { try { messagesReceivedCounter.increment(); - if (indexWriter.isPresent()) { - indexWriter.get().addDocument(documentBuilder.fromMessage(message)); - } else { - LOG.error("IndexWriter should never be null when adding a message"); - throw new IllegalStateException("IndexWriter should never be null when adding a message"); + indexWriterLock.lock(); + try { + if (indexWriter.isPresent()) { + indexWriter.get().addDocument(documentBuilder.fromMessage(message)); + } else { + LOG.error("IndexWriter should never be null when adding a message"); + throw new IllegalStateException("IndexWriter should never be null when adding a message"); + } + } finally { + indexWriterLock.unlock(); } } catch (FieldDefMismatchException | IllegalArgumentException e) { LOG.error(String.format("Indexing message %s failed with error:", message), e);