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 2020/09/16 18:33:20 UTC
[lucene-solr] branch reference_impl_dev updated: @835 Cleanup.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/reference_impl_dev by this push:
new 7bb5485 @835 Cleanup.
7bb5485 is described below
commit 7bb5485544d27dae5533a087232ef2b2f3e79da8
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Wed Sep 16 13:32:46 2020 -0500
@835 Cleanup.
---
.../client/solrj/embedded/JettySolrRunner.java | 2 +-
.../org/apache/solr/cloud/ReplicateFromLeader.java | 2 +-
.../solr/cloud/ShardLeaderElectionContext.java | 2 +-
.../org/apache/solr/cloud/ZkCollectionTerms.java | 2 +-
.../java/org/apache/solr/cloud/ZkShardTerms.java | 2 +-
.../OverseerCollectionMessageHandler.java | 2 +-
.../cloud/autoscaling/OverseerTriggerThread.java | 2 +-
.../solr/cloud/autoscaling/ScheduledTriggers.java | 2 +-
.../cloud/autoscaling/sim/SimCloudManager.java | 4 ++--
.../java/org/apache/solr/schema/IndexSchema.java | 6 +++---
.../java/org/apache/solr/update/CommitTracker.java | 2 +-
.../apache/solr/update/DirectUpdateHandler2.java | 2 +-
.../java/org/apache/solr/update/UpdateHandler.java | 2 +-
.../src/java/org/apache/solr/update/UpdateLog.java | 2 +-
.../client/solrj/impl/CloudHttp2SolrClient.java | 2 +-
.../solr/client/solrj/impl/CloudSolrClient.java | 2 +-
.../solrj/impl/ConcurrentUpdateSolrClient.java | 5 +++--
.../solr/client/solrj/impl/Http2SolrClient.java | 10 +++++----
.../solrj/impl/HttpClusterStateProvider.java | 2 +-
.../solr/client/solrj/impl/LBHttpSolrClient.java | 4 ++--
.../org/apache/solr/common/cloud/SolrZkClient.java | 2 +-
.../solr/common/params/DefaultSolrParams.java | 2 +-
.../org/apache/solr/common/params/SolrParams.java | 2 +-
.../solr/common/util/ObjectReleaseTracker.java | 24 +++++++++++++++++++---
.../apache/solr/common/util/ValidatingJsonMap.java | 2 +-
solr/solrj/src/java/org/noggit/JSONParser.java | 4 ++--
.../solrj/impl/CloudHttp2SolrClientTest.java | 14 +++++--------
.../impl/Http2SolrClientCompatibilityTest.java | 1 +
.../solrj/io/stream/StreamDecoratorTest.java | 1 +
solr/solrj/src/test/org/noggit/TestJSONParser.java | 2 +-
.../apache/solr/cloud/MiniSolrCloudCluster.java | 2 +-
.../java/org/apache/solr/cloud/ZkTestServer.java | 6 +++---
32 files changed, 70 insertions(+), 51 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
index cf4c75f..361bd76 100644
--- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
+++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
@@ -339,7 +339,7 @@ public class JettySolrRunner implements Closeable {
HTTP2ServerConnectionFactory http2ConnectionFactory = new HTTP2ServerConnectionFactory(configuration);
- http2ConnectionFactory.setMaxConcurrentStreams(16);
+ http2ConnectionFactory.setMaxConcurrentStreams(64);
http2ConnectionFactory.setInputBufferSize(4096);
ALPNServerConnectionFactory alpn = new ALPNServerConnectionFactory(
diff --git a/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java b/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java
index 44308df..78be024 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java
@@ -50,7 +50,7 @@ public class ReplicateFromLeader implements Closeable {
private volatile long lastVersion = 0;
public ReplicateFromLeader(CoreContainer cc, String coreName) {
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
this.cc = cc;
this.coreName = coreName;
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java
index 6fa82f2..8144e56 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java
@@ -73,7 +73,7 @@ final class ShardLeaderElectionContext extends ShardLeaderElectionContextBase {
+ "/leader_elect/" + shardId, ZkStateReader.getShardLeadersPath(
collection, shardId), props,
zkController.getZkClient());
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
this.cc = cc;
this.syncStrategy = new SyncStrategy(cc);
this.shardId = shardId;
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java b/solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java
index 52f36fe..d90b062 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java
@@ -38,7 +38,7 @@ class ZkCollectionTerms implements AutoCloseable {
this.collection = collection;
this.terms = new HashMap<>();
this.zkClient = client;
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java b/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
index 2d2bc6b..99ac563 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
@@ -105,7 +105,7 @@ public class ZkShardTerms implements AutoCloseable{
this.shard = shard;
this.zkClient = zkClient;
registerWatcher();
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
/**
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
index cc1ce56..d6cb547 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
@@ -194,7 +194,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler,
Stats stats,
Overseer overseer,
OverseerNodePrioritizer overseerPrioritizer) {
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
this.zkStateReader = zkStateReader;
this.shardHandlerFactory = shardHandlerFactory;
this.adminPath = adminPath;
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
index b552218..42b68d3 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
@@ -92,7 +92,7 @@ public class OverseerTriggerThread implements Runnable, SolrCloseable {
this.cloudManager = cloudManager;
scheduledTriggers = new ScheduledTriggers(loader, cloudManager);
triggerFactory = new AutoScaling.TriggerFactoryImpl(loader, cloudManager);
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
@Override
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
index 4afa3dd..3a4e6bf 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
@@ -153,7 +153,7 @@ public class ScheduledTriggers implements Closeable {
listeners = new TriggerListeners();
// initialize cooldown timer
cooldownStart.set(cloudManager.getTimeSource().getTimeNs() - cooldownPeriod.get());
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
/**
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
index 2b1dee1..5d3c8ff 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
@@ -177,7 +177,7 @@ public class SimCloudManager implements SolrCloudManager {
}
SimCloudManager(TimeSource timeSource, SimDistribStateManager distribStateManager) throws Exception {
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
this.loader = new SolrResourceLoader();
if (distribStateManager == null) {
this.stateManager = new SimDistribStateManager(SimDistribStateManager.createNewRootNode());
@@ -272,7 +272,7 @@ public class SimCloudManager implements SolrCloudManager {
triggerThread = new Overseer.OverseerThread(triggerThreadGroup, trigger, "Simulated OverseerAutoScalingTriggerThread");
triggerThread.start();
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
// ---------- simulator setup methods -----------
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index 1304640..40590ad 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -240,10 +240,10 @@ public class IndexSchema {
protected final SolrResourceLoader loader;
protected final Properties substitutableProperties;
- // some code will add fields after construction, needs to be thread safe
- protected volatile Map<String,SchemaField> fields = new ConcurrentHashMap<>(16);
+ // some code will add fields after construction, needs to be thread safe (unless we get the schema lock fully correct)
+ protected volatile Map<String,SchemaField> fields = new ConcurrentHashMap<>(32);
- protected volatile Map<String,FieldType> fieldTypes = new ConcurrentHashMap<>(64);
+ protected volatile Map<String,FieldType> fieldTypes = new ConcurrentHashMap<>(32);
protected volatile Set<SchemaField> fieldsWithDefaultValue = ConcurrentHashMap.newKeySet(16);
protected volatile Collection<SchemaField> requiredFields = ConcurrentHashMap.newKeySet(16);
diff --git a/solr/core/src/java/org/apache/solr/update/CommitTracker.java b/solr/core/src/java/org/apache/solr/update/CommitTracker.java
index 944b1a0..0184184 100644
--- a/solr/core/src/java/org/apache/solr/update/CommitTracker.java
+++ b/solr/core/src/java/org/apache/solr/update/CommitTracker.java
@@ -95,7 +95,7 @@ public final class CommitTracker implements Runnable, Closeable {
this.openSearcher = openSearcher;
log.info("{} AutoCommit: {}", name, this);
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
public boolean getOpenSearcher() {
diff --git a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
index 5ed024a..742c838 100644
--- a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
+++ b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
@@ -141,7 +141,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
commitWithinSoftCommit = false;
commitTracker.setOpenSearcher(true);
}
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
public DirectUpdateHandler2(SolrCore core, UpdateHandler updateHandler) {
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 0baa28e..2143f8f 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -128,7 +128,7 @@ UpdateHandler implements SolrInfoBean, Closeable {
public UpdateHandler(SolrCore core, UpdateLog updateLog) {
UpdateLog ourUpdateLog = null;
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
try {
this.core = core;
CoreDescriptor cd = core.getCoreDescriptor();
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
index a75bbc2..a838423 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
@@ -379,7 +379,7 @@ public class UpdateLog implements PluginInfoInitialized, SolrMetricProducer {
if (dataDir != null) {
ObjectReleaseTracker.release(this);
}
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
try {
dataDir = core.getUlogDir();
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
index 014b1bd..87bf8f7 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
@@ -104,7 +104,7 @@ public class CloudHttp2SolrClient extends BaseCloudSolrClient {
}
this.myClient = (builder.httpClient == null) ? new Http2SolrClient.Builder().withHeaders(builder.headers).build() : builder.httpClient;
this.lbClient = new LBHttp2SolrClient(myClient);
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
// called to clean-up objects created by super if there are errors during initialization
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
index 76514ff..e457074 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
@@ -118,7 +118,7 @@ public class CloudSolrClient extends BaseCloudSolrClient {
this.myClient = (builder.httpClient == null) ? HttpClientUtil.createClient(null) : builder.httpClient;
if (builder.loadBalancedSolrClient == null) builder.loadBalancedSolrClient = createLBHttpSolrClient(builder, myClient);
this.lbClient = builder.loadBalancedSolrClient;
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
// called to clean-up objects created by super if there are errors during initialization
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
index 936c27b..061b652 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
@@ -53,6 +53,7 @@ import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.ExecutorUtil;
+import org.apache.solr.common.util.FastOutputStream;
import org.apache.solr.common.util.IOUtils;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SolrNamedThreadFactory;
@@ -256,8 +257,8 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
EntityTemplate template = new EntityTemplate(new ContentProducer() {
@Override
- public void writeTo(OutputStream out) throws IOException {
-
+ public void writeTo(OutputStream outputStream) throws IOException {
+ FastOutputStream out = FastOutputStream.wrap(outputStream);
if (isXml) {
out.write("<stream>".getBytes(StandardCharsets.UTF_8)); // can be anything
}
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
index b02cf0f..81863b9 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
@@ -199,11 +199,13 @@ public class Http2SolrClient extends SolrClient {
private HttpClient createHttpClient(Builder builder) {
HttpClient httpClient;
- SslContextFactory.Client sslContextFactory;
- boolean ssl;
+ SslContextFactory.Client sslContextFactory = null;
+ boolean ssl = false;
if (builder.sslConfig == null) {
- sslContextFactory = getDefaultSslContextFactory();
- ssl = sslContextFactory.getTrustStore() != null || sslContextFactory.getTrustStorePath() != null;
+ if (System.getProperty("javax.net.ssl.trustStore") != null || System.getProperty("javax.net.ssl.keyStore") != null) {
+ sslContextFactory = getDefaultSslContextFactory();
+ ssl = sslContextFactory.getTrustStore() != null || sslContextFactory.getTrustStorePath() != null;
+ }
} else {
sslContextFactory = builder.sslConfig.createClientContextFactory();
ssl = true;
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClusterStateProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClusterStateProvider.java
index 0f7f886..102d269 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClusterStateProvider.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClusterStateProvider.java
@@ -30,7 +30,7 @@ public class HttpClusterStateProvider extends BaseHttpClusterStateProvider {
private final boolean clientIsInternal;
public HttpClusterStateProvider(List<String> solrUrls, HttpClient httpClient) throws Exception {
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
if (httpClient == null) {
this.clientIsInternal = true;
this.httpClient = HttpClientUtil.createClient(null);
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
index 9f69d0c..3d9a36d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
@@ -136,7 +136,7 @@ public class LBHttpSolrClient extends LBSolrClient {
// nocommit
public LBHttpSolrClient(Http2SolrClient solrClient) {
super(Collections.emptyList());
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
this.solrClient = solrClient;
this.httpSolrClientBuilder = null;
this.http2SolrClientBuilder = null;
@@ -147,7 +147,7 @@ public class LBHttpSolrClient extends LBSolrClient {
protected LBHttpSolrClient(Builder builder) {
super(builder.baseSolrUrls);
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
this.solrClient = null;
this.httpSolrClientBuilder = builder.httpSolrClientBuilder;
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java b/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
index 86ad75c..f8f6cc4 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
@@ -141,7 +141,7 @@ public class SolrZkClient implements Closeable {
}
public SolrZkClient(String zkServerAddress, int zkClientTimeout, int clientConnectTimeout, final OnReconnect onReconnect, BeforeReconnect beforeReconnect, ZkACLProvider zkACLProvider, IsClosed higherLevelIsClosed) {
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
log.info("Creating new {} instance {}", SolrZkClient.class.getSimpleName(), this);
closeTracker = new CloseTracker();
this.zkServerAddress = zkServerAddress;
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/DefaultSolrParams.java b/solr/solrj/src/java/org/apache/solr/common/params/DefaultSolrParams.java
index c8bc3b0..8ca270d 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/DefaultSolrParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/DefaultSolrParams.java
@@ -50,7 +50,7 @@ public class DefaultSolrParams extends SolrParams {
// We need to compute the set of all param names in advance
// So we don't wind up with an iterator that returns the same
// String more then once (SOLR-6780)
- LinkedHashSet<String> allKeys = new LinkedHashSet<>();
+ LinkedHashSet<String> allKeys = new LinkedHashSet<>(32);
for (SolrParams p : new SolrParams [] {params, defaults}) {
Iterator<String> localKeys = p.getParameterNamesIterator();
while (localKeys.hasNext()) {
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java b/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java
index c77791c..318401c 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java
@@ -448,7 +448,7 @@ public abstract class SolrParams implements Serializable, MapWriter, Iterable<Ma
return defaults;
if (defaults == null)
return params;
- return new DefaultSolrParams(params,defaults);
+ return new DefaultSolrParams(params, defaults);
}
public static SolrParams wrapAppended(SolrParams params, SolrParams defaults) {
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 610351f..c9228d7 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
@@ -35,12 +35,30 @@ import java.util.concurrent.ConcurrentHashMap;
public class ObjectReleaseTracker {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static Map<Object,String> OBJECTS = new ConcurrentHashMap<>(256, 0.75f, 32);
-
+
+
+ protected final static ThreadLocal<StringBuilder> THREAD_LOCAL_SB = new ThreadLocal<>();
+
+ public static StringBuilder getThreadLocalStringBuilder() {
+ StringBuilder sw = THREAD_LOCAL_SB.get();
+ if (sw == null) {
+ sw = new StringBuilder(1024);
+ THREAD_LOCAL_SB.set(sw);
+ }
+ return sw;
+ }
+
public static boolean track(Object object) {
- StringBuilderWriter sw = new StringBuilderWriter(4096);
+ StringBuilder sb = getThreadLocalStringBuilder();
+ sb.setLength(0);
+ StringBuilderWriter sw = new StringBuilderWriter(sb);
PrintWriter pw = new PrintWriter(sw);
new ObjectTrackerException(object.getClass().getName()).printStackTrace(pw);
- OBJECTS.put(object, sw.toString());
+ String stack = sw.toString();
+ OBJECTS.put(object, stack);
+// if (stack.length() > 8600) {
+// throw new IllegalStateException("found size:" + stack.length());
+// }
return true;
}
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/ValidatingJsonMap.java b/solr/solrj/src/java/org/apache/solr/common/util/ValidatingJsonMap.java
index 87544a9..bdb6c76 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/ValidatingJsonMap.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/ValidatingJsonMap.java
@@ -295,7 +295,7 @@ public class ValidatingJsonMap implements Map<String, Object>, NavigableObject {
public static ValidatingJsonMap getDeepCopy(Map map, int maxDepth, boolean mutable) {
if (map == null) return null;
if (maxDepth < 1) return ValidatingJsonMap.wrap(map);
- ValidatingJsonMap copy = new ValidatingJsonMap(map.size());
+ ValidatingJsonMap copy = new ValidatingJsonMap(map.size() * 2);
for (Object o : map.entrySet()) {
Map.Entry<String, Object> e = (Entry<String, Object>) o;
Object v = e.getValue();
diff --git a/solr/solrj/src/java/org/noggit/JSONParser.java b/solr/solrj/src/java/org/noggit/JSONParser.java
index d1655d1..8fa7102 100644
--- a/solr/solrj/src/java/org/noggit/JSONParser.java
+++ b/solr/solrj/src/java/org/noggit/JSONParser.java
@@ -193,11 +193,11 @@ public class JSONParser {
}
// temporary output buffer
- private final CharArr out = new CharArr(64);
+ private final CharArr out = new CharArr(32);
// We need to keep some state in order to (at a minimum) know if
// we should skip ',' or ':'.
- private byte[] stack = new byte[16];
+ private byte[] stack = new byte[32];
private int ptr = 0; // pointer into the stack of parser states
private byte state = 0; // current parser state
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java
index d5eb26b..dd18f53 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java
@@ -71,6 +71,7 @@ import org.apache.solr.handler.admin.CollectionsHandler;
import org.apache.solr.handler.admin.ConfigSetsHandler;
import org.apache.solr.handler.admin.CoreAdminHandler;
import org.junit.After;
+import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -98,7 +99,7 @@ public class CloudHttp2SolrClientTest extends SolrCloudTestCase {
private static final int TIMEOUT = 30;
private static final int NODE_COUNT = 3;
- private CloudHttp2SolrClient zkBasedCloudSolrClient = null;
+ private static CloudHttp2SolrClient zkBasedCloudSolrClient = null;
@BeforeClass
public static void setupCluster() throws Exception {
@@ -106,16 +107,12 @@ public class CloudHttp2SolrClientTest extends SolrCloudTestCase {
configureCluster(NODE_COUNT)
.addConfig(TEST_CONFIGSET_NAME, getFile("solrj").toPath().resolve("solr").resolve("configsets").resolve("streaming").resolve("conf"))
.configure();
- }
-
- @Before
- public void initTestClients() {
zkBasedCloudSolrClient = new CloudHttp2SolrClient.Builder(Collections.singletonList(cluster.getZkServer().getZkAddress()), Optional.empty()).build();
zkBasedCloudSolrClient.connect();
}
-
- @After
- public void tearDown() throws Exception {
+
+ @AfterClass
+ public static void afterCloudHttp2SolrClientTest() throws Exception {
if (zkBasedCloudSolrClient != null) {
try {
zkBasedCloudSolrClient.close();
@@ -125,7 +122,6 @@ public class CloudHttp2SolrClientTest extends SolrCloudTestCase {
zkBasedCloudSolrClient = null;
}
}
- super.tearDown();
}
private void createTestCollection(String collection) throws IOException, SolrServerException {
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientCompatibilityTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientCompatibilityTest.java
index 9849e50..9a6c332 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientCompatibilityTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientCompatibilityTest.java
@@ -87,6 +87,7 @@ public class Http2SolrClientCompatibilityTest extends SolrJettyTestBase {
}
}
+ @Nightly // oddly slow
public void testConnectToOldNodesUsingHttp2() throws Exception {
// if this test some how failure, this mean that Jetty client now be able to switch between HTTP/1
// and HTTP/2.2 protocol dynamically therefore rolling updates will be easier we should then notify this to users
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java
index c19e078..6c0d337 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamDecoratorTest.java
@@ -75,6 +75,7 @@ import org.junit.Test;
@Slow
@SolrTestCaseJ4.SuppressSSL
@LuceneTestCase.SuppressCodecs({"Lucene3x", "Lucene40","Lucene41","Lucene42","Lucene45"})
+@LuceneTestCase.Nightly // slow test
public class StreamDecoratorTest extends SolrCloudTestCase {
private static final String COLLECTIONORALIAS = "collection1";
diff --git a/solr/solrj/src/test/org/noggit/TestJSONParser.java b/solr/solrj/src/test/org/noggit/TestJSONParser.java
index e1a74e6..8b1ceb6 100644
--- a/solr/solrj/src/test/org/noggit/TestJSONParser.java
+++ b/solr/solrj/src/test/org/noggit/TestJSONParser.java
@@ -505,7 +505,7 @@ public class TestJSONParser extends SolrTestCaseJ4 {
t = "1910151821265210155" + "0";
parse("["+t+","+"-"+t+"]", new Object[]{a,bn(t),bn("-"+t),A,e});
- for (int i=0; i<1000000; i++) {
+ for (int i=0; i<(TEST_NIGHTLY ? 1000000 : 100); i++) {
long val = random().nextLong();
String sval = Long.toString(val);
JSONParser parser = getParser("["+val+"]");
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
index 789337d..488924d 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
@@ -272,7 +272,7 @@ public class MiniSolrCloudCluster {
*/
MiniSolrCloudCluster(int numServers, Path baseDir, String solrXml, JettyConfig jettyConfig,
ZkTestServer zkTestServer, Optional<String> securityJson, boolean trackJettyMetrics, boolean formatZk) throws Exception {
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
try {
Objects.requireNonNull(securityJson);
this.baseDir = Objects.requireNonNull(baseDir);
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java b/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
index f35735d..c4f88cd 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
@@ -332,7 +332,7 @@ public class ZkTestServer implements Closeable {
* If there is a low-level I/O error.
*/
public void runFromConfig(ServerConfig config) throws IOException {
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
try {
// ZooKeeper maintains a static collection of AuthenticationProviders, so
// we make sure the SASL provider is loaded so that it can be used in
@@ -453,7 +453,7 @@ public class ZkTestServer implements Closeable {
if (zkMonFile != null) {
zkMonitoringFile = Paths.get(System.getProperty("solr.tests.zkmonfile"));
}
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
private void init(boolean solrFormat) throws Exception {
@@ -579,7 +579,7 @@ public class ZkTestServer implements Closeable {
}
};
- ObjectReleaseTracker.track(zooThread);
+ assert ObjectReleaseTracker.track(zooThread);
zooThread.start();