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/27 15:58:31 UTC
svn commit: r1682031 [2/2] - in /lucene/dev/branches/branch_5x: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/
solr/core/src/java/org/apache/solr/cloud/
solr/core/src/java/org/apache/solr/core/
solr/core/src/java/org/apache/solr/logging/ solr/...
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java Wed May 27 13:58:30 2015
@@ -50,6 +50,7 @@ import org.apache.solr.core.CoreDescript
import org.apache.solr.core.DirectoryFactory.DirContext;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.ReplicationHandler;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestHandler;
@@ -125,7 +126,7 @@ public class RecoveryStrategy extends Th
private void recoveryFailed(final SolrCore core,
final ZkController zkController, final String baseUrl,
final String shardZkNodeName, final CoreDescriptor cd) throws KeeperException, InterruptedException {
- SolrException.log(log, "Recovery failed - I give up. core=" + coreName);
+ SolrException.log(log, "Recovery failed - I give up.");
try {
zkController.publish(cd, Replica.State.RECOVERY_FAILED);
} finally {
@@ -140,7 +141,7 @@ public class RecoveryStrategy extends Th
ZkCoreNodeProps leaderCNodeProps = new ZkCoreNodeProps(leaderprops);
String leaderUrl = leaderCNodeProps.getCoreUrl();
- log.info("Attempting to replicate from " + leaderUrl + ". core=" + coreName);
+ log.info("Attempting to replicate from " + leaderUrl + ".");
// send commit
commitOnLeader(leaderUrl);
@@ -218,12 +219,9 @@ public class RecoveryStrategy extends Th
SolrException.log(log, "SolrCore not found - cannot recover:" + coreName);
return;
}
+ MDCLoggingContext.setCore(core);
- SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams());
- SolrQueryResponse rsp = new SolrQueryResponse();
- SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp));
-
- log.info("Starting recovery process. core=" + coreName + " recoveringAfterStartup=" + recoveringAfterStartup);
+ log.info("Starting recovery process. recoveringAfterStartup=" + recoveringAfterStartup);
try {
doRecovery(core);
@@ -236,7 +234,7 @@ public class RecoveryStrategy extends Th
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
}
} finally {
- SolrRequestInfo.clearRequestInfo();
+ MDCLoggingContext.clear();
}
}
@@ -248,7 +246,7 @@ public class RecoveryStrategy extends Th
UpdateLog ulog;
ulog = core.getUpdateHandler().getUpdateLog();
if (ulog == null) {
- SolrException.log(log, "No UpdateLog found - cannot recover. core=" + coreName);
+ SolrException.log(log, "No UpdateLog found - cannot recover.");
recoveryFailed(core, zkController, baseUrl, coreZkNodeName,
core.getCoreDescriptor());
return;
@@ -262,7 +260,7 @@ public class RecoveryStrategy extends Th
recentUpdates = ulog.getRecentUpdates();
recentVersions = recentUpdates.getVersions(ulog.getNumRecordsToKeep());
} catch (Exception e) {
- SolrException.log(log, "Corrupt tlog - ignoring. core=" + coreName, e);
+ SolrException.log(log, "Corrupt tlog - ignoring.", e);
recentVersions = new ArrayList<>(0);
} finally {
if (recentUpdates != null) {
@@ -291,7 +289,7 @@ public class RecoveryStrategy extends Th
log.info("###### startupVersions=" + startingVersions);
} catch (Exception e) {
- SolrException.log(log, "Error getting recent versions. core=" + coreName, e);
+ SolrException.log(log, "Error getting recent versions.", e);
recentVersions = new ArrayList<>(0);
}
}
@@ -306,13 +304,11 @@ public class RecoveryStrategy extends Th
// this means we were previously doing a full index replication
// that probably didn't complete and buffering updates in the
// meantime.
- log.info("Looks like a previous replication recovery did not complete - skipping peer sync. core="
- + coreName);
+ log.info("Looks like a previous replication recovery did not complete - skipping peer sync.");
firstTime = false; // skip peersync
}
} catch (Exception e) {
- SolrException.log(log, "Error trying to get ulog starting operation. core="
- + coreName, e);
+ SolrException.log(log, "Error trying to get ulog starting operation.", e);
firstTime = false; // skip peersync
}
}
@@ -337,13 +333,14 @@ public class RecoveryStrategy extends Th
}
if (cloudDesc.isLeader()) {
// we are now the leader - no one else must have been suitable
- log.warn("We have not yet recovered - but we are now the leader! core=" + coreName);
- log.info("Finished recovery process. core=" + coreName);
+ log.warn("We have not yet recovered - but we are now the leader!");
+ log.info("Finished recovery process.");
zkController.publish(core.getCoreDescriptor(), Replica.State.ACTIVE);
return;
}
- log.info("Publishing state of core "+core.getName()+" as recovering, leader is "+leaderUrl+" and I am "+ourUrl);
+ log.info("Publishing state of core " + core.getName() + " as recovering, leader is " + leaderUrl + " and I am "
+ + ourUrl);
zkController.publish(core.getCoreDescriptor(), Replica.State.RECOVERING);
@@ -380,7 +377,7 @@ public class RecoveryStrategy extends Th
// first thing we just try to sync
if (firstTime) {
firstTime = false; // only try sync the first time through the loop
- log.info("Attempting to PeerSync from " + leaderUrl + " core=" + coreName + " - recoveringAfterStartup="+recoveringAfterStartup);
+ log.info("Attempting to PeerSync from " + leaderUrl + " - recoveringAfterStartup="+recoveringAfterStartup);
// System.out.println("Attempting to PeerSync from " + leaderUrl
// + " i am:" + zkController.getNodeName());
PeerSync peerSync = new PeerSync(core,
@@ -392,7 +389,7 @@ public class RecoveryStrategy extends Th
new ModifiableSolrParams());
// force open a new searcher
core.getUpdateHandler().commit(new CommitUpdateCommand(req, false));
- log.info("PeerSync Recovery was successful - registering as Active. core=" + coreName);
+ log.info("PeerSync Recovery was successful - registering as Active.");
// solrcloud_debug
if (log.isDebugEnabled()) {
@@ -420,7 +417,7 @@ public class RecoveryStrategy extends Th
return;
}
- log.info("PeerSync Recovery was not successful - trying replication. core=" + coreName);
+ log.info("PeerSync Recovery was not successful - trying replication.");
}
if (isClosed()) {
@@ -428,9 +425,9 @@ public class RecoveryStrategy extends Th
break;
}
- log.info("Starting Replication Recovery. core=" + coreName);
+ log.info("Starting Replication Recovery.");
- log.info("Begin buffering updates. core=" + coreName);
+ log.info("Begin buffering updates.");
ulog.bufferUpdates();
replayed = false;
@@ -451,7 +448,7 @@ public class RecoveryStrategy extends Th
break;
}
- log.info("Replication Recovery was successful - registering as Active. core=" + coreName);
+ log.info("Replication Recovery was successful - registering as Active.");
// if there are pending recovery requests, don't advert as active
zkController.publish(core.getCoreDescriptor(), Replica.State.ACTIVE);
close = true;
@@ -475,7 +472,7 @@ public class RecoveryStrategy extends Th
}
} catch (Exception e) {
- SolrException.log(log, "Error while trying to recover. core=" + coreName, e);
+ SolrException.log(log, "Error while trying to recover.", e);
}
if (!successfulRecovery) {
@@ -488,11 +485,11 @@ public class RecoveryStrategy extends Th
break;
}
- log.error("Recovery failed - trying again... (" + retries + ") core=" + coreName);
+ log.error("Recovery failed - trying again... (" + retries + ")");
retries++;
if (retries >= MAX_RETRIES) {
- SolrException.log(log, "Recovery failed - max retries exceeded (" + retries + "). core=" + coreName);
+ SolrException.log(log, "Recovery failed - max retries exceeded (" + retries + ").");
try {
recoveryFailed(core, zkController, baseUrl, coreZkNodeName, core.getCoreDescriptor());
} catch (Exception e) {
@@ -501,7 +498,7 @@ public class RecoveryStrategy extends Th
break;
}
} catch (Exception e) {
- SolrException.log(log, "core=" + coreName, e);
+ SolrException.log(log, "", e);
}
try {
@@ -514,13 +511,13 @@ public class RecoveryStrategy extends Th
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
- log.warn("Recovery was interrupted. core=" + coreName, e);
+ log.warn("Recovery was interrupted.", e);
close = true;
}
}
}
- log.info("Finished recovery process. core=" + coreName);
+ log.info("Finished recovery process.");
}
@@ -530,9 +527,9 @@ public class RecoveryStrategy extends Th
Future<RecoveryInfo> future = core.getUpdateHandler().getUpdateLog().applyBufferedUpdates();
if (future == null) {
// no replay needed\
- log.info("No replay needed. core=" + coreName);
+ log.info("No replay needed.");
} else {
- log.info("Replaying buffered documents. core=" + coreName);
+ log.info("Replaying buffered documents.");
// wait for replay
RecoveryInfo report = future.get();
if (report.failed) {
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java Wed May 27 13:58:30 2015
@@ -1,5 +1,10 @@
package org.apache.solr.cloud;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -33,6 +38,7 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.component.ShardHandler;
import org.apache.solr.handler.component.ShardRequest;
import org.apache.solr.handler.component.ShardResponse;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestInfo;
@@ -41,11 +47,7 @@ import org.apache.solr.update.PeerSync;
import org.apache.solr.update.UpdateShardHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
+import org.slf4j.MDC;
public class SyncStrategy {
protected final Logger log = LoggerFactory.getLogger(getClass());
@@ -76,15 +78,16 @@ public class SyncStrategy {
return sync(zkController, core, leaderProps, false);
}
- public boolean sync(ZkController zkController, SolrCore core, ZkNodeProps leaderProps, boolean peerSyncOnlyWithActive) {
+ public boolean sync(ZkController zkController, SolrCore core, ZkNodeProps leaderProps,
+ boolean peerSyncOnlyWithActive) {
if (SKIP_AUTO_RECOVERY) {
return true;
}
- boolean success;
- SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams());
- SolrQueryResponse rsp = new SolrQueryResponse();
- SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp));
+
+ MDCLoggingContext.setCore(core);
try {
+ boolean success;
+
if (isClosed) {
log.warn("Closed, skipping sync up.");
return false;
@@ -95,12 +98,13 @@ public class SyncStrategy {
log.error("No UpdateLog found - cannot sync");
return false;
}
-
+
success = syncReplicas(zkController, core, leaderProps, peerSyncOnlyWithActive);
+
+ return success;
} finally {
- SolrRequestInfo.clearRequestInfo();
+ MDCLoggingContext.clear();
}
- return success;
}
private boolean syncReplicas(ZkController zkController, SolrCore core,
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/ZkController.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/ZkController.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/ZkController.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/cloud/ZkController.java Wed May 27 13:58:30 2015
@@ -82,7 +82,7 @@ import org.apache.solr.core.CoreContaine
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.component.ShardHandler;
-import org.apache.solr.logging.MDCUtils;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.update.UpdateLog;
import org.apache.solr.update.UpdateShardHandler;
import org.apache.zookeeper.CreateMode;
@@ -96,7 +96,6 @@ import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.data.Stat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
import com.google.common.base.Strings;
@@ -249,9 +248,7 @@ public final class ZkController {
this.localHostPort = cloudConfig.getSolrHostPort();
this.hostName = normalizeHostName(cloudConfig.getHost());
this.nodeName = generateNodeName(this.hostName, Integer.toString(this.localHostPort), localHostContext);
-
- MDC.put(NODE_NAME_PROP, nodeName);
-
+ MDCLoggingContext.setNode(nodeName);
this.leaderVoteWait = cloudConfig.getLeaderVoteWait();
this.leaderConflictResolveWait = cloudConfig.getLeaderConflictResolveWait();
@@ -848,21 +845,22 @@ public final class ZkController {
*
* @return the shardId for the SolrCore
*/
- public String register(String coreName, final CoreDescriptor desc, boolean recoverReloadedCores, boolean afterExpiration) throws Exception {
+ public String register(String coreName, final CoreDescriptor desc, boolean recoverReloadedCores, boolean afterExpiration) throws Exception {
+ try (SolrCore core = cc.getCore(desc.getName())) {
+ MDCLoggingContext.setCore(core);
+ }
+ try {
// pre register has published our down state
final String baseUrl = getBaseUrl();
final CloudDescriptor cloudDesc = desc.getCloudDescriptor();
final String collection = cloudDesc.getCollectionName();
- Map previousMDCContext = MDC.getCopyOfContextMap();
- MDCUtils.setCollection(collection);
-
final String coreZkNodeName = desc.getCloudDescriptor().getCoreNodeName();
assert coreZkNodeName != null : "we should have a coreNodeName by now";
String shardId = cloudDesc.getShardId();
- MDCUtils.setShard(shardId);
+
Map<String,Object> props = new HashMap<>();
// we only put a subset of props into the leader node
props.put(ZkStateReader.BASE_URL_PROP, baseUrl);
@@ -877,7 +875,7 @@ public final class ZkController {
ZkNodeProps leaderProps = new ZkNodeProps(props);
- try {
+
try {
// If we're a preferred leader, insert ourselves at the head of the queue
boolean joinAtHead = false;
@@ -942,7 +940,7 @@ public final class ZkController {
zkStateReader.updateClusterState(true);
return shardId;
} finally {
- MDCUtils.cleanupMDC(previousMDCContext);
+ MDCLoggingContext.clear();
}
}
@@ -1138,28 +1136,26 @@ public final class ZkController {
if (core == null || core.isClosed()) {
return;
}
+ MDCLoggingContext.setCore(core);
}
+ } else {
+ MDCLoggingContext.setCoreDescriptor(cd);
}
- String collection = cd.getCloudDescriptor().getCollectionName();
-
- Map previousMDCContext = MDC.getCopyOfContextMap();
- MDCUtils.setCollection(collection);
-
try {
- if (cd != null && cd.getName() != null)
- MDCUtils.setCore(cd.getName());
- log.info("publishing core={} state={} collection={}", cd.getName(), state.toString(), collection);
- //System.out.println(Thread.currentThread().getStackTrace()[3]);
+ String collection = cd.getCloudDescriptor().getCollectionName();
+
+ log.info("publishing state={}", state.toString());
+ // System.out.println(Thread.currentThread().getStackTrace()[3]);
Integer numShards = cd.getCloudDescriptor().getNumShards();
- if (numShards == null) { //XXX sys prop hack
+ if (numShards == null) { // XXX sys prop hack
log.info("numShards not found on descriptor - reading it from system property");
numShards = Integer.getInteger(ZkStateReader.NUM_SHARDS_PROP);
}
-
+
assert collection != null && collection.length() > 0;
-
+
String shardId = cd.getCloudDescriptor().getShardId();
- MDCUtils.setShard(shardId);
+
String coreNodeName = cd.getCloudDescriptor().getCoreNodeName();
// If the leader initiated recovery, then verify that this replica has performed
// recovery as requested before becoming active; don't even look at lirState if going down
@@ -1182,8 +1178,8 @@ public final class ZkController {
}
}
}
-
- Map<String, Object> props = new HashMap<>();
+
+ Map<String,Object> props = new HashMap<>();
props.put(Overseer.QUEUE_OPERATION, "state");
props.put(ZkStateReader.STATE_PROP, state.toString());
props.put(ZkStateReader.BASE_URL_PROP, getBaseUrl());
@@ -1198,7 +1194,7 @@ public final class ZkController {
if (coreNodeName != null) {
props.put(ZkStateReader.CORE_NODE_NAME_PROP, coreNodeName);
}
-
+
if (ClusterStateUtil.isAutoAddReplicas(getZkStateReader(), collection)) {
try (SolrCore core = cc.getCore(cd.getName())) {
if (core != null && core.getDirectoryFactory().isSharedStorage()) {
@@ -1210,15 +1206,15 @@ public final class ZkController {
}
}
}
-
+
ZkNodeProps m = new ZkNodeProps(props);
-
+
if (updateLastState) {
cd.getCloudDescriptor().lastPublished = state;
}
overseerJobQueue.offer(ZkStateReader.toJSON(m));
} finally {
- MDCUtils.cleanupMDC(previousMDCContext);
+ MDCLoggingContext.clear();
}
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/CoreContainer.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/CoreContainer.java Wed May 27 13:58:30 2015
@@ -46,6 +46,7 @@ import org.apache.solr.handler.admin.Inf
import org.apache.solr.handler.component.HttpShardHandlerFactory;
import org.apache.solr.handler.component.ShardHandlerFactory;
import org.apache.solr.logging.LogWatcher;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.security.AuthorizationPlugin;
import org.apache.solr.security.AuthenticationPlugin;
@@ -312,7 +313,6 @@ public class CoreContainer {
* Load the cores defined for this CoreContainer
*/
public void load() {
-
log.info("Loading cores into CoreContainer [instanceDir={}]", loader.getInstanceDir());
// add the sharedLib to the shared resource loader before initializing cfg based plugins
@@ -334,7 +334,6 @@ public class CoreContainer {
logging = LogWatcher.newRegisteredLogWatcher(cfg.getLogWatcherConfig(), loader);
hostName = cfg.getNodeName();
- log.info("Node Name: " + hostName);
zkSys.initZooKeeper(this, solrHome, cfg.getCloudConfig());
@@ -627,7 +626,7 @@ public class CoreContainer {
SolrCore core = null;
try {
-
+ MDCLoggingContext.setCore(core);
if (zkSys.getZkController() != null) {
zkSys.getZkController().preRegister(dcore);
}
@@ -657,6 +656,8 @@ public class CoreContainer {
coreInitFailures.put(dcore.getName(), new CoreLoadFailure(dcore, e));
IOUtils.closeQuietly(core);
throw t;
+ } finally {
+ MDCLoggingContext.clear();
}
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java Wed May 27 13:58:30 2015
@@ -207,7 +207,7 @@ public class CoreDescriptor {
cloudDesc = null;
}
- SolrCore.log.info("CORE DESCRIPTOR: " + coreProperties);
+ SolrCore.log.info("Created CoreDescriptor: " + coreProperties);
}
/**
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java Wed May 27 13:58:30 2015
@@ -90,7 +90,7 @@ import org.apache.solr.handler.RequestHa
import org.apache.solr.handler.admin.ShowFileRequestHandler;
import org.apache.solr.handler.component.HighlightComponent;
import org.apache.solr.handler.component.SearchComponent;
-import org.apache.solr.logging.MDCUtils;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.BinaryResponseWriter;
@@ -711,7 +711,7 @@ public final class SolrCore implements S
this.coreDescriptor = coreDescriptor;
setName(name);
- MDCUtils.setCore(name); // show the core name in the error logs
+ MDCLoggingContext.setCore(this);
resourceLoader = config.getResourceLoader();
this.solrConfig = config;
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCores.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCores.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCores.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCores.java Wed May 27 13:58:30 2015
@@ -19,6 +19,7 @@ package org.apache.solr.core;
import com.google.common.collect.Lists;
import org.apache.solr.common.SolrException;
+import org.apache.solr.logging.MDCLoggingContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -113,6 +114,7 @@ class SolrCores {
}
for (SolrCore core : coreList) {
+ MDCLoggingContext.setCore(core);
try {
core.close();
} catch (Throwable e) {
@@ -120,6 +122,8 @@ class SolrCores {
if (e instanceof Error) {
throw (Error) e;
}
+ } finally {
+ MDCLoggingContext.clear();
}
}
} while (coreList.size() > 0);
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/ZkContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/ZkContainer.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/ZkContainer.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/ZkContainer.java Wed May 27 13:58:30 2015
@@ -37,7 +37,7 @@ import org.apache.solr.common.cloud.Repl
import org.apache.solr.common.cloud.ZkConfigManager;
import org.apache.solr.common.cloud.ZooKeeperException;
import org.apache.solr.common.util.ExecutorUtil;
-import org.apache.solr.logging.MDCUtils;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.util.DefaultSolrThreadFactory;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
@@ -181,6 +181,8 @@ public class ZkContainer {
Thread thread = new Thread() {
@Override
public void run() {
+ MDCLoggingContext.setCore(core);
+ try {
try {
zkController.register(core.getName(), core.getCoreDescriptor());
} catch (InterruptedException e) {
@@ -198,20 +200,23 @@ public class ZkContainer {
}
SolrException.log(log, "", e);
}
+ } finally {
+ MDC.clear();
}
-
+ }
+
};
if (zkController != null) {
- MDCUtils.setCore(core.getName());
- try {
- if (background) {
- coreZkRegister.execute(thread);
- } else {
+ if (background) {
+ coreZkRegister.execute(thread);
+ } else {
+ MDCLoggingContext.setCore(core);
+ try {
thread.run();
+ } finally {
+ MDC.clear();
}
- } finally {
- MDC.remove(CORE_NAME_PROP);
}
}
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java Wed May 27 13:58:30 2015
@@ -1,5 +1,37 @@
package org.apache.solr.servlet;
+import static org.apache.solr.common.cloud.ZkStateReader.BASE_URL_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.COLLECTION_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.CORE_NAME_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.NODE_NAME_PROP;
+import static org.apache.solr.common.params.CollectionParams.CollectionAction.CREATE;
+import static org.apache.solr.common.params.CollectionParams.CollectionAction.DELETE;
+import static org.apache.solr.common.params.CollectionParams.CollectionAction.RELOAD;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.ADMIN;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.FORWARD;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.PASSTHROUGH;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.PROCESS;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.REMOTEQUERY;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.RETRY;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.RETURN;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -19,22 +51,6 @@ package org.apache.solr.servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.security.Principal;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
@@ -54,7 +70,6 @@ import org.apache.http.client.methods.Ht
import org.apache.http.entity.InputStreamEntity;
import org.apache.http.util.EntityUtils;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.Aliases;
import org.apache.solr.common.cloud.ClusterState;
@@ -73,7 +88,7 @@ import org.apache.solr.core.CoreContaine
import org.apache.solr.core.SolrConfig;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.ContentStreamHandlerBase;
-import org.apache.solr.logging.MDCUtils;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrQueryRequestBase;
import org.apache.solr.request.SolrRequestHandler;
@@ -85,30 +100,14 @@ import org.apache.solr.security.Authoriz
import org.apache.solr.security.AuthorizationContext.CollectionRequest;
import org.apache.solr.security.AuthorizationContext.RequestType;
import org.apache.solr.security.AuthorizationResponse;
+import org.apache.solr.servlet.SolrDispatchFilter.Action;
import org.apache.solr.servlet.cache.HttpCacheHeaderUtil;
import org.apache.solr.servlet.cache.Method;
import org.apache.solr.update.processor.DistributingUpdateProcessorFactory;
import org.apache.solr.util.RTimer;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
-
-import static org.apache.solr.common.cloud.ZkStateReader.BASE_URL_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.COLLECTION_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.CORE_NAME_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.NODE_NAME_PROP;
-import static org.apache.solr.common.params.CollectionParams.CollectionAction.CREATE;
-import static org.apache.solr.common.params.CollectionParams.CollectionAction.DELETE;
-import static org.apache.solr.common.params.CollectionParams.CollectionAction.RELOAD;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action.ADMIN;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action.FORWARD;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action.PASSTHROUGH;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action.PROCESS;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action.REMOTEQUERY;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action.RETRY;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action.RETURN;
+import org.slf4j.LoggerFactory;
/**
* This class represents a call made to Solr
@@ -242,15 +241,12 @@ public class HttpSolrCall {
}
}
- if (core != null) addMDCValues();
-
if (core == null && cores.isZooKeeperAware()) {
// we couldn't find the core - lets make sure a collection was not specified instead
core = getCoreByCollection(corename);
if (core != null) {
// we found a core, update the path
path = path.substring(idx);
- addMDCValues();
if (collectionsList == null)
collectionsList = new ArrayList<>();
collectionsList.add(corename);
@@ -263,12 +259,12 @@ public class HttpSolrCall {
// try the default core
if (core == null) {
core = cores.getCore("");
- if (core != null) addMDCValues();
}
}
// With a valid core...
if (core != null) {
+ MDCLoggingContext.setCore(core);
config = core.getSolrConfig();
// get or create/cache the parser for the core
SolrRequestParsers parser = config.getRequestParsers();
@@ -378,17 +374,14 @@ public class HttpSolrCall {
* This method processes the request.
*/
public Action call() throws IOException {
- MDCUtils.clearMDC();
+ MDCLoggingContext.reset();
+ MDCLoggingContext.setNode(cores);
if (cores == null) {
sendError(503, "Server is shutting down or failed to initialize");
return RETURN;
}
- if (cores.isZooKeeperAware()) {
- MDC.put(NODE_NAME_PROP, cores.getZkController().getNodeName());
- }
-
if (solrDispatchFilter.abortErrorMessage != null) {
sendError(500, solrDispatchFilter.abortErrorMessage);
return RETURN;
@@ -461,6 +454,8 @@ public class HttpSolrCall {
t = t.getCause();
}
return RETURN;
+ } finally {
+ MDCLoggingContext.clear();
}
}
@@ -622,16 +617,6 @@ public class HttpSolrCall {
}
}
- private void addMDCValues() {
- MDCUtils.setCore(core.getName());
- if (cores.isZooKeeperAware()) {
- CloudDescriptor cloud = core.getCoreDescriptor().getCloudDescriptor();
- MDCUtils.setCollection(cloud.getCollectionName());
- MDCUtils.setShard(cloud.getShardId());
- MDCUtils.setReplica(cloud.getCoreNodeName());
- }
- }
-
protected void execute(SolrQueryResponse rsp) {
// a custom filter could add more stuff to the request before passing it on.
// for example: sreq.getContext().put( "HttpServletRequest", req );
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java Wed May 27 13:58:30 2015
@@ -30,6 +30,7 @@ import org.apache.solr.core.CoreContaine
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.core.DirectoryFactory;
import org.apache.solr.core.SolrCore;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.util.RefCounted;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -282,52 +283,57 @@ public final class DefaultSolrCoreState
@Override
public void doRecovery(CoreContainer cc, CoreDescriptor cd) {
- if (SKIP_AUTO_RECOVERY) {
- log.warn("Skipping recovery according to sys prop solrcloud.skip.autorecovery");
- return;
- }
-
- // check before we grab the lock
- if (cc.isShutDown()) {
- log.warn("Skipping recovery because Solr is close");
- return;
- }
-
- synchronized (recoveryLock) {
- // to be air tight we must also check after lock
+ MDCLoggingContext.setCoreDescriptor(cd);
+ try {
+ if (SKIP_AUTO_RECOVERY) {
+ log.warn("Skipping recovery according to sys prop solrcloud.skip.autorecovery");
+ return;
+ }
+
+ // check before we grab the lock
if (cc.isShutDown()) {
- log.warn("Skipping recovery because Solr is close");
+ log.warn("Skipping recovery because Solr is shutdown");
return;
}
- log.info("Running recovery - first canceling any ongoing recovery");
- cancelRecovery();
- while (recoveryRunning) {
- try {
- recoveryLock.wait(1000);
- } catch (InterruptedException e) {
-
- }
- // check again for those that were waiting
+ synchronized (recoveryLock) {
+ // to be air tight we must also check after lock
if (cc.isShutDown()) {
- log.warn("Skipping recovery because Solr is close");
+ log.warn("Skipping recovery because Solr is shutdown");
return;
}
- if (closed) return;
+ log.info("Running recovery - first canceling any ongoing recovery");
+ cancelRecovery();
+
+ while (recoveryRunning) {
+ try {
+ recoveryLock.wait(1000);
+ } catch (InterruptedException e) {
+
+ }
+ // check again for those that were waiting
+ if (cc.isShutDown()) {
+ log.warn("Skipping recovery because Solr is shutdown");
+ return;
+ }
+ if (closed) return;
+ }
+
+ // if true, we are recovering after startup and shouldn't have (or be receiving) additional updates (except for
+ // local tlog recovery)
+ boolean recoveringAfterStartup = recoveryStrat == null;
+
+ recoveryThrottle.minimumWaitBetweenActions();
+ recoveryThrottle.markAttemptingAction();
+
+ recoveryStrat = new RecoveryStrategy(cc, cd, this);
+ recoveryStrat.setRecoveringAfterStartup(recoveringAfterStartup);
+ recoveryStrat.start();
+ recoveryRunning = true;
}
-
- // if true, we are recovering after startup and shouldn't have (or be receiving) additional updates (except for local tlog recovery)
- boolean recoveringAfterStartup = recoveryStrat == null;
-
- recoveryThrottle.minimumWaitBetweenActions();
- recoveryThrottle.markAttemptingAction();
-
- recoveryStrat = new RecoveryStrategy(cc, cd, this);
- recoveryStrat.setRecoveringAfterStartup(recoveringAfterStartup);
- recoveryStrat.start();
- recoveryRunning = true;
+ } finally {
+ MDCLoggingContext.clear();
}
-
}
@Override
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/PeerSync.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/PeerSync.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/PeerSync.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/PeerSync.java Wed May 27 13:58:30 2015
@@ -46,6 +46,7 @@ import org.apache.solr.handler.component
import org.apache.solr.handler.component.ShardHandlerFactory;
import org.apache.solr.handler.component.ShardRequest;
import org.apache.solr.handler.component.ShardResponse;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
@@ -80,6 +81,7 @@ public class PeerSync {
private final boolean getNoVersionsIsSuccess;
private final HttpClient client;
private final boolean onlyIfActive;
+ private SolrCore core;
// comparator that sorts by absolute value, putting highest first
private static Comparator<Long> absComparator = new Comparator<Long>() {
@@ -128,6 +130,7 @@ public class PeerSync {
}
public PeerSync(SolrCore core, List<String> replicas, int nUpdates, boolean cantReachIsSuccess, boolean getNoVersionsIsSuccess, boolean onlyIfActive) {
+ this.core = core;
this.replicas = replicas;
this.nUpdates = nUpdates;
this.maxUpdates = nUpdates;
@@ -175,95 +178,102 @@ public class PeerSync {
if (ulog == null) {
return false;
}
-
- log.info(msg() + "START replicas=" + replicas + " nUpdates=" + nUpdates);
-
- // TODO: does it ever make sense to allow sync when buffering or applying buffered? Someone might request that we do it...
- if (!(ulog.getState() == UpdateLog.State.ACTIVE || ulog.getState()==UpdateLog.State.REPLAYING)) {
- log.error(msg() + "ERROR, update log not in ACTIVE or REPLAY state. " + ulog);
- // return false;
- }
-
- if (debug) {
- if (startingVersions != null) {
- log.debug(msg() + "startingVersions=" + startingVersions.size() + " " + startingVersions);
- }
- }
-
- // Fire off the requests before getting our own recent updates (for better concurrency)
- // This also allows us to avoid getting updates we don't need... if we got our updates and then got their updates, they would
- // have newer stuff that we also had (assuming updates are going on and are being forwarded).
- for (String replica : replicas) {
- requestVersions(replica);
- }
-
- recentUpdates = ulog.getRecentUpdates();
+ MDCLoggingContext.setCore(core);
try {
- ourUpdates = recentUpdates.getVersions(nUpdates);
- } finally {
- recentUpdates.close();
- }
-
- Collections.sort(ourUpdates, absComparator);
-
- if (startingVersions != null) {
- if (startingVersions.size() == 0) {
- log.warn("no frame of reference to tell if we've missed updates");
- return false;
- }
- Collections.sort(startingVersions, absComparator);
-
- ourLowThreshold = percentile(startingVersions, 0.8f);
- ourHighThreshold = percentile(startingVersions, 0.2f);
-
- // now make sure that the starting updates overlap our updates
- // there shouldn't be reorders, so any overlap will do.
-
- long smallestNewUpdate = Math.abs(ourUpdates.get(ourUpdates.size()-1));
-
- if (Math.abs(startingVersions.get(0)) < smallestNewUpdate) {
- log.warn(msg() + "too many updates received since start - startingUpdates no longer overlaps with our currentUpdates");
- return false;
- }
-
- // let's merge the lists
- List<Long> newList = new ArrayList<>(ourUpdates);
- for (Long ver : startingVersions) {
- if (Math.abs(ver) < smallestNewUpdate) {
- newList.add(ver);
+ log.info(msg() + "START replicas=" + replicas + " nUpdates=" + nUpdates);
+
+ // TODO: does it ever make sense to allow sync when buffering or applying buffered? Someone might request that we
+ // do it...
+ if (!(ulog.getState() == UpdateLog.State.ACTIVE || ulog.getState() == UpdateLog.State.REPLAYING)) {
+ log.error(msg() + "ERROR, update log not in ACTIVE or REPLAY state. " + ulog);
+ // return false;
+ }
+
+ if (debug) {
+ if (startingVersions != null) {
+ log.debug(msg() + "startingVersions=" + startingVersions.size() + " " + startingVersions);
}
}
-
- ourUpdates = newList;
- } else {
-
- if (ourUpdates.size() > 0) {
- ourLowThreshold = percentile(ourUpdates, 0.8f);
- ourHighThreshold = percentile(ourUpdates, 0.2f);
- } else {
- // we have no versions and hence no frame of reference to tell if we can use a peers
- // updates to bring us into sync
- log.info(msg() + "DONE. We have no versions. sync failed.");
- return false;
+
+ // Fire off the requests before getting our own recent updates (for better concurrency)
+ // This also allows us to avoid getting updates we don't need... if we got our updates and then got their updates,
+ // they would
+ // have newer stuff that we also had (assuming updates are going on and are being forwarded).
+ for (String replica : replicas) {
+ requestVersions(replica);
+ }
+
+ recentUpdates = ulog.getRecentUpdates();
+ try {
+ ourUpdates = recentUpdates.getVersions(nUpdates);
+ } finally {
+ recentUpdates.close();
+ }
+
+ Collections.sort(ourUpdates, absComparator);
+
+ if (startingVersions != null) {
+ if (startingVersions.size() == 0) {
+ log.warn("no frame of reference to tell if we've missed updates");
+ return false;
+ }
+ Collections.sort(startingVersions, absComparator);
+
+ ourLowThreshold = percentile(startingVersions, 0.8f);
+ ourHighThreshold = percentile(startingVersions, 0.2f);
+
+ // now make sure that the starting updates overlap our updates
+ // there shouldn't be reorders, so any overlap will do.
+
+ long smallestNewUpdate = Math.abs(ourUpdates.get(ourUpdates.size() - 1));
+
+ if (Math.abs(startingVersions.get(0)) < smallestNewUpdate) {
+ log.warn(msg()
+ + "too many updates received since start - startingUpdates no longer overlaps with our currentUpdates");
+ return false;
+ }
+
+ // let's merge the lists
+ List<Long> newList = new ArrayList<>(ourUpdates);
+ for (Long ver : startingVersions) {
+ if (Math.abs(ver) < smallestNewUpdate) {
+ newList.add(ver);
+ }
+ }
+
+ ourUpdates = newList;
+ } else {
+
+ if (ourUpdates.size() > 0) {
+ ourLowThreshold = percentile(ourUpdates, 0.8f);
+ ourHighThreshold = percentile(ourUpdates, 0.2f);
+ } else {
+ // we have no versions and hence no frame of reference to tell if we can use a peers
+ // updates to bring us into sync
+ log.info(msg() + "DONE. We have no versions. sync failed.");
+ return false;
+ }
}
- }
-
- ourUpdateSet = new HashSet<>(ourUpdates);
- requestedUpdateSet = new HashSet<>(ourUpdates);
-
- for(;;) {
- ShardResponse srsp = shardHandler.takeCompletedOrError();
- if (srsp == null) break;
- boolean success = handleResponse(srsp);
- if (!success) {
- log.info(msg() + "DONE. sync failed");
- shardHandler.cancelAll();
- return false;
+
+ ourUpdateSet = new HashSet<>(ourUpdates);
+ requestedUpdateSet = new HashSet<>(ourUpdates);
+
+ for (;;) {
+ ShardResponse srsp = shardHandler.takeCompletedOrError();
+ if (srsp == null) break;
+ boolean success = handleResponse(srsp);
+ if (!success) {
+ log.info(msg() + "DONE. sync failed");
+ shardHandler.cancelAll();
+ return false;
+ }
}
+
+ log.info(msg() + "DONE. sync succeeded");
+ return true;
+ } finally {
+ MDCLoggingContext.clear();
}
-
- log.info(msg() + "DONE. sync succeeded");
- return true;
}
private void requestVersions(String replica) {
Modified: lucene/dev/branches/branch_5x/solr/core/src/test-files/log4j.properties
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test-files/log4j.properties?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test-files/log4j.properties (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test-files/log4j.properties Wed May 27 13:58:30 2015
@@ -3,9 +3,8 @@ log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.err
-log4j.appender.CONSOLE.layout=org.apache.solr.util.SolrLogLayout
-log4j.appender.CONSOLE.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n
-
+log4j.appender.CONSOLE.layout=org.apache.log4j.EnhancedPatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p (%t) [%X{node_name} %X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN
log4j.logger.org.apache.directory=WARN
Modified: lucene/dev/branches/branch_5x/solr/server/resources/log4j.properties
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/server/resources/log4j.properties?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/server/resources/log4j.properties (original)
+++ lucene/dev/branches/branch_5x/solr/server/resources/log4j.properties Wed May 27 13:58:30 2015
@@ -4,8 +4,8 @@ log4j.rootLogger=INFO, file, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
-log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
-log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x [%X{collection} %X{shard} %X{replica} %X{core}] \u2013 %m%n
+log4j.appender.CONSOLE.layout=org.apache.log4j.EnhancedPatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n
#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
@@ -14,8 +14,8 @@ log4j.appender.file.MaxBackupIndex=9
#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; [%X{collection} %X{shard} %X{replica} %X{core}] %C; %m\n
+log4j.appender.file.layout=org.apache.log4j.EnhancedPatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m\n
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ExecutorUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ExecutorUtil.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ExecutorUtil.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/util/ExecutorUtil.java Wed May 27 13:58:30 2015
@@ -1,5 +1,7 @@
package org.apache.solr.common.util;
+import java.util.Collection;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -128,8 +130,19 @@ public class ExecutorUtil {
@Override
public void execute(final Runnable command) {
final Map<String, String> submitterContext = MDC.getCopyOfContextMap();
- String ctxStr = submitterContext != null && !submitterContext.isEmpty() ?
- submitterContext.toString().replace("/", "//") : "";
+ StringBuilder contextString = new StringBuilder();
+ if (submitterContext != null) {
+ Collection<String> values = submitterContext.values();
+
+ for (String value : values) {
+ contextString.append(value + " ");
+ }
+ if (contextString.length() > 1) {
+ contextString.setLength(contextString.length() - 1);
+ }
+ }
+
+ String ctxStr = contextString.toString().replace("/", "//");
final String submitterContextStr = ctxStr.length() <= MAX_THREAD_NAME_LEN ? ctxStr : ctxStr.substring(0, MAX_THREAD_NAME_LEN);
final Exception submitterStackTrace = new Exception("Submitter stack trace");
super.execute(new Runnable() {
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/test-files/log4j.properties
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/test-files/log4j.properties?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/test-files/log4j.properties (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/test-files/log4j.properties Wed May 27 13:58:30 2015
@@ -3,8 +3,28 @@ log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.err
-log4j.appender.CONSOLE.layout=org.apache.solr.util.SolrLogLayout
-log4j.appender.CONSOLE.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n
-
+log4j.appender.CONSOLE.layout=org.apache.log4j.EnhancedPatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p (%t) [%X{node_name} %X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN
+log4j.logger.org.apache.directory=WARN
+log4j.logger.org.apache.solr.hadoop=INFO
+
+#log4j.logger.org.apache.solr.update.processor.LogUpdateProcessor=DEBUG
+#log4j.logger.org.apache.solr.update.processor.DistributedUpdateProcessor=DEBUG
+#log4j.logger.org.apache.solr.update.PeerSync=DEBUG
+#log4j.logger.org.apache.solr.core.CoreContainer=DEBUG
+#log4j.logger.org.apache.solr.cloud.RecoveryStrategy=DEBUG
+#log4j.logger.org.apache.solr.cloud.SyncStrategy=DEBUG
+#log4j.logger.org.apache.solr.handler.admin.CoreAdminHandler=DEBUG
+#log4j.logger.org.apache.solr.cloud.ZkController=DEBUG
+#log4j.logger.org.apache.solr.update.DefaultSolrCoreState=DEBUG
+#log4j.logger.org.apache.solr.common.cloud.ConnectionManager=DEBUG
+#log4j.logger.org.apache.solr.update.UpdateLog=DEBUG
+#log4j.logger.org.apache.solr.cloud.ChaosMonkey=DEBUG
+#log4j.logger.org.apache.solr.update.TransactionLog=DEBUG
+#log4j.logger.org.apache.solr.handler.ReplicationHandler=DEBUG
+#log4j.logger.org.apache.solr.handler.IndexFetcher=DEBUG
+
+#log4j.logger.org.apache.solr.common.cloud.ClusterStateUtil=DEBUG
+#log4j.logger.org.apache.solr.cloud.OverseerAutoReplicaFailoverThread=DEBUG
\ No newline at end of file
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=1682031&r1=1682030&r2=1682031&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 Wed May 27 13:58:30 2015
@@ -17,9 +17,41 @@
package org.apache.solr;
-import com.carrotsearch.randomizedtesting.RandomizedContext;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
-import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+import java.util.logging.Level;
+
+import javax.xml.xpath.XPathExpressionException;
+
import org.apache.commons.codec.Charsets;
import org.apache.commons.io.FileUtils;
import org.apache.lucene.analysis.MockAnalyzer;
@@ -55,7 +87,6 @@ import org.apache.solr.core.SolrConfig;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.core.SolrXmlConfig;
-import org.apache.solr.core.ZkContainer;
import org.apache.solr.handler.UpdateRequestHandler;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
@@ -83,42 +114,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.SAXException;
-import javax.xml.xpath.XPathExpressionException;
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Handler;
-import java.util.logging.Level;
-import java.util.regex.Pattern;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import com.carrotsearch.randomizedtesting.RandomizedContext;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
+import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
/**
* A junit4 Solr test harness that extends LuceneTestCaseJ4. To change which core is used when loading the schema and solrconfig.xml, simply
@@ -209,7 +207,6 @@ public abstract class SolrTestCaseJ4 ext
System.setProperty("enable.update.log", usually() ? "true" : "false");
System.setProperty("tests.shardhandler.randomSeed", Long.toString(random().nextLong()));
System.setProperty("solr.clustering.enabled", "false");
- setupLogging();
startTrackingSearchers();
ignoreException("ignore_exception");
newRandomConfig();
@@ -396,33 +393,6 @@ public abstract class SolrTestCaseJ4 ext
super.tearDown();
}
- public static SolrLogFormatter formatter;
-
- public static void setupLogging() {
- boolean register = false;
- Handler[] handlers = java.util.logging.Logger.getLogger("").getHandlers();
- ConsoleHandler consoleHandler = null;
- for (Handler handler : handlers) {
- if (handler instanceof ConsoleHandler) {
- consoleHandler = (ConsoleHandler)handler;
- break;
- }
- }
-
- if (consoleHandler == null) {
- consoleHandler = new ConsoleHandler();
- register = true;
- }
-
- consoleHandler.setLevel(Level.ALL);
- formatter = new SolrLogFormatter();
- consoleHandler.setFormatter(formatter);
-
- if (register) {
- java.util.logging.Logger.getLogger("").addHandler(consoleHandler);
- }
- }
-
public static void setLoggingLevel(Level level) {
java.util.logging.Logger logger = java.util.logging.Logger.getLogger("");
logger.setLevel(level);
Modified: lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1682031&r1=1682030&r2=1682031&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Wed May 27 13:58:30 2015
@@ -16,9 +16,10 @@ package org.apache.solr.cloud;
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-import static org.apache.solr.cloud.OverseerCollectionProcessor.*;
-import static org.apache.solr.common.cloud.ZkNodeProps.*;
+import static org.apache.solr.cloud.OverseerCollectionProcessor.CREATE_NODE_SET;
+import static org.apache.solr.cloud.OverseerCollectionProcessor.NUM_SLICES;
+import static org.apache.solr.cloud.OverseerCollectionProcessor.SHARDS_PROP;
+import static org.apache.solr.common.cloud.ZkNodeProps.makeMap;
import java.io.File;
import java.io.IOException;
@@ -92,8 +93,6 @@ public abstract class AbstractFullDistri
@BeforeClass
public static void beforeFullSolrCloudTest() {
- // shorten the log output more for this test type
- if (formatter != null) formatter.setShorterFormat();
}
public static final String SHARD1 = "shard1";