Repository: ambari
Updated Branches:
  refs/heads/trunk 6e9d25caf -> 8f2c5dd1e


AMBARI-14704 : Restart storm fails with a metrics storm sink jar related error 
sometimes. (avijayan)


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

Branch: refs/heads/trunk
Commit: 8f2c5dd1eb032075bc7ddc227385621e5a47df69
Parents: 6e9d25c
Author: Aravindan Vijayan <avija...@hortonworks.com>
Authored: Sun Jan 17 10:55:43 2016 -0800
Committer: Aravindan Vijayan <avija...@hortonworks.com>
Committed: Sun Jan 17 10:55:43 2016 -0800

----------------------------------------------------------------------
 .../STORM/0.9.1.2.1/package/scripts/storm.py    | 11 ++++++++
 .../0.9.1.2.1/package/scripts/ui_server.py      | 15 ++++++++++
 .../stacks/2.1/STORM/test_storm_ui_server.py    | 29 ++++++++++++++++++++
 3 files changed, 55 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/8f2c5dd1/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
 
b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
index 43736fa..98abb41 100644
--- 
a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
+++ 
b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py
@@ -87,6 +87,17 @@ def storm(name=None):
        group=params.user_group
   )
 
+    # Remove symlinks. They can be there, if you doing upgrade from HDP < 2.2 
to HDP >= 2.2
+    Link(format("{storm_lib_dir}/ambari-metrics-storm-sink.jar"),
+         action="delete")
+    # On old HDP 2.1 versions, this symlink may also exist and break EU to 
newer versions
+    Link("/usr/lib/storm/lib/ambari-metrics-storm-sink.jar", action="delete")
+
+    Execute(format("{sudo} ln -s {metric_collector_sink_jar} 
{storm_lib_dir}/ambari-metrics-storm-sink.jar"),
+            not_if=format("ls {storm_lib_dir}/ambari-metrics-storm-sink.jar"),
+            only_if=format("ls {metric_collector_sink_jar}")
+    )
+
   File(format("{conf_dir}/storm-env.sh"),
        owner=params.storm_user,
        content=InlineTemplate(params.storm_env_sh_template)

http://git-wip-us.apache.org/repos/asf/ambari/blob/8f2c5dd1/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
 
b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
index 42f12fc..3053b05 100644
--- 
a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
+++ 
b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
@@ -27,6 +27,7 @@ from resource_management.libraries.script import Script
 from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import hdp_select
 from resource_management.libraries.functions import format
+from resource_management.core.resources.system import Link
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions.version import compare_versions, 
format_hdp_stack_version
 from resource_management.libraries.functions.security_commons import 
build_expectations, \
@@ -82,10 +83,24 @@ class UiServerDefault(UiServer):
       conf_select.select(params.stack_name, "storm", params.version)
       hdp_select.select("storm-client", params.version)
 
+  def link_metrics_sink_jar(self):
+    # Add storm metrics reporter JAR to storm-ui-server classpath.
+    # Remove symlinks. They can be there, if you doing upgrade from HDP < 2.2 
to HDP >= 2.2
+    Link(format("{storm_lib_dir}/ambari-metrics-storm-sink.jar"),
+         action="delete")
+    # On old HDP 2.1 versions, this symlink may also exist and break EU to 
newer versions
+    Link("/usr/lib/storm/lib/ambari-metrics-storm-sink.jar", action="delete")
+
+    Execute(format("{sudo} ln -s {metric_collector_sink_jar} 
{storm_lib_dir}/ambari-metrics-storm-sink.jar"),
+            not_if=format("ls {storm_lib_dir}/ambari-metrics-storm-sink.jar"),
+            only_if=format("ls {metric_collector_sink_jar}")
+            )
+
   def start(self, env, upgrade_type=None):
     import params
     env.set_params(params)
     self.configure(env)
+    self.link_metrics_sink_jar()
     setup_ranger_storm(upgrade_type=upgrade_type)
     service("ui", action="start")
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/8f2c5dd1/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_ui_server.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_ui_server.py 
b/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_ui_server.py
index 8978c04..0d45687 100644
--- a/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_ui_server.py
+++ b/ambari-server/src/test/python/stacks/2.1/STORM/test_storm_ui_server.py
@@ -49,6 +49,20 @@ class TestStormUiServer(TestStormBase):
 
     self.assert_configure_default()
 
+    self.assertResourceCalled('Link', 
'/usr/lib/storm/lib//ambari-metrics-storm-sink.jar',
+                              action=['delete'],
+                              )
+
+    self.assertResourceCalled('Link', 
'/usr/lib/storm/lib/ambari-metrics-storm-sink.jar',
+                              action=['delete'],
+                              )
+
+    self.assertResourceCalled('Execute', 'ambari-sudo.sh ln -s 
/usr/lib/storm/lib/ambari-metrics-storm-sink*.jar '
+                                         
'/usr/lib/storm/lib//ambari-metrics-storm-sink.jar',
+                              not_if=format("ls 
/usr/lib/storm/lib//ambari-metrics-storm-sink.jar"),
+                              only_if=format("ls 
/usr/lib/storm/lib/ambari-metrics-storm-sink*.jar")
+                              )
+
     self.assertResourceCalled('Execute', 'source /etc/storm/conf/storm-env.sh 
; export PATH=$JAVA_HOME/bin:$PATH ; storm ui > /var/log/storm/ui.out 2>&1',
         wait_for_finish = False,
         path = ['/usr/bin'],
@@ -109,6 +123,21 @@ class TestStormUiServer(TestStormBase):
 
     self.assert_configure_secured()
 
+
+    self.assertResourceCalled('Link', 
'/usr/lib/storm/lib//ambari-metrics-storm-sink.jar',
+                              action=['delete'],
+                              )
+
+    self.assertResourceCalled('Link', 
'/usr/lib/storm/lib/ambari-metrics-storm-sink.jar',
+                              action=['delete'],
+                              )
+
+    self.assertResourceCalled('Execute', 'ambari-sudo.sh ln -s 
/usr/lib/storm/lib/ambari-metrics-storm-sink*.jar '
+                                         
'/usr/lib/storm/lib//ambari-metrics-storm-sink.jar',
+                              not_if=format("ls 
/usr/lib/storm/lib//ambari-metrics-storm-sink.jar"),
+                              only_if=format("ls 
/usr/lib/storm/lib/ambari-metrics-storm-sink*.jar")
+                              )
+
     self.assertResourceCalled('Execute', 'source /etc/storm/conf/storm-env.sh 
; export PATH=$JAVA_HOME/bin:$PATH ; storm ui > /var/log/storm/ui.out 2>&1',
         wait_for_finish = False,
         path = ['/usr/bin'],

Reply via email to