ritegarg commented on code in PR #2519:
URL: https://github.com/apache/phoenix/pull/2519#discussion_r3437340800


##########
phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/PhoenixHAAdminTool.java:
##########
@@ -807,9 +872,24 @@ private int executeGetClusterRoleRecord(String[] args) 
throws Exception {
       String haGroupName = getRequiredOption(cmdLine, HA_GROUP_OPT, "HA group 
name");
 
       HAGroupStoreManager manager = HAGroupStoreManager.getInstance(getConf());
-      ClusterRoleRecord clusterRoleRecord = 
manager.getClusterRoleRecord(haGroupName);
-
-      printClusterRoleRecordAsText(clusterRoleRecord);
+      try {
+        
printClusterRoleRecordAsText(manager.getClusterRoleRecord(haGroupName));
+      } catch (RuntimeException e) {
+        // ClusterRoleRecord normalization throws on a malformed stored 
cluster URL; don't crash -
+        // show the raw URLs (offending one marked <invalid>) and how to 
repair. Surface the cause
+        // so an unrelated failure is not silently mislabeled as a bad URL.
+        HAGroupStoreRecord raw = 
manager.getHAGroupStoreRecord(haGroupName).orElse(null);
+        System.out.println("\nCluster Role Record for '" + haGroupName
+          + "' could not be built (likely a malformed stored URL): " + 
e.getMessage());
+        if (raw != null) {
+          System.out.println("  Cluster URL:       "
+            + describeUrl(raw.getClusterUrl(), 
ClusterRoleRecord.RegistryType.RPC));
+          System.out.println("  Peer Cluster URL:  "
+            + describeUrl(raw.getPeerClusterUrl(), 
ClusterRoleRecord.RegistryType.RPC));
+        }
+        System.out.println(
+          "  Repair with: update -g " + haGroupName + " -c <good-url> (or -pc) 
-av  [--force]");
+      }
 
       return RET_SUCCESS;

Review Comment:
   Fixed — the catch now returns RET_UPDATE_ERROR (same code handleCommandError 
uses) instead of falling through to RET_SUCCESS, so a malformed stored URL 
surfaces a non-zero exit code. Updated testGetClusterRoleRecordMarksInvalidUrl 
to assert RET_UPDATE_ERROR and the stderr <invalid> diagnostic. Done in 79e7b1e.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to