This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new 2a4a24c  SOLR-14686: Logs: Remove log "[coreName]" in SolrCore which 
is redundant with MDC (#517)
2a4a24c is described below

commit 2a4a24c8e62aeffd54e49f5370df56500b52cf83
Author: David Smiley <[email protected]>
AuthorDate: Fri Jan 21 10:40:12 2022 -0500

    SOLR-14686: Logs: Remove log "[coreName]" in SolrCore which is redundant 
with MDC (#517)
    
    Also, ensured any problems in SolrCore.close has MDC info in logs.
---
 solr/CHANGES.txt                                   |  3 +
 .../src/java/org/apache/solr/core/SolrCore.java    | 72 ++++++++++------------
 .../apache/solr/response/SolrQueryResponse.java    | 10 ++-
 .../org/apache/solr/rest/BaseSolrResource.java     |  2 +-
 .../apache/solr/update/DirectUpdateHandler2.java   |  4 +-
 .../processor/LogUpdateProcessorFactory.java       |  2 +-
 .../java/org/apache/solr/util/SolrLogPostTool.java |  5 ++
 .../org/apache/solr/util/SolrLogPostToolTest.java  | 34 +++++++---
 8 files changed, 76 insertions(+), 56 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index ed1caa7..56daf25 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -238,6 +238,9 @@ when told to. The admin UI now tells it to. (Nazerke 
Seidan, David Smiley)
 
 * SOLR-14916: Add split parameter to timeseries Streaming Expression (Joel 
Bernstein)
 
+* SOLR-14686: Logs: Removed the "[corename]" prefix of some SolrCore logs that 
has become redundant
+  with MDC.  (David Smiley)
+
 * SOLR-15884: Backup responses now use a map to return information instead of 
a list (Houston Putman, Christine Poerschke)
 
 Build
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java 
b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index eae94c9..d3604a2 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -194,7 +194,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
   private static final Logger slowLog = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass().getName() + 
".SlowRequest"); //nowarn
 
   private String name;
-  private String logid; // used to show what name is set
+
   /**
    * A unique id to differentiate multiple instances of the same core
    * If we reload a core, the name remains same , but the id will be new
@@ -519,23 +519,21 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
   }
 
   @Override
+  public String toString() {
+    return super.toString() + " " + getName();
+  }
+
+  @Override
   public String getName() {
     return name;
   }
 
+  /** Called to rename a core.  Not called to initialize the name. */
   public void setName(String v) {
-    Objects.requireNonNull(v);
-    boolean renamed = this.name != null && !this.name.equals(v);
-    assert !renamed || coreDescriptor.getCloudDescriptor() == null : "Cores 
are not renamed in SolrCloud";
-    this.name = v;
-    this.logid = "[" + v + "] "; // TODO remove; obsoleted by MDC
-    if (renamed && coreMetricManager != null) {
-      coreMetricManager.afterCoreRename();
-    }
-  }
-
-  public String getLogId() {
-    return this.logid;
+    assert this.name != null;
+    assert coreDescriptor.getCloudDescriptor() == null : "Cores are not 
renamed in SolrCloud";
+    this.name = Objects.requireNonNull(v);
+    coreMetricManager.afterCoreRename();
   }
 
   /**
@@ -672,11 +670,11 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
       if ("firstSearcher".equals(event)) {
         SolrEventListener obj = createEventListener(info);
         firstSearcherListeners.add(obj);
-        log.debug("[{}] Added SolrEventListener for firstSearcher: [{}]", 
logid, obj);
+        log.debug("Added SolrEventListener for firstSearcher: [{}]", obj);
       } else if ("newSearcher".equals(event)) {
         SolrEventListener obj = createEventListener(info);
         newSearcherListeners.add(obj);
-        log.debug("[{}] Added SolrEventListener for newSearcher: [{}]", logid, 
obj);
+        log.debug("Added SolrEventListener for newSearcher: [{}]", obj);
       }
     }
   }
@@ -830,7 +828,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
       Directory dir = directoryFactory.get(indexDir, DirContext.DEFAULT, 
lockType);
       try {
         if (isWriterLocked(dir)) {
-          log.error("{}Solr index directory '{}' is locked (lockType={}).  
Throwing exception.", logid,
+          log.error("Solr index directory '{}' is locked (lockType={}).  
Throwing exception.",
               indexDir, lockType);
           throw new LockObtainFailedException(
               "Index dir '" + indexDir + "' of core '" + name + "' is already 
locked. " +
@@ -845,7 +843,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
 
     // Create the index if it doesn't exist.
     if (!indexExists) {
-      log.debug("{}Solr index directory '{}' doesn't exist. Creating new 
index...", logid, indexDir);
+      log.debug("Solr index directory '{}' doesn't exist. Creating new 
index...", indexDir);
       SolrIndexWriter writer = null;
       try {
         writer = SolrIndexWriter.create(this, "SolrCore.initIndex", indexDir, 
getDirectoryFactory(), true,
@@ -955,20 +953,15 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
     return createReloadedUpdateHandler(className, "Update Handler", 
updateHandler);
   }
 
-  public SolrCore(CoreContainer coreContainer, CoreDescriptor cd, ConfigSet 
configSet) {
-    this(coreContainer, cd, configSet, null,
-        null, null, null, false);
-  }
-
   public CoreContainer getCoreContainer() {
     return coreContainer;
   }
 
+  SolrCore(CoreContainer coreContainer, CoreDescriptor cd, ConfigSet 
configSet) {
+    this(coreContainer, cd, configSet, null,
+        null, null, null, false);
+  }
 
-  /**
-   * Creates a new core and register it in the list of cores. If a core with 
the
-   * same name already exists, it will be stopped and replaced by this one.
-   */
   private SolrCore(CoreContainer coreContainer, CoreDescriptor coreDescriptor, 
ConfigSet configSet,
                    String dataDir, UpdateHandler updateHandler,
                    IndexDeletionPolicyWrapper delPolicy, SolrCore prev, 
boolean reload) {
@@ -980,7 +973,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
       this.coreContainer = coreContainer;
       this.configSet = configSet;
       this.coreDescriptor = Objects.requireNonNull(coreDescriptor, 
"coreDescriptor cannot be null");
-      setName(coreDescriptor.getName());
+      this.name = Objects.requireNonNull(coreDescriptor.getName());
       coreProvider = new Provider(coreContainer, getName(), uniqueId);
 
       this.solrConfig = configSet.getSolrConfig();
@@ -1010,7 +1003,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
       this.ulogDir = initUpdateLogDir(coreDescriptor);
 
       if (log.isInfoEnabled()) {
-        log.info("[{}] Opening new SolrCore at [{}], dataDir=[{}]", logid, 
getInstancePath(), this.dataDir);
+        log.info("Opening new SolrCore at [{}], dataDir=[{}]", 
getInstancePath(), this.dataDir);
       }
 
       checkVersionFieldExistsInSchema(schema, coreDescriptor);
@@ -1580,7 +1573,6 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
    */
   @Override
   public void close() {
-    MDCLoggingContext.clear(); // balance out open with close
     int count = refCount.decrementAndGet();
     if (count > 0) return; // close is called often, and only actually closes 
if nothing is using it.
     if (count < 0) {
@@ -1588,7 +1580,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
       assert false : "Too many closes on SolrCore";
       return;
     }
-    log.info("{} CLOSING SolrCore {}", logid, this);
+    log.info("CLOSING SolrCore {}", this);
 
     ExecutorUtil.shutdownAndAwaitTermination(coreAsyncTaskExecutor);
 
@@ -1728,6 +1720,8 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
       }
     }
 
+    MDCLoggingContext.clear(); // balance out open with close
+
     assert ObjectReleaseTracker.release(this);
   }
 
@@ -2309,7 +2303,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
         newSearcherCounter.inc();
         if (onDeckSearchers < 1) {
           // should never happen... just a sanity check
-          log.error("{}ERROR!!! onDeckSearchers is {}", logid, 
onDeckSearchers);
+          log.error("ERROR!!! onDeckSearchers is {}", onDeckSearchers);
           onDeckSearchers = 1;  // reset
         } else if (onDeckSearchers > maxWarmingSearchers) {
           onDeckSearchers--;
@@ -2323,7 +2317,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
           }
           continue;  // go back to the top of the loop and retry
         } else if (onDeckSearchers > 1) {
-          log.warn("{}PERFORMANCE WARNING: Overlapping onDeckSearchers={}", 
logid, onDeckSearchers);
+          log.warn("PERFORMANCE WARNING: Overlapping onDeckSearchers={}", 
onDeckSearchers);
         }
 
         break; // I can now exit the loop and proceed to open a searcher
@@ -2480,7 +2474,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
 
           if (onDeckSearchers < 0) {
             // sanity check... should never happen
-            log.error("{}ERROR!!! onDeckSearchers after decrement={}", logid, 
onDeckSearchers);
+            log.error("ERROR!!! onDeckSearchers after decrement={}", 
onDeckSearchers);
             onDeckSearchers = 0; // try and recover
           }
           // if we failed, we need to wake up at least one waiter to continue 
the process
@@ -2578,7 +2572,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
         newSearcher.register(); // register subitems (caches)
 
         if (log.isInfoEnabled()) {
-          log.info("{} Registered new searcher autowarm time: {} ms", logid, 
newSearcher.getWarmupTime());
+          log.info("Registered new searcher autowarm time: {} ms", 
newSearcher.getWarmupTime());
         }
 
       } catch (Exception e) {
@@ -2596,7 +2590,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
 
 
   public void closeSearcher() {
-    log.debug("{}Closing main searcher on request.", logid);
+    log.debug("Closing main searcher on request.");
     synchronized (searcherLock) {
       if (realtimeSearcher != null) {
         realtimeSearcher.decref();
@@ -2614,7 +2608,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
       String msg = "Null Request Handler '" +
           req.getParams().get(CommonParams.QT) + "'";
 
-      log.warn("{}{}:{}", logid, msg, req);
+      log.warn("{}:{}", msg, req);
 
       throw new SolrException(ErrorCode.BAD_REQUEST, msg);
     }
@@ -2629,7 +2623,7 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
      */
     if (requestLog.isDebugEnabled() && rsp.getToLog().size() > 0) {
       // log request at debug in case something goes wrong and we aren't able 
to log later
-      requestLog.debug(rsp.getToLogAsString(logid));
+      requestLog.debug(rsp.getToLogAsString());
     }
 
     // TODO: this doesn't seem to be working correctly and causes problems 
with the example server and distrib (for example /spell)
@@ -2641,14 +2635,14 @@ public final class SolrCore implements SolrInfoBean, 
Closeable {
 
     if (rsp.getToLog().size() > 0) {
       if (requestLog.isInfoEnabled()) {
-        requestLog.info(rsp.getToLogAsString(logid));
+        requestLog.info(rsp.getToLogAsString());
       }
 
       /* slowQueryThresholdMillis defaults to -1 in SolrConfig -- not 
enabled.*/
       if (log.isWarnEnabled() && slowQueryThresholdMillis >= 0) {
         final long qtime = (long) (req.getRequestTimer().getTime());
         if (qtime >= slowQueryThresholdMillis) {
-          slowLog.warn("slow: {}", rsp.getToLogAsString(logid));
+          slowLog.warn("slow: {}", rsp.getToLogAsString());
         }
       }
     }
diff --git a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java 
b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
index bc4fb4d..cc47796 100644
--- a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
+++ b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
@@ -222,9 +222,13 @@ public class SolrQueryResponse {
     return toLog;
   }
 
-  /** Returns a string of the form "logid name1=value1 name2=value2 ..." */
-  public String getToLogAsString(String logid) {
-    StringBuilder sb = new StringBuilder(logid);
+  public String getToLogAsString() {
+    return getToLogAsString("");
+  }
+
+  /** Returns a string of the form "prefix name1=value1 name2=value2 ..." */
+  public String getToLogAsString(String prefix) {
+    StringBuilder sb = new StringBuilder(prefix);
     for (int i=0; i<toLog.size(); i++) {
       if (sb.length() > 0) {
         sb.append(' ');
diff --git a/solr/core/src/java/org/apache/solr/rest/BaseSolrResource.java 
b/solr/core/src/java/org/apache/solr/rest/BaseSolrResource.java
index 11047ec..459fccf 100644
--- a/solr/core/src/java/org/apache/solr/rest/BaseSolrResource.java
+++ b/solr/core/src/java/org/apache/solr/rest/BaseSolrResource.java
@@ -106,7 +106,7 @@ public abstract class BaseSolrResource {
     addDeprecatedWarning();
 
     if (log.isInfoEnabled() && solrResponse.getToLog().size() > 0) {
-      log.info(solrResponse.getToLogAsString(solrCore.getLogId()));
+      log.info(solrResponse.getToLogAsString());
     }
   }
 
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 acc7c67..94b1c4a 100644
--- a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
+++ b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
@@ -208,9 +208,7 @@ public class DirectUpdateHandler2 extends UpdateHandler 
implements SolrCoreState
   }
 
   private void deleteAll() throws IOException {
-    if (log.isInfoEnabled()) {
-      log.info("{} REMOVING ALL DOCUMENTS FROM INDEX", core.getLogId());
-    }
+    log.info("REMOVING ALL DOCUMENTS FROM INDEX");
     RefCounted<IndexWriter> iw = solrCoreState.getIndexWriter(core);
     try {
       iw.get().deleteAll();
diff --git 
a/solr/core/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java
 
b/solr/core/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java
index a3eb260..59db7d9 100644
--- 
a/solr/core/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java
@@ -209,7 +209,7 @@ public class LogUpdateProcessorFactory extends 
UpdateRequestProcessorFactory imp
     }
 
     private String getLogStringAndClearRspToLog() {
-      StringBuilder sb = new 
StringBuilder(rsp.getToLogAsString(req.getCore().getLogId()));
+      StringBuilder sb = new StringBuilder(rsp.getToLogAsString());
 
       rsp.getToLog().clear();   // make it so SolrCore.exec won't log this 
again
 
diff --git a/solr/core/src/java/org/apache/solr/util/SolrLogPostTool.java 
b/solr/core/src/java/org/apache/solr/util/SolrLogPostTool.java
index ec9cfcc..bf5f753 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrLogPostTool.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrLogPostTool.java
@@ -381,6 +381,11 @@ public class SolrLogPostTool {
     }
 
     private String parseNewSearcherCore(String line) {
+      String xCore = parseCore(line);
+      if (xCore != null) {
+        return xCore;
+      }
+      // pre Solr 9
       char[] ca = {']'};
       String parts[] = line.split("\\[");
       if(parts.length > 3) {
diff --git a/solr/core/src/test/org/apache/solr/util/SolrLogPostToolTest.java 
b/solr/core/src/test/org/apache/solr/util/SolrLogPostToolTest.java
index e518cd5..5be6469 100644
--- a/solr/core/src/test/org/apache/solr/util/SolrLogPostToolTest.java
+++ b/solr/core/src/test/org/apache/solr/util/SolrLogPostToolTest.java
@@ -18,23 +18,35 @@ package org.apache.solr.util;
 
 import java.io.BufferedReader;
 import java.io.StringReader;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.ArrayList;
-
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
 import org.apache.solr.util.SolrLogPostTool.LogRecordReader;
-
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class SolrLogPostToolTest extends SolrTestCaseJ4 {
 
+  private static boolean solr9Format;
+
+  @BeforeClass
+  public static void beforeClass() {
+    solr9Format = random().nextBoolean();
+    System.out.println("Solr 9 Format: " + solr9Format);
+  }
+
+  private String sometimesSolr9Format(String record) {
+    // pull out bracketed core name that is redundant with MDC -- see 
SOLR-14686
+    return solr9Format ? record.replaceFirst("\\[[a-zA-Z0-9_]+\\] +", "") : 
record;
+  }
 
   @Test
   public void testQueryRecord() throws Exception{
-    String record = "2019-12-09 15:05:11.931 INFO  (qtp2103763750-21) [c:logs4 
s:shard1 r:core_node2 x:logs4_shard1_replica_n1] o.a.s.c.S.Request 
[logs4_shard1_replica_n1]  webapp=/solr path=/select 
params={q=*:*&_=1575835181759&shards.purpose=36&isShard=true&wt=javabin&distrib=false}
 hits=234868 status=0 QTime=8\n";
+    String record = sometimesSolr9Format(
+        "2019-12-09 15:05:11.931 INFO  (qtp2103763750-21) [c:logs4 s:shard1 
r:core_node2 x:logs4_shard1_replica_n1] o.a.s.c.S.Request 
[logs4_shard1_replica_n1]  webapp=/solr path=/select 
params={q=*:*&_=1575835181759&shards.purpose=36&isShard=true&wt=javabin&distrib=false}
 hits=234868 status=0 QTime=8\n");
     List<SolrInputDocument> docs = readDocs(record);
     assertEquals(docs.size(), 1);
     SolrInputDocument doc = docs.get(0);
@@ -85,7 +97,8 @@ public class SolrLogPostToolTest extends SolrTestCaseJ4 {
   // values are received.
   @Test
   public void testRecordsFirstInstanceOfSingleValuedParams() throws Exception {
-    final String record = "2019-12-09 15:05:01.931 INFO  (qtp2103763750-21) 
[c:logs4 s:shard1 r:core_node2 x:logs4_shard1_replica_n1] o.a.s.c.S.Request 
[logs4_shard1_replica_n1]  webapp=/solr path=/select 
params={q=*:*&q=inStock:true&_=1575835181759&shards.purpose=36&isShard=true&wt=javabin&wt=xml&distrib=false}
 hits=234868 status=0 QTime=8\n";
+    final String record = sometimesSolr9Format(
+        "2019-12-09 15:05:01.931 INFO  (qtp2103763750-21) [c:logs4 s:shard1 
r:core_node2 x:logs4_shard1_replica_n1] o.a.s.c.S.Request 
[logs4_shard1_replica_n1]  webapp=/solr path=/select 
params={q=*:*&q=inStock:true&_=1575835181759&shards.purpose=36&isShard=true&wt=javabin&wt=xml&distrib=false}
 hits=234868 status=0 QTime=8\n");
 
     List<SolrInputDocument> docs = readDocs(record);
     assertEquals(docs.size(), 1);
@@ -100,7 +113,8 @@ public class SolrLogPostToolTest extends SolrTestCaseJ4 {
 
   @Test
   public void testRTGRecord() throws Exception {
-    final String record = "2020-03-19 20:00:30.845 INFO  (qtp1635378213-20354) 
[c:logs4 s:shard8 r:core_node63 x:logs4_shard8_replica_n60] o.a.s.c.S.Request 
[logs4_shard8_replica_n60]  webapp=/solr path=/get 
params={qt=/get&_stateVer_=logs4:104&ids=id1&ids=id2&ids=id3&wt=javabin&version=2}
 status=0 QTime=61";
+    final String record = sometimesSolr9Format(
+        "2020-03-19 20:00:30.845 INFO  (qtp1635378213-20354) [c:logs4 s:shard8 
r:core_node63 x:logs4_shard8_replica_n60] o.a.s.c.S.Request 
[logs4_shard8_replica_n60]  webapp=/solr path=/get 
params={qt=/get&_stateVer_=logs4:104&ids=id1&ids=id2&ids=id3&wt=javabin&version=2}
 status=0 QTime=61");
 
     List<SolrInputDocument> docs = readDocs(record);
     assertEquals(docs.size(), 1);
@@ -121,8 +135,9 @@ public class SolrLogPostToolTest extends SolrTestCaseJ4 {
 
   @Test
   public void testUpdateRecords() throws Exception{
-    String record = "2019-12-25 20:38:23.498 INFO  (qtp2103763750-126) 
[c:logs3 s:shard1 r:core_node2 x:logs3_shard1_replica_n1] 
o.a.s.u.p.LogUpdateProcessorFactory [logs3_shard1_replica_n1]  webapp=/solr 
path=/update 
params={commitWithin=1000&overwrite=true&wt=json&_=1577306114481}{deleteByQuery=*:*
 (-1653925534487281664)} 0 11\n" +
-                    "2019-12-25 20:42:13.411 INFO  (qtp2103763750-303) 
[c:logs5 s:shard1 r:core_node2 x:logs5_shard1_replica_n1] 
o.a.s.u.p.LogUpdateProcessorFactory [logs5_shard1_replica_n1]  webapp=/solr 
path=/update 
params={commitWithin=1000&overwrite=true&wt=json&_=1577306114481}{delete=[03bbe975-728a-4df8-aa25-fe25049dc0ef
 (-1653925775577972736)]} 0 1\n";
+    String record = sometimesSolr9Format(
+        "2019-12-25 20:38:23.498 INFO  (qtp2103763750-126) [c:logs3 s:shard1 
r:core_node2 x:logs3_shard1_replica_n1] o.a.s.u.p.LogUpdateProcessorFactory 
[logs3_shard1_replica_n1]  webapp=/solr path=/update 
params={commitWithin=1000&overwrite=true&wt=json&_=1577306114481}{deleteByQuery=*:*
 (-1653925534487281664)} 0 11\n" +
+                    "2019-12-25 20:42:13.411 INFO  (qtp2103763750-303) 
[c:logs5 s:shard1 r:core_node2 x:logs5_shard1_replica_n1] 
o.a.s.u.p.LogUpdateProcessorFactory [logs5_shard1_replica_n1]  webapp=/solr 
path=/update 
params={commitWithin=1000&overwrite=true&wt=json&_=1577306114481}{delete=[03bbe975-728a-4df8-aa25-fe25049dc0ef
 (-1653925775577972736)]} 0 1\n");
     List<SolrInputDocument> docs = readDocs(record);
     assertEquals(docs.size(), 2);
     SolrInputDocument doc = docs.get(0);
@@ -279,7 +294,8 @@ public class SolrLogPostToolTest extends SolrTestCaseJ4 {
 
   @Test
   public void testNewSearcher() throws Exception{
-    String record = "2019-12-16 19:00:23.931 INFO  
(searcherExecutor-66-thread-1) [   ] o.a.s.c.SolrCore 
[production_cv_month_201912_shard35_replica_n1] Registered new searcher 
Searcher@16ef5fac[production_cv_month_201912_shard35_replica_n1] ...";
+    String record = sometimesSolr9Format(
+        "2019-12-16 19:00:23.931 INFO  (searcherExecutor-66-thread-1) [ 
x:production_cv_month_201912_shard35_replica_n1] o.a.s.c.SolrCore 
[production_cv_month_201912_shard35_replica_n1] Registered new searcher 
Searcher@16ef5fac[production_cv_month_201912_shard35_replica_n1] ...");
     List<SolrInputDocument> docs = readDocs(record);
     assertEquals(docs.size(), 1);
     SolrInputDocument doc = docs.get(0);

Reply via email to