AMBARI-17524. Falcon start fails rarely (aonishuk)

Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0f04bb08
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0f04bb08
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0f04bb08

Branch: refs/heads/branch-2.4
Commit: 0f04bb0870f5ad6786601d646e3e0faa07d1a0f0
Parents: 4fd42ba
Author: Andrew Onishuk <[email protected]>
Authored: Fri Jul 1 18:05:53 2016 +0300
Committer: Andrew Onishuk <[email protected]>
Committed: Fri Jul 1 18:05:53 2016 +0300

----------------------------------------------------------------------
 .../FALCON/0.5.0.2.1/package/scripts/falcon.py               | 8 +++++++-
 .../src/test/python/stacks/2.1/FALCON/test_falcon_server.py  | 5 ++++-
 2 files changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0f04bb08/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
 
b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
index c2f1f53..a67519d 100644
--- 
a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
+++ 
b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
@@ -31,6 +31,7 @@ from resource_management.libraries.script import Script
 from resource_management.libraries.resources import PropertiesFile
 from resource_management.libraries.functions import format
 from resource_management.libraries.functions.show_logs import show_logs
+from resource_management.libraries.functions import get_user_call_output
 from resource_management.core.logger import Logger
 
 from ambari_commons import OSConst
@@ -186,12 +187,17 @@ def falcon(type, action = None, upgrade_type=None):
     # hadoop home directory to use
     environment_dictionary = { "HADOOP_HOME" : params.hadoop_home_dir }
 
+    pid = get_user_call_output.get_user_call_output(format("cat 
{server_pid_file}"), user=params.falcon_user, is_checked_call=False)[1]
+    process_exists = format("ls {server_pid_file} && ps -p {pid}")
+
     if action == 'start':
       try:
         Execute(format('{falcon_home}/bin/falcon-start -port {falcon_port}'),
           user = params.falcon_user,
           path = params.hadoop_bin_dir,
-          environment=environment_dictionary)
+          environment=environment_dictionary,
+          not_if = process_exists,
+        )
       except:
         show_logs(params.falcon_log_dir, params.falcon_user)
         raise

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f04bb08/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py 
b/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
index 6f81b15..2dd0da9 100644
--- a/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
+++ b/ambari-server/src/test/python/stacks/2.1/FALCON/test_falcon_server.py
@@ -46,7 +46,9 @@ class TestFalconServer(RMFTestCase):
     self.assertResourceCalled('Execute', '/usr/lib/falcon/bin/falcon-start 
-port 15000',
       path = ['/usr/bin'],
       user = 'falcon',
-      environment = {'HADOOP_HOME': '/usr/lib/hadoop'})
+      environment = {'HADOOP_HOME': '/usr/lib/hadoop'},
+      not_if = 'ls /var/run/falcon/falcon.pid && ps -p ',
+    )
 
     self.assertNoMoreResources()
 
@@ -370,6 +372,7 @@ class TestFalconServer(RMFTestCase):
         environment = {'HADOOP_HOME': '/usr/hdp/current/hadoop-client'},
         path = ['/usr/hdp/current/hadoop-client/bin'],
         user = 'falcon',
+        not_if = 'ls /var/run/falcon/falcon.pid && ps -p ',
     )
     self.assertNoMoreResources()
     

Reply via email to