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 2021/01/24 02:18:12 UTC
[lucene-solr] 05/16: @1281 Clean up some MDC core logging.
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
commit 65b1ef810d45ea017b20b8daf9e6a8f15832c893
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Jan 21 21:25:12 2021 -0600
@1281 Clean up some MDC core logging.
---
.../java/org/apache/solr/cloud/LeaderElector.java | 223 +++++++++++----------
.../solr/cloud/RecoveringCoreTermWatcher.java | 6 +-
.../java/org/apache/solr/cloud/ZkController.java | 22 +-
.../java/org/apache/solr/core/CoreContainer.java | 80 ++++----
.../solr/handler/admin/CoreAdminOperation.java | 51 ++---
.../apache/solr/update/DefaultSolrCoreState.java | 6 +-
6 files changed, 206 insertions(+), 182 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/cloud/LeaderElector.java b/solr/core/src/java/org/apache/solr/cloud/LeaderElector.java
index 1e6dc35..c9b7ffe 100644
--- a/solr/core/src/java/org/apache/solr/cloud/LeaderElector.java
+++ b/solr/core/src/java/org/apache/solr/cloud/LeaderElector.java
@@ -25,6 +25,7 @@ import org.apache.solr.common.cloud.SolrZooKeeper;
import org.apache.solr.common.cloud.ZooKeeperException;
import org.apache.solr.common.util.IOUtils;
import org.apache.solr.common.util.ObjectReleaseTracker;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.KeeperException.ConnectionLossException;
@@ -119,141 +120,147 @@ public class LeaderElector implements Closeable {
private synchronized boolean checkIfIamLeader(final ElectionContext context, boolean replacement) throws KeeperException,
InterruptedException, IOException {
//if (checkClosed(context)) return false;
-
- if (log.isDebugEnabled()) log.debug("Check if I am leader {}", context.getClass().getSimpleName());
- if (isClosed) {
- log.info("elector is closed, won't join election");
- return false;
- }
-
- executor.submit(() -> {
- context.checkIfIamLeaderFired();
- });
-
- state = CHECK_IF_LEADER;
- // get all other numbers...
- final String holdElectionPath = context.electionPath + ELECTION_NODE;
- List<String> seqs;
- try {
- seqs = zkClient.getChildren(holdElectionPath, null, true);
- } catch (KeeperException.SessionExpiredException e) {
- log.error("ZooKeeper session has expired");
- state = OUT_OF_ELECTION;
- return false;
- } catch (KeeperException.NoNodeException e) {
- log.info("the election node disappeared, check if we are the leader again");
- state = OUT_OF_ELECTION;
- return false;
- } catch (KeeperException e) {
- // we couldn't set our watch for some other reason, retry
- log.warn("Failed setting election watch, retrying {} {}", e.getClass().getName(), e.getMessage());
- state = OUT_OF_ELECTION;
- return true;
- } catch (Exception e) {
- // we couldn't set our watch for some other reason, retry
- log.error("Failed on election getchildren call {} {}", e.getClass().getName(), e.getMessage());
- state = OUT_OF_ELECTION;
- return true;
- }
-
+ MDCLoggingContext.setCoreName(context.leaderProps.getName());
try {
+ if (log.isDebugEnabled()) log.debug("Check if I am leader {}", context.getClass().getSimpleName());
+ if (isClosed) {
+ log.info("elector is closed, won't join election");
+ return false;
+ }
- sortSeqs(seqs);
+ executor.submit(() -> {
+ context.checkIfIamLeaderFired();
+ });
- String leaderSeqNodeName;
+ state = CHECK_IF_LEADER;
+ // get all other numbers...
+ final String holdElectionPath = context.electionPath + ELECTION_NODE;
+ List<String> seqs;
try {
- leaderSeqNodeName = context.leaderSeqPath.substring(context.leaderSeqPath.lastIndexOf('/') + 1);
- } catch (NullPointerException e) {
+ seqs = zkClient.getChildren(holdElectionPath, null, true);
+ } catch (KeeperException.SessionExpiredException e) {
+ log.error("ZooKeeper session has expired");
state = OUT_OF_ELECTION;
- if (log.isDebugEnabled()) log.debug("leaderSeqPath has been removed, bailing");
return true;
- }
- if (!seqs.contains(leaderSeqNodeName)) {
- log.warn("Our node is no longer in line to be leader");
+ } catch (KeeperException.NoNodeException e) {
+ log.info("the election node disappeared");
state = OUT_OF_ELECTION;
return false;
+ } catch (KeeperException e) {
+ // we couldn't set our watch for some other reason, retry
+ log.warn("Failed setting election watch, retrying {} {}", e.getClass().getName(), e.getMessage());
+ state = OUT_OF_ELECTION;
+ return true;
+ } catch (Exception e) {
+ // we couldn't set our watch for some other reason, retry
+ log.error("Failed on election getchildren call {} {}", e.getClass().getName(), e.getMessage());
+ state = OUT_OF_ELECTION;
+ return true;
}
- if (log.isDebugEnabled()) log.debug("The leader election node is {}", leaderSeqNodeName);
- if (leaderSeqNodeName.equals(seqs.get(0))) {
- // I am the leader
- if (log.isDebugEnabled()) log.debug("I am the potential leader {}, running leader process", context.leaderProps.getName());
- ElectionWatcher oldWatcher = watcher;
- if (oldWatcher != null) {
- oldWatcher.close();
- }
-
- if ((zkController != null && zkController.getCoreContainer().isShutDown())) {
- if (log.isDebugEnabled()) log.debug("Elector is closed, will not try and run leader processes");
- state = OUT_OF_ELECTION;
- return false;
- }
- state = POT_LEADER;
- runIamLeaderProcess(context, replacement);
- return false;
+ try {
- } else {
+ sortSeqs(seqs);
- String toWatch = seqs.get(0);
- for (String node : seqs) {
- if (leaderSeqNodeName.equals(node)) {
- break;
- }
- toWatch = node;
- }
+ String leaderSeqNodeName;
try {
- String watchedNode = holdElectionPath + "/" + toWatch;
-
- log.info("I am not the leader (our path is ={}) - watch the node below me {} seqs={}", leaderSeqNodeName, watchedNode, seqs);
-
+ leaderSeqNodeName = context.leaderSeqPath.substring(context.leaderSeqPath.lastIndexOf('/') + 1);
+ } catch (NullPointerException e) {
+ state = OUT_OF_ELECTION;
+ if (log.isDebugEnabled()) log.debug("leaderSeqPath has been removed, bailing");
+ return true;
+ }
+ if (!seqs.contains(leaderSeqNodeName)) {
+ log.warn("Our node is no longer in line to be leader");
+ state = OUT_OF_ELECTION;
+ return false;
+ }
+ if (log.isDebugEnabled()) log.debug("The leader election node is {}", leaderSeqNodeName);
+ if (leaderSeqNodeName.equals(seqs.get(0))) {
+ // I am the leader
+ if (log.isDebugEnabled()) log.debug("I am the potential leader {}, running leader process", context.leaderProps.getName());
ElectionWatcher oldWatcher = watcher;
if (oldWatcher != null) {
- IOUtils.closeQuietly(oldWatcher);
+ oldWatcher.close();
}
- watcher = new ElectionWatcher(context.leaderSeqPath, watchedNode, context);
- Stat exists = zkClient.exists(watchedNode, watcher);
- if (exists == null) {
+ if ((zkController != null && zkController.getCoreContainer().isShutDown())) {
+ if (log.isDebugEnabled()) log.debug("Elector is closed, will not try and run leader processes");
state = OUT_OF_ELECTION;
- return true;
+ return false;
}
- state = WAITING_IN_ELECTION;
- if (log.isDebugEnabled()) log.debug("Watching path {} to know if I could be the leader, my node is {}", watchedNode, context.leaderSeqPath);
-
+ state = POT_LEADER;
+ runIamLeaderProcess(context, replacement);
return false;
- } catch (KeeperException.SessionExpiredException e) {
- state = OUT_OF_ELECTION;
- log.error("ZooKeeper session has expired");
- throw e;
- } catch (KeeperException.NoNodeException e) {
- log.info("the previous node disappeared, check if we are the leader again");
- } catch (KeeperException e) {
- // we couldn't set our watch for some other reason, retry
- log.warn("Failed setting election watch, retrying {} {}", e.getClass().getName(), e.getMessage());
+ } else {
+
+ String toWatch = seqs.get(0);
+ for (String node : seqs) {
+ if (leaderSeqNodeName.equals(node)) {
+ break;
+ }
+ toWatch = node;
+ }
+ try {
+ String watchedNode = holdElectionPath + "/" + toWatch;
- } catch (Exception e) {
- state = OUT_OF_ELECTION;
- // we couldn't set our watch for some other reason, retry
- log.error("Failed setting election watch {} {}", e.getClass().getName(), e.getMessage());
+ log.info("I am not the leader (our path is ={}) - watch the node below me {} seqs={}", leaderSeqNodeName, watchedNode, seqs);
+
+ ElectionWatcher oldWatcher = watcher;
+ if (oldWatcher != null) {
+ IOUtils.closeQuietly(oldWatcher);
+ }
+
+ watcher = new ElectionWatcher(context.leaderSeqPath, watchedNode, context);
+ Stat exists = zkClient.exists(watchedNode, watcher);
+ if (exists == null) {
+ state = OUT_OF_ELECTION;
+ return true;
+ }
+
+ state = WAITING_IN_ELECTION;
+ if (log.isDebugEnabled()) log.debug("Watching path {} to know if I could be the leader, my node is {}", watchedNode, context.leaderSeqPath);
+
+ return false;
+ } catch (KeeperException.SessionExpiredException e) {
+ state = OUT_OF_ELECTION;
+ log.error("ZooKeeper session has expired");
+ return true;
+ } catch (KeeperException.NoNodeException e) {
+ log.info("the previous node disappeared, check if we are the leader again");
+ state = OUT_OF_ELECTION;
+ return true;
+ } catch (KeeperException e) {
+ // we couldn't set our watch for some other reason, retry
+ log.warn("Failed setting election watch, retrying {} {}", e.getClass().getName(), e.getMessage());
+ state = OUT_OF_ELECTION;
+ return true;
+ } catch (Exception e) {
+ state = OUT_OF_ELECTION;
+ // we couldn't set our watch for some other reason, retry
+ log.error("Failed setting election watch {} {}", e.getClass().getName(), e.getMessage());
+ state = OUT_OF_ELECTION;
+ return true;
+ }
}
+
+ } catch (KeeperException.SessionExpiredException e) {
+ log.error("ZooKeeper session has expired");
+ state = OUT_OF_ELECTION;
+ return true;
+ } catch (AlreadyClosedException e) {
+ state = OUT_OF_ELECTION;
+ return true;
+ } catch (Exception e) {
+ state = OUT_OF_ELECTION;
+ return true;
}
- } catch (KeeperException.SessionExpiredException e) {
- log.error("ZooKeeper session has expired");
- state = OUT_OF_ELECTION;
- return false;
- } catch (AlreadyClosedException e) {
- state = OUT_OF_ELECTION;
- return false;
- } catch (Exception e) {
- state = OUT_OF_ELECTION;
- return true;
+ } finally {
+ MDCLoggingContext.clear();
}
-
- state = OUT_OF_ELECTION;
- return true;
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java b/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
index 5416b89..3a4d371 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
@@ -22,6 +22,7 @@ import org.apache.solr.common.ParWork;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.core.SolrCore;
+import org.apache.solr.logging.MDCLoggingContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,8 +51,9 @@ public class RecoveringCoreTermWatcher implements ZkShardTerms.CoreTermWatcher,
@Override
public boolean onTermChanged(ShardTerms terms) {
if (coreContainer.isShutDown()) return false;
+ MDCLoggingContext.setCoreDescriptor(coreContainer, coreDescriptor);
- try {
+ try {
if (closed) {
return false;
}
@@ -74,6 +76,8 @@ public class RecoveringCoreTermWatcher implements ZkShardTerms.CoreTermWatcher,
log.info("Failed to watch term of core {}", coreDescriptor.getName(), e);
}
return false;
+ } finally {
+ MDCLoggingContext.clear();
}
return true;
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index 1f4ecad..a5a6b19 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -1722,17 +1722,17 @@ public class ZkController implements Closeable, Runnable {
*/
public void publish(final CoreDescriptor cd, final Replica.State state, boolean updateLastState) throws Exception {
MDCLoggingContext.setCoreDescriptor(cc, cd);
- log.info("publishing state={}", state);
- try (SolrCore core = cc.getCore(cd.getName())) {
- if ((state == Replica.State.ACTIVE || state == Replica.State.RECOVERING) && (isClosed() || (core != null && core.isClosing()))) {
- log.info("already closed, won't publish state={}", state);
- throw new AlreadyClosedException();
+ try {
+ log.info("publishing state={}", state);
+ try (SolrCore core = cc.getCore(cd.getName())) {
+ if ((state == Replica.State.ACTIVE || state == Replica.State.RECOVERING) && (isClosed() || (core != null && core.isClosing()))) {
+ log.info("already closed, won't publish state={}", state);
+ throw new AlreadyClosedException();
+ }
}
- }
- // nocommit TODO if we publish anything but ACTIVE, cancel any possible election?
+ // nocommit TODO if we publish anything but ACTIVE, cancel any possible election?
- try {
String collection = cd.getCloudDescriptor().getCollectionName();
// System.out.println(Thread.currentThread().getStackTrace()[3]);
@@ -1747,10 +1747,10 @@ public class ZkController implements Closeable, Runnable {
Map<String,Object> props = new HashMap<>();
props.put(Overseer.QUEUE_OPERATION, "state");
props.put(ZkStateReader.STATE_PROP, state.toString());
- // props.put(ZkStateReader.ROLES_PROP, cd.getCloudDescriptor().getRoles());
+ // props.put(ZkStateReader.ROLES_PROP, cd.getCloudDescriptor().getRoles());
props.put(CORE_NAME_PROP, cd.getName());
- // props.put(ZkStateReader.NODE_NAME_PROP, getNodeName());
- // props.put(ZkStateReader.SHARD_ID_PROP, cd.getCloudDescriptor().getShardId());
+ // props.put(ZkStateReader.NODE_NAME_PROP, getNodeName());
+ // props.put(ZkStateReader.SHARD_ID_PROP, cd.getCloudDescriptor().getShardId());
props.put(ZkStateReader.COLLECTION_PROP, collection);
props.put(ZkStateReader.REPLICA_TYPE, cd.getCloudDescriptor().getReplicaType().toString());
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 7a0c006..54248c2 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -104,6 +104,7 @@ import org.apache.solr.util.SystemIdResolver;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
import static java.util.Objects.requireNonNull;
import static org.apache.solr.common.params.CommonParams.AUTHC_PATH;
@@ -920,21 +921,25 @@ public class CoreContainer implements Closeable {
coreLoadFutures.add(solrCoreLoadExecutor.submit(() -> {
SolrCore core;
+ MDCLoggingContext.setCoreDescriptor(this, cd);
try {
+ try {
- core = createFromDescriptor(cd, false);
+ core = createFromDescriptor(cd, false);
- if (core.getDirectoryFactory().isSharedStorage()) {
- if (isZooKeeperAware()) {
- zkSys.getZkController().throwErrorIfReplicaReplaced(cd);
+ if (core.getDirectoryFactory().isSharedStorage()) {
+ if (isZooKeeperAware()) {
+ zkSys.getZkController().throwErrorIfReplicaReplaced(cd);
+ }
}
- }
+ } finally {
+ solrCores.markCoreAsNotLoading(cd);
+ } if (isZooKeeperAware()) {
+ new ZkController.RegisterCoreAsync(zkSys.zkController, cd, false).call();
+ }
} finally {
- solrCores.markCoreAsNotLoading(cd);
- }
- if (isZooKeeperAware()) {
- new ZkController.RegisterCoreAsync(zkSys.zkController, cd, false).call();
+ MDCLoggingContext.clear();
}
return core;
}));
@@ -1406,8 +1411,8 @@ public class CoreContainer implements Closeable {
ConfigSet coreConfig = coreConfigService.loadConfigSet(dcore);
dcore.setConfigSetTrusted(coreConfig.isTrusted());
if (log.isInfoEnabled()) {
- log.info("Creating SolrCore '{}' using configuration from {} solrconfig={}, trusted={}", dcore.getName(),
- coreConfig.getName(), coreConfig.getSolrConfig().getName(), dcore.isConfigSetTrusted());
+ log.info("Creating SolrCore '{}' using configuration from {} solrconfig={}, trusted={}", dcore.getName(), coreConfig.getName(), coreConfig.getSolrConfig().getName(),
+ dcore.isConfigSetTrusted());
}
try {
@@ -1429,14 +1434,13 @@ public class CoreContainer implements Closeable {
old = registerCore(dcore, core, true);
registered = true;
- } catch (Exception e){
+ } catch (Exception e) {
throw new SolrException(ErrorCode.SERVER_ERROR, e);
} finally {
solrCores.markCoreAsNotLoading(dcore);
}
-
// always kick off recovery if we are in non-Cloud mode
if (!isZooKeeperAware() && core.getUpdateHandler().getUpdateLog() != null) {
core.getUpdateHandler().getUpdateLog().recoverFromLog();
@@ -1452,9 +1456,9 @@ public class CoreContainer implements Closeable {
unload(dcore.getName(), true, true, true);
throw e;
}
-// if (!registered) {
-// solrCores.removeCoreDescriptor(dcore);
-// }
+ // if (!registered) {
+ // solrCores.removeCoreDescriptor(dcore);
+ // }
final SolrException solrException = new SolrException(ErrorCode.SERVER_ERROR, "Unable to create core [" + dcore.getName() + "]", e);
throw solrException;
} catch (Throwable t) {
@@ -1465,33 +1469,35 @@ public class CoreContainer implements Closeable {
throw t;
} finally {
-
- if (core != null) {
- if (!registered) {
- if (core != null) {
-
+ try {
+ if (core != null) {
+ if (!registered) {
+ if (core != null) {
+
+ SolrCore finalCore1 = core;
+ solrCoreCloseExecutor.submit(() -> {
+ finalCore1.closeAndWait();
+ });
+ SolrCore finalOld = old;
+ solrCoreCloseExecutor.submit(() -> {
+ if (finalOld != null) {
+ finalOld.closeAndWait();
+ }
+ });
+ }
+ }
+ if (isShutDown) {
SolrCore finalCore1 = core;
- solrCoreCloseExecutor.submit(() -> {
+ ParWork.getRootSharedExecutor().submit(() -> {
+
finalCore1.closeAndWait();
- });
- SolrCore finalOld = old;
- solrCoreCloseExecutor.submit(() -> {
- if (finalOld != null) {
- finalOld.closeAndWait();
- }
+
});
}
}
- if (isShutDown) {
- SolrCore finalCore1 = core;
- ParWork.getRootSharedExecutor().submit(() -> {
-
- finalCore1.closeAndWait();
-
- });
- }
+ } finally {
+ MDCLoggingContext.clear();
}
- MDCLoggingContext.clear();
}
}
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
index 76fab2e..935ee4a 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
@@ -43,6 +43,7 @@ import org.apache.solr.core.snapshots.SolrSnapshotManager;
import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager;
import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager.SnapshotMetaData;
import org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminOp;
+import org.apache.solr.logging.MDCLoggingContext;
import org.apache.solr.metrics.SolrMetricManager;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.update.UpdateLog;
@@ -72,35 +73,39 @@ import static org.apache.solr.handler.admin.CoreAdminHandler.normalizePath;
enum CoreAdminOperation implements CoreAdminOp {
CREATE_OP(CREATE, it -> {
- assert TestInjection.injectRandomDelayInCoreCreation();
-
SolrParams params = it.req.getParams();
log().info("core create command {}", params);
String coreName = params.required().get(CoreAdminParams.NAME);
- Map<String, String> coreParams = buildCoreParams(params);
- CoreContainer coreContainer = it.handler.coreContainer;
- Path instancePath;
-
- // TODO: Should we nuke setting odd instance paths? They break core discovery, generally
- String instanceDir = it.req.getParams().get(CoreAdminParams.INSTANCE_DIR);
- if (instanceDir == null)
- instanceDir = it.req.getParams().get("property.instanceDir");
- if (instanceDir != null) {
- instanceDir = PropertiesUtil.substituteProperty(instanceDir, coreContainer.getContainerProperties());
- instancePath = coreContainer.getCoreRootDirectory().resolve(instanceDir).normalize();
- } else {
- instancePath = coreContainer.getCoreRootDirectory().resolve(coreName);
- }
+ MDCLoggingContext.setCoreName(coreName);
+ try {
+ assert TestInjection.injectRandomDelayInCoreCreation();
+
+ Map<String,String> coreParams = buildCoreParams(params);
+ CoreContainer coreContainer = it.handler.coreContainer;
+ Path instancePath;
+
+ // TODO: Should we nuke setting odd instance paths? They break core discovery, generally
+ String instanceDir = it.req.getParams().get(CoreAdminParams.INSTANCE_DIR);
+ if (instanceDir == null) instanceDir = it.req.getParams().get("property.instanceDir");
+ if (instanceDir != null) {
+ instanceDir = PropertiesUtil.substituteProperty(instanceDir, coreContainer.getContainerProperties());
+ instancePath = coreContainer.getCoreRootDirectory().resolve(instanceDir).normalize();
+ } else {
+ instancePath = coreContainer.getCoreRootDirectory().resolve(coreName);
+ }
- boolean newCollection = params.getBool(CoreAdminParams.NEW_COLLECTION, false);
- if (coreContainer.isShutDown()) {
- log().warn("Will not create SolrCore, CoreContainer is shutdown");
- throw new AlreadyClosedException("Will not create SolrCore, CoreContainer is shutdown");
- }
+ boolean newCollection = params.getBool(CoreAdminParams.NEW_COLLECTION, false);
+ if (coreContainer.isShutDown()) {
+ log().warn("Will not create SolrCore, CoreContainer is shutdown");
+ throw new AlreadyClosedException("Will not create SolrCore, CoreContainer is shutdown");
+ }
- coreContainer.create(coreName, instancePath, coreParams, newCollection);
+ coreContainer.create(coreName, instancePath, coreParams, newCollection);
- it.rsp.add("core", coreName);
+ it.rsp.add("core", coreName);
+ } finally {
+ MDCLoggingContext.clear();
+ }
}),
UNLOAD_OP(UNLOAD, it -> {
SolrParams params = it.req.getParams();
diff --git a/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java b/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
index 7c1f4f5..c8f29cd 100644
--- a/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
+++ b/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
@@ -320,13 +320,14 @@ public final class DefaultSolrCoreState extends SolrCoreState implements Recover
CoreContainer corecontainer = core.getCoreContainer();
Runnable recoveryTask = () -> {
+ CoreDescriptor coreDescriptor = core.getCoreDescriptor();
+ MDCLoggingContext.setCoreDescriptor(corecontainer, coreDescriptor);
try {
if (SKIP_AUTO_RECOVERY) {
log.warn("Skipping recovery according to sys prop solrcloud.skip.autorecovery");
return;
}
- CoreDescriptor coreDescriptor = core.getCoreDescriptor();
- MDCLoggingContext.setCoreDescriptor(corecontainer, coreDescriptor);
+
if (log.isDebugEnabled()) log.debug("Going to create and run RecoveryStrategy");
// try {
@@ -420,6 +421,7 @@ public final class DefaultSolrCoreState extends SolrCoreState implements Recover
if (!success) {
recoverying = false;
}
+
}
}