Re: [PR] Fix DockMakerTest maxCardinality [solr]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #3171:
URL: https://github.com/apache/solr/pull/3171#discussion_r1948227396


##
solr/benchmark/src/test/org/apache/solr/bench/DockMakerTest.java:
##
@@ -200,25 +201,4 @@ public void testWordListZipfian() {
 
 assertNotNull(field.getValue().toString());
   }
-
-  @Test
-  public void testGenDoc() {

Review Comment:
   removed because it had no assertions



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


mkhludnev commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1948227521


##
solr/core/src/java/org/apache/solr/search/facet/FacetField.java:
##
@@ -139,11 +139,11 @@ public FacetProcessor 
createFacetProcessor(FacetContext fcontext) {
 // FieldType.getDocValuesType()
 
 if (!multiToken) {
-  if (mincount > 0 && prefix == null && (ntype != null || method == 
FacetMethod.DVHASH)) {
+  if (mincount > 0 && prefix == null && (isNumber || method == 
FacetMethod.DVHASH)) {
 // TODO can we auto-pick for strings when term cardinality is much 
greater than DocSet
 // cardinality? or if we don't know cardinality but DocSet size is 
very small
 return new FacetFieldProcessorByHashDV(fcontext, this, sf);
-  } else if (ntype == null) {
+  } else if (isNumber == false) {

Review Comment:
   !isNumber



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1948246532


##
solr/core/src/java/org/apache/solr/search/facet/FacetField.java:
##
@@ -139,11 +139,11 @@ public FacetProcessor 
createFacetProcessor(FacetContext fcontext) {
 // FieldType.getDocValuesType()
 
 if (!multiToken) {
-  if (mincount > 0 && prefix == null && (ntype != null || method == 
FacetMethod.DVHASH)) {
+  if (mincount > 0 && prefix == null && (isNumber || method == 
FacetMethod.DVHASH)) {
 // TODO can we auto-pick for strings when term cardinality is much 
greater than DocSet
 // cardinality? or if we don't know cardinality but DocSet size is 
very small
 return new FacetFieldProcessorByHashDV(fcontext, this, sf);
-  } else if (ntype == null) {
+  } else if (isNumber == false) {

Review Comment:
   Maybe you are not familiar that Lucene & Solr has recognized this style as 
acceptable due to its clarity



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17662 SPI: TransformerFactory/DocTransformer [solr]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #3172:
URL: https://github.com/apache/solr/pull/3172#discussion_r1948343274


##
solr/core/src/java/org/apache/solr/core/SolrCore.java:
##
@@ -1129,7 +1129,7 @@ protected SolrCore(
   initWriters();
   qParserPlugins.init(QParserPlugin.standardPlugins, this);
   valueSourceParsers.init(ValueSourceParser.standardValueSourceParsers, 
this);
-  transformerFactories.init(TransformerFactory.defaultFactories, this);
+  
transformerFactories.init(TransformerFactory.builtIns(coreContainer.getConfig()),
 this);

Review Comment:
   I like the name "builtIns" best so I chose it.  "implicits" would be my 
second choice.  I like a general name, thus not including "factories" as some 
places where we would use this pattern are not even "factories".  "default" 
isn't terrible but less good.



##
solr/core/src/java/org/apache/solr/response/transform/TransformerFactory.java:
##


Review Comment:
   There are some other TransformerFactory impls not listed here; 2 for 
QueryElevationComponent which weirdly self-register when QEC loads, and the 
other is LTR.  I could expand the scope of this PR but wanted to start simpler 
to get the conversation going.



##
solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java:
##
@@ -18,6 +18,7 @@
 
 import static org.apache.solr.schema.IndexSchema.NEST_PATH_FIELD_NAME;
 
+import jakarta.inject.Named;

Review Comment:
   To solve the problem of identifying the name for plugins, I found this 
annotation, which seems quite suitable.  I read further about it when looking 
at HK2 (a dependency of ours) lightweight dependency-injection framework that 
uses the annotations in that JAR/package.  This PR doesn't use HK2 BTW.



##
solr/core/src/java/org/apache/solr/response/transform/TransformerFactory.java:
##
@@ -105,18 +107,17 @@ default boolean mayModifyValue() {
 }
   }
 
-  public static final Map defaultFactories = new 
HashMap<>(9, 1.0f);
+  // loaded once, based on the node
+  private static Map builtIns;
 
-  static {
-defaultFactories.put("explain", new ExplainAugmenterFactory());
-defaultFactories.put("value", new ValueAugmenterFactory());
-defaultFactories.put("docid", new DocIdAugmenterFactory());
-defaultFactories.put("shard", new ShardAugmenterFactory());
-defaultFactories.put("child", new ChildDocTransformerFactory());
-defaultFactories.put("subquery", new SubQueryAugmenterFactory());
-defaultFactories.put("json", new RawValueTransformerFactory("json"));
-defaultFactories.put("xml", new RawValueTransformerFactory("xml"));
-defaultFactories.put("geo", new GeoTransformerFactory());
-defaultFactories.put("core", new CoreAugmenterFactory());
+  /** (for internal use) */
+  public static synchronized Map 
builtIns(NodeConfig nodeConfig) {

Review Comment:
   Since the lazy loaded list is initialized based on NodeConfig (basically 
CoreContainer), admittedly there's a test stability risk since NodeConfig 
ClassLoader classpath of the first test that runs will "win".  For the built-in 
plugins, let's just not do anything that would disturb that list.  If we wanted 
to test that someone could add a plugin in a JAR, that would be a high level 
integration test using Docker or BATS.  Not unit tests.



##
solr/core/src/java/org/apache/solr/response/transform/TransformerFactory.java:
##
@@ -105,18 +107,17 @@ default boolean mayModifyValue() {
 }
   }
 
-  public static final Map defaultFactories = new 
HashMap<>(9, 1.0f);
+  // loaded once, based on the node
+  private static Map builtIns;

Review Comment:
   no static initializer anymore; no class loading deadlock risk.  Right 
@uschindler ?



##
solr/core/src/java/org/apache/solr/response/transform/CoreAugmenterFactory.java:
##
@@ -17,9 +17,11 @@
 
 package org.apache.solr.response.transform;
 
+import jakarta.inject.Named;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.request.SolrQueryRequest;
 
+@Named("core")
 public class CoreAugmenterFactory extends TransformerFactory {

Review Comment:
   `` Why the hell didn't we name TransformerFactory as its rightful 
name, DocTransformerFactory, and name it's implementations as such as well?  I 
don't even need to know who/why; it's just wrong.  We have sinned and need to 
make amends someday.``



##
solr/core/src/java/org/apache/solr/response/transform/TransformerFactory.java:
##
@@ -105,18 +107,17 @@ default boolean mayModifyValue() {
 }
   }
 
-  public static final Map defaultFactories = new 
HashMap<>(9, 1.0f);
+  // loaded once, based on the node
+  private static Map builtIns;
 
-  static {
-defaultFactories.put("explain", new ExplainAugmenterFactory());
-defaultFactories.put("value", new ValueAugmenterFactory());
-defaultFactories.put("docid", new DocIdAugmenterFactory());
-defaultFactories.put("

[PR] Fix DockMakerTest maxCardinality [solr]

2025-02-09 Thread via GitHub


dsmiley opened a new pull request, #3171:
URL: https://github.com/apache/solr/pull/3171

   See this 
[thread](https://github.com/apache/solr/pull/254#discussion_r1917413526)
   > I see a repeating failure running DockMakerTest.testBasicCardinalityAlpha 
with seed E0BBCB76FA600308 in which every field value is the letter 'k'. This 
DSL framework is extremely different from any other code most people encounter 
so it took some time to narrow down the problem to where I'm commenting. This 
code will choose consecutive seeds for subsequent processing. (Consecutiveness 
is not a problem I think). For a cardinality of 2 and based on the random test 
seed, this long seed will be either 635258717 or 635258718. But the next stage 
will always produce 'k' for either of those seeds; the next stage produces a 
random string of length from 1 to 6.
   
   I think the fundamental fix is in the test; to recognize this is a 
*max*Cardinality, and weaken its assertions accordingly.
   
   I added some comments in StringsDSL.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16966: Add a first-class cache for OrdinalMaps [solr]

2025-02-09 Thread via GitHub


github-actions[bot] closed pull request #1899: SOLR-16966: Add a first-class 
cache for OrdinalMaps
URL: https://github.com/apache/solr/pull/1899


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17662 SPI: TransformerFactory/DocTransformer [solr]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #3172:
URL: https://github.com/apache/solr/pull/3172#discussion_r1948360244


##
solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java:
##
@@ -18,6 +18,7 @@
 
 import static org.apache.solr.schema.IndexSchema.NEST_PATH_FIELD_NAME;
 
+import jakarta.inject.Named;

Review Comment:
   Could also have added a getName to instances but it's more verbose and 
forces instantiation of the class.  They are instantiated here anyway but 
nonetheless I like the idea of a future optimization that doesn't instantiate 
until first use.  Could also decide a public static final String field `NAME` 
is the name.  Anyway, FWIW I prefer the annotation; feels more modern and is 
simpler.  Wouldn't be okay in SolrJ (e.g. for DocRouter) as we don't want to 
add dependencies there but that's fine.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17662 SPI: TransformerFactory/DocTransformer [solr]

2025-02-09 Thread via GitHub


dsmiley commented on PR #3172:
URL: https://github.com/apache/solr/pull/3172#issuecomment-2646875261

   Adding another check, that the implementations do *not* implement 
`SolrCoreAware`, would also be good, as they are the builtIn ones instantiated 
once.  I imagine a non-issue for existing ones but I could imagine a user 
trying this feature out and it not working for that reason.  Of course 
eventually we want that to work but it's out of scope of the built-in registry.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16966: Add a first-class cache for OrdinalMaps [solr]

2025-02-09 Thread via GitHub


github-actions[bot] commented on PR #1899:
URL: https://github.com/apache/solr/pull/1899#issuecomment-2646664483

   This PR is now closed due to 60 days of inactivity after being marked as 
stale.  Re-opening this PR is still possible, in which case it will be marked 
as active again.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16162: FilterQuery should implement DocSetProducer [solr]

2025-02-09 Thread via GitHub


github-actions[bot] commented on PR #814:
URL: https://github.com/apache/solr/pull/814#issuecomment-2646664536

   This PR is now closed due to 60 days of inactivity after being marked as 
stale.  Re-opening this PR is still possible, in which case it will be marked 
as active again.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16707: Avoid "Recursive update" ISE in non-async cache `computeIfAbsent()` [solr]

2025-02-09 Thread via GitHub


github-actions[bot] closed pull request #1481: SOLR-16707: Avoid "Recursive 
update" ISE in non-async cache `computeIfAbsent()`
URL: https://github.com/apache/solr/pull/1481


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16707: Avoid "Recursive update" ISE in non-async cache `computeIfAbsent()` [solr]

2025-02-09 Thread via GitHub


github-actions[bot] commented on PR #1481:
URL: https://github.com/apache/solr/pull/1481#issuecomment-2646664503

   This PR is now closed due to 60 days of inactivity after being marked as 
stale.  Re-opening this PR is still possible, in which case it will be marked 
as active again.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16162: FilterQuery should implement DocSetProducer [solr]

2025-02-09 Thread via GitHub


github-actions[bot] closed pull request #814: SOLR-16162: FilterQuery should 
implement DocSetProducer
URL: https://github.com/apache/solr/pull/814


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Created] (SOLR-17662) Java SPI/ServiceLoader for plugin discovery & instantiation

2025-02-09 Thread David Smiley (Jira)
David Smiley created SOLR-17662:
---

 Summary: Java SPI/ServiceLoader for plugin discovery & 
instantiation
 Key: SOLR-17662
 URL: https://issues.apache.org/jira/browse/SOLR-17662
 Project: Solr
  Issue Type: Improvement
Reporter: David Smiley


Java 6 introduced the [Service Provider 
Interfaces|https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html] 
mechanism, implemented with the ServiceLoader class.  As applied to Solr, it 
allows a registry of plugin instances of a certain type to be discovered from 
the classpath.  This obsoletes static hard-coded mappings (see Solr's 
TransformerFactory for one), and it allows easy addition of new plugin 
instances by others simply by supplying a JAR with metadata, without requiring 
modifications to solrconfig.xml or other config files (assuming zero-config).  

A challenge to solve is how to get the basic name of a plugins, e.g. "subquery" 
instead of the full classname: 
org.apache.solr.response.transform.SubQueryAugmenterFactory

A short term goal could just be Solr's static registries of builtin plugins 
using Solr's classpath.  Slightly better is using the node level ClassLoader, 
thereby using the configurable lib dir.  More comprehensive would eventually 
allow configSets and the package system somehow.  Eventually allow referencing 
these plugin names in configuration (class="subquery" or name="subquery") 
instead of "solr.SubQueryAugmenterFactory" for explicitly configuring.  The 
latter should be deprecated despite its use in Solr since forever.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[PR] SOLR-17662 SPI: TransformerFactory/DocTransformer [solr]

2025-02-09 Thread via GitHub


dsmiley opened a new pull request, #3172:
URL: https://github.com/apache/solr/pull/3172

   https://issues.apache.org/jira/browse/SOLR-17662
   
   Despite me wanting this for a long time, what motivated me today 
specifically was looking at @malliaridis trying to solve risks of static class 
initialization for some of these factories in #2881.  The use of SPIs should 
make that concern go away for some things like static plugin registries.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Updated] (SOLR-17662) Java SPI/ServiceLoader for plugin discovery & instantiation

2025-02-09 Thread ASF GitHub Bot (Jira)


 [ 
https://issues.apache.org/jira/browse/SOLR-17662?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated SOLR-17662:
--
Labels: pull-request-available  (was: )

> Java SPI/ServiceLoader for plugin discovery & instantiation
> ---
>
> Key: SOLR-17662
> URL: https://issues.apache.org/jira/browse/SOLR-17662
> Project: Solr
>  Issue Type: Improvement
>Reporter: David Smiley
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Java 6 introduced the [Service Provider 
> Interfaces|https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html] 
> mechanism, implemented with the ServiceLoader class.  As applied to Solr, it 
> allows a registry of plugin instances of a certain type to be discovered from 
> the classpath.  This obsoletes static hard-coded mappings (see Solr's 
> TransformerFactory for one), and it allows easy addition of new plugin 
> instances by others simply by supplying a JAR with metadata, without 
> requiring modifications to solrconfig.xml or other config files (assuming 
> zero-config).  
> A challenge to solve is how to get the basic name of a plugins, e.g. 
> "subquery" instead of the full classname: 
> org.apache.solr.response.transform.SubQueryAugmenterFactory
> A short term goal could just be Solr's static registries of builtin plugins 
> using Solr's classpath.  Slightly better is using the node level ClassLoader, 
> thereby using the configurable lib dir.  More comprehensive would eventually 
> allow configSets and the package system somehow.  Eventually allow 
> referencing these plugin names in configuration (class="subquery" or 
> name="subquery") instead of "solr.SubQueryAugmenterFactory" for explicitly 
> configuring.  The latter should be deprecated despite its use in Solr since 
> forever.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17628: Add query quantiles metrics to prometheus endpoint [solr]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #3164:
URL: https://github.com/apache/solr/pull/3164#discussion_r1948435790


##
solr/core/src/java/org/apache/solr/metrics/prometheus/SolrPrometheusFormatter.java:
##
@@ -206,6 +251,22 @@ public void collectGaugeDatapoint(
 metricGauges.get(metricName).add(dataPoint);
   }
 
+  /**
+   * Collects {@link 
io.prometheus.metrics.model.snapshots.SummarySnapshot.SummaryDataPointSnapshot}
+   * and appends to existing metric or create new metric if name does not exist
+   *
+   * @param metricName Name of metric
+   * @param dataPoint Gauge datapoint to be collected
+   */
+  public void collectSummaryDatapoint(
+  String metricName, SummarySnapshot.SummaryDataPointSnapshot dataPoint) {
+if (!metricSummaries.containsKey(metricName)) {
+  metricSummaries.put(metricName, new ArrayList<>());
+}
+
+metricSummaries.get(metricName).add(dataPoint);

Review Comment:
   ```suggestion
   metricSummaries.computeIfAbsent(metricName, k -> new 
ArrayList<>()).add(dataPoint);
   ```



##
solr/core/src/java/org/apache/solr/metrics/prometheus/SolrPrometheusFormatter.java:
##
@@ -176,6 +202,25 @@ public GaugeSnapshot.GaugeDataPointSnapshot 
createGaugeDatapoint(double value, L
 return 
GaugeSnapshot.GaugeDataPointSnapshot.builder().value(value).labels(labels).build();
   }
 
+  /**
+   * Create a {@link 
io.prometheus.metrics.model.snapshots.SummarySnapshot.SummaryDataPointSnapshot}
+   * with labels
+   *
+   * @param count number of observations
+   * @param sum sum of all values
+   * @param quantiles quantile information
+   * @param labels set of name/values labels
+   */
+  public SummarySnapshot.SummaryDataPointSnapshot 
createSummaryDataPointSnapshot(
+  long count, double sum, Quantiles quantiles, Labels labels) {
+return SummarySnapshot.SummaryDataPointSnapshot.builder()
+.count(count)
+.sum(sum)
+.labels(labels)
+.quantiles(quantiles)
+.build();
+  }

Review Comment:
   I don't see why this is its own method, as you now feel the need to have 
quite a number of lines here (including documentation).  Just inline it.



##
solr/core/src/java/org/apache/solr/metrics/prometheus/core/SolrCoreHandlerMetric.java:
##
@@ -28,7 +28,7 @@ public class SolrCoreHandlerMetric extends SolrCoreMetric {
   public static final String CORE_REQUESTS_TOTAL = 
"solr_metrics_core_requests";
   public static final String CORE_REQUESTS_UPDATE_HANDLER = 
"solr_metrics_core_update_handler";
   public static final String CORE_REQUESTS_TOTAL_TIME = 
"solr_metrics_core_requests_time";
-  public static final String CORE_REQUEST_TIMES = 
"solr_metrics_core_average_request_time";
+  public static final String CORE_REQUEST_TIMES = 
"solr_metrics_core_request_time";

Review Comment:
   I love that feedback in general but not sure if there is a consistency issue 
(like do this not just here but basically everywhere)



##
solr/core/src/java/org/apache/solr/metrics/prometheus/SolrPrometheusFormatter.java:
##
@@ -220,6 +281,11 @@ public MetricSnapshots collect() {
   snapshots.add(
   new GaugeSnapshot(new MetricMetadata(metricName), 
metricGauges.get(metricName)));
 }
+for (String metricName : metricSummaries.keySet()) {

Review Comment:
   Always iterate the entrySet or call forEach so you don't have to lookup the 
value of each one separately



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] EncryptionRequestHandler supports encryption requests distribution. [solr-sandbox]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #115:
URL: https://github.com/apache/solr-sandbox/pull/115#discussion_r1948445957


##
encryption/src/main/java/org/apache/solr/encryption/EncryptionRequestHandler.java:
##
@@ -412,58 +409,46 @@ private void distributeRequest(SolrQueryRequest req, 
SolrQueryResponse rsp, Stri
 rsp.addToLog(ENCRYPTION_STATE, collectionState.value);
   }
   if (log.isInfoEnabled()) {
-long timeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - 
startTimeNs);
-log.info("Responding encryption distributed state={} success={} for 
keyId={} collection={} timeMs={}",
-(collectionState == null ? null : collectionState.value), success, 
keyId, collectionName, timeMs);
+log.info("Responding encryption distributed state={} success={} for 
keyId={} timeMs={}",
+(collectionState == null ? null : collectionState.value), success, 
keyId, elapsedTimeMs(startTimeNs));
   }
 }
   }
 
-  private SolrClientHolder getHttpSolrClient(SolrQueryRequest req) {
-CoreContainer coreContainer = req.getCore().getCoreContainer();
-CloudSolrClient cloudSolrClient = 
coreContainer.getSolrClientCache().getCloudSolrClient(coreContainer.getZkController().getZkClient().getZkServerAddress());
-if (cloudSolrClient instanceof CloudHttp2SolrClient) {
-  return new SolrClientHolder(((CloudHttp2SolrClient) 
cloudSolrClient).getHttpClient(), false);
-}
-return new SolrClientHolder(new Http2SolrClient.Builder().build(), true);
-  }
-
   protected ModifiableSolrParams 
createDistributedRequestParams(SolrQueryRequest req, SolrQueryResponse rsp, 
String keyId) {
-ModifiableSolrParams params = new ModifiableSolrParams();
-params.set(PARAM_KEY_ID, keyId == null ? NO_KEY_ID : keyId);
-return params;
-  }
-
-  boolean isTimeout(long maxTimeNs) {
-return System.nanoTime() > maxTimeNs;
+return new ModifiableSolrParams().set(PARAM_KEY_ID, keyId == null ? 
NO_KEY_ID : keyId);
   }
 
-  private State sendEncryptionRequestWithRetry(Replica replica, 
ModifiableSolrParams params, Http2SolrClient httpSolrClient, String keyId, 
String collection) {
+  private State sendEncryptionRequestWithRetry(
+  Replica replica,
+  String requestPath,
+  ModifiableSolrParams params,
+  Http2SolrClient httpSolrClient,
+  String keyId) {
 for (int numAttempts = 0; numAttempts < DISTRIBUTION_MAX_ATTEMPTS; 
numAttempts++) {
   try {
-NamedList response = sendEncryptionRequest(replica, params, 
httpSolrClient);
-Object responseStatus = response.get(STATUS);
-Object responseState = response.get(ENCRYPTION_STATE);
-log.info("Encryption state {} status {} for replica {} keyId {} 
collection={}", responseStatus, responseState, replica.getName(), keyId, 
collection);
+SimpleSolrResponse response = sendEncryptionRequest(replica, 
requestPath, params, httpSolrClient);
+Object responseStatus = response.getResponse().get(STATUS);
+Object responseState = response.getResponse().get(ENCRYPTION_STATE);
+log.info("Encryption state {} status {} for replica {} keyId {} in {} 
ms", responseStatus, responseState, replica.getName(), keyId, 
response.getElapsedTime());
 if (responseState != null) {
   return State.fromValue(responseState.toString());
 }
   } catch (SolrServerException | IOException e) {
 log.error("Error occurred while sending encryption request", e);
   }
 }
-throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Failed 
encryption request to replica " + replica.getName() + " for keyId " + keyId + " 
collection " + collection);
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Failed 
encryption request to replica " + replica.getName() + " for keyId " + keyId);
   }
 
-  private NamedList sendEncryptionRequest(Replica replica, 
ModifiableSolrParams params, Http2SolrClient httpSolrClient)
+  private SimpleSolrResponse sendEncryptionRequest(
+  Replica replica,
+  String requestPath,
+  ModifiableSolrParams params,
+  Http2SolrClient httpSolrClient)
   throws SolrServerException, IOException {
-GenericSolrRequest request = new 
GenericSolrRequest(SolrRequest.METHOD.POST, getPath(), params);
-request.setBasePath(replica.getCoreUrl());
-return httpSolrClient.request(request);
-  }
-
-  protected String getPath() {
-return "/admin/encrypt";
+GenericSolrRequest distributedRequest = new 
GenericSolrRequest(SolrRequest.METHOD.POST, requestPath, params);
+return httpSolrClient.requestWithBaseUrl(replica.getCoreUrl(), 
replica.getCollection(), distributedRequest);

Review Comment:
   CC @gerlowskija I propose 
`org.apache.solr.client.solrj.util.ClientUtils#buildRequestUrl` fail with 
`IllegalArgumentException` if `collection` is passed in but isn't used.



-- 
This is an automated message from the Apache Git Service.
To respond to the messag

Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


mkhludnev commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1948229222


##
solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java:
##
@@ -44,27 +48,49 @@ public static SortedDocValues 
getSortedDocValues(SolrIndexSearcher searcher, Str
 
   public static SortedDocValues getSortedDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SortedDocValues si =
-
context.searcher().getSlowAtomicReader().getSortedDocValues(field.getName());
-// if (!field.hasDocValues() && (field.getType() instanceof StrField || 
field.getType()
-// instanceof TextField)) {
-// }
-
-return si == null ? DocValues.emptySorted() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getSortedDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptySorted() : dv;
   }
 
   public static SortedSetDocValues getSortedSetDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SortedSetDocValues si =
-
context.searcher().getSlowAtomicReader().getSortedSetDocValues(field.getName());
-return si == null ? DocValues.emptySortedSet() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getSortedSetDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptySortedSet() : dv;
   }
 
   public static NumericDocValues getNumericDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SolrIndexSearcher searcher = context.searcher();
-NumericDocValues si = 
searcher.getSlowAtomicReader().getNumericDocValues(field.getName());
-return si == null ? DocValues.emptyNumeric() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getNumericDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptyNumeric() : dv;
+  }
+
+  private static void checkDvType(Object dv, SchemaField field, LeafReader 
reader) {

Review Comment:
   It's not clear why to have this 20 lines. If we remove it, I think it just 
fails at class cast somewhere later. Why ISE is better than ClassCastException 
later? It's  just not obvious.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1948247603


##
solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java:
##
@@ -44,27 +48,49 @@ public static SortedDocValues 
getSortedDocValues(SolrIndexSearcher searcher, Str
 
   public static SortedDocValues getSortedDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SortedDocValues si =
-
context.searcher().getSlowAtomicReader().getSortedDocValues(field.getName());
-// if (!field.hasDocValues() && (field.getType() instanceof StrField || 
field.getType()
-// instanceof TextField)) {
-// }
-
-return si == null ? DocValues.emptySorted() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getSortedDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptySorted() : dv;
   }
 
   public static SortedSetDocValues getSortedSetDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SortedSetDocValues si =
-
context.searcher().getSlowAtomicReader().getSortedSetDocValues(field.getName());
-return si == null ? DocValues.emptySortedSet() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getSortedSetDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptySortedSet() : dv;
   }
 
   public static NumericDocValues getNumericDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SolrIndexSearcher searcher = context.searcher();
-NumericDocValues si = 
searcher.getSlowAtomicReader().getNumericDocValues(field.getName());
-return si == null ? DocValues.emptyNumeric() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getNumericDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptyNumeric() : dv;
+  }
+
+  private static void checkDvType(Object dv, SchemaField field, LeafReader 
reader) {

Review Comment:
   There's wasn't a class cast; there was empty/no data which ultimately leads 
to no facet results.  That's *worse* than throwing an exception (of whatever 
type; no strong opinion from me).  This is my primary addition to the PR; don't 
*just* fix the wrong algorithm choice, but ensure we throw an exception in 
cases that would previously silently produce nothing.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] chore(deps): update dependency com.diffplug.spotless to v6.25.0 [solr]

2025-02-09 Thread via GitHub


malliaridis commented on PR #3082:
URL: https://github.com/apache/solr/pull/3082#issuecomment-2646197885

   We should upgrade this plugin instead and backport it. See 
https://github.com/apache/solr/pull/3125


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16427: Enable error-prone ClassInitializationDeadlock rule [solr]

2025-02-09 Thread via GitHub


malliaridis commented on PR #2881:
URL: https://github.com/apache/solr/pull/2881#issuecomment-2646309035

   Thanks for your feedback @uschindler 😄
   
   > Please be still careful to not use the plural s classes during 
initialization on the original class. This would reintroduce the problems.
   
   I believe this is not the case, and I hope error-prone would identify such 
cases.
   
   > If you have accessor methods, you can use the holder pattern used in 
Lucene.
   
   I haven't used this pattern before. Would 
[`TimeSources.get(type)`](https://github.com/apache/solr/blob/b34abd5a5016f125174cd036cd7b3273efe6345a/solr/solrj/src/java/org/apache/solr/common/util/TimeSources.java#L49)
 (previously `TimeSource.get(type)`) be such a scenario where this pattern 
could be used?
   
   I guess in cases where the instances are public and directly accessed or 
added to a list with `static { ... }` the holder pattern cannot be used?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] chore(deps): update dependency org.ow2.asm:asm to v9.7.1 [solr]

2025-02-09 Thread via GitHub


malliaridis commented on PR #3110:
URL: https://github.com/apache/solr/pull/3110#issuecomment-2646208813

   Since `versions.props` in `branch_9x` does not explicitly defines the asm 
version, this PR won't be backported.
   
   For future reference, the explicit definition of this dependency for version 
alignment may be removed.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16427: Enable error-prone ClassInitializationDeadlock rule [solr]

2025-02-09 Thread via GitHub


uschindler commented on PR #2881:
URL: https://github.com/apache/solr/pull/2881#issuecomment-2646291916

   Please be still careful to not use the plural s classes during 
initialization on the original class. This would reintroduce the problems. I 
wasn't able to check all those patterns, but I hope the error probe checker 
would gave found those, too.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] EncryptionRequestHandler supports encryption requests distribution. [solr-sandbox]

2025-02-09 Thread via GitHub


bruno-roustant commented on code in PR #115:
URL: https://github.com/apache/solr-sandbox/pull/115#discussion_r1948115545


##
encryption/src/main/java/org/apache/solr/encryption/EncryptionRequestHandler.java:
##
@@ -412,58 +409,46 @@ private void distributeRequest(SolrQueryRequest req, 
SolrQueryResponse rsp, Stri
 rsp.addToLog(ENCRYPTION_STATE, collectionState.value);
   }
   if (log.isInfoEnabled()) {
-long timeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - 
startTimeNs);
-log.info("Responding encryption distributed state={} success={} for 
keyId={} collection={} timeMs={}",
-(collectionState == null ? null : collectionState.value), success, 
keyId, collectionName, timeMs);
+log.info("Responding encryption distributed state={} success={} for 
keyId={} timeMs={}",
+(collectionState == null ? null : collectionState.value), success, 
keyId, elapsedTimeMs(startTimeNs));
   }
 }
   }
 
-  private SolrClientHolder getHttpSolrClient(SolrQueryRequest req) {
-CoreContainer coreContainer = req.getCore().getCoreContainer();
-CloudSolrClient cloudSolrClient = 
coreContainer.getSolrClientCache().getCloudSolrClient(coreContainer.getZkController().getZkClient().getZkServerAddress());
-if (cloudSolrClient instanceof CloudHttp2SolrClient) {
-  return new SolrClientHolder(((CloudHttp2SolrClient) 
cloudSolrClient).getHttpClient(), false);
-}
-return new SolrClientHolder(new Http2SolrClient.Builder().build(), true);
-  }
-
   protected ModifiableSolrParams 
createDistributedRequestParams(SolrQueryRequest req, SolrQueryResponse rsp, 
String keyId) {
-ModifiableSolrParams params = new ModifiableSolrParams();
-params.set(PARAM_KEY_ID, keyId == null ? NO_KEY_ID : keyId);
-return params;
-  }
-
-  boolean isTimeout(long maxTimeNs) {
-return System.nanoTime() > maxTimeNs;
+return new ModifiableSolrParams().set(PARAM_KEY_ID, keyId == null ? 
NO_KEY_ID : keyId);
   }
 
-  private State sendEncryptionRequestWithRetry(Replica replica, 
ModifiableSolrParams params, Http2SolrClient httpSolrClient, String keyId, 
String collection) {
+  private State sendEncryptionRequestWithRetry(
+  Replica replica,
+  String requestPath,
+  ModifiableSolrParams params,
+  Http2SolrClient httpSolrClient,
+  String keyId) {
 for (int numAttempts = 0; numAttempts < DISTRIBUTION_MAX_ATTEMPTS; 
numAttempts++) {
   try {
-NamedList response = sendEncryptionRequest(replica, params, 
httpSolrClient);
-Object responseStatus = response.get(STATUS);
-Object responseState = response.get(ENCRYPTION_STATE);
-log.info("Encryption state {} status {} for replica {} keyId {} 
collection={}", responseStatus, responseState, replica.getName(), keyId, 
collection);
+SimpleSolrResponse response = sendEncryptionRequest(replica, 
requestPath, params, httpSolrClient);
+Object responseStatus = response.getResponse().get(STATUS);
+Object responseState = response.getResponse().get(ENCRYPTION_STATE);
+log.info("Encryption state {} status {} for replica {} keyId {} in {} 
ms", responseStatus, responseState, replica.getName(), keyId, 
response.getElapsedTime());
 if (responseState != null) {
   return State.fromValue(responseState.toString());
 }
   } catch (SolrServerException | IOException e) {
 log.error("Error occurred while sending encryption request", e);
   }
 }
-throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Failed 
encryption request to replica " + replica.getName() + " for keyId " + keyId + " 
collection " + collection);
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Failed 
encryption request to replica " + replica.getName() + " for keyId " + keyId);
   }
 
-  private NamedList sendEncryptionRequest(Replica replica, 
ModifiableSolrParams params, Http2SolrClient httpSolrClient)
+  private SimpleSolrResponse sendEncryptionRequest(
+  Replica replica,
+  String requestPath,
+  ModifiableSolrParams params,
+  Http2SolrClient httpSolrClient)
   throws SolrServerException, IOException {
-GenericSolrRequest request = new 
GenericSolrRequest(SolrRequest.METHOD.POST, getPath(), params);
-request.setBasePath(replica.getCoreUrl());
-return httpSolrClient.request(request);
-  }
-
-  protected String getPath() {
-return "/admin/encrypt";
+GenericSolrRequest distributedRequest = new 
GenericSolrRequest(SolrRequest.METHOD.POST, requestPath, params);
+return httpSolrClient.requestWithBaseUrl(replica.getCoreUrl(), 
replica.getCollection(), distributedRequest);

Review Comment:
   Thanks for the info. It's not obvious from the 
Http2SolrClient.requestWithBaseUrl doc that the collection name is concatenated.
   When looking at the internals, it seems to me the concatenation happens in 
ClientUtils.buildRequestUrl, and it checks if so

[jira] [Commented] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Gus Heck (Jira)


[ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17925379#comment-17925379
 ] 

Gus Heck commented on SOLR-17659:
-

Another facet of what I'm saying is that the login should be tiny and easy to 
audit relative to the overall UI.

> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
> - The user can access a Solr instance that has user authentication enabled
> - The user can at least authenticate with credentials (basic auth)
> - The credentials form is displayed after the user has established a 
> connection with a Solr instance, that is, after a Solr instance was found
> - The user can return to the start screen where the Solr URL was provided, if 
> he decides to abort the authentication step
> - The user is no longer redirected to the dashboard or any other screen if 
> user authentication is required
> - The credentials are used for any subsequent request
> h2. Additional Information
> The support for additional authentication options does not have to be 
> addressed in this issue. If it proves to be straight-forward, feel free to 
> implement additional auth options as well.
> The credentials do not have to survive an application restart (desktop). 
> Storing credentials securely will be addressed in a separate issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Commented] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Gus Heck (Jira)


[ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17925377#comment-17925377
 ] 

Gus Heck commented on SOLR-17659:
-

What I'm advocating is that unauthenticated users cannot load the browser based 
client (application, aka ui) and use it to look for ways we have accidentally 
exposed information or features that are not properly protected. The login page 
should be a separate app (installed at the root context so it can set 
cookies/Authorization/etc that the browser will happily send to /solr /api 
etc.). 

I'm happy to agree that this ticket only handles Basic Auth but we should do so 
in a structure suitable for all [use 
cases|https://solr.apache.org/guide/solr/latest/deployment-guide/authentication-and-authorization-plugins.html#enabling-an-authentication-plugin].
 That means we need to identify the flows for all use cases and understand how 
this form will satisfy them even if we don't create the plumbing to actually do 
so. Otherwise we likely wind up with three login forms that have to be 
enabled/disabled depending on what's being done, or a spiderweb of code 
dispatching on auth type that makes it very difficult to add new auth types 
when they come along.

An independent app that establishes auth (either with a form or by redirecting 
to an external provider) and then redirects to the /ui context (or provides 
that redirect url to the external provider) to load the browser based ui 
application hopefully is reusable in all cases (if not I'm of course open to 
other solutions).

Friendly 503 pages etc should just use the jetty error page functionality.

Also I think it's fine for this ticket to only cover the UI side of it, 
anything that needs to change in core Solr to allow for sanity here can be a 
linked ticket.

As a side note I'd expect that if we build it this way it would be easy for the 
same login form to
 * redirect to the old UI
 * redirect to the new UI (config option)
 * redirect to a custom UI written by a third party and added in to solr
 * redirect to a custom UI written by a third party hosted elsewhere (perhaps 
requires some as yet undeveloped proxy magic in cases that rely on basic or 
schemes involving cookies?)

> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
> - The user can access a Solr instance that has user authentication enabled
> - The user can at least authenticate with credentials (basic auth)
> - The credentials form is displayed after the user has established a 
> connection with a Solr instance, that is, after a Solr instance was found
> - The user can return to the start screen where the Solr URL was provided, if 
> he decides to abort the authentication step
> - The user is no longer redirected to the dashboard or any other screen if 
> user authentication is required
> - The credentials are used for any subsequent request
> h2. Additional Information
> The support for additional authentication options does not have to be 
> addressed in this issue. If it proves to be straight-forward, feel free to 
> implement additional auth options as well.
> The credentials do not have to survive an application restart (desktop). 
> Storing credentials securely will be addressed in a separate issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] EncryptionRequestHandler supports encryption requests distribution. [solr-sandbox]

2025-02-09 Thread via GitHub


bruno-roustant commented on code in PR #115:
URL: https://github.com/apache/solr-sandbox/pull/115#discussion_r1948118413


##
encryption/src/main/java/org/apache/solr/encryption/EncryptionRequestHandler.java:
##
@@ -527,31 +512,33 @@ private void commitEncryptionStart(String keyId,
 req.getCore().getUpdateHandler().commit(commitCmd);
   }
 
-  private void encryptAsync(SolrQueryRequest req, long startTimeNs) {
+  private void encryptAsync(SolrQueryRequest req) {
 log.debug("Submitting async encryption");
 executor.submit(() -> {
   try {
 EncryptionUpdateLog updateLog = getEncryptionUpdateLog(req.getCore());
 if (updateLog != null) {
   log.debug("Encrypting update log");
+  long startTimeNs = getTimeSource().getTimeNs();
   boolean logEncryptionComplete = updateLog.encryptLogs();
-  log.info("{} encrypted the update log in {}",
-  logEncryptionComplete ? "Successfully" : "Partially", 
elapsedTime(startTimeNs));
+  log.info("{} encrypted the update log in {} ms",
+  logEncryptionComplete ? "Successfully" : "Partially", 
elapsedTimeMs(startTimeNs));
   // If the logs encryption is not complete, it means some logs are 
currently in use.
   // The encryption will be automatically be retried after the next 
commit which should
   // release the old transaction log and make it ready for encryption.
 }
 
 log.debug("Triggering index encryption");
+long startTimeNs = getTimeSource().getTimeNs();
 CommitUpdateCommand commitCmd = new CommitUpdateCommand(req, true);
 // Trigger EncryptionMergePolicy.findForcedMerges() to re-encrypt
 // each segment which is not encrypted with the latest active key id.
 commitCmd.maxOptimizeSegments = Integer.MAX_VALUE;
 req.getCore().getUpdateHandler().commit(commitCmd);
-log.info("Successfully triggered index encryption with commit in {}", 
elapsedTime(startTimeNs));
+log.info("Successfully triggered index encryption with commit in {} 
ms", elapsedTimeMs(startTimeNs));

Review Comment:
   I want to keep TimeSource to be able to inject a mock time source in tests. 
So I'll separate the computation of the elapsed time in ns, and the conversion 
to ms in another method for clarity.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Commented] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Jira


[ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17925383#comment-17925383
 ] 

Jan Høydahl commented on SOLR-17659:


Ui is only yet another solr client. No data. No special access. Any client must 
be granted direct access to Solrs backend port 8983. Thus whether you use a UI 
or cURL or SolrJ, you will gain access to exactly the same APIs and data, 
depending on how auth/autz is configured in solr.

> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
> - The user can access a Solr instance that has user authentication enabled
> - The user can at least authenticate with credentials (basic auth)
> - The credentials form is displayed after the user has established a 
> connection with a Solr instance, that is, after a Solr instance was found
> - The user can return to the start screen where the Solr URL was provided, if 
> he decides to abort the authentication step
> - The user is no longer redirected to the dashboard or any other screen if 
> user authentication is required
> - The credentials are used for any subsequent request
> h2. Additional Information
> The support for additional authentication options does not have to be 
> addressed in this issue. If it proves to be straight-forward, feel free to 
> implement additional auth options as well.
> The credentials do not have to survive an application restart (desktop). 
> Storing credentials securely will be addressed in a separate issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] chore(deps): update dependency org.ow2.asm:asm to v9.7.1 [solr]

2025-02-09 Thread via GitHub


solrbot commented on PR #3110:
URL: https://github.com/apache/solr/pull/3110#issuecomment-2646205282

   ### Edited/Blocked Notification
   
   Renovate will not automatically rebase this PR, because it does not 
recognize the last commit author and assumes somebody else may have edited the 
PR.
   
   You can manually request rebase by checking the rebase/retry box above.
   
⚠️ **Warning**: custom changes will be lost.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] chore(deps): update dependency org.ow2.asm:asm to v9.7.1 [solr]

2025-02-09 Thread via GitHub


malliaridis merged PR #3110:
URL: https://github.com/apache/solr/pull/3110


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Commented] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Gus Heck (Jira)


[ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17925389#comment-17925389
 ] 

Gus Heck commented on SOLR-17659:
-

Yes I believe I said just that.

> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
> - The user can access a Solr instance that has user authentication enabled
> - The user can at least authenticate with credentials (basic auth)
> - The credentials form is displayed after the user has established a 
> connection with a Solr instance, that is, after a Solr instance was found
> - The user can return to the start screen where the Solr URL was provided, if 
> he decides to abort the authentication step
> - The user is no longer redirected to the dashboard or any other screen if 
> user authentication is required
> - The credentials are used for any subsequent request
> h2. Additional Information
> The support for additional authentication options does not have to be 
> addressed in this issue. If it proves to be straight-forward, feel free to 
> implement additional auth options as well.
> The credentials do not have to survive an application restart (desktop). 
> Storing credentials securely will be addressed in a separate issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-16427: Enable error-prone ClassInitializationDeadlock rule [solr]

2025-02-09 Thread via GitHub


uschindler commented on PR #2881:
URL: https://github.com/apache/solr/pull/2881#issuecomment-2646355888

   > Thanks for your feedback @uschindler 😄
   > 
   > > Please be still careful to not use the plural s classes during 
initialization on the original class. This would reintroduce the problems.
   > 
   > I believe this is not the case, and I hope error-prone would identify such 
cases.
   
   OK.
   
   > > If you have accessor methods, you can use the holder pattern used in 
Lucene.
   > 
   > I haven't used this pattern before. Would 
[`TimeSources.get(type)`](https://github.com/apache/solr/blob/b34abd5a5016f125174cd036cd7b3273efe6345a/solr/solrj/src/java/org/apache/solr/common/util/TimeSources.java#L49)
 (previously `TimeSource.get(type)`) be such a scenario where this pattern 
could be used?
   
   The pattern can be seen here when codec initialization is done. Lucene has a 
default Codec, which is a subclass of the Codec class. The Codec class has a 
method `Codec#getDefault()` which returns the static default. The 
initialization is delayed by a Holder pattern:
   
   
https://github.com/apache/lucene/blob/30d18dfbe1e67bed2d4550b2bc20b9b86ce9781c/lucene/core/src/java/org/apache/lucene/codecs/Codec.java#L40-L59
   
   Here it is called:
   
   
https://github.com/apache/lucene/blob/30d18dfbe1e67bed2d4550b2bc20b9b86ce9781c/lucene/core/src/java/org/apache/lucene/codecs/Codec.java#L139-L147
   
   Basically the trick is similar to your's but has more checks to really 
prevent codec subclasses to get the default during initialization phase (that's 
why the null checks are there).
   
   > I guess in cases where the instances are public and directly accessed or 
added to a list with `static { ... }` the holder pattern cannot be used?
   
   No, that's the problem of most classes seen in this PR. It is impossible to 
use that where the superclass has a static final field to one of the 
subclasses. You need to break backwards compatibility.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Comment Edited] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Gus Heck (Jira)


[ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17925389#comment-17925389
 ] 

Gus Heck edited comment on SOLR-17659 at 2/9/25 3:28 PM:
-

Yes I believe I said that.


was (Author: gus_heck):
Yes I believe I said just that.

> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
> - The user can access a Solr instance that has user authentication enabled
> - The user can at least authenticate with credentials (basic auth)
> - The credentials form is displayed after the user has established a 
> connection with a Solr instance, that is, after a Solr instance was found
> - The user can return to the start screen where the Solr URL was provided, if 
> he decides to abort the authentication step
> - The user is no longer redirected to the dashboard or any other screen if 
> user authentication is required
> - The credentials are used for any subsequent request
> h2. Additional Information
> The support for additional authentication options does not have to be 
> addressed in this issue. If it proves to be straight-forward, feel free to 
> implement additional auth options as well.
> The credentials do not have to survive an application restart (desktop). 
> Storing credentials securely will be addressed in a separate issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Commented] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Gus Heck (Jira)


[ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17925394#comment-17925394
 ] 

Gus Heck commented on SOLR-17659:
-

To be clearer, think of the browser based UI as a pre-made list of URLs and 
Features to try to exploit. I would prefer not to allow attackers to be able to 
download a guided tour of things to hack from my server.

> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
> - The user can access a Solr instance that has user authentication enabled
> - The user can at least authenticate with credentials (basic auth)
> - The credentials form is displayed after the user has established a 
> connection with a Solr instance, that is, after a Solr instance was found
> - The user can return to the start screen where the Solr URL was provided, if 
> he decides to abort the authentication step
> - The user is no longer redirected to the dashboard or any other screen if 
> user authentication is required
> - The credentials are used for any subsequent request
> h2. Additional Information
> The support for additional authentication options does not have to be 
> addressed in this issue. If it proves to be straight-forward, feel free to 
> implement additional auth options as well.
> The credentials do not have to survive an application restart (desktop). 
> Storing credentials securely will be addressed in a separate issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Commented] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Gus Heck (Jira)


[ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17925396#comment-17925396
 ] 

Gus Heck commented on SOLR-17659:
-

I also hope that the login stuff is kept simple enough that it rarely changes 
and attackers have difficulty identifying the version of Solr based on it (and 
thus don't know what exploits to focus on).

> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
> - The user can access a Solr instance that has user authentication enabled
> - The user can at least authenticate with credentials (basic auth)
> - The credentials form is displayed after the user has established a 
> connection with a Solr instance, that is, after a Solr instance was found
> - The user can return to the start screen where the Solr URL was provided, if 
> he decides to abort the authentication step
> - The user is no longer redirected to the dashboard or any other screen if 
> user authentication is required
> - The credentials are used for any subsequent request
> h2. Additional Information
> The support for additional authentication options does not have to be 
> addressed in this issue. If it proves to be straight-forward, feel free to 
> implement additional auth options as well.
> The credentials do not have to survive an application restart (desktop). 
> Storing credentials securely will be addressed in a separate issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Updated] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Christos Malliaridis (Jira)


 [ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christos Malliaridis updated SOLR-17659:

Description: 
In the new UI one of the key features that is not implemented yet is user 
authentication. In order to secure and securily access Solr, the user should be 
able to authenticate against a Solr instance with basic credentials.
h2. Task

Implement basic user authentication (with credentials) according to the [new 
designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
h2. Acceptance Criteria
 - The user can access a Solr instance that has user authentication enabled
 - The user can at least authenticate with credentials (basic auth)
 - The credentials form is displayed after the user has established a 
connection with a Solr instance, that is, after a Solr instance was found
 - The user can return to the start screen where the Solr URL was provided, if 
he decides to abort the authentication step
 - The user is no longer redirected to the dashboard or any other screen if 
user authentication is required
 - The credentials are used for any subsequent request

h2. Additional Information

The support for additional authentication options does not have to be addressed 
in this issue. If it proves to be straight-forward, feel free to implement 
additional auth options as well. Note that additional authentication options 
will be added later, and therefore, the implementation should be expandable.

The credentials do not have to survive an application restart (desktop). 
Storing credentials securely will be addressed in a separate issue.

  was:
In the new UI one of the key features that is not implemented yet is user 
authentication. In order to secure and securily access Solr, the user should be 
able to authenticate against a Solr instance with basic credentials.

h2. Task

Implement basic user authentication (with credentials) according to the [new 
designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].

h2. Acceptance Criteria

- The user can access a Solr instance that has user authentication enabled
- The user can at least authenticate with credentials (basic auth)
- The credentials form is displayed after the user has established a connection 
with a Solr instance, that is, after a Solr instance was found
- The user can return to the start screen where the Solr URL was provided, if 
he decides to abort the authentication step
- The user is no longer redirected to the dashboard or any other screen if user 
authentication is required
- The credentials are used for any subsequent request

h2. Additional Information

The support for additional authentication options does not have to be addressed 
in this issue. If it proves to be straight-forward, feel free to implement 
additional auth options as well.

The credentials do not have to survive an application restart (desktop). 
Storing credentials securely will be addressed in a separate issue.


> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
>  - The user can access a Solr instance that has user authentication enabled
>  - The user can at least authenticate with credentials (basic auth)
>  - The credentials form is displayed after the user has established a 
> connection with a Solr instance, that is, after a Solr instance was found
>  - The user can return to the start screen where the Solr URL was provided, 
> if he decides to abort the authentication step
>  - The user is no longer redirected to the dashboard or any other screen if 
> user authentication is required
>  - The credentials are used for any subsequent request
> h2. Additional Information
> The support for additional authentication options does not have to be 
> addressed in this issue. If it proves to be straight-forward, feel free to 
> implement additional auth options as well. Note that additional 
> authentication options will be added later, and therefore, the implementation 
> should be expand

Re: [PR] chore(deps): update dependency org.owasp.dependencycheck to v12 [solr]

2025-02-09 Thread via GitHub


malliaridis merged PR #3138:
URL: https://github.com/apache/solr/pull/3138


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] chore(deps): update dependency org.owasp.dependencycheck to v9.2.0 [solr]

2025-02-09 Thread via GitHub


malliaridis closed pull request #3111: chore(deps): update dependency 
org.owasp.dependencycheck to v9.2.0
URL: https://github.com/apache/solr/pull/3111


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] chore(deps): update dependency org.owasp.dependencycheck to v9.2.0 [solr]

2025-02-09 Thread via GitHub


malliaridis commented on PR #3111:
URL: https://github.com/apache/solr/pull/3111#issuecomment-2646436311

   Closing this as we have upgraded to 12.0.2 (see #3138)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[PR] Backport chore(deps): update dependency org.owasp.dependencycheck to v12 (#3138) [solr]

2025-02-09 Thread via GitHub


malliaridis opened a new pull request, #3170:
URL: https://github.com/apache/solr/pull/3170

   Backport of #3138 to 9x.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



[jira] [Commented] (SOLR-17659) Implement basic authentication in Admin UI

2025-02-09 Thread Christos Malliaridis (Jira)


[ 
https://issues.apache.org/jira/browse/SOLR-17659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17925405#comment-17925405
 ] 

Christos Malliaridis commented on SOLR-17659:
-

I think I understand what you are referring to Gus. I believe this is clear 
already, but allow me to repeat it once more to avoid any possible 
misunderstanding: the new UI is just a binary file at the end of the day, not a 
service that is run on the server where Solr is running. When the users access 
the HTTP endpoint, they automatically download the file and run it in their 
browser. Of course, this file is versioned and may leak the information of what 
Solr version may be running because it is shipped with Solr (if the files are 
not explicitly updated). It will obviously be >=v10.0, because the new UI does 
not exist in versions prior to that. We would have the same "leak" anyway 
regardless of the changes we introduce, even if we would introduce an auth 
facade infront of the UI. So we would not improve the seuciry here.

The best way to protect Solr instances in such scenarios would be to disable 
the UI completely and only allow clients like the standalone desktop app or 
SolrJ to be used.
{quote}[...] use it to look for ways we have accidentally exposed information 
or features that are not properly protected. 
{quote}
I believe it would be way easier to analyze the endpoints from our source code, 
rather than reverse-engineer the WebAssembly app that is a binary file to look 
for unprotected information or features. The new UI does not know anything 
about a Solr instance that is already leaked via the API. And I believe this is 
a key difference compared to our current UI (I am not sure how the current UI 
works though).

One could even host the new UI on a separate server and connect with any Solr 
instance, like the desktop client of the new UI can do. So if we leak any kind 
of information via our API already, and the new UI just uses that information, 
then it should be addressed directly in the API level. One would not get more 
information from what is already there.
{quote}[...] but we should do so in a structure suitable for all [use 
cases|https://solr.apache.org/guide/solr/latest/deployment-guide/authentication-and-authorization-plugins.html#enabling-an-authentication-plugin].
{quote}
Yes, that is very important, and anyone implementing the auth should take into 
account that credentials-based auth is not the only authentication option 
possible. However, without implementing each use case, any structure that is 
defined may not be properly evaluated until we implement all cases. There will 
definitely be some kind of refactoring if the interfaces defined in the first 
implementation do not work with all auth options available. But that is 
acceptable and would be addressed once we reach that point of development.
{quote}An independent app that establishes auth and then redirects to the /ui 
context
{quote}
That sounds very much like the concepts from OAuth. And from how I understand 
your message, what you probably are looking for is "migrating" Solr into a 
[resource server|https://www.oauth.com/oauth2-servers/the-resource-server/], 
and allow an external app like Keycloak manage users, access etc. That would 
move the responsibility of the auth stuff to a "separate app", improve the 
security and reduce the complexity of Solr in general, and allow apps like the 
new UI use a wide range of auth options by simply "redirecting" to the 
Keycloack auth website. This would also handle all these redirects you 
mentioned to the individual UIs. If that is what would address your 
expectations, it would not be part of the new UI, but rather the entire Solr 
project. And the new UI would not even be affected by that directly.

I hope I did not misunderstand any of your words.

> Implement basic authentication in Admin UI
> --
>
> Key: SOLR-17659
> URL: https://issues.apache.org/jira/browse/SOLR-17659
> Project: Solr
>  Issue Type: New Feature
>  Components: Admin UI
>Reporter: Christos Malliaridis
>Priority: Major
>  Labels: new-ui, ui
>
> In the new UI one of the key features that is not implemented yet is user 
> authentication. In order to secure and securily access Solr, the user should 
> be able to authenticate against a Solr instance with basic credentials.
> h2. Task
> Implement basic user authentication (with credentials) according to the [new 
> designs|https://www.figma.com/design/VdbEfcWQ8mirFNquBzbPk2/Apache-Solr-Admin-UI-v2-Concept?node-id=1190-388&t=vMgOa9QlzQZSdjLf-1].
> h2. Acceptance Criteria
> - The user can access a Solr instance that has user authentication enabled
> - The user can at least authenticate with credentials (basic auth)
> - The credentials form is displayed af

Re: [PR] SOLR-16427: Enable error-prone ClassInitializationDeadlock rule [solr]

2025-02-09 Thread via GitHub


dsmiley commented on PR #2881:
URL: https://github.com/apache/solr/pull/2881#issuecomment-2646476270

   Looking back at this a bit briefly.  In general these plural form classes 
should be very unreferenced except when the registry itself is needed (should 
be rare).  These classes should be considered `@lucene.internal` (we don't have 
a Solr variation yet) as we pursue ServiceProviderInterface.  Instead of 
`DocRouters.DEFAULT`, add `DocRouter.getDefault()`.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


dsmiley commented on PR #3158:
URL: https://github.com/apache/solr/pull/3158#issuecomment-2646477023

   Looking for additional code review since I contributed to this PR 
substantially.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] Add NavigableObject.wrap. Deprecate MapWriter.EMPTY and MapWriterMap. [solr]

2025-02-09 Thread via GitHub


dsmiley commented on PR #3148:
URL: https://github.com/apache/solr/pull/3148#issuecomment-2646517321

   Will merge in a few days.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org