You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2015/05/25 14:49:01 UTC
svn commit: r1681586 - in /lucene/dev/branches/branch_5x: ./ solr/
solr/core/ solr/core/src/test/org/apache/solr/util/ solr/solrj/
solr/solrj/src/java/org/apache/solr/common/util/ solr/test-framework/
solr/test-framework/src/java/org/apache/solr/
Author: markrmiller
Date: Mon May 25 12:49:01 2015
New Revision: 1681586
URL: http://svn.apache.org/r1681586
Log:
SOLR-7589: A few improvements to the ObjectReleaseTracker to make test fail debugging a little easier.
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/core/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
lucene/dev/branches/branch_5x/solr/solrj/ (props changed)
lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
lucene/dev/branches/branch_5x/solr/test-framework/ (props changed)
lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java?rev=1681586&r1=1681585&r2=1681586&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/TestObjectReleaseTracker.java Mon May 25 12:49:01 2015
@@ -30,12 +30,12 @@ public class TestObjectReleaseTracker ex
public void testObjectReleaseTracker() {
ObjectReleaseTracker.track(new Object());
ObjectReleaseTracker.release(new Object());
- assertFalse(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
- assertTrue(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
Object obj = new Object();
ObjectReleaseTracker.track(obj);
ObjectReleaseTracker.release(obj);
- assertTrue(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
Object obj1 = new Object();
ObjectReleaseTracker.track(obj1);
@@ -47,7 +47,7 @@ public class TestObjectReleaseTracker ex
ObjectReleaseTracker.release(obj1);
ObjectReleaseTracker.release(obj2);
ObjectReleaseTracker.release(obj3);
- assertTrue(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
ObjectReleaseTracker.track(obj1);
ObjectReleaseTracker.track(obj2);
@@ -56,7 +56,7 @@ public class TestObjectReleaseTracker ex
ObjectReleaseTracker.release(obj1);
ObjectReleaseTracker.release(obj2);
// ObjectReleaseTracker.release(obj3);
- assertFalse(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
- assertTrue(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNotNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
}
}
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java?rev=1681586&r1=1681585&r2=1681586&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ObjectReleaseTracker.java Mon May 25 12:49:01 2015
@@ -19,6 +19,7 @@ package org.apache.solr.common.util;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -40,20 +41,30 @@ public class ObjectReleaseTracker {
return true;
}
- public static boolean clearObjectTrackerAndCheckEmpty() {
+ /**
+ * @return null if ok else error message
+ */
+ public static String clearObjectTrackerAndCheckEmpty() {
+ String error = null;
Set<Entry<Object,String>> entries = OBJECTS.entrySet();
boolean empty = entries.isEmpty();
if (entries.size() > 0) {
- System.err.println("ObjectTracker found objects that were not released!!!");
- }
-
- for (Entry<Object,String> entry : entries) {
- System.err.println(entry.getValue());
+ Set<String> objects = new HashSet<>();
+ for (Entry<Object,String> entry : entries) {
+ objects.add(entry.getKey().getClass().getSimpleName());
+ }
+
+ error = "ObjectTracker found " + entries.size() + " object(s) that were not released!!! " + objects;
+
+ System.err.println(error);
+ for (Entry<Object,String> entry : entries) {
+ System.err.println(entry.getValue());
+ }
}
OBJECTS.clear();
- return empty;
+ return error;
}
private static class ObjectTrackerException extends RuntimeException {
Modified: lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java?rev=1681586&r1=1681585&r2=1681586&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java Mon May 25 12:49:01 2015
@@ -230,11 +230,12 @@ public abstract class SolrTestCaseJ4 ext
deleteCore();
resetExceptionIgnores();
endTrackingSearchers();
+ String orr = ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty();
if (!RandomizedContext.current().getTargetClass().isAnnotationPresent(SuppressObjectReleaseTracker.class)) {
- assertTrue("Some resources were not closed, shutdown, or released.", ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty());
+ assertNull(orr, orr);
} else {
- if (!ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty()) {
- log.warn("Some resources were not closed, shutdown, or released. Remove the SuppressObjectReleaseTracker annotation to get more information on the fail.");
+ if (orr != null) {
+ log.warn("Some resources were not closed, shutdown, or released. This has been ignored due to the SuppressObjectReleaseTracker annotation.");
}
}
resetFactory();