You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by vj...@apache.org on 2026/05/26 19:06:21 UTC

(phoenix-adapters) branch main updated: RESTServer changes for flapping tests

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

virajjasani pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/phoenix-adapters.git


The following commit(s) were added to refs/heads/main by this push:
     new 198036c  RESTServer changes for flapping tests
198036c is described below

commit 198036cb634eea25556914f581d399ecb8451d7a
Author: Palash Chauhan <pa...@gmail.com>
AuthorDate: Wed Feb 25 19:29:14 2026 -0800

    RESTServer changes for flapping tests
---
 .../org/apache/phoenix/ddb/rest/RESTServer.java    | 28 ++++++++++++++++++----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/phoenix-ddb-rest/src/main/java/org/apache/phoenix/ddb/rest/RESTServer.java b/phoenix-ddb-rest/src/main/java/org/apache/phoenix/ddb/rest/RESTServer.java
index e357810..fa44e61 100644
--- a/phoenix-ddb-rest/src/main/java/org/apache/phoenix/ddb/rest/RESTServer.java
+++ b/phoenix-ddb-rest/src/main/java/org/apache/phoenix/ddb/rest/RESTServer.java
@@ -90,6 +90,8 @@ public class RESTServer {
     private static final String START = "start";
     private static final String STOP = "stop";
     private static final String SERVER_NOT_RUNNING_ERR_MSG = "Server is not running";
+    private static final int VALIDATE_SYSCAT_CONNECTION_MAX_RETRIES = 10;
+    private static final long VALIDATE_SYSCAT_CONNECTION_RETRY_INTERVAL_MS = 1_000;
 
     public RESTServer(Configuration conf) {
         this.conf = conf;
@@ -287,11 +289,26 @@ public class RESTServer {
 
     private void validateConnection(String jdbcUrl) throws SQLException {
         LOG.info("Try connecting to SYSTEM.CATALOG using JDBC connection url: {}", jdbcUrl);
-        try (Connection connection = ConnectionUtil.getConnection(jdbcUrl)) {
-            ResultSet resultSet = connection.createStatement()
-                    .executeQuery("SELECT * FROM SYSTEM.CATALOG LIMIT 1");
-            resultSet.next();
+        SQLException lastException = null;
+        for (int i = 0; i < VALIDATE_SYSCAT_CONNECTION_MAX_RETRIES; i++) {
+            try (Connection connection = ConnectionUtil.getConnection(jdbcUrl)) {
+                ResultSet resultSet = connection.createStatement()
+                        .executeQuery("SELECT * FROM SYSTEM.CATALOG LIMIT 1");
+                resultSet.next();
+                return;
+            } catch (SQLException e) {
+                lastException = e;
+                LOG.warn("Attempt {}/{} to validate connection failed",
+                        i + 1, VALIDATE_SYSCAT_CONNECTION_MAX_RETRIES, e);
+                try {
+                    Thread.sleep(VALIDATE_SYSCAT_CONNECTION_RETRY_INTERVAL_MS);
+                } catch (InterruptedException ie) {
+                    Thread.currentThread().interrupt();
+                    break;
+                }
+            }
         }
+        throw lastException;
     }
 
     private ExecutorService startAsyncIndexManager(String jdbcUrl) {
@@ -322,7 +339,8 @@ public class RESTServer {
 
     public synchronized void stop() throws Exception {
         if (server == null) {
-            throw new IllegalStateException(SERVER_NOT_RUNNING_ERR_MSG);
+            LOG.warn("Server is not running, nothing to stop");
+            return;
         }
         if (indexBuildingActivator != null) {
             indexBuildingActivator.shutdown();