You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/11/15 20:24:27 UTC
[lucene-solr] 02/02: @1216 Harden - maybe finally got the no update
log configured issue.
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 0f154b95e827e4245cdb62a4d67abcf7c559be39
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Sun Nov 15 14:24:02 2020 -0600
@1216 Harden - maybe finally got the no update log configured issue.
---
.../apache/solr/cloud/ZkSolrResourceLoader.java | 6 ++-
.../src/java/org/apache/solr/core/SolrCore.java | 9 ++--
.../org/apache/solr/core/SolrResourceLoader.java | 2 +-
.../java/org/apache/solr/core/XmlConfigFile.java | 21 +++------
.../org/apache/solr/util/SystemIdResolver.java | 51 ++++++++++------------
.../src/java/org/apache/solr/SolrTestCase.java | 9 +++-
6 files changed, 45 insertions(+), 53 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
index c7b20fb..c672c18 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -69,14 +69,14 @@ public class ZkSolrResourceLoader extends SolrResourceLoader implements Resource
public InputStream openResource(String resource) throws IOException {
InputStream is;
String file = (".".equals(resource)) ? configSetZkPath : configSetZkPath + "/" + resource;
-
+ if (log.isDebugEnabled()) log.debug("open resource {}", resource);
try {
Stat stat = new Stat();
byte[] bytes = zkController.getZkClient().getData(file, null, stat);
if (bytes == null) {
-
+ log.error("resource not found {}", resource);
throw new SolrResourceNotFoundException("Can't find resource '" + resource
+ "' in classpath or '" + configSetZkPath + "', cwd="
+ System.getProperty("user.dir"));
@@ -86,10 +86,12 @@ public class ZkSolrResourceLoader extends SolrResourceLoader implements Resource
ParWork.propagateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Interrupted while opening " + file, e);
} catch (KeeperException.NoNodeException e) {
+ log.error("resource not found {}", resource);
throw new SolrResourceNotFoundException("Can't find resource '" + resource
+ "' in classpath or '" + configSetZkPath + "', cwd="
+ System.getProperty("user.dir"));
} catch (KeeperException e) {
+ log.error("zookeeper exception trying to open resource {}", resource);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error opening " + file, e);
}
}
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 bd22ead..06b3efe 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -1078,9 +1078,6 @@ public final class SolrCore implements SolrInfoBean, Closeable {
initSearcher(prev);
- // Finally tell anyone who wants to know
- resourceLoader.inform(resourceLoader);
-
this.updateHandler.informEventListeners(this);
infoRegistry.put("core", this);
@@ -1093,6 +1090,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
bufferUpdatesIfConstructing(coreDescriptor);
+ registerConfListener();
+
this.ruleExpiryLock = new ReentrantLock();
this.snapshotDelLock = new ReentrantLock();
@@ -1104,11 +1103,11 @@ public final class SolrCore implements SolrInfoBean, Closeable {
// from the core.
resourceLoader.inform(infoRegistry);
+ // Finally tell anyone who wants to know
+ resourceLoader.inform(resourceLoader);
resourceLoader.inform(this); // last call before the latch is released.
- registerConfListener();
-
searcherReadyLatch.countDown();
// seed version buckets with max from index during core initialization ... requires a searcher!
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index be479cb..26a119d 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -175,7 +175,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
}
public SystemIdResolver getSysIdResolver() {
- return sysIdResolver;
+ return sysIdResolver;
}
/**
diff --git a/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java b/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
index b3930cb..7d0b4dc 100644
--- a/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
+++ b/solr/core/src/java/org/apache/solr/core/XmlConfigFile.java
@@ -196,27 +196,16 @@ public class XmlConfigFile { // formerly simply "Config"
conf2.setDocumentNumberAllocator(conf1.getDocumentNumberAllocator());
conf2.setNamePool(conf1.getNamePool());
-
+ conf2.setURIResolver(loader.getSysIdResolver().asURIResolver());
PipelineConfiguration plc = conf2.makePipelineConfiguration();
- plc.setURIResolver(loader.getSysIdResolver().asURIResolver());
-
- ParseOptions parseOptions = conf2.getParseOptions();
- if (is.getSystemId() != null) {
- parseOptions.setEntityResolver(loader.getSysIdResolver());
- }
-
- parseOptions.setXIncludeAware(true);
- parseOptions.setExpandAttributeDefaults(true);
- parseOptions.setPleaseCloseAfterUse(true);
- // parseOptions.setSchemaValidationMode(Validation.STRIP);
- parseOptions.setSchemaValidationMode(0);
-
- TinyDocumentImpl docTree = null;
+ //plc.setURIResolver(loader.getSysIdResolver().asURIResolver());
+ conf2.getParseOptions().setEntityResolver(loader.getSysIdResolver());
+ TinyDocumentImpl docTree;
SolrTinyBuilder builder = new SolrTinyBuilder(plc, substituteProps);
try {
//builder.setStatistics(conf2.getTreeStatistics().SOURCE_DOCUMENT_STATISTICS);
- Sender.send(source, builder, parseOptions);
+ Sender.send(source, builder, conf2.getParseOptions());
docTree = (TinyDocumentImpl) builder.getCurrentRoot();
} finally {
builder.close();
diff --git a/solr/core/src/java/org/apache/solr/util/SystemIdResolver.java b/solr/core/src/java/org/apache/solr/util/SystemIdResolver.java
index 64dd353..ed9ec37 100644
--- a/solr/core/src/java/org/apache/solr/util/SystemIdResolver.java
+++ b/solr/core/src/java/org/apache/solr/util/SystemIdResolver.java
@@ -17,6 +17,8 @@
package org.apache.solr.util;
import org.apache.lucene.analysis.util.ResourceLoader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.ext.EntityResolver2;
@@ -29,6 +31,7 @@ import javax.xml.transform.URIResolver;
import javax.xml.transform.sax.SAXSource;
import java.io.File;
import java.io.IOException;
+import java.lang.invoke.MethodHandles;
import java.net.URI;
import java.net.URISyntaxException;
@@ -51,6 +54,7 @@ import java.net.URISyntaxException;
* </pre>
*/
public final class SystemIdResolver implements EntityResolver, EntityResolver2 {
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static final String RESOURCE_LOADER_URI_SCHEME = "solrres";
public static final String RESOURCE_LOADER_AUTHORITY_ABSOLUTE = "@";
@@ -66,34 +70,29 @@ public final class SystemIdResolver implements EntityResolver, EntityResolver2 {
}
public URIResolver asURIResolver() {
- return new URIResolver() {
- @Override
- public Source resolve(String href, String base) throws TransformerException {
- try {
- final InputSource src = SystemIdResolver.this.resolveEntity(null, null, base, href);
- return (src == null) ? null : new SAXSource(src);
- } catch (IOException ioe) {
- throw new TransformerException("Cannot resolve entity", ioe);
- }
+ return (href, base) -> {
+ try {
+ final InputSource src = SystemIdResolver.this.resolveEntity(null, null, base, href);
+ return (src == null) ? null : new SAXSource(src);
+ } catch (IOException ioe) {
+ throw new TransformerException("Cannot resolve entity", ioe);
}
};
}
public XMLResolver asXMLResolver() {
- return new XMLResolver() {
- @Override
- public Object resolveEntity(String publicId, String systemId, String baseURI, String namespace) throws XMLStreamException {
- try {
- final InputSource src = SystemIdResolver.this.resolveEntity(null, publicId, baseURI, systemId);
- return (src == null) ? null : src.getByteStream();
- } catch (IOException ioe) {
- throw new XMLStreamException("Cannot resolve entity", ioe);
- }
+ return (publicId, systemId, baseURI, namespace) -> {
+ try {
+ final InputSource src = SystemIdResolver.this.resolveEntity(null, publicId, baseURI, systemId);
+ return (src == null) ? null : src.getByteStream();
+ } catch (IOException ioe) {
+ throw new XMLStreamException("Cannot resolve entity", ioe);
}
};
}
URI resolveRelativeURI(String baseURI, String systemId) throws URISyntaxException {
+ if (log.isDebugEnabled()) log.debug("resolve relative uri {} {}, {}, {}", baseURI, systemId);
URI uri;
// special case for backwards compatibility: if relative systemId starts with "/" (we convert that to an absolute solrres:-URI)
@@ -121,6 +120,7 @@ public final class SystemIdResolver implements EntityResolver, EntityResolver2 {
@Override
public InputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws IOException {
+ if (log.isDebugEnabled()) log.debug("resolve entity {} {}, {}, {}", name, publicId, baseURI, systemId);
if (systemId == null) {
return null;
}
@@ -133,15 +133,10 @@ public final class SystemIdResolver implements EntityResolver, EntityResolver2 {
if (!RESOURCE_LOADER_AUTHORITY_ABSOLUTE.equals(authority)) {
path = path.substring(1);
}
- try {
- final InputSource is = new InputSource(loader.openResource(path));
- is.setSystemId(uri.toASCIIString());
- is.setPublicId(publicId);
- return is;
- } catch (RuntimeException re) {
- // unfortunately XInclude fallback only works with IOException, but openResource() never throws that one
- throw new IOException(re.getMessage(), re);
- }
+ final InputSource is = new InputSource(loader.openResource(path));
+ is.setSystemId(uri.toString());
+ is.setPublicId(publicId);
+ return is;
} else {
throw new IOException("Cannot resolve absolute systemIDs / external entities (only relative paths work): " + systemId);
}
@@ -166,7 +161,7 @@ public final class SystemIdResolver implements EntityResolver, EntityResolver2 {
name = "/" + name;
}
try {
- return new URI(RESOURCE_LOADER_URI_SCHEME, authority, name, null, null).toASCIIString();
+ return new URI(RESOURCE_LOADER_URI_SCHEME, authority, name, null, null).toString();
} catch (URISyntaxException use) {
throw new IllegalArgumentException("Invalid syntax of Solr Resource URI", use);
}
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
index b8e22bb..423be7a 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
@@ -67,6 +67,7 @@ import org.apache.solr.util.RevertDefaultThreadHandlerRule;
import org.apache.solr.util.SSLTestConfig;
import org.apache.solr.util.StartupLoggingUtils;
import org.apache.solr.util.TestInjection;
+import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -455,8 +456,13 @@ public class SolrTestCase extends LuceneTestCase {
throw new RuntimeException("Cannot find resource in classpath or in file-system (relative to CWD): " + name);
}
+ @After
+ public void afterSolrTestCase() throws Exception {
+
+ }
+
@AfterClass
- public static void afterSolrTestCase() throws Exception {
+ public static void afterSolrTestCaseClass() throws Exception {
log.info("*******************************************************************");
log.info("@After Class ------------------------------------------------------");
try {
@@ -513,6 +519,7 @@ public class SolrTestCase extends LuceneTestCase {
// + testTime);
}
} finally {
+ System.clearProperty("enable.update.log");
Class<? extends Object> clazz = null;
Long tooLongTime = 0L;
String times = null;