← Back to team overview

bigdata-dev team mailing list archive

[Merge] lp:~bigdata-dev/charms/trusty/hdp-hadoop/cs-jps-quickfix into lp:charms/trusty/hdp-hadoop

 

Cory Johns has proposed merging lp:~bigdata-dev/charms/trusty/hdp-hadoop/cs-jps-quickfix into lp:charms/trusty/hdp-hadoop.

Requested reviews:
  Big Data Charmers (bigdata-charmers)

For more details, see:
https://code.launchpad.net/~bigdata-dev/charms/trusty/hdp-hadoop/cs-jps-quickfix/+merge/250932

Work around the upstream JPS issue (https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/1417962)
-- 
Your team Juju Big Data Development is subscribed to branch lp:~bigdata-dev/charms/trusty/hdp-hadoop/cs-jps-quickfix.
=== modified file 'hooks/bdutils.py'
--- hooks/bdutils.py	2014-09-17 14:49:16 +0000
+++ hooks/bdutils.py	2015-02-25 14:48:55 +0000
@@ -1,4 +1,5 @@
 #!/usr/bin/python
+import re
 import os
 import pwd
 import grp
@@ -124,10 +125,9 @@
                 os.environ[ll[0]] = ll[1].strip().strip(';').strip("\"").strip()
                 
 def is_jvm_service_active(processname):
-    cmd=["jps"]
-    p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-    out, err = p.communicate()
-    if err == None and str(out).find(processname) != -1:
-        return True
-    else:
-        return False
\ No newline at end of file
+    pat = re.sub(r'^(.)', r'^[^ ]*java .*[\1]', processname)
+    try:
+        output = subprocess.check_output(['sudo', 'pgrep', '-f', pat])
+    except subprocess.CalledProcessError:
+        return False
+    return filter(None, map(str.strip, output.split('\n'))) != []

=== modified file 'tests/01-hadoop-cluster-deployment-1.py'
--- tests/01-hadoop-cluster-deployment-1.py	2014-11-21 18:37:23 +0000
+++ tests/01-hadoop-cluster-deployment-1.py	2015-02-25 14:48:55 +0000
@@ -28,7 +28,7 @@
 # Validate hadoop services on master node have been started
 ############################################################
     def test_hadoop_master_service_status(self):
-        o,c= self.master_unit.run("jps | awk '{print $2}'")
+        o,c= self.master_unit.run("pgrep -a java")
         if o.find('ResourceManager') == -1:
             amulet.raise_status(amulet.FAIL, msg="ResourceManager not started")
         else:
@@ -46,7 +46,7 @@
 # Validate hadoop services on compute node have been started
 ############################################################
     def test_hadoop_compute_service_status(self):
-        o,c= self.compute_unit.run("jps | awk '{print $2}'")
+        o,c= self.compute_unit.run("pgrep -a java")
         if o.find('NodeManager') == -1:
             amulet.raise_status(amulet.FAIL, msg="NodeManager not started")
         else:


Follow ups