You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by th...@apache.org on 2021/02/14 02:33:52 UTC

[lucene-solr] branch branch_8_8 updated: SOLR-15145: Restore base_url if node_name is set

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

thelabdude pushed a commit to branch branch_8_8
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/branch_8_8 by this push:
     new 6a50a03  SOLR-15145: Restore base_url if node_name is set
6a50a03 is described below

commit 6a50a0315ac7e4979abb0b530857c7795bb3b928
Author: Timothy Potter <th...@gmail.com>
AuthorDate: Sat Feb 13 19:33:28 2021 -0700

    SOLR-15145: Restore base_url if node_name is set
---
 .../src/java/org/apache/solr/common/cloud/ZkNodeProps.java    | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java
index 47ab034..b206c8d 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java
@@ -40,7 +40,7 @@ public class ZkNodeProps implements JSONWriter.Writable {
    * Installations that use an older (pre-8.8) SolrJ against a 8.8.0 or newer server will need to set this system
    * property to true to avoid NPEs when reading cluster state from Zookeeper, see SOLR-15145.
    */
-  static final boolean STORE_BASE_URL = Boolean.parseBoolean(System.getProperty("solr.storeBaseUrl", "true"));
+  public static final boolean STORE_BASE_URL = Boolean.parseBoolean(System.getProperty("solr.storeBaseUrl", "true"));
 
   protected final Map<String,Object> propMap;
 
@@ -125,10 +125,15 @@ public class ZkNodeProps implements JSONWriter.Writable {
   @Override
   public void write(JSONWriter jsonWriter) {
     // don't write out the base_url if we have a node_name
-    if (!STORE_BASE_URL && propMap.containsKey(ZkStateReader.BASE_URL_PROP) && propMap.containsKey(ZkStateReader.NODE_NAME_PROP)) {
-      final Map<String,Object> filtered = new HashMap<>(propMap);
+    if (!STORE_BASE_URL && propMap.containsKey(ZkStateReader.BASE_URL_PROP) && propMap.get(ZkStateReader.NODE_NAME_PROP) != null) {
+      final Map<String, Object> filtered = new HashMap<>(propMap);
       filtered.remove(ZkStateReader.BASE_URL_PROP);
       jsonWriter.write(filtered);
+    } else if (STORE_BASE_URL && propMap.get(ZkStateReader.BASE_URL_PROP) == null && propMap.get(ZkStateReader.NODE_NAME_PROP) != null) {
+      // this is for back-compat with older SolrJ
+      final Map<String, Object> addBaseUrl = new HashMap<>(propMap);
+      addBaseUrl.put(ZkStateReader.BASE_URL_PROP, UrlScheme.INSTANCE.getBaseUrlForNodeName((String)propMap.get(ZkStateReader.NODE_NAME_PROP)));
+      jsonWriter.write(addBaseUrl);
     } else {
       jsonWriter.write(propMap);
     }