You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by no...@apache.org on 2023/01/06 13:18:48 UTC

[solr] branch branch_9_1 updated (33c9eb9d9ab -> b7ec5b5ada3)

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

noble pushed a change to branch branch_9_1
in repository https://gitbox.apache.org/repos/asf/solr.git


    from 33c9eb9d9ab SOLR-16567: KnnQueryParser support for both pre-filters and post-filter, compilation error fix (#1245)
     new c2399dbad4d SOLR-16165: Rare deadlock in SlotAcc initialization (#819)
     new b7ec5b5ada3 SOLR-16165 : CHANGES.txt

The 2 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.


Summary of changes:
 solr/CHANGES.txt                                   |  2 +
 .../org/apache/solr/search/facet/Constants.java    | 94 ++++++++++++++++++++++
 .../search/facet/FacetFieldProcessorByArray.java   |  2 +-
 .../java/org/apache/solr/search/facet/SlotAcc.java | 61 +-------------
 4 files changed, 98 insertions(+), 61 deletions(-)
 create mode 100644 solr/core/src/java/org/apache/solr/search/facet/Constants.java


[solr] 02/02: SOLR-16165 : CHANGES.txt

Posted by no...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b7ec5b5ada327d0502760bed2e041f6ef5f36fd6
Author: Noble Paul <no...@gmail.com>
AuthorDate: Mon May 2 18:14:13 2022 +1000

    SOLR-16165 : CHANGES.txt
---
 solr/CHANGES.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 6e7c8606d79..a18397a8a1e 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -13,6 +13,8 @@ Bug Fixes
 
 * SOLR-16585: Fixed NPE when paginating MatchAllDocs with non-zero start offset, like q=*:*&start=10 (Michael Gibney)
 
+* SOLR-16165: Rare Deadlock in SlotAcc initialization (Justin Sweeney, noble)
+
 Other Changes
 ---------------------
 


[solr] 01/02: SOLR-16165: Rare deadlock in SlotAcc initialization (#819)

Posted by no...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c2399dbad4d3eb918a588a6fac92dc240e3d2aeb
Author: Noble Paul <no...@users.noreply.github.com>
AuthorDate: Mon May 2 03:37:13 2022 -0400

    SOLR-16165: Rare deadlock in SlotAcc initialization (#819)
---
 .../org/apache/solr/search/facet/Constants.java    | 94 ++++++++++++++++++++++
 .../search/facet/FacetFieldProcessorByArray.java   |  2 +-
 .../java/org/apache/solr/search/facet/SlotAcc.java | 61 +-------------
 3 files changed, 96 insertions(+), 61 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/search/facet/Constants.java b/solr/core/src/java/org/apache/solr/search/facet/Constants.java
new file mode 100644
index 00000000000..d0d51629240
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/search/facet/Constants.java
@@ -0,0 +1,94 @@
+/*
+ * 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.search.facet;
+
+import java.io.IOException;
+import java.util.function.IntFunction;
+import org.apache.lucene.index.LeafReaderContext;
+import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.search.DocSet;
+
+/** constants used in facets package */
+public class Constants {
+  public static final SlotAcc.CountSlotAcc DEV_NULL_SLOT_ACC = new DevNullCountSlotAcc();
+
+  private Constants() {}
+
+  /**
+   * This CountSlotAcc exists as a /dev/null sink for callers of collect(...) and other "write"-type
+   * methods. It should be used in contexts where "read"-type access methods will never be called.
+   */
+  private static class DevNullCountSlotAcc extends SlotAcc.CountSlotAcc {
+
+    public DevNullCountSlotAcc() {
+      super(null);
+    }
+
+    @Override
+    public void resize(Resizer resizer) {
+      // No-op
+    }
+
+    @Override
+    public void reset() throws IOException {
+      // No-op
+    }
+
+    @Override
+    public void collect(int doc, int slot, IntFunction<SlotContext> slotContext)
+        throws IOException {
+      // No-op
+    }
+
+    @Override
+    public void incrementCount(int slot, long count) {
+      // No-op
+    }
+
+    @Override
+    public void setNextReader(LeafReaderContext readerContext) throws IOException {
+      // No-op
+    }
+
+    @Override
+    public int collect(DocSet docs, int slot, IntFunction<SlotContext> slotContext)
+        throws IOException {
+      return docs.size(); // dressed up no-op
+    }
+
+    @Override
+    public Object getValue(int slotNum) throws IOException {
+      throw new UnsupportedOperationException("not supported");
+    }
+
+    @Override
+    public int compare(int slotA, int slotB) {
+      throw new UnsupportedOperationException("not supported");
+    }
+
+    @Override
+    public void setValues(SimpleOrderedMap<Object> bucket, int slotNum) throws IOException {
+      throw new UnsupportedOperationException("not supported");
+    }
+
+    @Override
+    public long getCount(int slot) {
+      throw new UnsupportedOperationException("not supported");
+    }
+  }
+}
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByArray.java b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByArray.java
index c52a05a939f..38681bf2070 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByArray.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByArray.java
@@ -121,7 +121,7 @@ abstract class FacetFieldProcessorByArray extends FacetFieldProcessor {
         // AIOOBE
         // NOTE: because collectAcc will be null, it is fine/irrelevant to set a countAcc that
         // doesn't support sweeping
-        countAcc = SlotAcc.DEV_NULL_SLOT_ACC;
+        countAcc = Constants.DEV_NULL_SLOT_ACC;
         createAccs(nDocs, 1);
         assert collectAcc == null;
         // accs is created above and set on allBucketsAcc; but during collection, setNextReader is
diff --git a/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java b/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java
index 753eeb174ec..aae2e7d21fd 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java
@@ -839,66 +839,7 @@ public abstract class SlotAcc implements Closeable {
 
     public abstract long getCount(int slot);
   }
-
-  /**
-   * This CountSlotAcc exists as a /dev/null sink for callers of collect(...) and other "write"-type
-   * methods. It should be used in contexts where "read"-type access methods will never be called.
-   */
-  static final CountSlotAcc DEV_NULL_SLOT_ACC =
-      new CountSlotAcc(null) {
-
-        @Override
-        public void resize(Resizer resizer) {
-          // No-op
-        }
-
-        @Override
-        public void reset() throws IOException {
-          // No-op
-        }
-
-        @Override
-        public void collect(int doc, int slot, IntFunction<SlotContext> slotContext)
-            throws IOException {
-          // No-op
-        }
-
-        @Override
-        public void incrementCount(int slot, long count) {
-          // No-op
-        }
-
-        @Override
-        public void setNextReader(LeafReaderContext readerContext) throws IOException {
-          // No-op
-        }
-
-        @Override
-        public int collect(DocSet docs, int slot, IntFunction<SlotContext> slotContext)
-            throws IOException {
-          return docs.size(); // dressed up no-op
-        }
-
-        @Override
-        public Object getValue(int slotNum) throws IOException {
-          throw new UnsupportedOperationException("not supported");
-        }
-
-        @Override
-        public int compare(int slotA, int slotB) {
-          throw new UnsupportedOperationException("not supported");
-        }
-
-        @Override
-        public void setValues(SimpleOrderedMap<Object> bucket, int slotNum) throws IOException {
-          throw new UnsupportedOperationException("not supported");
-        }
-
-        @Override
-        public long getCount(int slot) {
-          throw new UnsupportedOperationException("not supported");
-        }
-      };
+  ;
 
   static class CountSlotArrAcc extends CountSlotAcc {
     long[] result;