You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2016/09/22 13:07:30 UTC
[1/2] lucene-solr:branch_6x: SOLR-9544: Give ObjectReleaseTracker
more time for async closing objects
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6x 7498ca9ad -> 36b39a2c4
refs/heads/master a41dd86e3 -> c55a14e19
SOLR-9544: Give ObjectReleaseTracker more time for async closing objects
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/36b39a2c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/36b39a2c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/36b39a2c
Branch: refs/heads/branch_6x
Commit: 36b39a2c415d812d143ebcbc88d90ecd15754cbb
Parents: 7498ca9
Author: Alan Woodward <ro...@apache.org>
Authored: Wed Sep 21 18:46:52 2016 +0100
Committer: Alan Woodward <ro...@apache.org>
Committed: Thu Sep 22 14:01:12 2016 +0100
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +++
.../solr/util/TestObjectReleaseTracker.java | 12 +++++------
.../solr/common/util/ObjectReleaseTracker.java | 21 ++++++++++++++------
.../java/org/apache/solr/SolrTestCaseJ4.java | 2 +-
4 files changed, 25 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/36b39a2c/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2aeb2b0..ba660b0 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -134,6 +134,9 @@ Other Changes
* SOLR-5563: Move lots of SolrCloud logging from 'info' to 'debug' (janhoy, Alan
Woodward)
+* SOLR-9544: Allow ObjectReleaseTracker more time to check for asynchronously
+ closing resources (Alan Woodward)
+
================== 6.2.1 ==================
Bug Fixes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/36b39a2c/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java b/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
index da50fd8..f7e6943 100644
--- a/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
+++ b/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
@@ -29,12 +29,12 @@ public class TestObjectReleaseTracker extends LuceneTestCase {
public void testObjectReleaseTracker() {
ObjectReleaseTracker.track(new Object());
ObjectReleaseTracker.release(new Object());
- assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
- assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
Object obj = new Object();
ObjectReleaseTracker.track(obj);
ObjectReleaseTracker.release(obj);
- assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
Object obj1 = new Object();
ObjectReleaseTracker.track(obj1);
@@ -46,7 +46,7 @@ public class TestObjectReleaseTracker extends LuceneTestCase {
ObjectReleaseTracker.release(obj1);
ObjectReleaseTracker.release(obj2);
ObjectReleaseTracker.release(obj3);
- assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
ObjectReleaseTracker.track(obj1);
ObjectReleaseTracker.track(obj2);
@@ -55,7 +55,7 @@ public class TestObjectReleaseTracker extends LuceneTestCase {
ObjectReleaseTracker.release(obj1);
ObjectReleaseTracker.release(obj2);
// ObjectReleaseTracker.release(obj3);
- assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
- assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/36b39a2c/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java b/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
index 3fc0546..2d7c1a6 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
@@ -28,6 +28,7 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,8 +57,18 @@ public class ObjectReleaseTracker {
/**
* @return null if ok else error message
*/
- public static String clearObjectTrackerAndCheckEmpty() {
- String result = checkEmpty();
+ public static String clearObjectTrackerAndCheckEmpty(int waitSeconds) {
+ int retries = 0;
+ String result;
+ do {
+ result = checkEmpty();
+ if (result == null)
+ break;
+ try {
+ TimeUnit.SECONDS.sleep(1);
+ } catch (InterruptedException e) { break; }
+ }
+ while (retries++ < waitSeconds);
OBJECTS.clear();
@@ -77,11 +88,9 @@ public class ObjectReleaseTracker {
objects.add(entry.getKey().getClass().getSimpleName());
}
- error = "ObjectTracker found " + entries.size() + " object(s) that were not released!!! " + objects;
-
- System.err.println(error);
+ error = "ObjectTracker found " + entries.size() + " object(s) that were not released!!! " + objects + "\n";
for (Entry<Object,String> entry : entries) {
- System.err.println(entry.getValue());
+ error += entry.getValue() + "\n";
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/36b39a2c/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index c15da95..c990048 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -253,7 +253,7 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
// if the tests passed, make sure everything was closed / released
if (!RandomizedContext.current().getTargetClass().isAnnotationPresent(SuppressObjectReleaseTracker.class)) {
endTrackingSearchers(120, false);
- String orr = ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty();
+ String orr = ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(30);
assertNull(orr, orr);
} else {
endTrackingSearchers(15, false);
[2/2] lucene-solr:master: SOLR-9544: Give ObjectReleaseTracker more
time for async closing objects
Posted by ro...@apache.org.
SOLR-9544: Give ObjectReleaseTracker more time for async closing objects
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c55a14e1
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c55a14e1
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c55a14e1
Branch: refs/heads/master
Commit: c55a14e198072c16a834d5b3683c5edaa0c67e5d
Parents: a41dd86
Author: Alan Woodward <ro...@apache.org>
Authored: Wed Sep 21 18:46:52 2016 +0100
Committer: Alan Woodward <ro...@apache.org>
Committed: Thu Sep 22 14:02:06 2016 +0100
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +++
.../solr/util/TestObjectReleaseTracker.java | 12 +++++------
.../solr/common/util/ObjectReleaseTracker.java | 21 ++++++++++++++------
.../java/org/apache/solr/SolrTestCaseJ4.java | 2 +-
4 files changed, 25 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c55a14e1/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 99bfabc..97eb8bd 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -164,6 +164,9 @@ Other Changes
* SOLR-5563: Move lots of SolrCloud logging from 'info' to 'debug' (janhoy, Alan
Woodward)
+* SOLR-9544: Allow ObjectReleaseTracker more time to check for asynchronously
+ closing resources (Alan Woodward)
+
================== 6.2.1 ==================
Bug Fixes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c55a14e1/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java b/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
index da50fd8..f7e6943 100644
--- a/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
+++ b/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
@@ -29,12 +29,12 @@ public class TestObjectReleaseTracker extends LuceneTestCase {
public void testObjectReleaseTracker() {
ObjectReleaseTracker.track(new Object());
ObjectReleaseTracker.release(new Object());
- assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
- assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
Object obj = new Object();
ObjectReleaseTracker.track(obj);
ObjectReleaseTracker.release(obj);
- assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
Object obj1 = new Object();
ObjectReleaseTracker.track(obj1);
@@ -46,7 +46,7 @@ public class TestObjectReleaseTracker extends LuceneTestCase {
ObjectReleaseTracker.release(obj1);
ObjectReleaseTracker.release(obj2);
ObjectReleaseTracker.release(obj3);
- assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
ObjectReleaseTracker.track(obj1);
ObjectReleaseTracker.track(obj2);
@@ -55,7 +55,7 @@ public class TestObjectReleaseTracker extends LuceneTestCase {
ObjectReleaseTracker.release(obj1);
ObjectReleaseTracker.release(obj2);
// ObjectReleaseTracker.release(obj3);
- assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
- assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(1));
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c55a14e1/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java b/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
index 3fc0546..2d7c1a6 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
@@ -28,6 +28,7 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,8 +57,18 @@ public class ObjectReleaseTracker {
/**
* @return null if ok else error message
*/
- public static String clearObjectTrackerAndCheckEmpty() {
- String result = checkEmpty();
+ public static String clearObjectTrackerAndCheckEmpty(int waitSeconds) {
+ int retries = 0;
+ String result;
+ do {
+ result = checkEmpty();
+ if (result == null)
+ break;
+ try {
+ TimeUnit.SECONDS.sleep(1);
+ } catch (InterruptedException e) { break; }
+ }
+ while (retries++ < waitSeconds);
OBJECTS.clear();
@@ -77,11 +88,9 @@ public class ObjectReleaseTracker {
objects.add(entry.getKey().getClass().getSimpleName());
}
- error = "ObjectTracker found " + entries.size() + " object(s) that were not released!!! " + objects;
-
- System.err.println(error);
+ error = "ObjectTracker found " + entries.size() + " object(s) that were not released!!! " + objects + "\n";
for (Entry<Object,String> entry : entries) {
- System.err.println(entry.getValue());
+ error += entry.getValue() + "\n";
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c55a14e1/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index ea70805..fca0223 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -253,7 +253,7 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
// if the tests passed, make sure everything was closed / released
if (!RandomizedContext.current().getTargetClass().isAnnotationPresent(SuppressObjectReleaseTracker.class)) {
endTrackingSearchers(120, false);
- String orr = ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty();
+ String orr = ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty(30);
assertNull(orr, orr);
} else {
endTrackingSearchers(15, false);