From 81a14f54cd25f5ba45a66bb381c1ac31dd2c586e Mon Sep 17 00:00:00 2001 From: Mark Robert Miller Date: Mon, 10 Dec 2012 18:55:06 +0000 Subject: [PATCH] stop indexwriter waits on close git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1419665 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/solr/core/CachingDirectoryFactory.java | 2 +- .../org/apache/solr/update/DefaultSolrCoreState.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java index 58acc40a076..cbc9de0ef64 100644 --- a/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java +++ b/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java @@ -116,7 +116,7 @@ public abstract class CachingDirectoryFactory extends DirectoryFactory { while(val.refCnt != 0) { wait(100); - if (cnt++ >= 12000) { + if (cnt++ >= 1200) { log.error("Timeout waiting for all directory ref counts to be released"); break; } diff --git a/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java b/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java index 11b40e2af01..2a1e17fec90 100644 --- a/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java +++ b/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java @@ -84,8 +84,12 @@ public final class DefaultSolrCoreState extends SolrCoreState implements Recover while (pauseWriter) { try { - writerPauseLock.wait(); + writerPauseLock.wait(100); } catch (InterruptedException e) {} + + if (closed) { + throw new RuntimeException("Already closed"); + } } if (indexWriter == null) { @@ -128,8 +132,12 @@ public final class DefaultSolrCoreState extends SolrCoreState implements Recover log.info("Waiting until IndexWriter is unused... core=" + coreName); while (!writerFree) { try { - writerPauseLock.wait(); + writerPauseLock.wait(100); } catch (InterruptedException e) {} + + if (closed) { + throw new RuntimeException("Already closed"); + } } try {