You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by is...@apache.org on 2022/01/24 13:33:16 UTC
[solr] branch jira/solr-14688_poc updated: Cleanup
This is an automated email from the ASF dual-hosted git repository.
ishan pushed a commit to branch jira/solr-14688_poc
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/jira/solr-14688_poc by this push:
new 6e09ee3 Cleanup
new d41ab44 Merge branch 'jira/solr-14688_poc' of https://gitbox.apache.org/repos/asf/solr into jira/solr-14688_poc
6e09ee3 is described below
commit 6e09ee38296b82a73dfd1a1020387e8e58883828
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Mon Jan 24 19:02:09 2022 +0530
Cleanup
---
gradle/solr/packaging.gradle | 2 +-
solr/bin/solr | 1 +
.../update/ScriptUpdateProcessorFactory.java | 13 ++++++------
.../java/org/apache/solr/pkg/PackageLoader.java | 24 +++++++++++-----------
.../test/org/apache/solr/pkg/TestLocalPkgs.java | 12 +++++------
5 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/gradle/solr/packaging.gradle b/gradle/solr/packaging.gradle
index 354bec2..77cd0f8 100644
--- a/gradle/solr/packaging.gradle
+++ b/gradle/solr/packaging.gradle
@@ -63,7 +63,7 @@ configure(allprojects.findAll {project -> project.path.startsWith(":solr:contrib
from "manifest.json"
- //from "local_packages.json"
+ from "src/resources/solr-default-tika-config.xml"
from (tasks.jar, {
into "lib"
diff --git a/solr/bin/solr b/solr/bin/solr
index 898648e..38e6d7e 100755
--- a/solr/bin/solr
+++ b/solr/bin/solr
@@ -2264,6 +2264,7 @@ function start_solr() {
# users who don't care about useful error msgs can override in SOLR_OPTS with +OmitStackTraceInFastThrow
"${SOLR_HOST_ARG[@]}" "-Duser.timezone=$SOLR_TIMEZONE" "-XX:-OmitStackTraceInFastThrow" \
"-XX:OnOutOfMemoryError=$SOLR_TIP/bin/oom_solr.sh $SOLR_PORT $SOLR_LOGS_DIR" \
+ "-Dsolr.packages.local.dir=$SOLR_TIP/contrib" \
"-Djetty.home=$SOLR_SERVER_DIR" "-Dsolr.solr.home=$SOLR_HOME" "-Dsolr.data.home=$SOLR_DATA_HOME" "-Dsolr.install.dir=$SOLR_TIP" \
"-Dsolr.default.confdir=$DEFAULT_CONFDIR" "${LOG4J_CONFIG[@]}" "${SOLR_OPTS[@]}" "${SECURITY_MANAGER_OPTS[@]}" "${SOLR_ADMIN_UI}")
diff --git a/solr/contrib/scripting/src/java/org/apache/solr/scripting/update/ScriptUpdateProcessorFactory.java b/solr/contrib/scripting/src/java/org/apache/solr/scripting/update/ScriptUpdateProcessorFactory.java
index 4543b97..44c5412 100644
--- a/solr/contrib/scripting/src/java/org/apache/solr/scripting/update/ScriptUpdateProcessorFactory.java
+++ b/solr/contrib/scripting/src/java/org/apache/solr/scripting/update/ScriptUpdateProcessorFactory.java
@@ -49,11 +49,7 @@ import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.security.ProtectionDomain;
-import java.util.Set;
-import java.util.LinkedHashSet;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collection;
+import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -224,6 +220,7 @@ public class ScriptUpdateProcessorFactory extends UpdateRequestProcessorFactory
}
@Override
+ @SuppressWarnings({"unchecked", "rawtypes"})
public void inform(SolrCore core) {
if (!core.getCoreDescriptor().isConfigSetTrusted()) {
throw new SolrException(ErrorCode.UNAUTHORIZED, "The configset for this collection was uploaded without any authentication in place,"
@@ -232,8 +229,12 @@ public class ScriptUpdateProcessorFactory extends UpdateRequestProcessorFactory
}
resourceLoader = core.getResourceLoader();
- // test that our engines & scripts are valid
+ // Hack needed to preload some Lucene classes that otherwise don't load via Nashorn
+ // when this scripting module is loaded as a package.
+ // TODO: Preload all Lucene classes from lucene-core*jar and Solr classes from solr-core*jar
+ core.getResourceLoader().findClass("org.apache.lucene.index.Term", Object.class);
+ // test that our engines & scripts are valid
SolrQueryResponse rsp = new SolrQueryResponse();
SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams());
try {
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java b/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
index cfab4d4..3058302 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
@@ -56,9 +56,9 @@ import static org.apache.lucene.util.IOUtils.closeWhileHandlingException;
public class PackageLoader implements Closeable {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static final String LATEST = "$LATEST";
- public static final String PKGS_DIR = "../../contrib";
- public static final String LOCAL_PKGS_PROP = "local.packages";
- public static final String PKGS_JSON = "local_packages.json";
+ public static final String LOCAL_PACKAGES_DIR = System.getProperty("solr.packages.local.dir");
+ public static final String LOCAL_PACKAGES_WHITELIST = System.getProperty("solr.packages.local.whitelist", "");
+ public static final String LOCAL_PACKAGES_JSON = "local_packages.json";
public final boolean enablePackages = Boolean.parseBoolean(System.getProperty("enable.packages", "false"));
private final CoreContainer coreContainer;
@@ -80,28 +80,28 @@ public class PackageLoader implements Closeable {
public PackageLoader(CoreContainer coreContainer) {
this.coreContainer = coreContainer;
- List<String> enabledPackages = StrUtils.splitSmart(System.getProperty(LOCAL_PKGS_PROP,""), ',');
+ List<String> enabledPackages = StrUtils.splitSmart(LOCAL_PACKAGES_WHITELIST, ',');
packageAPI = new PackageAPI(coreContainer, this);
- if(!enabledPackages .isEmpty()) {
+ if (LOCAL_PACKAGES_DIR != null && !enabledPackages.isEmpty()) {
loadLocalPackages(enabledPackages);
}
- if(enablePackages) refreshPackageConf();
+ if (enablePackages) refreshPackageConf();
}
private void loadLocalPackages(List<String> enabledPackages) {
- final Path packagesPath = new File(coreContainer.getSolrHome() + File.separator + PKGS_DIR).toPath();
- log.info("packages to be loaded from local FS : {}", packagesPath);
+ final Path packagesPath = new File(LOCAL_PACKAGES_DIR).toPath();
+ log.info("Packages to be loaded from directory: {}", packagesPath);
if (!packagesPath.toFile().exists()) {
- throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "no such directory :" + packagesPath);
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "No such directory: " + packagesPath);
}
- if (!packagesPath.resolve(PKGS_JSON).toFile().exists()) {
- throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "no file packages.json exists in :" + packagesPath);
+ if (!packagesPath.resolve(LOCAL_PACKAGES_JSON).toFile().exists()) {
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "No file local_packages.json exists in: " + packagesPath);
}
try {
- try (InputStream in = new FileInputStream(new File(packagesPath.toFile() , PKGS_JSON))) {
+ try (InputStream in = new FileInputStream(new File(packagesPath.toFile() , LOCAL_PACKAGES_JSON))) {
localPackages = PackageAPI.mapper.readValue(in, PackageAPI.Packages.class);
}
} catch (IOException e) {
diff --git a/solr/core/src/test/org/apache/solr/pkg/TestLocalPkgs.java b/solr/core/src/test/org/apache/solr/pkg/TestLocalPkgs.java
index eb39fdc..2e481f3 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestLocalPkgs.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestLocalPkgs.java
@@ -31,13 +31,13 @@ public class TestLocalPkgs extends SolrCloudTestCase {
pkgVersion.pkg = PKG_NAME;
p.packages.put(PKG_NAME, Collections.singletonList(pkgVersion));
log.info("local_packages.json : "+ Utils.toJSONString(p));
- System.setProperty(PackageLoader.LOCAL_PKGS_PROP, PKG_NAME);
+ System.setProperty(PackageLoader.LOCAL_PACKAGES_WHITELIST, PKG_NAME);
MiniSolrCloudCluster cluster =
configureCluster(4)
.withJettyConfig(builder -> builder.enableV2(true))
.withJettyConfig(it -> it.withPreStartupHook(jsr -> {
try {
- File pkgDir = new File(jsr.getSolrHome() + File.separator + PackageLoader.PKGS_DIR);
+ File pkgDir = new File(jsr.getSolrHome() + File.separator + PackageLoader.LOCAL_PACKAGES_DIR);
if(!pkgDir.exists()) {
pkgDir.mkdir();
}
@@ -51,7 +51,7 @@ public class TestLocalPkgs extends SolrCloudTestCase {
}
- try( FileOutputStream fos = new FileOutputStream( new File(pkgDir, PackageLoader.PKGS_JSON) )) {
+ try( FileOutputStream fos = new FileOutputStream( new File(pkgDir, PackageLoader.LOCAL_PACKAGES_JSON) )) {
fos.write(Utils.toJSON(p));
}
} catch (Exception e) {
@@ -61,11 +61,11 @@ public class TestLocalPkgs extends SolrCloudTestCase {
}))
.addConfig("conf", configset("conf2"))
.configure();
- System.clearProperty(PackageLoader.LOCAL_PKGS_PROP);
+ System.clearProperty(PackageLoader.LOCAL_PACKAGES_WHITELIST);
try {
for (JettySolrRunner jsr : cluster.getJettySolrRunners()) {
- List<String> packageFiles = Arrays.asList(new File(jsr.getSolrHome() + File.separator + PackageLoader.PKGS_DIR).list());
- assertTrue(packageFiles.contains(PackageLoader.PKGS_JSON));
+ List<String> packageFiles = Arrays.asList(new File(jsr.getSolrHome() + File.separator + PackageLoader.LOCAL_PACKAGES_DIR).list());
+ assertTrue(packageFiles.contains(PackageLoader.LOCAL_PACKAGES_JSON));
assertTrue(packageFiles.contains(jarName));
}
CollectionAdminRequest