You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ja...@apache.org on 2021/03/26 16:45:42 UTC
[lucene] tag history/branches/lucene-solr/jira/solr14977 created
(now cf8d1f0)
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a change to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git.
at cf8d1f0 (commit)
This tag includes the following new commits:
new b59e29d SOLR-14977 : ContainerPlugins should be configurable
new df7840d support super classes implementing COnfigurablePlugin<T>
new 1e1a164 more tests
new 196d610 cleanup
new b7983a7 incorporating several review feedbacks. Added more tests. Changed the config object type
new 71c52f6 configure() should use a method that implements MapWriter
new 9481353 CHANGES.txt
new cf8d1f0 Merge branch 'master' into jira/solr14977
The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[lucene] 02/08: support super classes implementing
COnfigurablePlugin
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit df7840dee5894dd819fbd552f1cbe002729e6dd5
Author: noblepaul <no...@gmail.com>
AuthorDate: Mon Nov 9 09:35:41 2020 +1100
support super classes implementing COnfigurablePlugin<T>
---
.../apache/solr/api/ContainerPluginsRegistry.java | 21 ++++++++++++++-------
.../apache/solr/handler/TestContainerPlugin.java | 10 ++++++++++
2 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java b/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
index 690aee8..883767a 100644
--- a/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
+++ b/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
@@ -377,7 +377,7 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
throw new RuntimeException("Must have a no-arg constructor or CoreContainer constructor ");
}
if (instance instanceof ConfigurablePlugin) {
- Class c = getConfigObj(instance);
+ Class c = getConfigClass((ConfigurablePlugin<?>) instance);
if(c != null) {
Object initVal = mapper.readValue(Utils.toJSON(holder.original), c);
((ConfigurablePlugin) instance).initConfig(initVal);
@@ -397,19 +397,26 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
}
}
- @SuppressWarnings("rawtypes")
- private Class getConfigObj(Object o) {
- Type[] interfaces = o.getClass().getGenericInterfaces();
+ }
+
+ /**Get the generic type of a {@link ConfigurablePlugin}
+ */
+ @SuppressWarnings("rawtypes")
+ public static Class getConfigClass(ConfigurablePlugin<?> o) {
+ Class klas = o.getClass();
+ do {
+ Type[] interfaces = klas.getGenericInterfaces();
for (Type type : interfaces) {
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
- if(parameterizedType.getRawType() == ConfigurablePlugin.class) {
+ if (parameterizedType.getRawType() == ConfigurablePlugin.class) {
return (Class) parameterizedType.getActualTypeArguments()[0];
}
}
}
- return null;
- }
+ klas = klas.getSuperclass();
+ } while (klas != null && klas != Object.class);
+ return null;
}
public ApiInfo createInfo(Map<String,Object> info, List<String> errs) throws IOException {
diff --git a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
index 79e3458..f3dea90 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
@@ -29,6 +29,7 @@ import org.apache.lucene.util.ResourceLoader;
import org.apache.lucene.util.ResourceLoaderAware;
import org.apache.solr.api.Command;
import org.apache.solr.api.ConfigurablePlugin;
+import org.apache.solr.api.ContainerPluginsRegistry;
import org.apache.solr.api.EndPoint;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
@@ -188,6 +189,9 @@ public class TestContainerPlugin extends SolrCloudTestCase {
assertTrue("startCalled", C6.startCalled);
assertFalse("stopCalled", C6.stopCalled);
+ assertEquals( CConfig.class, ContainerPluginsRegistry.getConfigClass(new CC()));
+ assertEquals( CConfig.class, ContainerPluginsRegistry.getConfigClass(new CC1()));
+
CConfig p = new CConfig();
p.boolVal = Boolean.TRUE;
p.strVal = "Something";
@@ -336,6 +340,12 @@ public class TestContainerPlugin extends SolrCloudTestCase {
}
}
+ public static class CC1 extends CC {
+
+ }
+ public static class CC2 extends CC1 {
+
+ }
public static class CC implements ConfigurablePlugin<CConfig> {
private CConfig cfg;
[lucene] 07/08: CHANGES.txt
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit 9481353bb6ab65cabdc311553d1d5cdae21f5816
Author: noblepaul <no...@gmail.com>
AuthorDate: Mon Nov 16 23:40:29 2020 +1100
CHANGES.txt
---
solr/CHANGES.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 28c9ab4..53aff7c 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -176,6 +176,8 @@ Improvements
* SOLR-14683: Metrics API should ensure consistent placeholders for missing values. (ab)
+* SOLR-14977 : ContainerPlugins should be configurable with custom objects (noble, ab)
+
Optimizations
---------------------
* SOLR-14975: Optimize CoreContainer.getAllCoreNames, getLoadedCoreNames and getCoreDescriptors. (Bruno Roustant)
[lucene] 06/08: configure() should use a method that implements
MapWriter
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit 71c52f68d1a4e7dbce8eb6a758cba36c173a524f
Author: noblepaul <no...@gmail.com>
AuthorDate: Mon Nov 16 23:37:21 2020 +1100
configure() should use a method that implements MapWriter
---
solr/CHANGES.txt | 13 ++++++++++++-
.../src/java/org/apache/solr/api/ConfigurablePlugin.java | 4 +++-
.../java/org/apache/solr/api/ContainerPluginsRegistry.java | 4 ++--
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0dd9f18..28c9ab4 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -151,6 +151,8 @@ Other Changes
* SOLR-14978: Enable OOM Killer Script in Solr Foreground. Simplify getting heap dumps on OOM. (Mike Drob, Houston Putman)
+* SOLR-14949: Ability to customize docker image name/base image (Houston Putman)
+
Bug Fixes
---------------------
* SOLR-14546: Fix for a relatively hard to hit issue in OverseerTaskProcessor that could lead to out of order execution
@@ -172,9 +174,11 @@ Improvements
* SOLR-14955: Add env var options for the Prometheus Exporter bin scripts (Houston Putman)
+* SOLR-14683: Metrics API should ensure consistent placeholders for missing values. (ab)
+
Optimizations
---------------------
-(No changes)
+* SOLR-14975: Optimize CoreContainer.getAllCoreNames, getLoadedCoreNames and getCoreDescriptors. (Bruno Roustant)
Bug Fixes
---------------------
@@ -188,11 +192,18 @@ Bug Fixes
* SOLR-14961: Fix for deleting zookeeper nodes with same path length. Only the first zk-node was removed. (Michael Aleythe via Mike Drob)
+* SOLR-14971: AtomicUpdate 'remove', 'add-distinct' operations now works on numeric, date fields in uncommitted docs (Jason Gerlowski)
+
+* SOLR-14983: Fix response returning original score instead of reranked score due to query and filter combining.
+ (Krishan Goyal, Jason Baik, Christine Poerschke)
+
Other Changes
---------------------
* SOLR-14954: Heavily edit reindexing.adoc (Sameul García Martínez and Erick Erickson)
+* SOLR-14995: Update Jetty to 9.4.34 (Mike Drob)
+
================== 8.7.0 ==================
Consult the lucene/CHANGES.txt file for additional, low level, changes in this release.
diff --git a/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java b/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java
index e549bac..ef13d8a 100644
--- a/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java
+++ b/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java
@@ -17,11 +17,13 @@
package org.apache.solr.api;
+import org.apache.solr.common.MapWriter;
+
/**Implement this interface if your plugin needs to accept some configuration
*
* @param <T> the configuration Object type
*/
-public interface ConfigurablePlugin<T> {
+public interface ConfigurablePlugin<T extends MapWriter> {
/**This is invoked soon after the Object is initialized
*
diff --git a/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java b/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
index 62dab20..158bcf6 100644
--- a/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
+++ b/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
@@ -391,9 +391,9 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
throw new RuntimeException("Must have a no-arg constructor or CoreContainer constructor ");
}
if (instance instanceof ConfigurablePlugin) {
- Class c = getConfigClass((ConfigurablePlugin<?>) instance);
+ Class<? extends MapWriter> c = getConfigClass((ConfigurablePlugin<? extends MapWriter>) instance);
if (c != null) {
- Object initVal = mapper.readValue(Utils.toJSON(holder.original), c);
+ MapWriter initVal = mapper.readValue(Utils.toJSON(holder.original), c);
((ConfigurablePlugin) instance).configure(initVal);
}
}
[lucene] 01/08: SOLR-14977 : ContainerPlugins should be configurable
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit b59e29d90f585b8a8f2ee8d3dfd2a36ca968d075
Author: Noble Paul <no...@gmail.com>
AuthorDate: Fri Nov 6 15:16:47 2020 +1100
SOLR-14977 : ContainerPlugins should be configurable
---
.../src/java/org/apache/solr/api/AnnotatedApi.java | 4 +-
.../org/apache/solr/api/ConfigurablePlugin.java | 31 ++++++++++
.../apache/solr/api/ContainerPluginsRegistry.java | 68 +++++++++++++++++-----
.../solr/handler/admin/ContainerPluginsApi.java | 6 +-
.../apache/solr/handler/TestContainerPlugin.java | 57 ++++++++++++++++++
.../apache/solr/common/util/JsonSchemaCreator.java | 1 +
6 files changed, 150 insertions(+), 17 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java b/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
index f9f97a4..df373ea 100644
--- a/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
+++ b/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
@@ -33,6 +33,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.common.SolrException;
@@ -222,7 +223,8 @@ public class AnnotatedApi extends Api implements PermissionNameProvider , Closea
final String command;
final MethodHandle method;
final Object obj;
- ObjectMapper mapper = SolrJacksonAnnotationInspector.createObjectMapper();
+ ObjectMapper mapper = SolrJacksonAnnotationInspector.createObjectMapper()
+ .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
int paramsCount;
@SuppressWarnings({"rawtypes"})
Class parameterClass;
diff --git a/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java b/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java
new file mode 100644
index 0000000..969cc8d
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.api;
+
+/**Implement this interface if your plugin needs to accept some configuration
+ *
+ * @param <T> the configuration Object type
+ */
+public interface ConfigurablePlugin<T> {
+
+ /**This is invoked soon after the Object is initialized
+ *
+ * @param cfg value deserialized from JSON
+ */
+ void initConfig(T cfg);
+}
diff --git a/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java b/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
index 8d0267c..690aee8 100644
--- a/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
+++ b/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
@@ -22,6 +22,8 @@ import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -31,6 +33,7 @@ import java.util.Optional;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Supplier;
+import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.lucene.util.ResourceLoaderAware;
import org.apache.solr.client.solrj.SolrRequest;
@@ -69,7 +72,8 @@ import static org.apache.solr.common.util.Utils.makeMap;
public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapWriter, Closeable {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- private final ObjectMapper mapper = SolrJacksonAnnotationInspector.createObjectMapper();
+ private static final ObjectMapper mapper = SolrJacksonAnnotationInspector.createObjectMapper()
+ .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
private final List<PluginRegistryListener> listeners = new CopyOnWriteArrayList<>();
@@ -114,6 +118,16 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
return currentPlugins.get(name);
}
+ static class PluginMetaHolder {
+ private final Map<String, Object> original;
+ private final PluginMeta meta;
+
+ PluginMetaHolder(Map<String, Object> original) throws IOException {
+ this.original = original;
+ meta = mapper.readValue(Utils.toJSON(original), PluginMeta.class);
+ }
+ }
+ @SuppressWarnings("unchecked")
public synchronized void refresh() {
Map<String, Object> pluginInfos = null;
try {
@@ -122,19 +136,18 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
log.error("Could not read plugins data", e);
return;
}
- Map<String,PluginMeta> newState = new HashMap<>(pluginInfos.size());
+ Map<String,PluginMetaHolder> newState = new HashMap<>(pluginInfos.size());
for (Map.Entry<String, Object> e : pluginInfos.entrySet()) {
try {
- newState.put(e.getKey(),
- mapper.readValue(Utils.toJSON(e.getValue()), PluginMeta.class));
+ newState.put(e.getKey(),new PluginMetaHolder((Map<String, Object>) e.getValue()));
} catch (Exception exp) {
log.error("Invalid apiInfo configuration :", exp);
}
}
- Map<String, PluginMeta> currentState = new HashMap<>();
+ Map<String, PluginMetaHolder> currentState = new HashMap<>();
for (Map.Entry<String, ApiInfo> e : currentPlugins.entrySet()) {
- currentState.put(e.getKey(), e.getValue().info);
+ currentState.put(e.getKey(), e.getValue().holder);
}
Map<String, Diff> diff = compareMaps(currentState, newState);
if (diff == null) return;//nothing has changed
@@ -153,10 +166,10 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
}
} else {
//ADDED or UPDATED
- PluginMeta info = newState.get(e.getKey());
+ PluginMetaHolder info = newState.get(e.getKey());
ApiInfo apiInfo = null;
List<String> errs = new ArrayList<>();
- apiInfo = new ApiInfo(info, errs);
+ apiInfo = new ApiInfo(info,errs);
if (!errs.isEmpty()) {
log.error(StrUtils.join(errs, ','));
continue;
@@ -243,8 +256,10 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
public class ApiInfo implements ReflectMapWriter {
List<ApiHolder> holders;
+ private final PluginMetaHolder holder;
+
@JsonProperty
- private final PluginMeta info;
+ private PluginMeta info;
@JsonProperty(value = "package")
public final String pkg;
@@ -272,8 +287,9 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
return info.copy();
}
@SuppressWarnings({"unchecked","rawtypes"})
- public ApiInfo(PluginMeta info, List<String> errs) {
- this.info = info;
+ public ApiInfo(PluginMetaHolder infoHolder, List<String> errs) {
+ this.holder = infoHolder;
+ this.info = infoHolder.meta;
PluginInfo.ClassName klassInfo = new PluginInfo.ClassName(info.klass);
pkg = klassInfo.pkg;
if (pkg != null) {
@@ -349,7 +365,7 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
}
}
- @SuppressWarnings({"rawtypes"})
+ @SuppressWarnings({"rawtypes","unchecked"})
public void init() throws Exception {
if (this.holders != null) return;
Constructor constructor = klas.getConstructors()[0];
@@ -360,6 +376,14 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
} else {
throw new RuntimeException("Must have a no-arg constructor or CoreContainer constructor ");
}
+ if (instance instanceof ConfigurablePlugin) {
+ Class c = getConfigObj(instance);
+ if(c != null) {
+ Object initVal = mapper.readValue(Utils.toJSON(holder.original), c);
+ ((ConfigurablePlugin) instance).initConfig(initVal);
+ }
+
+ }
if (instance instanceof ResourceLoaderAware) {
try {
((ResourceLoaderAware) instance).inform(pkgVersion.getLoader());
@@ -372,9 +396,27 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
holders.add(new ApiHolder((AnnotatedApi) api));
}
}
+
+ @SuppressWarnings("rawtypes")
+ private Class getConfigObj(Object o) {
+ Type[] interfaces = o.getClass().getGenericInterfaces();
+ for (Type type : interfaces) {
+ if (type instanceof ParameterizedType) {
+ ParameterizedType parameterizedType = (ParameterizedType) type;
+ if(parameterizedType.getRawType() == ConfigurablePlugin.class) {
+ return (Class) parameterizedType.getActualTypeArguments()[0];
+ }
+ }
+ }
+ return null;
+ }
}
- public ApiInfo createInfo(PluginMeta info, List<String> errs) {
+ public ApiInfo createInfo(Map<String,Object> info, List<String> errs) throws IOException {
+ return new ApiInfo(new PluginMetaHolder(info), errs);
+
+ }
+ public ApiInfo createInfo(PluginMetaHolder info, List<String> errs) {
return new ApiInfo(info, errs);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java b/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
index aff5484..4e3f7f5 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
@@ -94,7 +94,7 @@ public class ContainerPluginsApi {
payload.addError(info.name + " already exists");
return null;
}
- map.put(info.name, info);
+ map.put(info.name, payload.getDataMap());
return map;
});
}
@@ -129,7 +129,7 @@ public class ContainerPluginsApi {
}
}
- private void validateConfig(PayloadObj<PluginMeta> payload, PluginMeta info) {
+ private void validateConfig(PayloadObj<PluginMeta> payload, PluginMeta info) throws IOException {
if (info.klass.indexOf(':') > 0) {
if (info.version == null) {
payload.addError("Using package. must provide a packageVersion");
@@ -137,7 +137,7 @@ public class ContainerPluginsApi {
}
}
List<String> errs = new ArrayList<>();
- ContainerPluginsRegistry.ApiInfo apiInfo = coreContainer.getContainerPluginsRegistry().createInfo(info, errs);
+ ContainerPluginsRegistry.ApiInfo apiInfo = coreContainer.getContainerPluginsRegistry().createInfo( payload.getDataMap(), errs);
if (!errs.isEmpty()) {
for (String err : errs) payload.addError(err);
return;
diff --git a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
index 3465a5b..79e3458 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
@@ -28,6 +28,7 @@ import org.apache.commons.io.IOUtils;
import org.apache.lucene.util.ResourceLoader;
import org.apache.lucene.util.ResourceLoaderAware;
import org.apache.solr.api.Command;
+import org.apache.solr.api.ConfigurablePlugin;
import org.apache.solr.api.EndPoint;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
@@ -41,6 +42,7 @@ import org.apache.solr.cloud.ClusterSingleton;
import org.apache.solr.cloud.MiniSolrCloudCluster;
import org.apache.solr.cloud.SolrCloudTestCase;
import org.apache.solr.common.NavigableObject;
+import org.apache.solr.common.annotation.JsonProperty;
import org.apache.solr.common.util.Utils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrResourceLoader;
@@ -185,6 +187,28 @@ public class TestContainerPlugin extends SolrCloudTestCase {
assertTrue("ccProvided", C6.ccProvided);
assertTrue("startCalled", C6.startCalled);
assertFalse("stopCalled", C6.stopCalled);
+
+ CConfig p = new CConfig();
+ p.boolVal = Boolean.TRUE;
+ p.strVal = "Something";
+ p.longVal = 1234L;
+ p.name = "hello";
+ p.klass = CC.class.getName();
+
+ new V2Request.Builder("/cluster/plugin")
+ .forceV2(true)
+ .withMethod(POST)
+ .withPayload(singletonMap("add", p))
+ .build()
+ .process(cluster.getSolrClient());
+ TestDistribPackageStore.assertResponseValues(10,
+ () -> new V2Request.Builder("hello/plugin")
+ .forceV2(true)
+ .withMethod(GET)
+ .build().process(cluster.getSolrClient()),
+ ImmutableMap.of("/config/boolVal", "true", "/config/strVal", "Something","/config/longVal", "1234" ));
+
+
// kill the Overseer leader
for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
if (!jetty.getCoreContainer().getZkController().getOverseer().isClosed()) {
@@ -312,6 +336,39 @@ public class TestContainerPlugin extends SolrCloudTestCase {
}
}
+ public static class CC implements ConfigurablePlugin<CConfig> {
+ private CConfig cfg;
+
+
+
+ @Override
+ public void initConfig(CConfig cfg) {
+ this.cfg = cfg;
+
+ }
+
+ @EndPoint(method = GET,
+ path = "/hello/plugin",
+ permission = PermissionNameProvider.Name.READ_PERM)
+ public void m2(SolrQueryRequest req, SolrQueryResponse rsp) {
+ rsp.add("config", cfg);
+ }
+
+ }
+
+ public static class CConfig extends PluginMeta {
+
+ @JsonProperty
+ public String strVal;
+
+ @JsonProperty
+ public Long longVal;
+
+ @JsonProperty
+ public Boolean boolVal;
+
+ }
+
public static class C6 implements ClusterSingleton {
static boolean startCalled = false;
static boolean stopCalled = false;
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/JsonSchemaCreator.java b/solr/solrj/src/java/org/apache/solr/common/util/JsonSchemaCreator.java
index e6cef30..bc32d94 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/JsonSchemaCreator.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/JsonSchemaCreator.java
@@ -87,6 +87,7 @@ public class JsonSchemaCreator {
if(p.required()) required.add(name);
}
if(!required.isEmpty()) map.put("required", new ArrayList<>(required));
+ map.put("additionalProperties", true);
}
}
[lucene] 04/08: cleanup
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit 196d610783315930963558963eedfdc1ca1df252
Author: noblepaul <no...@gmail.com>
AuthorDate: Mon Nov 9 11:44:34 2020 +1100
cleanup
---
.../apache/solr/handler/TestContainerPlugin.java | 37 +++++++++++-----------
.../solr/client/solrj/request/V2Request.java | 20 ++++++++++++
2 files changed, 38 insertions(+), 19 deletions(-)
diff --git a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
index 5bf3375..7f9a927 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
@@ -61,7 +61,6 @@ import org.junit.Test;
import static java.util.Collections.singletonList;
import static java.util.Collections.singletonMap;
import static org.apache.solr.client.solrj.SolrRequest.METHOD.GET;
-import static org.apache.solr.client.solrj.SolrRequest.METHOD.POST;
import static org.apache.solr.filestore.TestDistribPackageStore.readFile;
import static org.apache.solr.filestore.TestDistribPackageStore.uploadKey;
@@ -91,7 +90,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
//test with an invalid class
V2Request req = new V2Request.Builder("/cluster/plugin")
.forceV2(true)
- .withMethod(POST)
+ .POST()
.withPayload(singletonMap("add", plugin))
.build();
expectError(req, cluster.getSolrClient(), errPath, "No method with @Command in class");
@@ -103,7 +102,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
//just check if the plugin is indeed registered
V2Request readPluginState = new V2Request.Builder("/cluster/plugin")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build();
V2Response rsp = readPluginState.process(cluster.getSolrClient());
assertEquals(C3.class.getName(), rsp._getStr("/plugin/testplugin/class", null));
@@ -112,13 +111,13 @@ public class TestContainerPlugin extends SolrCloudTestCase {
TestDistribPackageStore.assertResponseValues(10,
() -> new V2Request.Builder("/plugin/my/plugin")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build().process(cluster.getSolrClient()),
ImmutableMap.of("/testkey", "testval"));
//now remove the plugin
new V2Request.Builder("/cluster/plugin")
- .withMethod(POST)
+ .POST()
.forceV2(true)
.withPayload("{remove : testplugin}")
.build()
@@ -143,19 +142,19 @@ public class TestContainerPlugin extends SolrCloudTestCase {
TestDistribPackageStore.assertResponseValues(10,
() -> new V2Request.Builder("/my-random-name/my/plugin")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build().process(cluster.getSolrClient()),
ImmutableMap.of("/method.name", "m1"));
TestDistribPackageStore.assertResponseValues(10,
() -> new V2Request.Builder("/my-random-prefix/their/plugin")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build().process(cluster.getSolrClient()),
ImmutableMap.of("/method.name", "m2"));
//now remove the plugin
new V2Request.Builder("/cluster/plugin")
- .withMethod(POST)
+ .POST()
.forceV2(true)
.withPayload("{remove : my-random-name}")
.build()
@@ -163,12 +162,12 @@ public class TestContainerPlugin extends SolrCloudTestCase {
expectFail( () -> new V2Request.Builder("/my-random-prefix/their/plugin")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build()
.process(cluster.getSolrClient()));
expectFail(() -> new V2Request.Builder("/my-random-prefix/their/plugin")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build()
.process(cluster.getSolrClient()));
@@ -180,7 +179,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
//just check if the plugin is indeed registered
readPluginState = new V2Request.Builder("/cluster/plugin")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build();
rsp = readPluginState.process(cluster.getSolrClient());
assertEquals(C6.class.getName(), rsp._getStr("/plugin/clusterSingleton/class", null));
@@ -202,14 +201,14 @@ public class TestContainerPlugin extends SolrCloudTestCase {
new V2Request.Builder("/cluster/plugin")
.forceV2(true)
- .withMethod(POST)
+ .POST()
.withPayload(singletonMap("add", p))
.build()
.process(cluster.getSolrClient());
TestDistribPackageStore.assertResponseValues(10,
() -> new V2Request.Builder("hello/plugin")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build().process(cluster.getSolrClient()),
ImmutableMap.of("/config/boolVal", "true", "/config/strVal", "Something","/config/longVal", "1234" ));
@@ -263,7 +262,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
add.files = singletonList(FILE1);
V2Request addPkgVersionReq = new V2Request.Builder("/cluster/package")
.forceV2(true)
- .withMethod(POST)
+ .POST()
.withPayload(singletonMap("add", add))
.build();
addPkgVersionReq.process(cluster.getSolrClient());
@@ -280,14 +279,14 @@ public class TestContainerPlugin extends SolrCloudTestCase {
plugin.version = add.version;
final V2Request req1 = new V2Request.Builder("/cluster/plugin")
.forceV2(true)
- .withMethod(POST)
+ .POST()
.withPayload(singletonMap("add", plugin))
.build();
req1.process(cluster.getSolrClient());
//verify the plugin creation
TestDistribPackageStore.assertResponseValues(10,
() -> new V2Request.Builder("/cluster/plugin").
- withMethod(GET)
+ GET()
.build().process(cluster.getSolrClient()),
ImmutableMap.of(
"/plugin/myplugin/class", plugin.klass,
@@ -296,7 +295,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
//let's test this now
Callable<NavigableObject> invokePlugin = () -> new V2Request.Builder("/plugin/my/path")
.forceV2(true)
- .withMethod(GET)
+ .GET()
.build().process(cluster.getSolrClient());
TestDistribPackageStore.assertResponseValues(10,
invokePlugin,
@@ -311,7 +310,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
plugin.version = add.version;
new V2Request.Builder("/cluster/plugin")
.forceV2(true)
- .withMethod(POST)
+ .POST()
.withPayload(singletonMap("update", plugin))
.build()
.process(cluster.getSolrClient());
@@ -319,7 +318,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
//now verify if it is indeed updated
TestDistribPackageStore.assertResponseValues(10,
() -> new V2Request.Builder("/cluster/plugin").
- withMethod(GET)
+ GET()
.build().process(cluster.getSolrClient()),
ImmutableMap.of(
"/plugin/myplugin/class", plugin.klass,
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/V2Request.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/V2Request.java
index 932eb6b..fda9ed3 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/V2Request.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/V2Request.java
@@ -165,6 +165,26 @@ public class V2Request extends SolrRequest<V2Response> implements MapWriter {
return this;
}
+ public Builder POST() {
+ this.method = METHOD.POST;
+ return this;
+ }
+
+ public Builder GET() {
+ this.method = METHOD.GET;
+ return this;
+ }
+
+ public Builder PUT() {
+ this.method = METHOD.PUT;
+ return this;
+ }
+
+ public Builder DELETE() {
+ this.method = METHOD.DELETE;
+ return this;
+ }
+
/**
* Only for testing. It's always true otherwise
*/
[lucene] 05/08: incorporating several review feedbacks. Added more
tests. Changed the config object type
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit b7983a765c883014ad47d7a1735d7d337047846e
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Nov 11 10:58:27 2020 +1100
incorporating several review feedbacks. Added more tests. Changed the config object type
---
.../src/java/org/apache/solr/api/AnnotatedApi.java | 5 ++--
.../org/apache/solr/api/ConfigurablePlugin.java | 2 +-
.../apache/solr/api/ContainerPluginsRegistry.java | 23 +++++++++++++----
.../src/java/org/apache/solr/api/V2HttpCall.java | 2 +-
.../solr/handler/admin/ContainerPluginsApi.java | 12 +++++----
.../apache/solr/handler/TestContainerPlugin.java | 29 ++++++++++++++++++----
6 files changed, 54 insertions(+), 19 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java b/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
index df373ea..9ec86ce 100644
--- a/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
+++ b/solr/core/src/java/org/apache/solr/api/AnnotatedApi.java
@@ -63,6 +63,8 @@ import org.slf4j.LoggerFactory;
public class AnnotatedApi extends Api implements PermissionNameProvider , Closeable {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ private static final ObjectMapper mapper = SolrJacksonAnnotationInspector.createObjectMapper()
+ .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
public static final String ERR = "Error executing commands :";
private EndPoint endPoint;
@@ -223,8 +225,7 @@ public class AnnotatedApi extends Api implements PermissionNameProvider , Closea
final String command;
final MethodHandle method;
final Object obj;
- ObjectMapper mapper = SolrJacksonAnnotationInspector.createObjectMapper()
- .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
int paramsCount;
@SuppressWarnings({"rawtypes"})
Class parameterClass;
diff --git a/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java b/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java
index 969cc8d..e549bac 100644
--- a/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java
+++ b/solr/core/src/java/org/apache/solr/api/ConfigurablePlugin.java
@@ -27,5 +27,5 @@ public interface ConfigurablePlugin<T> {
*
* @param cfg value deserialized from JSON
*/
- void initConfig(T cfg);
+ void configure(T cfg);
}
diff --git a/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java b/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
index 883767a..62dab20 100644
--- a/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
+++ b/solr/core/src/java/org/apache/solr/api/ContainerPluginsRegistry.java
@@ -126,6 +126,20 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
this.original = original;
meta = mapper.readValue(Utils.toJSON(original), PluginMeta.class);
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof PluginMetaHolder) {
+ PluginMetaHolder that = (PluginMetaHolder) obj;
+ return Objects.equals(this.original,that.original);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return original.hashCode();
+ }
}
@SuppressWarnings("unchecked")
public synchronized void refresh() {
@@ -365,7 +379,7 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
}
}
- @SuppressWarnings({"rawtypes","unchecked"})
+ @SuppressWarnings({"rawtypes", "unchecked"})
public void init() throws Exception {
if (this.holders != null) return;
Constructor constructor = klas.getConstructors()[0];
@@ -378,11 +392,10 @@ public class ContainerPluginsRegistry implements ClusterPropertiesListener, MapW
}
if (instance instanceof ConfigurablePlugin) {
Class c = getConfigClass((ConfigurablePlugin<?>) instance);
- if(c != null) {
- Object initVal = mapper.readValue(Utils.toJSON(holder.original), c);
- ((ConfigurablePlugin) instance).initConfig(initVal);
+ if (c != null) {
+ Object initVal = mapper.readValue(Utils.toJSON(holder.original), c);
+ ((ConfigurablePlugin) instance).configure(initVal);
}
-
}
if (instance instanceof ResourceLoaderAware) {
try {
diff --git a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
index 5eae502..504db1f 100644
--- a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
+++ b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
@@ -136,7 +136,7 @@ public class V2HttpCall extends HttpSolrCall {
initAdminRequest(path);
return;
} else {
- throw new SolrException(SolrException.ErrorCode.NOT_FOUND, "no core retrieved for " + origCorename);
+ throw new SolrException(SolrException.ErrorCode.NOT_FOUND, "no core retrieved for core name: " + origCorename + ". Path : "+ path);
}
}
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java b/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
index 4e3f7f5..57bcbef 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
@@ -19,10 +19,7 @@ package org.apache.solr.handler.admin;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -122,7 +119,12 @@ public class ContainerPluginsApi {
payload.addError("No such plugin: " + info.name);
return null;
} else {
- map.put(info.name, info);
+ Map<String, Object> jsonObj = payload.getDataMap();
+ if(Objects.equals(jsonObj, existing)) {
+ //no need to change anything
+ return null;
+ }
+ map.put(info.name, jsonObj);
return map;
}
});
diff --git a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
index 7f9a927..01ab39f 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
@@ -44,6 +44,7 @@ import org.apache.solr.cloud.MiniSolrCloudCluster;
import org.apache.solr.cloud.SolrCloudTestCase;
import org.apache.solr.common.NavigableObject;
import org.apache.solr.common.annotation.JsonProperty;
+import org.apache.solr.common.util.ReflectMapWriter;
import org.apache.solr.common.util.Utils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrResourceLoader;
@@ -212,8 +213,22 @@ public class TestContainerPlugin extends SolrCloudTestCase {
.build().process(cluster.getSolrClient()),
ImmutableMap.of("/config/boolVal", "true", "/config/strVal", "Something","/config/longVal", "1234" ));
-
- // kill the Overseer leader
+ p.strVal = "Something else";
+ new V2Request.Builder("/cluster/plugin")
+ .forceV2(true)
+ .POST()
+ .withPayload(singletonMap("update", p))
+ .build()
+ .process(cluster.getSolrClient());
+
+ TestDistribPackageStore.assertResponseValues(10,
+ () -> new V2Request.Builder("hello/plugin")
+ .forceV2(true)
+ .GET()
+ .build().process(cluster.getSolrClient()),
+ ImmutableMap.of("/config/boolVal", "true", "/config/strVal", p.strVal,"/config/longVal", "1234" ));
+
+ // kill the Overseer leader
for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
if (!jetty.getCoreContainer().getZkController().getOverseer().isClosed()) {
cluster.stopJettySolrRunner(jetty);
@@ -352,7 +367,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
@Override
- public void initConfig(CConfig cfg) {
+ public void configure(CConfig cfg) {
this.cfg = cfg;
}
@@ -366,7 +381,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
}
- public static class CConfig extends PluginMeta {
+ public static class CConfig implements ReflectMapWriter {
@JsonProperty
public String strVal;
@@ -377,6 +392,11 @@ public class TestContainerPlugin extends SolrCloudTestCase {
@JsonProperty
public Boolean boolVal;
+ @JsonProperty
+ public String name;
+
+ @JsonProperty(value = "class", required = true)
+ public String klass;
}
public static class C6 implements ClusterSingleton {
@@ -423,7 +443,6 @@ public class TestContainerPlugin extends SolrCloudTestCase {
private SolrResourceLoader resourceLoader;
@Override
- @SuppressWarnings("unchecked")
public void inform(ResourceLoader loader) throws IOException {
this.resourceLoader = (SolrResourceLoader) loader;
try {
[lucene] 08/08: Merge branch 'master' into jira/solr14977
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit cf8d1f01e8247a755762582f1905686553039493
Merge: 9481353 ebc87a8
Author: Noble Paul <no...@users.noreply.github.com>
AuthorDate: Mon Nov 16 23:41:44 2020 +1100
Merge branch 'master' into jira/solr14977
.github/workflows/docker-test.yml | 4 +
build.gradle | 3 +
gradle/documentation/render-javadoc.gradle | 28 +-
gradle/generation/snowball.gradle | 6 +-
gradle/generation/snowball.patch | 10 +-
gradle/help.gradle | 1 +
gradle/native/disable-native.gradle | 82 ++
gradle/testing/randomization/policies/tests.policy | 4 +
help/docker.txt | 58 +
lucene/CHANGES.txt | 26 +-
lucene/MIGRATE.md | 12 +
.../lucene/analysis/classic/package-info.java} | 17 +-
.../apache/lucene/analysis/classic/package.html | 37 -
.../apache/lucene/analysis/email/package-info.java | 34 +
.../org/apache/lucene/analysis/email/package.html | 39 -
.../org/tartarus/snowball/ext/SerbianStemmer.java | 235 ++--
.../org/tartarus/snowball/ext/YiddishStemmer.java | 1381 ++++++++++++++++++++
.../apache/lucene/analysis/snowball/languages.txt | 1 +
.../backward_codecs/lucene50/package-info.java} | 10 +-
.../lucene/backward_codecs/lucene50/package.html | 25 -
.../backward_codecs/lucene60/package-info.java} | 10 +-
.../backward_codecs/lucene80/package-info.java} | 10 +-
.../lucene/backward_codecs/lucene80/package.html | 25 -
.../backward_codecs/lucene84/package-info.java} | 10 +-
.../lucene/backward_codecs/lucene84/package.html | 25 -
.../backward_codecs/lucene86/package-info.java} | 10 +-
.../lucene/backward_codecs/lucene86/package.html | 25 -
.../backward_codecs/lucene87/Lucene87Codec.java | 33 +-
.../backward_codecs/lucene87/package-info.java} | 10 +-
.../lucene/backward_codecs/lucene87/package.html | 42 -
.../lucene/backward_codecs/package-info.java} | 10 +-
.../org/apache/lucene/backward_codecs/package.html | 26 -
.../lucene50/Lucene50RWStoredFieldsFormat.java | 1 -
.../backward_codecs/lucene50/TestForUtil.java | 1 -
.../lucene60/Lucene60PointsWriter.java | 2 -
.../lucene70/Lucene70RWSegmentInfoFormat.java | 1 -
.../simpletext/SimpleTextTermVectorsWriter.java | 2 +-
.../codecs/simpletext/SimpleTextVectorFormat.java | 4 +-
.../codecs/simpletext/SimpleTextVectorReader.java | 14 +-
.../org/apache/lucene/codecs/VectorWriter.java | 27 +-
.../codecs/lucene80/Lucene80DocValuesConsumer.java | 80 +-
.../codecs/lucene80/Lucene80DocValuesFormat.java | 24 +-
.../codecs/lucene80/Lucene80DocValuesProducer.java | 36 +-
.../lucene/codecs/lucene90/Lucene90Codec.java | 27 +-
.../codecs/lucene90/Lucene90VectorFormat.java | 6 +-
.../codecs/lucene90/Lucene90VectorReader.java | 217 ++-
.../codecs/lucene90/Lucene90VectorWriter.java | 92 +-
.../org/apache/lucene/document/FeatureField.java | 68 +-
.../apache/lucene/document/InetAddressPoint.java | 0
.../apache/lucene/document/InetAddressRange.java | 0
.../apache/lucene/index/IndexableFieldType.java | 30 +-
.../org/apache/lucene/index/IndexingChain.java | 20 +-
.../org/apache/lucene/index/KnnGraphValues.java | 58 +
.../java/org/apache/lucene/index/OrdinalMap.java | 4 +-
.../java/org/apache/lucene/index/PointValues.java | 3 +-
.../lucene/index/RandomAccessVectorValues.java | 60 +
.../index/RandomAccessVectorValuesProducer.java} | 16 +-
.../org/apache/lucene/index/SegmentMerger.java | 5 +-
.../lucene/index/SlowCodecReaderWrapper.java | 2 +-
.../java/org/apache/lucene/index/VectorValues.java | 114 +-
.../apache/lucene/index/VectorValuesWriter.java | 43 +-
.../org/apache/lucene/util/hnsw/BoundsChecker.java | 74 ++
.../org/apache/lucene/util/hnsw/HnswGraph.java | 223 ++++
.../apache/lucene/util/hnsw/HnswGraphBuilder.java | 194 +++
.../java/org/apache/lucene/util/hnsw/Neighbor.java | 70 +
.../org/apache/lucene/util/hnsw/Neighbors.java | 93 ++
.../org/apache/lucene/util/hnsw/package-info.java} | 10 +-
...va => BaseLucene80DocValuesFormatTestCase.java} | 12 +-
...estBestCompressionLucene80DocValuesFormat.java} | 17 +-
.../TestBestSpeedLucene80DocValuesFormat.java} | 17 +-
...tLucene87StoredFieldsFormatHighCompression.java | 2 +-
.../apache/lucene/document/TestFeatureField.java | 25 +
.../lucene/document/TestInetAddressPoint.java | 0
.../test/org/apache/lucene/index/TestKnnGraph.java | 382 ++++++
.../org/apache/lucene/index/TestVectorValues.java | 47 +-
.../lucene/search/TestInetAddressRangeQueries.java | 0
.../apache/lucene/util/hnsw/KnnGraphTester.java | 494 +++++++
.../test/org/apache/lucene/util/hnsw/TestHnsw.java | 465 +++++++
lucene/facet/build.gradle | 2 +
.../directory/DirectoryTaxonomyReader.java | 24 +-
.../directory/DirectoryTaxonomyWriter.java | 7 +-
.../directory/TestBackwardsCompatibility.java | 110 ++
.../taxonomy/directory/taxonomy.8.6.3-cfs.zip | Bin 0 -> 3058 bytes
.../join/GlobalOrdinalsWithScoreCollector.java | 2 +-
.../search/join/GlobalOrdinalsWithScoreQuery.java | 2 +-
.../org/apache/lucene/search/join/JoinUtil.java | 2 +-
.../apache/lucene/search/join/TestJoinUtil.java | 16 +-
.../jetty-continuation-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-continuation-9.4.34.v20201102.jar.sha1 | 1 +
.../licenses/jetty-http-9.4.32.v20200930.jar.sha1 | 1 -
.../licenses/jetty-http-9.4.34.v20201102.jar.sha1 | 1 +
lucene/licenses/jetty-io-9.4.32.v20200930.jar.sha1 | 1 -
lucene/licenses/jetty-io-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-server-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-server-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-servlet-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-servlet-9.4.34.v20201102.jar.sha1 | 1 +
.../licenses/jetty-util-9.4.32.v20200930.jar.sha1 | 1 -
.../licenses/jetty-util-9.4.34.v20201102.jar.sha1 | 1 +
lucene/misc/build.gradle | 4 +-
lucene/misc/native/build.gradle | 69 +
.../src/main/posix}/NativePosixUtil.cpp | 20 +-
.../src/main/windows}/WindowsDirectory.cpp | 16 +-
.../java/org/apache/lucene/document/package.html | 22 -
.../src/java/org/apache/lucene/index/package.html | 22 -
.../apache/lucene/misc/CollectorMemoryTracker.java | 2 +-
.../org/apache/lucene/misc/IndexMergeTool.java | 2 +-
.../lucene/{ => misc}/document/LazyDocument.java | 3 +-
.../apache/lucene/misc/document/package-info.java} | 10 +-
.../lucene/{ => misc}/index/IndexSplitter.java | 17 +-
.../{ => misc}/index/MultiPassIndexSplitter.java | 18 +-
.../lucene/{ => misc}/index/PKIndexSplitter.java | 9 +-
.../apache/lucene/misc/index/package-info.java} | 10 +-
.../search/DiversifiedTopDocsCollector.java | 11 +-
.../lucene/{ => misc}/search/DocValuesStats.java | 2 +-
.../{ => misc}/search/DocValuesStatsCollector.java | 6 +-
.../search/MemoryAccountingBitsetCollector.java | 4 +-
.../apache/lucene/misc/search/package-info.java} | 10 +-
.../search/similarity/LegacyBM25Similarity.java | 2 +-
.../misc/search/similarity/package-info.java} | 10 +-
.../store/HardlinkCopyDirectoryWrapper.java | 7 +-
.../lucene/{ => misc}/store/NativePosixUtil.java | 4 +-
.../{ => misc}/store/NativeUnixDirectory.java | 18 +-
.../lucene/{ => misc}/store/RAFDirectory.java | 12 +-
.../lucene/{ => misc}/store/WindowsDirectory.java | 24 +-
.../apache/lucene/misc/store/package-info.java} | 10 +-
.../lucene/{ => misc}/util/MemoryTracker.java | 2 +-
.../lucene/{ => misc}/util/fst/ListOfOutputs.java | 4 +-
.../util/fst/UpToTwoPositiveIntOutputs.java | 4 +-
.../apache/lucene/misc/util/fst/package-info.java} | 10 +-
.../org/apache/lucene/misc/util/package-info.java} | 11 +-
.../src/java/org/apache/lucene/search/package.html | 22 -
.../apache/lucene/search/similarity/package.html | 22 -
.../src/java/org/apache/lucene/store/package.html | 22 -
.../java/org/apache/lucene/util/fst/package.html | 22 -
.../src/java/org/apache/lucene/util/package.html | 23 -
lucene/misc/src/java/overview.html | 25 +-
.../{ => misc}/document/TestLazyDocument.java | 6 +-
.../lucene/{ => misc}/index/TestIndexSplitter.java | 11 +-
.../index/TestMultiPassIndexSplitter.java | 9 +-
.../{ => misc}/index/TestPKIndexSplitter.java | 8 +-
.../search/TestDiversifiedTopDocsCollector.java | 16 +-
.../search/TestDocValuesStatsCollector.java | 18 +-
.../TestMemoryAccountingBitsetCollector.java | 6 +-
.../similarity/TestLegacyBM25Similarity.java | 2 +-
.../lucene/misc/store/NativeLibEnableRule.java | 54 +
.../lucene/misc/store/NativeUnixDirectoryTest.java | 46 +
.../store/TestHardLinkCopyDirectoryWrapper.java | 12 +-
.../lucene/{ => misc}/store/TestRAFDirectory.java | 5 +-
.../store/WindowsDirectoryTest.java} | 30 +-
.../util/TestCollectorMemoryTracker.java | 3 +-
.../lucene/{ => misc}/util/fst/TestFSTsMisc.java | 16 +-
lucene/packaging/build.gradle | 4 +-
.../lucene/queries/intervals/IntervalQuery.java | 2 +-
.../lucene/sandbox/document/package-info.java} | 13 +-
.../apache/lucene/sandbox/document/package.html | 32 -
.../lucene/sandbox/search/package-info.java} | 10 +-
.../org/apache/lucene/sandbox/search/package.html | 28 -
.../java/org/apache/lucene/index/DocHelper.java | 3 +-
.../java/org/apache/lucene/index/RandomCodec.java | 3 +-
.../util/TestRuleSetupAndRestoreClassEnv.java | 3 +-
.../java/org/apache/lucene/util/fst/FSTTester.java | 8 +-
.../org/apache/lucene/util/TestPleaseFail.java} | 20 +-
settings.gradle | 3 +-
.../src/java/org/apache/solr/cloud/CloudUtil.java | 15 +-
.../org/apache/solr/cloud/ReplicateFromLeader.java | 3 +-
.../solr/cloud/ShardLeaderElectionContext.java | 2 +-
.../events/impl/DefaultClusterEventProducer.java | 2 +-
.../java/org/apache/solr/core/CoreContainer.java | 43 +-
.../java/org/apache/solr/core/MetricsConfig.java | 54 +-
.../org/apache/solr/core/SchemaCodecFactory.java | 6 +-
.../src/java/org/apache/solr/core/SolrCore.java | 12 +-
.../src/java/org/apache/solr/core/SolrCores.java | 226 ++--
.../java/org/apache/solr/core/SolrXmlConfig.java | 24 +
.../apache/solr/core/TransientSolrCoreCache.java | 4 +
.../solr/core/TransientSolrCoreCacheDefault.java | 16 +-
.../solr/core/TransientSolrCoreCacheFactory.java | 16 +-
.../src/java/org/apache/solr/core/ZkContainer.java | 13 +-
.../apache/solr/handler/ReplicationHandler.java | 8 +-
.../solr/handler/admin/HealthCheckHandler.java | 2 +-
.../org/apache/solr/handler/admin/StatusOp.java | 5 +-
.../handler/component/RealTimeGetComponent.java | 2 +-
.../org/apache/solr/metrics/SolrMetricManager.java | 29 +
.../apache/solr/metrics/SolrMetricsContext.java | 28 +
.../apache/solr/search/SolrDocumentFetcher.java | 2 +-
.../org/apache/solr/search/SolrIndexSearcher.java | 18 +-
.../similarities/LegacyBM25SimilarityFactory.java | 2 +-
.../similarities/SchemaSimilarityFactory.java | 2 +-
.../org/apache/solr/update/SolrIndexSplitter.java | 2 +-
.../processor/AtomicUpdateDocumentMerger.java | 121 +-
.../src/test-files/solr/solr-metricsconfig1.xml | 21 +-
.../org/apache/solr/BasicFunctionalityTest.java | 2 +-
.../org/apache/solr/core/TestCodecSupport.java | 2 +-
.../org/apache/solr/core/TestCoreContainer.java | 3 +
.../test/org/apache/solr/core/TestLazyCores.java | 10 +-
.../org/apache/solr/metrics/MetricsConfigTest.java | 26 +-
.../solr/metrics/SolrMetricsIntegrationTest.java | 5 +
.../org/apache/solr/search/LargeFieldTest.java | 2 +-
.../apache/solr/search/SolrIndexSearcherTest.java | 123 ++
.../TestLegacyBM25SimilarityFactory.java | 2 +-
.../update/processor/AtomicUpdateJavabinTest.java | 370 ++++++
.../processor/AtomicUpdateRemovalJavabinTest.java | 132 --
.../solr/update/processor/AtomicUpdatesTest.java | 32 +
solr/docker/build.gradle | 27 +-
solr/docker/tests/cases/version/test.sh | 45 -
.../http2-client-9.4.32.v20200930.jar.sha1 | 1 -
.../http2-client-9.4.34.v20201102.jar.sha1 | 1 +
.../http2-common-9.4.32.v20200930.jar.sha1 | 1 -
.../http2-common-9.4.34.v20201102.jar.sha1 | 1 +
.../licenses/http2-hpack-9.4.32.v20200930.jar.sha1 | 1 -
.../licenses/http2-hpack-9.4.34.v20201102.jar.sha1 | 1 +
...http-client-transport-9.4.32.v20200930.jar.sha1 | 1 -
...http-client-transport-9.4.34.v20201102.jar.sha1 | 1 +
.../http2-server-9.4.32.v20200930.jar.sha1 | 1 -
.../http2-server-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-alpn-client-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-alpn-client-9.4.34.v20201102.jar.sha1 | 1 +
...etty-alpn-java-client-9.4.32.v20200930.jar.sha1 | 1 -
...etty-alpn-java-client-9.4.34.v20201102.jar.sha1 | 1 +
...etty-alpn-java-server-9.4.32.v20200930.jar.sha1 | 1 -
...etty-alpn-java-server-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-alpn-server-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-alpn-server-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-client-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-client-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-continuation-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-continuation-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-deploy-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-deploy-9.4.34.v20201102.jar.sha1 | 1 +
solr/licenses/jetty-http-9.4.32.v20200930.jar.sha1 | 1 -
solr/licenses/jetty-http-9.4.34.v20201102.jar.sha1 | 1 +
solr/licenses/jetty-io-9.4.32.v20200930.jar.sha1 | 1 -
solr/licenses/jetty-io-9.4.34.v20201102.jar.sha1 | 1 +
solr/licenses/jetty-jmx-9.4.32.v20200930.jar.sha1 | 1 -
solr/licenses/jetty-jmx-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-rewrite-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-rewrite-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-security-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-security-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-server-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-server-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-servlet-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-servlet-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-servlets-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-servlets-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-start-9.4.27.v20200227-shaded.jar.sha1 | 1 -
.../jetty-start-9.4.34.v20201102-shaded.jar.sha1 | 1 +
solr/licenses/jetty-util-9.4.32.v20200930.jar.sha1 | 1 -
solr/licenses/jetty-util-9.4.34.v20201102.jar.sha1 | 1 +
.../jetty-webapp-9.4.32.v20200930.jar.sha1 | 1 -
.../jetty-webapp-9.4.34.v20201102.jar.sha1 | 1 +
solr/licenses/jetty-xml-9.4.32.v20200930.jar.sha1 | 1 -
solr/licenses/jetty-xml-9.4.34.v20201102.jar.sha1 | 1 +
solr/solr-ref-guide/src/collection-management.adoc | 5 +
solr/solr-ref-guide/src/metrics-reporting.adoc | 39 +
solr/solr-ref-guide/src/replica-management.adoc | 5 +
.../solr/client/solrj/request/TestCoreAdmin.java | 1 +
.../solr/common/cloud/TestZkMaintenanceUtils.java | 2 -
versions.lock | 48 +-
versions.props | 4 +-
260 files changed, 6354 insertions(+), 1647 deletions(-)
[lucene] 03/08: more tests
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to tag history/branches/lucene-solr/jira/solr14977
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit 1e1a164dad555c726c9d1b09ff553b186ce5e12d
Author: noblepaul <no...@gmail.com>
AuthorDate: Mon Nov 9 10:58:48 2020 +1100
more tests
---
solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
index f3dea90..5bf3375 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
@@ -191,6 +191,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
assertEquals( CConfig.class, ContainerPluginsRegistry.getConfigClass(new CC()));
assertEquals( CConfig.class, ContainerPluginsRegistry.getConfigClass(new CC1()));
+ assertEquals( CConfig.class, ContainerPluginsRegistry.getConfigClass(new CC2()));
CConfig p = new CConfig();
p.boolVal = Boolean.TRUE;