Re: [I] Basic Auth Bootstrap Not Working In 0.9.0 [solr-operator]

2025-02-06 Thread via GitHub


ibraheemalayan commented on issue #755:
URL: https://github.com/apache/solr-operator/issues/755#issuecomment-2639565683

   ⭕️ UPDATE:
I deleted the SolrCloud, recreated it with Solr  `8.11.4` and it worked, 
then deleted that, and created with `9.6.1` and it also worked.
   So I deleted it again (**without deleting the PVCs**) and recreated it with 
`9.8.0` and it worked.
   
   But clearly there is an issue with `9.8.0`


-- 
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] Make PGP signing the release announcement optional [solr]

2025-02-06 Thread via GitHub


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

   As discussed in slack 
https://the-asf.slack.com/archives/CEKUCUNE9/p1738760259166169
   
   I opted to keep the instructions in the wizard but clearly mark it as 
optional, skipping the S/MIME email client stuff and focusing only on gpg 
command line clearsign option.
   
   Not ran the wizard after this change so may be formatting bugs...


-- 
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



[I] Basic Auth Bootstrap Not Working In 0.9.0 [solr-operator]

2025-02-06 Thread via GitHub


ibraheemalayan opened a new issue, #755:
URL: https://github.com/apache/solr-operator/issues/755

   Hi, I have a very simple SolrCloud config file as follows
   
   ```yaml
   # specs: 
https://apache.github.io/solr-operator/docs/solr-cloud/solr-cloud-crd.html
   apiVersion: solr.apache.org/v1beta1
   kind: SolrCloud
   metadata:
 name: search-cluster
   spec:
 # change the date below to trigger a manual restart
 customSolrKubeOptions:
   podOptions:
 annotations:
   manualrestart: "2025-02-06T07:57:00Z"
 replicas: 2
 solrJavaMem: -Xms512M -Xmx1G
 solrImage:
   tag: 9.8.0
 solrSecurity:
   authenticationType: Basic
 dataStorage:
   persistent:
 reclaimPolicy: Delete
 pvcTemplate:
   spec:
 resources:
   requests:
 storage: 6Gi
 solrAddressability:
   podPort: 8983
   commonServicePort: 8983
   ```
   
   as you can see, basic auth is supposed to be enabled, yet the cluster has no 
authentication.
   
   https://github.com/user-attachments/assets/a07aa96f-b0b9-4979-bbe0-3fcbe2462576";
 />
   
   https://github.com/user-attachments/assets/ce52640f-a751-4fdd-aa87-8cc3afe9bd9b";
 />
   
   I tried deleting the SolrCloud and recreating it multiple times ( also 
deleted all PVCs ), the security.json is always empty
   The bootstrape security.json secret is created but it seems like its never 
used.
   
   Here some debugging commands and their outputs, might help understand the 
issue:
   
   >```bash
   >kubectl get pods | grep solr
   >```
   ```
   search-cluster-solrcloud-0  1/1 Running   0  
8m
   search-cluster-solrcloud-1  1/1 Running   0  
15m
   search-cluster-solrcloud-zookeeper-01/1 Running   0  
15m
   search-cluster-solrcloud-zookeeper-11/1 Running   0  
14m
   search-cluster-solrcloud-zookeeper-21/1 Running   0  
14m
   solr-operator-65bd76858c-dj54z  1/1 Running   0  
4d12h
   solr-operator-zookeeper-operator-7cf584d8b6-5vlzr   1/1 Running   0  
4d12h
   ```
   >```bash
   >kubectl get secrets
   >```
   ```
   search-cluster-solrcloud-basic-auth   kubernetes.io/basic-auth   2   
   16m
   search-cluster-solrcloud-security-bootstrap   Opaque 3   
   16m
   sh.helm.release.v1.solr-operator.v1   helm.sh/release.v1 1   
   7d23h
   ```
   
   
   >```bash
   >kubectl get secrets/search-cluster-solrcloud-basic-auth -o yaml
   >```
   ```
   apiVersion: v1
   data:
 password: amkodUctamRWYTJIM3cpRg==
 username: azhzLW9wZXI=
   kind: Secret
   metadata:
 creationTimestamp: "2025-02-06T10:09:01Z"
 labels:
   solr-cloud: search-cluster
 name: search-cluster-solrcloud-basic-auth
 namespace: default
 ownerReferences:
 - apiVersion: solr.apache.org/v1beta1
   blockOwnerDeletion: true
   controller: true
   kind: SolrCloud
   name: search-cluster
   uid: 0f94b8ff-134f-459c-903f-cc9a8312992e
 resourceVersion: "38390607"
 uid: feeb1481-474c-48bb-bbd4-4c3805e6a9bf
   type: kubernetes.io/basic-auth
   ```
   
   >```bash
   > kubectl get secrets/search-cluster-solrcloud-security-bootstrap -o yaml
   > ```
   ```
   apiVersion: v1
   data:
 admin: clUlcyVGQVtTQiN1aEdAUw==
 security.json: 
ewogICAgICAiYXV0aGVudGljYXRpb24iOnsKICAgICAgICAiYmxvY2tVbmtub3duIjogZmFsc2UsCiAgICAgICAgImNsYXNzIjoic29sci5CYXNpY0F1dGhQbHVnaW4iLAogICAgICAgICJjcmVkZW50aWFscyI6IHsiYWRtaW4iOiJDYldWUVV6L1ZjTFdpczQreUpCUEpYMlg5OXg4YWYyMUhuV1hVOGJEc0hBPSAxTWhMaEJtRzZWUmx2M3NPOHZMZHFybjV6d3UxTXRKOXVMWmhUMi84S1Q0PSIsIms4cy1vcGVyIjoiNkxBLzdNbHk1T0NTaVpOeWFheHhJQ1RTa3FrbGZkWXpGSW40QXBONFlVaz0gWndBT3RYaENtYnhZenhNbHB5VGR1dU5jbjZWTC9DK0ZtREZ4NkhseVRvVT0iLCJzb2xyIjoiRE9IMmxUdnh5aEFtdFZpVEloVDYvT2hkd3E4eVQzOFhNNUhPckp3eHNrRT0gWDBHakVUUXY5eGhmYVF1dGRyQkRhU3dBSVdMd0VFd2hLRXV0YXJxdWd0UT0ifSwKICAgICAgICAicmVhbG0iOiJTb2xyIEJhc2ljIEF1dGgiLAogICAgICAgICJmb3J3YXJkQ3JlZGVudGlhbHMiOiBmYWxzZQogICAgICB9LAogICAgICAiYXV0aG9yaXphdGlvbiI6IHsKICAgICAgICAiY2xhc3MiOiAic29sci5SdWxlQmFzZWRBdXRob3JpemF0aW9uUGx1Z2luIiwKICAgICAgICAidXNlci1yb2xlIjogewogICAgICAgICAgImFkbWluIjogWyJhZG1pbiIsICJrOHMiXSwKICAgICAgICAgICJrOHMtb3BlciI6IFsiazhzIl0sCiAgICAgICAgICAic29sciI6IFsidXNlcnMiLCAiazhzIl0KICAgICAgICB9LAogICAgICAgICJwZX
 
JtaXNzaW9ucyI6IFsKICAgICAgICAgIHsgIm5hbWUiOiAiazhzLXByb2JlLTAiLCAicm9sZSI6bnVsbCwgImNvbGxlY3Rpb24iOiBudWxsLCAicGF0aCI6Ii9hZG1pbi9pbmZvL3N5c3RlbSIgfSwgeyAibmFtZSI6ICJrOHMtcHJvYmUtMSIsICJyb2xlIjpudWxsLCAiY29sbGVjdGlvbiI6IG51bGwsICJwYXRoIjoiL2FkbWluL2luZm8vaGVhbHRoIiB9LAogICAgICAgICAgeyAibmFtZSI6ICJrOHMtc3RhdHVzIiwgInJvbGUiOiJrOHMiLCAiY29sbGVjdGlvbiI6IG51bGwsICJwYXRoIjoiL2FkbWluL2NvbGxlY3Rpb25zIiB9LAogICAgICAgICAgeyAibmFtZSI6ICJrOHMtbWV0cmljcyIsICJyb2xlIjoiazhzIiwgImNvbGxlY3Rpb24iOiBudWxsLCAicGF0aCI6Ii9hZG1pbi9tZXRyaWNzI

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

2025-02-06 Thread via GitHub


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


##
solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java:
##
@@ -4907,6 +4907,38 @@ public void testQueryJoinBooksAndPages() throws 
Exception {
 + ", books2:{ buckets:[ {val:q,count:1}, {val:w,count:1} ] }"
 + "}");
   }
+  
+  @Test
+  public void testMultivalueEnumTypes() throws Exception {
+final Client client = Client.localClient();
+
+final SolrParams p = params("rows", "0");
+
+client.deleteByQuery("*:*", null);
+
+List docsToAdd = new ArrayList<>(6);

Review Comment:
   I tried but this will make the test more complicated as 
SolrTestCaseHS.Client does not keep a SolrClient and uses null therefore in 
internal API calls, may you have an hint for that, but the whole test class is 
not using an UpdateRequest



-- 
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-17649) Multivalue facets on enum field type returns empty result when using JsonFacet API

2025-02-06 Thread Jira


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

Thomas Wöckinger commented on SOLR-17649:
-

> Might you surmise how this regression came to be?

As the FacetFieldProcessor* exists for a very long time, i think the issue can 
only be introduced by refactoring of 
FacetField.{color:#232629}{color:#00}createFacetProcessor or its hierarchy. 
It seems that the issue is in there from beginning of the 9x 
branch.{color}{color}

> Multivalue facets on enum field type returns empty result when using 
> JsonFacet API
> --
>
> Key: SOLR-17649
> URL: https://issues.apache.org/jira/browse/SOLR-17649
> Project: Solr
>  Issue Type: Bug
>  Components: Facet Module, FacetComponent, faceting
>Affects Versions: 9.4, 9.5, 9.4.1, 9.6, 9.7, 9.6.1, 9.8
>Reporter: Thomas Wöckinger
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> When using JsonFacet API on a multivalued EnumFieldType with facet method 
> 'enum' the {color:#232629}FacetFieldProcessorByArrayDV{color} will be used.
> At line 96 ({color:#232629}FacetFieldProcessorByArrayDV.java){color} there is 
> a check about allBuckets or missing buckets, which simply skip collect 
> process.
> So at the moment there is no support for Multivalue faceting on facets which 
> are using FacetFieldProcessorByArrayDV facet processor for collecting facets.
> Tested this behavior from 9.4 onwards, this feature was working on the 8.x 
> releases.
> Multivalue faceting on EnumFieldType should be supported again.



--
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] SolrRequest.getParams never null; and clarify mutability [solr]

2025-02-06 Thread via GitHub


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

   Planning on merging this tomorrow night.  LMK if I should hold up.


-- 
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] SOLR-17635: unmarshalling Map to SimpleOrderedMap if key i of type St… [solr]

2025-02-06 Thread via GitHub


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

   …ring
   
   https://issues.apache.org/jira/browse/SOLR-17635
   
   
   
   
   # Description
   
   Please provide a short description of the changes you're making with this 
pull request.
   
   # Solution
   
   Please provide a short description of the approach taken to implement your 
solution.
   
   # Tests
   
   Please describe the tests you've developed or run to confirm this patch 
implements the feature or solves the problem.
   
   # Checklist
   
   Please review the following and check all that apply:
   
   - [ ] I have reviewed the guidelines for [How to 
Contribute](https://github.com/apache/solr/blob/main/CONTRIBUTING.md) and my 
code conforms to the standards described there to the best of my ability.
   - [ ] I have created a Jira issue and added the issue ID to my pull request 
title.
   - [ ] I have given Solr maintainers 
[access](https://help.github.com/en/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)
 to contribute to my PR branch. (optional but recommended, not available for 
branches on forks living under an organisation)
   - [ ] I have developed this patch against the `main` branch.
   - [ ] I have run `./gradlew check`.
   - [ ] I have added tests for my changes.
   - [ ] I have added documentation for the [Reference 
Guide](https://github.com/apache/solr/tree/main/solr/solr-ref-guide)
   


-- 
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-17635) javabin should deserialize maps as SimpleOrderedMap

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


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

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

> javabin should deserialize maps as SimpleOrderedMap
> ---
>
> Key: SOLR-17635
> URL: https://issues.apache.org/jira/browse/SOLR-17635
> Project: Solr
>  Issue Type: Improvement
>Reporter: David Smiley
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Once SimpleOrderedMap actually implements Map (SOLR-17623), Solr's "javabin" 
> format should deserialize all maps as a SimpleOrderedMap.  This will make it 
> easier to transition away from NamedList/SimpleOrderedMap in responses (such 
> as to a Map or MapWriter) without worry of impacting javabin clients that 
> still expect a NamedList.  
> It may also increase deserialization performance & lower memory at the 
> expense of any former Maps (thus were deserialized as LinkedHashMap, O(1) 
> lookup) becoming O(N) lookup.



--
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-17630 Add SolrCloudManager.getSolrClient [solr]

2025-02-06 Thread via GitHub


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

   Needs a CHANGES.txt but it's otherwise ready.  Planning to add in "Other":
   Added a node-wide CloudSolrClient to ZkController, and accessible via 
SolrCloudManager too.  Uses Jetty HttpClient.  Deprecated 
CloudSolrClient.getSolrClientCache.  Redirected some callers.
   Oh yeah; and want to deprecate CoreContainer.getSolrClientCache to further 
discourage anyone from using it.  


-- 
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] SolrParams.equals implementation [solr]

2025-02-06 Thread via GitHub


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

   Planning on merging Saturday.  No JIRA/CHANGES.txt.


-- 
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] SolrTestCaseJ4: don't reset HttpClient SSL stuff [solr]

2025-02-06 Thread via GitHub


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

   Planning to merge tomorrow.  Pretty straight-forward change.


-- 
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-17614: cross-dc deletes can skip an HTTP hop [solr]

2025-02-06 Thread via GitHub


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

   Needs a CHANGES.txt; perhaps in Optimizations.  "Cross-DC delete-by-query 
optimized to fetch deleted documents with one less HTTP hop per batch of IDs".  
 I plan to merge it this weekend after adding that.


-- 
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-17654: DistribFileStore._getRealPath() has issues on Windows [solr]

2025-02-06 Thread via GitHub


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

   Thanks Jan for that suggestion!  I grabbed that and intend to play with it 
this weekend.
   I'll merge this PR shortly.


-- 
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-17635: unmarshalling Map to SimpleOrderedMap if key i of type St… [solr]

2025-02-06 Thread via GitHub


renatoh commented on code in PR #3163:
URL: https://github.com/apache/solr/pull/3163#discussion_r1945462495


##
solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java:
##
@@ -863,6 +868,26 @@ protected Map readMap(DataInputInputStream 
dis, int sz) throws I
 return m;
   }
 
+  @SuppressWarnings({"rawtypes", "unchecked"})
+  protected Map 
readMapAsSimpleOrderedMapForStringKeys(DataInputInputStream dis, int sz)
+  throws IOException {
+Map m = null;
+for (int i = 0; i < sz; i++) {
+  Object key = readVal(dis);
+
+  if (m == null) {
+if (key instanceof String) {
+  m = new SimpleOrderedMap<>(sz);
+} else {
+  m = newMap(sz);
+}
+  }
+  Object val = readVal(dis);
+  m.put(key, val);
+}
+return m;
+  }
+

Review Comment:
   @dsmiley  FYI, this is marked as drafted.
   We cannot simply create a SimpleOrderedMap since the key of the Map can also 
me something other than a String e.g. an Integer. The only way I can think of 
to overcome that is to read the first key and then do an instanceof check on 
it. Pretty ugly considering I have to use a raw Map.
   



-- 
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-06 Thread via GitHub


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


##
encryption/src/main/java/org/apache/solr/encryption/EncryptionRequestHandler.java:
##
@@ -260,12 +339,133 @@ public void handleRequestBody(SolrQueryRequest req, 
SolrQueryResponse rsp) throw
   } else {
 rsp.add(STATUS, STATUS_FAILURE);
   }
-  log.info("Responding encryption state={} success={} for keyId={}",
-   encryptionState, success, keyId);
-  rsp.add(ENCRYPTION_STATE, encryptionState);
+  rsp.add(ENCRYPTION_STATE, state.value);
+  long timeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - 
startTimeNs);
+  log.info("Responding encryption state={} success={} for keyId={} 
timeMs={}",
+  state.value, success, keyId, timeMs);
 }
   }
 
+  private void distributeRequest(SolrQueryRequest req, SolrQueryResponse rsp, 
String keyId, long startTimeNs) {
+boolean success = false;
+String collectionName = null;
+State collectionState = null;
+long timeAllowedMs = req.getParams().getLong(TIME_ALLOWED, 0);
+long maxTimeNs = timeAllowedMs <= 0 ? Long.MAX_VALUE : startTimeNs + 
timeAllowedMs;
+try {
+  collectionName = req.getCore().getCoreDescriptor().getCollectionName();
+  if (collectionName == null) {
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, 
"Parameter " + DISTRIB + " can only be used in Solr Cloud mode.");
+  }
+  log.debug("Encrypt request distributed for keyId={} collection={}", 
keyId, collectionName);
+  DocCollection docCollection = 
req.getCore().getCoreContainer().getZkController().getZkStateReader().getCollection(collectionName);
+  if (docCollection == null) {
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, 
"Parameter " + DISTRIB + " present but collection '" + collectionName + "' not 
found.");
+  }
+  try (SolrClientHolder solrClient = getHttpSolrClient(req)) {
+ModifiableSolrParams params = createDistributedRequestParams(req, rsp, 
keyId);
+Collection slices = docCollection.getActiveSlices();
+Collection> encryptRequests = new 
ArrayList<>(slices.size());
+final String collectionNameFinal = collectionName;
+for (Slice slice : slices) {
+  Replica replica = slice.getLeader();
+  if (replica == null) {
+log.error("No leader found for shard {}", slice.getName());
+collectionState = State.ERROR;
+continue;
+  }
+  encryptRequests.add(() -> sendEncryptionRequestWithRetry(replica, 
params, solrClient.getClient(), keyId, collectionNameFinal));
+}
+try {
+  List> responses = timeAllowedMs <= 0 ?
+  executor.invokeAll(encryptRequests)
+  : executor.invokeAll(encryptRequests, timeAllowedMs, 
TimeUnit.MILLISECONDS);
+  if (isTimeout(maxTimeNs)) {
+log.warn("Timeout distributing encryption request for keyId={} 
collection={}", keyId, collectionName);
+if (collectionState == null || State.TIMEOUT.priority > 
collectionState.priority) {
+  collectionState = State.TIMEOUT;
+}
+  }
+  for (Future response : responses) {
+State state;
+try {
+  state = response.get();
+} catch (ExecutionException e) {
+  collectionState = State.ERROR;
+  break;
+}
+if (collectionState == null || state.priority > 
collectionState.priority) {
+  collectionState = state;
+}
+  }
+} catch (InterruptedException e) {
+  collectionState = State.INTERRUPTED;
+}
+success = collectionState == null || collectionState.isSuccess();

Review Comment:
   null only happens if there is no distribution because there are no slices. I 
don't know if it can happen actually, but the request to encrypt all shards is 
complete.



-- 
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] fix the solr zk invocation [solr-operator]

2025-02-06 Thread via GitHub


elangelo opened a new pull request, #756:
URL: https://github.com/apache/solr-operator/pull/756

   (no comment)


-- 
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-14115: Allow bin/solr zk commands to have parity with zkcli.sh commands. [solr]

2025-02-06 Thread via GitHub


elangelo commented on PR #2298:
URL: https://github.com/apache/solr/pull/2298#issuecomment-2640038554

   This PR doesn't work. When using the `solr zk` command you need to provide 
the `--zk-host $ZK_HOST` argument:
https://github.com/apache/solr-operator/pull/756


-- 
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-16391: Convert create-core, core-status, /luke to JAX-RS [solr]

2025-02-06 Thread via GitHub


gerlowskija commented on code in PR #3054:
URL: https://github.com/apache/solr/pull/3054#discussion_r1945281386


##
solr/core/src/java/org/apache/solr/cli/CLIUtils.java:
##
@@ -321,16 +320,15 @@ public static boolean safeCheckCoreExists(String solrUrl, 
String coreName, Strin
   final int clamPeriodForStatusPollMs = 1000;
   Thread.sleep(clamPeriodForStatusPollMs);
 }
-NamedList existsCheckResult =
-CoreAdminRequest.getStatus(coreName, solrClient).getResponse();
-NamedList status = (NamedList) 
existsCheckResult.get("status");
-NamedList coreStatus = (NamedList) 
status.get(coreName);
-Map failureStatus =
-(Map) existsCheckResult.get("initFailures");
-String errorMsg = (String) failureStatus.get(coreName);
-final boolean hasName = coreStatus != null && coreStatus.get(NAME) != 
null;
-exists = hasName || errorMsg != null;
-wait = hasName && errorMsg == null && 
"true".equals(coreStatus.get("isLoading"));
+final var coreStatusReq = new CoresApi.GetCoreStatus(coreName);
+final var coreStatusRsp = 
coreStatusReq.process(solrClient).getParsed();
+final var coreStatusByName = coreStatusRsp.status;
+final var coreStatus = coreStatusByName.get(coreName);
+final var failureStatus = coreStatusRsp.initFailures;
+final var initFailureForCore = failureStatus.get(coreName);
+final boolean hasName = coreStatus != null && coreStatus.name != null;
+exists = hasName || initFailureForCore != null;
+wait = hasName && initFailureForCore == null && 
"true".equals(coreStatus.isLoading);

Review Comment:
   Done



-- 
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-06 Thread via GitHub


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


##
solr/CHANGES.txt:
##
@@ -187,6 +187,8 @@ Bug Fixes
 
 * SOLR-17652: Fix a bug that could cause long leader elections to leave PULL 
replicas in DOWN state forever. (hossman)
 
+* SOLR-17649: Fix a regression of faceting on multi-valued EnumFieldType, 
introduced by an earlier 9.x version. (Thomas Wöckinger, David Smiley, Houston 
Putman, Kevin Risden)

Review Comment:
   LOL if I merge this I'll just list yourself; I don't want any hint of 
credit.  As a reviewer my input was too trivial in this case to justify my name 
being listed.



-- 
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] Make PGP signing the release announcement optional [solr]

2025-02-06 Thread via GitHub


janhoy commented on PR #3161:
URL: https://github.com/apache/solr/pull/3161#issuecomment-2640061049

   > I'd rather just rip out the section, jsut because it's one more thing and 
no one uses it. But that's just me. The rest looks good. Though I have never 
been an RM ;-)
   
   Would it be better to play it down further by shortening the text, skipping 
the step by step instructions, and instead just link to gpg, e.g.?
   
   > ...and it *can optionally* be signed with your PGP key, using the 
`--clearsign` option of gpg [as explained 
here](https://www.gnupg.org/gph/en/manual/x135.html).


-- 
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] adding a script on how to calculated the encoded password format with… [solr]

2025-02-06 Thread via GitHub


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

   … bash
   
   https://issues.apache.org/jira/browse/SOLR-X
   
   
   
   
   # Description
   
   Adding a short bash script in the documentation that illustrates how to 
calculate the encoded password format for security.json
   
   # Solution
   
   doc
   
   # Tests
   
   doc only
   
   # Checklist
   
   Please review the following and check all that apply:
   
   - [v ] I have reviewed the guidelines for [How to 
Contribute](https://github.com/apache/solr/blob/main/CONTRIBUTING.md) and my 
code conforms to the standards described there to the best of my ability.
   - [ ] I have created a Jira issue and added the issue ID to my pull request 
title.
   - [ ] I have given Solr maintainers 
[access](https://help.github.com/en/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)
 to contribute to my PR branch. (optional but recommended, not available for 
branches on forks living under an organisation)
   - [ v] I have developed this patch against the `main` branch.
   - [ ] I have run `./gradlew check`.
   - [ ] I have added tests for my changes.
   - [ v] I have added documentation for the [Reference 
Guide](https://github.com/apache/solr/tree/main/solr/solr-ref-guide)
   


-- 
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] adding a script on how to calculated the encoded password format with… [solr]

2025-02-06 Thread via GitHub


epugh commented on code in PR #3162:
URL: https://github.com/apache/solr/pull/3162#discussion_r1945053453


##
solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc:
##
@@ -56,13 +56,42 @@ There are several options defined in this example:
 
 <1> The first block defines the authentication plugin to be used and its 
parameters.
 <2> The parameter `"blockUnknown":true` means that unauthenticated requests 
are not allowed to pass through.
-<3> A user called 'solr', with a password `'SolrRocks'`, in the encoded format 
detailed above, has been defined.
+<3> A user called 'solr', with a password `'SolrRocks'`, in the encoded format 
detailed above, has been defined. See below for a bash script on how to 
caculate the encoded format.
 <4> We override the `realm` property to display another text on the login 
prompt.
 <5> The parameter `"forwardCredentials":false` means we let Solr's PKI 
authentication handle distributed request instead of forwarding the Basic Auth 
header.
 
 Save your settings to a file called `security.json` locally.
 If you are using Solr in single-node installation, you should put this file in 
`$SOLR_HOME`.
 
+The following bash script illustrates how to calculated the encoded password 
format:

Review Comment:
   "calculate".  Also, thank you for your contribution!  



-- 
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] adding a script on how to calculated the encoded password format with… [solr]

2025-02-06 Thread via GitHub


epugh commented on code in PR #3162:
URL: https://github.com/apache/solr/pull/3162#discussion_r1945053002


##
solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc:
##
@@ -56,13 +56,42 @@ There are several options defined in this example:
 
 <1> The first block defines the authentication plugin to be used and its 
parameters.
 <2> The parameter `"blockUnknown":true` means that unauthenticated requests 
are not allowed to pass through.
-<3> A user called 'solr', with a password `'SolrRocks'`, in the encoded format 
detailed above, has been defined.
+<3> A user called 'solr', with a password `'SolrRocks'`, in the encoded format 
detailed above, has been defined. See below for a bash script on how to 
caculate the encoded format.

Review Comment:
   "calculate" ;-)



-- 
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-17632: Text to Vector Update Request Processor [solr]

2025-02-06 Thread via GitHub


alessandrobenedetti commented on PR #3151:
URL: https://github.com/apache/solr/pull/3151#issuecomment-2639773032

   Added one iteration of polishing, should have addressed @cpoerschke concerns 
on vectorisation failures (I took inspiration from the lang detect update 
processor).
   
   I also removed the additional test solr config files addressing @dsmiley 
concerns.
   
   I'm still puzzled by the testing errors I get (the before/after problems I 
mentioned in the first comment), any help there would be beneficial.
   
   I think we made progress, I;ll wait some other iterations and then work on 
the documentation.


-- 
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-17635: unmarshalling Map to SimpleOrderedMap if key i of type St… [solr]

2025-02-06 Thread via GitHub


renatoh commented on code in PR #3163:
URL: https://github.com/apache/solr/pull/3163#discussion_r1946046611


##
solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java:
##
@@ -863,6 +868,26 @@ protected Map readMap(DataInputInputStream 
dis, int sz) throws I
 return m;
   }
 
+  @SuppressWarnings({"rawtypes", "unchecked"})
+  protected Map 
readMapAsSimpleOrderedMapForStringKeys(DataInputInputStream dis, int sz)
+  throws IOException {
+Map m = null;
+for (int i = 0; i < sz; i++) {
+  Object key = readVal(dis);
+
+  if (m == null) {
+if (key instanceof String) {
+  m = new SimpleOrderedMap<>(sz);
+} else {
+  m = newMap(sz);
+}
+  }
+  Object val = readVal(dis);
+  m.put(key, val);
+}
+return m;
+  }
+

Review Comment:
   Just casting the key to a String, or having an assert on it, will fail three 
unit test of TestJavaBinCodec. E.g. the .bin used in the tests - 
org.apache.solr.common.util.TestJavaBinCodec#SOLRJ_JAVABIN_BACKCOMPAT_BIN - 
holds a Map with Integer as key. So you are saying that this is not 
representing a realistic case and had to be changed?



-- 
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] SOLR-17628: Add query quantiles metrics to prometheus endpoint [solr]

2025-02-06 Thread via GitHub


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

   https://issues.apache.org/jira/browse/SOLR-17628
   
   
   
   
   # Description
   
   Modify the implementation of `SolrPrometheusFormatter.exportTimer` to export 
a Prometheus summary containing quantile information instead of a single 
Prometheus gauge. Rename the Timer-based metrics 
`solr_metrics_core_average_request_time` and 
`solr_metrics_core_average_searcher_warmup_time` to reflect this change.
   
   # Solution
   
   Prior to this change, Dropwizard Timer metrics (used for core request 
handlers and searchers) were exported in Prometheus format as single gauges 
representing the mean of all observations. This PR replaces the existing mean 
gauge metrics with a summary that includes quantile metrics, the count (number) 
of observations, and the sum of all observations.
   
   ## Sample old output:
   ```
   # TYPE solr_metrics_core_average_request_time gauge
   
solr_metrics_core_average_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/file",replica="replica_n1",shard="shard1"}
 0.0
   
solr_metrics_core_average_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/luke",replica="replica_n1",shard="shard1"}
 0.0
   ```
   
   ## Sample new output:
   ```
   # TYPE solr_metrics_core_request_time summary
   
solr_metrics_core_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/file",replica="replica_n1",shard="shard1",quantile="0.5"}
 0.0
   
solr_metrics_core_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/file",replica="replica_n1",shard="shard1",quantile="0.75"}
 0.0
   
solr_metrics_core_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/file",replica="replica_n1",shard="shard1",quantile="0.99"}
 0.0
   
solr_metrics_core_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/file",replica="replica_n1",shard="shard1",quantile="0.999"}
 0.0
   
solr_metrics_core_request_time_count{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/file",replica="replica_n1",shard="shard1"}
 0
   
solr_metrics_core_request_time_sum{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/file",replica="replica_n1",shard="shard1"}
 0.0
   
solr_metrics_core_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/luke",replica="replica_n1",shard="shard1",quantile="0.5"}
 0.0
   
solr_metrics_core_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/luke",replica="replica_n1",shard="shard1",quantile="0.75"}
 0.0
   
solr_metrics_core_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/luke",replica="replica_n1",shard="shard1",quantile="0.99"}
 0.0
   
solr_metrics_core_request_time{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/luke",replica="replica_n1",shard="shard1",quantile="0.999"}
 0.0
   
solr_metrics_core_request_time_count{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/luke",replica="replica_n1",shard="shard1"}
 0
   
solr_metrics_core_request_time_sum{category="ADMIN",collection="example-collection",core="core_example-collection_shard1_replica_n1",handler="/admin/luke",replica="replica_n1",shard="shard1"}
 0.0
   ```
   
   # Tests
   
   I updated `MetricsHandlerTest` and `SolrPrometheusFormatterTest` to align 
with the changes to `exportTimer`. `./gradlew test` passes on my local machine.
   
   # Checklist
   
   Please review the following and check all that apply:
   
   - [x] I have reviewed the guidelines for [How to 
Contribute](https://github.com/apache/solr/blob/main/CONTRIBUTING.md) and my 
code conforms to the standards described there to the best of my ability.
   - [x] I have created a Jira issue and added the issue ID to my pull request 
title.
   - [x] I have given Solr maintainers 
[access](https://help.github.com/en/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)
 to contribute to my PR branch. (optional but recommended, not available for 
branches on forks living under an organisation)
   - [x] I have developed this patch against the `main` branch.
   - [x] I have run `./gradlew check`.
   - [ ] I have added tests for my changes.
   - [ ] I have added docum

[jira] [Updated] (SOLR-17628) Add query quantiles metrics to prometheus endpoint

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


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

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

> Add query quantiles metrics to prometheus endpoint 
> ---
>
> Key: SOLR-17628
> URL: https://issues.apache.org/jira/browse/SOLR-17628
> Project: Solr
>  Issue Type: Improvement
>  Components: metrics
>Reporter: Matthew Biscocho
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When exposing prometheus metrics with SOLR-10654 exporting metrics was mostly 
> straight forward except for query metric quantiles. Things such as average 
> request times exists with the current prometheus internal formatters. But 
> Dropwizard gauges can have more complex types in their data structures and 
> quantiles fell in that bucket so at the time, exporting these quantiles 
> wasn't straight forward. I think these metrics would be very beneficial to 
> finally add in and export.



--
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-12224) there is no API to read collection properties

2025-02-06 Thread David Smiley (Jira)


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

David Smiley commented on SOLR-12224:
-

Wasn't this resolved by SOLR-16390 ?

> there is no API to read collection properties
> -
>
> Key: SOLR-12224
> URL: https://issues.apache.org/jira/browse/SOLR-12224
> Project: Solr
>  Issue Type: Bug
>  Components: SolrCloud
>Affects Versions: 7.3
>Reporter: Hendrik Haddorp
>Priority: Major
>
> Solr 7.3 added the COLLECTIONPROP API call 
> (https://lucene.apache.org/solr/guide/7_3/collections-api.html#collectionprop)
>  that allows to set arbitrary properties on a collection. There is however no 
> API call that returns the data. The only option is to manually read out the 
> collectionprops.json file in ZK below the collection.
> Options could be that the COLLECTIONPROP command has an option to retrieve 
> properties, have a special command to list the properties and/or to have the 
> properties listed in the clusterstatus output for a collection.
> Would be great if SolrJ would also be supported.



--
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-17656) Add expert level option to allowe PULL replicas to go ACTIVE w/o RECOVERING

2025-02-06 Thread Chris M. Hostetter (Jira)


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

Chris M. Hostetter updated SOLR-17656:
--
Attachment: SOLR-17656.patch
Status: Open  (was: Open)

The attached patch implements this idea via a new {{skipLeaderRecovery}} 
replica property.

This patch leverages existing {{skipRecovery}} logic in {{ZkController}} – all 
it does is add a new condition in which {{skipRecovery}} may be set to 
{{{}true{}}}.

The new logic includes sanity checks to ensure that event if 
{{{}skipLeaderRecovery==true{}}}, the property will be ignored (and an error 
logged) if either:
 * the replica type {{requireTransactionLog}}
 * the replica does not have *ANY* local index commit (ie: was restarted before 
it ever did a single fetch from the leader)

{{TestPullReplica}} has been updated to confirm that this new property can 
allow a PULL replica on a restarted solr node to become ACTIVE even if the 
leader is DOWN.

Feedback welcome. I feel like it would be pretty useful, and that the patch is 
basically good to go from a code standpoint – but it obviously needs some 
ref-guide updates.

(i was holding off pending any objections to the name and/or restrictions on 
when it's respected. I'm assuming it would make sense to document this 
[HERE|https://solr.apache.org/guide/solr/latest/deployment-guide/solrcloud-shards-indexing.html#recovery-with-pull-replicas])

> Add expert level option to allowe PULL replicas to go ACTIVE w/o RECOVERING
> ---
>
> Key: SOLR-17656
> URL: https://issues.apache.org/jira/browse/SOLR-17656
> Project: Solr
>  Issue Type: New Feature
>Reporter: Chris M. Hostetter
>Assignee: Chris M. Hostetter
>Priority: Major
> Attachments: SOLR-17656.patch
>
>
> In situations where a Solr cluster undergoes a rolling restart (or some other 
> "catastrophic" failure situations requiring/causing solr node restarts) there 
> can be a snowball effect of poor performance (or even solr node crashing) due 
> to fewer then normal replicas serving query requests while replicas on 
> restarting nodes are DOWN or RECOVERING – especially if shard leaders are 
> also affected, and (restarting) replicas first must wait for a leader 
> election before they can recover (or wait to finish recovery from an 
> over-worked leader).
> For NRT type usecases, RECOVERING is really a necessary evil to ensure every 
> replicas is up to date before handling NRT requests – but in the case of PULL 
> replicas, which are expected to routinely "lag" behind their leader, I've 
> talked to a lot of Solr users w/usecases where they would be happy to have 
> PULL replicas back online serving "stale" data ASAP, and let normal 
> IndexFetching "catchup" with the leader later.
> I propose we support a new "advanced" replica property that can be set on 
> PULL replicas by expert level users, to indicate: on (re)init, these replicas 
> may skip RECOVERING and go directly to ACTIVE.



--
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] [Created] (SOLR-17656) Add expert level option to allowe PULL replicas to go ACTIVE w/o RECOVERING

2025-02-06 Thread Chris M. Hostetter (Jira)
Chris M. Hostetter created SOLR-17656:
-

 Summary: Add expert level option to allowe PULL replicas to go 
ACTIVE w/o RECOVERING
 Key: SOLR-17656
 URL: https://issues.apache.org/jira/browse/SOLR-17656
 Project: Solr
  Issue Type: New Feature
Reporter: Chris M. Hostetter
Assignee: Chris M. Hostetter


In situations where a Solr cluster undergoes a rolling restart (or some other 
"catastrophic" failure situations requiring/causing solr node restarts) there 
can be a snowball effect of poor performance (or even solr node crashing) due 
to fewer then normal replicas serving query requests while replicas on 
restarting nodes are DOWN or RECOVERING – especially if shard leaders are also 
affected, and (restarting) replicas first must wait for a leader election 
before they can recover (or wait to finish recovery from an over-worked leader).

For NRT type usecases, RECOVERING is really a necessary evil to ensure every 
replicas is up to date before handling NRT requests – but in the case of PULL 
replicas, which are expected to routinely "lag" behind their leader, I've 
talked to a lot of Solr users w/usecases where they would be happy to have PULL 
replicas back online serving "stale" data ASAP, and let normal IndexFetching 
"catchup" with the leader later.

I propose we support a new "advanced" replica property that can be set on PULL 
replicas by expert level users, to indicate: on (re)init, these replicas may 
skip RECOVERING and go directly to ACTIVE.



--
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-17654) DistribFileStore._getRealPath() has issues on Windows

2025-02-06 Thread ASF subversion and git services (Jira)


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

ASF subversion and git services commented on SOLR-17654:


Commit d0ec48f1c5aa8b711eeb4a951499d06bf0b438b9 in solr's branch 
refs/heads/main from Matthew Biscocho
[ https://gitbox.apache.org/repos/asf?p=solr.git;h=d0ec48f1c5a ]

SOLR-17654: Fix DistribFileStore._getRealPath() for Windows (#3160)

Revert but use NIO API to obtain path separator

> DistribFileStore._getRealPath() has issues on Windows
> -
>
> Key: SOLR-17654
> URL: https://issues.apache.org/jira/browse/SOLR-17654
> Project: Solr
>  Issue Type: Improvement
>Reporter: Houston Putman
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> On Windows, many tests that use the DistribFileStore, such as 
> {{TestPackages}}, {{TestDistribFileStore}} and {{PackageToolTest}} are 
> failing because of an issue in {{DistribFileStore._getRealPath()}}.
> This method tries to remove the beginning slashes from the path, and then 
> tries to make a new path relative to the file store location. However, in the 
> tests, it's failing and showing stuff like "Illegal path 
> \mypkg\v.0.12\jar_a.jar". Clearly in the code, the first "\" should have been 
> removed, so this code is having an issue with Windows.



--
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-17654: DistribFileStore._getRealPath() has issues on Windows [solr]

2025-02-06 Thread via GitHub


dsmiley merged PR #3160:
URL: https://github.com/apache/solr/pull/3160


-- 
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-16390) Cosmetic improvements and migration to JAX-RS (v2 cluster and clusterprop APIs)

2025-02-06 Thread David Smiley (Jira)


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

David Smiley commented on SOLR-16390:
-

CHANGES.txt references this issue under 9.8 (delivering a read API for cluster 
properties, by the way, thus addressing SOLR-12224); thus this issue should be 
marked Fixed and for that version.  Right?

> Cosmetic improvements and migration to JAX-RS (v2 cluster and clusterprop 
> APIs)
> ---
>
> Key: SOLR-16390
> URL: https://issues.apache.org/jira/browse/SOLR-16390
> Project: Solr
>  Issue Type: Sub-task
>  Components: documentation, v2 API
>Affects Versions: main (10.0)
>Reporter: Jason Gerlowski
>Priority: Major
>  Labels: newdev, pull-request-available
>  Time Spent: 4.5h
>  Remaining Estimate: 0h
>
> As mentioned on SOLR-15781, the v2 API currently has an experimental 
> designation, and the community has expressed an interest in using this period 
> to update our v2 endpoints to be more REST-ful and consistent.  The current 
> plan is to follow the specific changes laid out in [this 
> spreadsheet|https://docs.google.com/spreadsheets/d/1HAoBBFPpSiT8mJmgNZKkZAPwfCfPvlc08m5jz3fQBpA/edit?usp=sharing],
>  though of course nothing there is set in stone and there are still warts to 
> be worked out.
> This ticket plans to tackle making the changes required for Solr's "Cluster" 
> and "cluster-prop" APIs.  These APIs are described in detail in the 
> spreadsheet linked above, but are summarized in the table below for 
> convenience and easier tracking.
> While we're touching the code for these endpoints, we should also convert 
> them to JAX-RS framework definitions.  (This was initially tracked as a 
> separate effort - see SOLR-16370 - but the edit that were required ended up 
> overlapping so significantly with the "cosmetic" improvements here that in 
> practice it almost always makes sense to do the two together.)
> *Cosmetic Changes and JAX-RS Conversion*
> ||API Name||Original Form||Desired Form||Status||Volunteer||
> |Upsert ClusterProp|POST /api/cluster \{"set-property": \{...\}\}|PUT 
> /api/cluster/properties/propName \{"value": "propVal"\}|Open|N/A|
> |Upsert ClusterProp (Potentially Nested)|POST /api/cluster 
> \{"set-obj-property": \{...\}\}|PUT /api/cluster/properties \{...\}|Open|N/A|
> |Delete ClusterProp|POST /api/cluster \{"set-property": \{"name": "foo", 
> "value": ""\}\}|DELETE /api/cluster/properties/propName|Open|N/A|
> |Delete Single Async Status|DELETE /api/cluster/command-status/123|DELETE 
> /api/cluster/commands/123|Open|N/A|
> |Delete All Async Status|DELETE /api/cluster/command-status|DELETE 
> /api/cluster/commands|Open|N/A|
> |Get Single Async Status|GET /api/cluster/command-status/123|GET 
> /api/cluster/commands/123|Open|N/A|
> |Create rate-limiter|POST /api/cluster/ \{"set-ratelimiter": \{...\}\}|POST 
> /api/cluster/ratelimiter \{...\}|Open|N/A|



--
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-17635: unmarshalling Map to SimpleOrderedMap if key i of type St… [solr]

2025-02-06 Thread via GitHub


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


##
solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java:
##
@@ -863,6 +868,26 @@ protected Map readMap(DataInputInputStream 
dis, int sz) throws I
 return m;
   }
 
+  @SuppressWarnings({"rawtypes", "unchecked"})
+  protected Map 
readMapAsSimpleOrderedMapForStringKeys(DataInputInputStream dis, int sz)
+  throws IOException {
+Map m = null;
+for (int i = 0; i < sz; i++) {
+  Object key = readVal(dis);
+
+  if (m == null) {
+if (key instanceof String) {
+  m = new SimpleOrderedMap<>(sz);
+} else {
+  m = newMap(sz);
+}
+  }
+  Object val = readVal(dis);
+  m.put(key, val);
+}
+return m;
+  }
+

Review Comment:
   Oh man I didn't think of that!  Let's say we treat keys as a String no 
matter what.  I'm suspicious that our response formats would ever have a map 
whose key isn't a string.  Maybe add an assert if the key isn't already a 
String so that we can more readily identify problems.  (not sure if may read 
CharSequence but we can consider that as a String).



##
solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java:
##
@@ -848,9 +848,14 @@ protected Map newMap(int size) {
 return size < 0 ? new LinkedHashMap<>() : 
CollectionUtil.newLinkedHashMap(size);
   }
 
-  public Map readMap(DataInputInputStream dis) throws 
IOException {
+  public Map readMap(DataInputInputStream dis) throws IOException {
 int sz = readVInt(dis);
-return readMap(dis, sz);
+
+if (EnvUtils.getPropertyAsBool("solr.solrj.javabin.mapAsNamedList", true)) 
{

Review Comment:
   Reading this setting on _every single map decode_ is quite bad for 
performance.  This setting should be a field on the codec, and that which could 
be toggled with a setter (if useful in a test).



-- 
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] Make PGP signing the release announcement optional [solr]

2025-02-06 Thread via GitHub


epugh commented on PR #3161:
URL: https://github.com/apache/solr/pull/3161#issuecomment-2640149555

   Great!


-- 
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: [I] Basic Auth Bootstrap Not Working In 0.9.0 [solr-operator]

2025-02-06 Thread via GitHub


Calcagiara commented on issue #755:
URL: https://github.com/apache/solr-operator/issues/755#issuecomment-2639800143

   Hey there, having the same problem here. I will add that version 9.7.0 works 
fine with a fresh new deploy too, so I'm guessing it's an issue related 
specifically with the 9.8.0 version.


-- 
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-06 Thread via GitHub


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


##
solr/core/src/java/org/apache/solr/search/facet/FacetField.java:
##
@@ -152,7 +152,7 @@ public FacetProcessor 
createFacetProcessor(FacetContext fcontext) {
   }
 }
 

Review Comment:
   There's a comment below: `// multi-valued after this point`.  Can you please 
move that up above the condition you are modifying, since I think it belongs 
higher.  



##
solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java:
##
@@ -4907,6 +4907,38 @@ public void testQueryJoinBooksAndPages() throws 
Exception {
 + ", books2:{ buckets:[ {val:q,count:1}, {val:w,count:1} ] }"
 + "}");
   }
+  
+  @Test
+  public void testMultivalueEnumTypes() throws Exception {
+final Client client = Client.localClient();
+
+final SolrParams p = params("rows", "0");
+
+client.deleteByQuery("*:*", null);
+
+List docsToAdd = new ArrayList<>(6);

Review Comment:
   Whoops; right; never mind.  We have too many weird test infrastructure 
things.



-- 
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-17635) javabin should deserialize maps as SimpleOrderedMap

2025-02-06 Thread Renato Haeberli (Jira)


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

Renato Haeberli commented on SOLR-17635:


Ah right, my mind was still with the other ticket, where we want to move from 
NamedList.asShallowMap to a SimpleOrderedMap.
But the questions remain, should the deserialization  into a SimpleOrderedMap 
be the new default behavior, or should the default behavior be as it is 
currently with LinkedHashMap?

> javabin should deserialize maps as SimpleOrderedMap
> ---
>
> Key: SOLR-17635
> URL: https://issues.apache.org/jira/browse/SOLR-17635
> Project: Solr
>  Issue Type: Improvement
>Reporter: David Smiley
>Priority: Major
>
> Once SimpleOrderedMap actually implements Map (SOLR-17623), Solr's "javabin" 
> format should deserialize all maps as a SimpleOrderedMap.  This will make it 
> easier to transition away from NamedList/SimpleOrderedMap in responses (such 
> as to a Map or MapWriter) without worry of impacting javabin clients that 
> still expect a NamedList.  
> It may also increase deserialization performance & lower memory at the 
> expense of any former Maps (thus were deserialized as LinkedHashMap, O(1) 
> lookup) becoming O(N) lookup.



--
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-06 Thread via GitHub


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


##
encryption/src/main/java/org/apache/solr/encryption/EncryptionRequestHandler.java:
##
@@ -260,12 +330,116 @@ public void handleRequestBody(SolrQueryRequest req, 
SolrQueryResponse rsp) throw
   } else {
 rsp.add(STATUS, STATUS_FAILURE);
   }
-  log.info("Responding encryption state={} success={} for keyId={}",
-   encryptionState, success, keyId);
-  rsp.add(ENCRYPTION_STATE, encryptionState);
+  rsp.add(ENCRYPTION_STATE, state.value);
+  long timeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - 
startTimeNs);
+  log.info("Responding encryption state={} success={} for keyId={} 
timeMs={}",
+  state.value, success, keyId, timeMs);
 }
   }
 
+  private void distributeRequest(SolrQueryRequest req, SolrQueryResponse rsp, 
String keyId, long startTimeNs) {
+boolean success = false;
+String collectionName = null;
+State collectionState = null;
+long timeAllowedMs = req.getParams().getLong(TIME_ALLOWED, 0);
+long maxTimeNs = timeAllowedMs <= 0 ? Long.MAX_VALUE : startTimeNs + 
timeAllowedMs;
+try {
+  collectionName = req.getCore().getCoreDescriptor().getCollectionName();
+  if (collectionName == null) {
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, 
"Parameter " + DISTRIB + " can only be used in Solr Cloud mode.");
+  }
+  log.debug("Encrypt request distributed for keyId={} collection={}", 
keyId, collectionName);
+  DocCollection docCollection = 
req.getCore().getCoreContainer().getZkController().getZkStateReader().getCollection(collectionName);
+  if (docCollection == null) {
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, 
"Parameter " + DISTRIB + " present but collection '" + collectionName + "' not 
found.");
+  }
+  try (SolrClientHolder solrClient = getHttpSolrClient(req)) {
+ModifiableSolrParams params = createDistributedRequestParams(req, rsp, 
keyId);
+for (Slice slice : docCollection.getActiveSlices()) {
+  if (isTimeout(maxTimeNs)) {
+log.warn("Timeout distributing encryption request for keyId={} 
collection={}", keyId, collectionName);
+if (collectionState == null || State.TIMEOUT.priority > 
collectionState.priority) {
+  collectionState = State.TIMEOUT;
+}
+break;
+  }
+  Replica replica = slice.getLeader();
+  if (replica == null) {
+log.error("No leader found for shard {}", slice.getName());
+collectionState = State.ERROR;
+continue;
+  }
+  State state = sendEncryptionRequestWithRetry(replica, params, 
solrClient.getClient(), keyId, collectionName);
+  if (collectionState == null || state.priority > 
collectionState.priority) {
+collectionState = state;
+  }
+}
+success = collectionState == null || collectionState.isSuccess();
+  }
+} finally {
+  if (success) {
+rsp.add(STATUS, STATUS_SUCCESS);
+  } else {
+rsp.add(STATUS, STATUS_FAILURE);
+  }
+  if (collectionState != null) {
+rsp.add(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);
+  }
+}
+  }
+
+  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;
+  }
+
+  private State sendEncryptionRequestWithRetry(Replica replica, 
ModifiableSolrParams params, Http2SolrClient httpSolrClient, String keyId, 
String collection) {
+for (int numAttempts = 0; numAttempts < DISTRIBUTION_MAX_ATTEMPTS; 
numAttempts++) {
+  try {
+NamedList response = sendEncryptionRequest(replica, param

Re: [PR] SOLR-17632: Text to Vector Update Request Processor [solr]

2025-02-06 Thread via GitHub


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


##
solr/modules/llm/src/java/org/apache/solr/llm/textvectorisation/update/processor/TextToVectorUpdateProcessorFactory.java:
##
@@ -0,0 +1,105 @@
+/*
+ * 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.llm.textvectorisation.update.processor;
+
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.RequiredSolrParams;
+import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.llm.textvectorisation.model.SolrTextToVectorModel;
+import 
org.apache.solr.llm.textvectorisation.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.schema.DenseVectorField;
+import org.apache.solr.schema.FieldType;
+import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.schema.SchemaField;
+import org.apache.solr.update.processor.UpdateRequestProcessor;
+import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
+
+/**
+ * This class implements an UpdateProcessorFactory for the Text To Vector 
Update Processor.
+ */
+public class TextToVectorUpdateProcessorFactory extends 
UpdateRequestProcessorFactory {
+private static final String INPUT_FIELD_PARAM = "inputField";
+private static final String OUTPUT_FIELD_PARAM = "outputField";
+private static final String MODEL_NAME = "model";
+
+private String inputField;
+private String outputField;
+private String modelName;
+private SolrParams params;
+
+
+@Override
+public void init(final NamedList args) {
+params = args.toSolrParams();
+RequiredSolrParams required = params.required();
+inputField = required.get(INPUT_FIELD_PARAM);
+outputField = required.get(OUTPUT_FIELD_PARAM);
+modelName = required.get(MODEL_NAME);
+}
+
+@Override
+public UpdateRequestProcessor getInstance(SolrQueryRequest req, 
SolrQueryResponse rsp, UpdateRequestProcessor next) {
+IndexSchema latestSchema = req.getCore().getLatestSchema();
+if(!latestSchema.hasExplicitField(inputField)){
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, 
"undefined field: \"" + inputField + "\"");
+}
+if(!latestSchema.hasExplicitField(outputField)){
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, 
"undefined field: \"" + outputField + "\"");
+}
+   
+final SchemaField outputFieldSchema = 
latestSchema.getField(outputField);
+assertIsDenseVectorField(outputFieldSchema);
+
+ManagedTextToVectorModelStore modelStore = 
ManagedTextToVectorModelStore.getManagedModelStore(req.getCore());
+SolrTextToVectorModel textToVector = modelStore.getModel(modelName);

Review Comment:
   I presume looking up the model is fast/cached if it already exists?



##
solr/modules/llm/src/test/org/apache/solr/llm/textvectorisation/search/TextToVectorQParserTest.java:
##
@@ -29,6 +30,11 @@ public static void init() throws Exception {
 loadModel("dummy-model.json");
   }
 
+  @AfterClass
+  public static void cleanup() throws Exception {
+afterTest();
+  }

Review Comment:
   weird; why?  Weird to see a test cleanup also be a suite cleanup.
   (same for TestModelManager)



##
solr/modules/llm/src/test/org/apache/solr/llm/textvectorisation/update/processor/TextToVectorUpdateProcessorFactoryTest.java:
##
@@ -0,0 +1,130 @@
+/*
+ * 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 unde

[jira] [Commented] (SOLR-17635) javabin should deserialize maps as SimpleOrderedMap

2025-02-06 Thread David Smiley (Jira)


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

David Smiley commented on SOLR-17635:
-

Default to SimpleOrderedMap.

> javabin should deserialize maps as SimpleOrderedMap
> ---
>
> Key: SOLR-17635
> URL: https://issues.apache.org/jira/browse/SOLR-17635
> Project: Solr
>  Issue Type: Improvement
>Reporter: David Smiley
>Priority: Major
>
> Once SimpleOrderedMap actually implements Map (SOLR-17623), Solr's "javabin" 
> format should deserialize all maps as a SimpleOrderedMap.  This will make it 
> easier to transition away from NamedList/SimpleOrderedMap in responses (such 
> as to a Map or MapWriter) without worry of impacting javabin clients that 
> still expect a NamedList.  
> It may also increase deserialization performance & lower memory at the 
> expense of any former Maps (thus were deserialized as LinkedHashMap, O(1) 
> lookup) becoming O(N) lookup.



--
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-06 Thread via GitHub


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


##
encryption/src/main/java/org/apache/solr/encryption/EncryptionRequestHandler.java:
##
@@ -260,12 +339,133 @@ public void handleRequestBody(SolrQueryRequest req, 
SolrQueryResponse rsp) throw
   } else {
 rsp.add(STATUS, STATUS_FAILURE);
   }
-  log.info("Responding encryption state={} success={} for keyId={}",
-   encryptionState, success, keyId);
-  rsp.add(ENCRYPTION_STATE, encryptionState);
+  rsp.add(ENCRYPTION_STATE, state.value);
+  long timeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - 
startTimeNs);
+  log.info("Responding encryption state={} success={} for keyId={} 
timeMs={}",
+  state.value, success, keyId, timeMs);
 }
   }
 
+  private void distributeRequest(SolrQueryRequest req, SolrQueryResponse rsp, 
String keyId, long startTimeNs) {
+boolean success = false;
+String collectionName = null;
+State collectionState = null;
+long timeAllowedMs = req.getParams().getLong(TIME_ALLOWED, 0);
+long maxTimeNs = timeAllowedMs <= 0 ? Long.MAX_VALUE : startTimeNs + 
timeAllowedMs;
+try {
+  collectionName = req.getCore().getCoreDescriptor().getCollectionName();
+  if (collectionName == null) {
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, 
"Parameter " + DISTRIB + " can only be used in Solr Cloud mode.");
+  }
+  log.debug("Encrypt request distributed for keyId={} collection={}", 
keyId, collectionName);
+  DocCollection docCollection = 
req.getCore().getCoreContainer().getZkController().getZkStateReader().getCollection(collectionName);
+  if (docCollection == null) {
+throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, 
"Parameter " + DISTRIB + " present but collection '" + collectionName + "' not 
found.");
+  }
+  try (SolrClientHolder solrClient = getHttpSolrClient(req)) {
+ModifiableSolrParams params = createDistributedRequestParams(req, rsp, 
keyId);
+Collection slices = docCollection.getActiveSlices();
+Collection> encryptRequests = new 
ArrayList<>(slices.size());
+final String collectionNameFinal = collectionName;
+for (Slice slice : slices) {
+  Replica replica = slice.getLeader();
+  if (replica == null) {
+log.error("No leader found for shard {}", slice.getName());
+collectionState = State.ERROR;
+continue;
+  }
+  encryptRequests.add(() -> sendEncryptionRequestWithRetry(replica, 
params, solrClient.getClient(), keyId, collectionNameFinal));
+}
+try {
+  List> responses = timeAllowedMs <= 0 ?
+  executor.invokeAll(encryptRequests)
+  : executor.invokeAll(encryptRequests, timeAllowedMs, 
TimeUnit.MILLISECONDS);
+  if (isTimeout(maxTimeNs)) {
+log.warn("Timeout distributing encryption request for keyId={} 
collection={}", keyId, collectionName);
+if (collectionState == null || State.TIMEOUT.priority > 
collectionState.priority) {
+  collectionState = State.TIMEOUT;
+}
+  }
+  for (Future response : responses) {
+State state;
+try {
+  state = response.get();
+} catch (ExecutionException e) {
+  collectionState = State.ERROR;
+  break;
+}
+if (collectionState == null || state.priority > 
collectionState.priority) {
+  collectionState = state;
+}
+  }
+} catch (InterruptedException e) {
+  collectionState = State.INTERRUPTED;
+}
+success = collectionState == null || collectionState.isSuccess();
+  }
+} finally {
+  String statusValue = success ? STATUS_SUCCESS : STATUS_FAILURE;
+  rsp.add(STATUS, statusValue);
+  rsp.addToLog(STATUS, statusValue);
+  if (collectionState != null) {
+rsp.add(ENCRYPTION_STATE, collectionState.value);
+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);
+  }
+}
+  }
+
+  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) 

Re: [PR] Make PGP signing the release announcement optional [solr]

2025-02-06 Thread via GitHub


janhoy commented on PR #3161:
URL: https://github.com/apache/solr/pull/3161#issuecomment-2640112351

   Here is a proposal for how it will look without the detailed instructions, 
further downplaying PGP:
   ![Skjermbilde 2025-02-06 kl  16 14 
38](https://github.com/user-attachments/assets/8cda35d9-2770-433a-8ef8-fd4780c3d1a5)
   ![Skjermbilde 2025-02-06 kl  16 14 
54](https://github.com/user-attachments/assets/f2d75c7f-35a7-4a43-a4dd-314c4c2ebdaa)
   
   


-- 
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