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

brandonwilliams pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 860d005f retry jmx, switch prints to logger
860d005f is described below

commit 860d005f63f7a31dcdae234a24af605e279b6e75
Author: Brandon Williams <brandonwilli...@apache.org>
AuthorDate: Mon Oct 3 09:13:14 2022 -0500

    retry jmx, switch prints to logger
    
    Patch by brandonwilliams; reviewed by jmckenzie for CASSANDRA-17922
---
 tools/jmxutils.py | 32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/tools/jmxutils.py b/tools/jmxutils.py
index 137f0159..8d82815f 100644
--- a/tools/jmxutils.py
+++ b/tools/jmxutils.py
@@ -2,6 +2,7 @@ import json
 import os
 import subprocess
 import socket
+import time
 import urllib.request
 import urllib.parse
 import logging
@@ -204,6 +205,7 @@ class JolokiaAgent(object):
         if not port:
             raise Exception("Port 8778 still in use on {}, unable to find 
another available port in range 8000-9000, cannot launch 
jolokia".format(socket.gethostname()))
 
+        logger.info("Port %s open for jolokia" % port)
         args = (java_bin(),
                 '-cp', jolokia_classpath(),
                 'org.jolokia.jvmagent.client.AgentLauncher',
@@ -211,13 +213,23 @@ class JolokiaAgent(object):
                 '--port', str(port),
                 'start', str(self.node.pid))
 
-        try:
-            subprocess.check_output(args, stderr=subprocess.STDOUT)
-        except subprocess.CalledProcessError as exc:
-            print("Failed to start jolokia agent (command was: %s): %s" % (' 
'.join(args), exc))
-            print("Exit status was: %d" % (exc.returncode,))
-            print("Output was: %s" % (exc.output,))
-            raise
+        tries = 3
+        for i in range(tries):
+            try:
+                subprocess.check_output(args, stderr=subprocess.STDOUT, 
text=True)
+                logger.info("Jolokia successful on try %s" % i )
+                return
+            except subprocess.CalledProcessError as exc:
+                if 'Jolokia is already attached' in exc.output:
+                    logger.info("Jolokia reports being attached on try %s, 
returning successfully" % i)
+                    return;
+                if i < tries - 1:
+                    logger.warn("Failed to start jolokia agent (command was: 
%s): %s" % (' '.join(args), exc))
+                    logger.warn("Exit status was: %d" % (exc.returncode,))
+                    logger.warn("Output was: %s" % (exc.output,))
+                    time.sleep(2)
+                else:
+                    raise
 
     def stop(self):
         """
@@ -230,9 +242,9 @@ class JolokiaAgent(object):
         try:
             subprocess.check_output(args, stderr=subprocess.STDOUT)
         except subprocess.CalledProcessError as exc:
-            print("Failed to stop jolokia agent (command was: %s): %s" % (' 
'.join(args), exc))
-            print("Exit status was: %d" % (exc.returncode,))
-            print("Output was: %s" % (exc.output,))
+            logger.error("Failed to stop jolokia agent (command was: %s): %s" 
% (' '.join(args), exc))
+            logger.error("Exit status was: %d" % (exc.returncode,))
+            logger.error("Output was: %s" % (exc.output,))
             raise
 
     def _query(self, body, verbose=True):


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

Reply via email to