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 ec6dc118771 Added SingleOrderedMap.of(...) for immutable empty or
single pair (#2932)
ec6dc118771 is described below
commit ec6dc1187719c1301aef75f0b3829ff1d24a7ad1
Author: Renato Haeberli <[email protected]>
AuthorDate: Sat Jan 11 21:20:00 2025 +0100
Added SingleOrderedMap.of(...) for immutable empty or single pair (#2932)
SimpleFacets: use this, avoiding needless new NamedList creation
tidy
(cherry picked from commit 6c02da2ee1334be9274857cb8d7fa24f9e93500e)
---
.../java/org/apache/solr/request/SimpleFacets.java | 12 ++++++------
.../apache/solr/common/util/SimpleOrderedMap.java | 21 +++++++++++++++++++++
2 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index 276626123f5..02a7f493e63 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -872,12 +872,12 @@ public class SimpleFacets {
* @see #getFieldMissingCount
* @see #getFacetTermEnumCounts
*/
- public NamedList<Object> getFacetFieldCounts() throws IOException,
SyntaxError {
+ public SimpleOrderedMap<Object> getFacetFieldCounts() throws IOException,
SyntaxError {
- NamedList<Object> res = new SimpleOrderedMap<>();
String[] facetFs = global.getParams(FacetParams.FACET_FIELD);
+
if (null == facetFs) {
- return res;
+ return SimpleOrderedMap.of();
}
// Passing a negative number for FACET_THREADS implies an unlimited number
of threads is
@@ -892,6 +892,7 @@ public class SimpleFacets {
fdebugParent.putInfoItem("maxThreads", maxThreads);
}
+ SimpleOrderedMap<Object> res;
try {
// Loop over fields; submit to executor, keeping the future
for (String f : facetFs) {
@@ -915,10 +916,8 @@ public class SimpleFacets {
result.add(key, getTermCounts(facetValue, parsed));
}
return result;
- } catch (SolrException se) {
+ } catch (SolrException |
ExitableDirectoryReader.ExitingReaderException se) {
throw se;
- } catch (ExitableDirectoryReader.ExitingReaderException timeout)
{
- throw timeout;
} catch (Exception e) {
throw new SolrException(
ErrorCode.SERVER_ERROR, "Exception during facet.field: " +
facetValue, e);
@@ -933,6 +932,7 @@ public class SimpleFacets {
futures.add(runnableFuture);
} // facetFs loop
+ res = new SimpleOrderedMap<>();
// Loop over futures to get the values. The order is the same as facetFs
but shouldn't matter.
for (Future<NamedList<?>> future : futures) {
res.addAll(future.get());
diff --git
a/solr/solrj/src/java/org/apache/solr/common/util/SimpleOrderedMap.java
b/solr/solrj/src/java/org/apache/solr/common/util/SimpleOrderedMap.java
index 6e6dd15438a..20178a252e3 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/SimpleOrderedMap.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/SimpleOrderedMap.java
@@ -34,6 +34,9 @@ import java.util.Map;
* serialized. It aims to minimize overhead and to be efficient at adding new
elements.
*/
public class SimpleOrderedMap<T> extends NamedList<T> {
+
+ private static final SimpleOrderedMap<Object> EMPTY = new
SimpleOrderedMap<>(List.of());
+
/** Creates an empty instance */
public SimpleOrderedMap() {
super();
@@ -67,4 +70,22 @@ public class SimpleOrderedMap<T> extends NamedList<T> {
newList.addAll(nvPairs);
return new SimpleOrderedMap<>(newList);
}
+
+ /**
+ * Returns a shared, empty, and immutable instance of SimpleOrderedMap.
+ *
+ * @return Empty SimpleOrderedMap (immutable)
+ */
+ public static SimpleOrderedMap<Object> of() {
+ return EMPTY;
+ }
+
+ /**
+ * Returns an immutable instance of SimpleOrderedMap with a single key-value
pair.
+ *
+ * @return SimpleOrderedMap containing one key-value pair
+ */
+ public static <T> SimpleOrderedMap<T> of(String name, T val) {
+ return new SimpleOrderedMap<>(List.of(name, val));
+ }
}