SLIDER-525. Storm app package for windows does not report component status correctly
HBase Win package has the ability to provide custom ports for Thrift and Thrift2
diff --git a/app-packages/hbase-win/README.txt b/app-packages/hbase-win/README.txt
index a413e76..6389fb2 100644
--- a/app-packages/hbase-win/README.txt
+++ b/app-packages/hbase-win/README.txt
@@ -30,7 +30,7 @@
-Dpkg.name=<file name of app zip file> -Dpkg.src=<folder location where the pkg is available>
Example:
-mvn clean package -Phbase-app-package -Dpkg.version=0.98.5-hadoop2
+mvn clean package -Phbase-app-package-win -Dpkg.version=0.98.5-hadoop2
-Dpkg.name=hbase-0.98.5-hadoop2-bin.zip
-Dpkg.src=/Users/user1/Downloads
diff --git a/app-packages/hbase-win/package/scripts/hbase_service.py b/app-packages/hbase-win/package/scripts/hbase_service.py
index 9a8dc56..e269531 100644
--- a/app-packages/hbase-win/package/scripts/hbase_service.py
+++ b/app-packages/hbase-win/package/scripts/hbase_service.py
@@ -28,6 +28,8 @@
import params
pid_file = format("{pid_dir}/hbase-{hbase_user}-{name}.pid")
+ custom_port = None
+ custom_info_port = None
heap_size = params.master_heapsize
main_class = "org.apache.hadoop.hbase.master.HMaster"
if name == "regionserver":
@@ -36,12 +38,17 @@
if name == "rest":
heap_size = params.restserver_heapsize
main_class = "org.apache.hadoop.hbase.rest.RESTServer"
+ custom_port = params.rest_port
if name == "thrift":
heap_size = params.thriftserver_heapsize
main_class = "org.apache.hadoop.hbase.thrift.ThriftServer"
+ custom_port = params.thrift_port
+ custom_info_port = params.thrift_info_port
if name == "thrift2":
heap_size = params.thrift2server_heapsize
main_class = "org.apache.hadoop.hbase.thrift2.ThriftServer"
+ custom_port = params.thrift2_port
+ custom_info_port = params.thrift2_info_port
role_user = format("{hbase_user}-{name}")
@@ -49,6 +56,12 @@
process_cmd = format("{java64_home}\\bin\\java {rest_of_the_command} {main_class} {action}")
+ if custom_port:
+ process_cmd = format("{process_cmd} -p {custom_port}")
+
+ if custom_info_port:
+ process_cmd = format("{process_cmd} --infoport {custom_info_port}")
+
Execute(process_cmd,
logoutput=False,
wait_for_finish=False,
diff --git a/app-packages/hbase-win/package/scripts/params.py b/app-packages/hbase-win/package/scripts/params.py
index 4f55cd0..90d274c 100644
--- a/app-packages/hbase-win/package/scripts/params.py
+++ b/app-packages/hbase-win/package/scripts/params.py
@@ -42,11 +42,13 @@
hbase_hdfs_root_dir = config['configurations']['hbase-site']['hbase.rootdir']
"""
-Read various ports, unused as of now
+Read various ports
"""
-rest_port = config['configurations']['global']['hbase_rest_port']
-thrift_port = config['configurations']['global']['hbase_thrift_port']
-thrift2_port = config['configurations']['global']['hbase_thrift2_port']
+rest_port = default("configurations/global/hbase_rest_port", 1700)
+thrift_port = default("configurations/global/hbase_thrift_port", 9090)
+thrift2_port = default("configurations/global/hbase_thrift2_port", 9091)
+thrift_info_port = default("configurations/global/hbase_info_thrift_port", 9095)
+thrift2_info_port = default("configurations/global/hbase_info_thrift2_port", 9096)
"""
Compute or read various heap sizes
diff --git a/app-packages/hbase-win/resources-default.json b/app-packages/hbase-win/resources-default.json
index e451c51..93dc17c 100644
--- a/app-packages/hbase-win/resources-default.json
+++ b/app-packages/hbase-win/resources-default.json
@@ -10,7 +10,7 @@
"HBASE_MASTER": {
"yarn.role.priority": "1",
"yarn.component.instances": "1",
- "yarn.memory": "256"
+ "yarn.memory": "512"
},
"slider-appmaster": {
"yarn.memory": "1024"
@@ -18,22 +18,22 @@
"HBASE_REGIONSERVER": {
"yarn.role.priority": "2",
"yarn.component.instances": "1",
- "yarn.memory": "256"
+ "yarn.memory": "512"
},
"HBASE_REST": {
"yarn.role.priority": "3",
"yarn.component.instances": "1",
- "yarn.memory": "256"
+ "yarn.memory": "512"
},
"HBASE_THRIFT": {
"yarn.role.priority": "4",
- "yarn.component.instances": "0",
- "yarn.memory": "256"
+ "yarn.component.instances": "1",
+ "yarn.memory": "512"
},
"HBASE_THRIFT2": {
"yarn.role.priority": "5",
- "yarn.component.instances": "1",
- "yarn.memory": "256"
+ "yarn.component.instances": "0",
+ "yarn.memory": "512"
}
}
}
diff --git a/app-packages/storm-win/package/scripts/nimbus.py b/app-packages/storm-win/package/scripts/nimbus.py
index fafc97a..c7c3120 100644
--- a/app-packages/storm-win/package/scripts/nimbus.py
+++ b/app-packages/storm-win/package/scripts/nimbus.py
@@ -49,7 +49,7 @@
def status(self, env):
import status_params
env.set_params(status_params)
- #check_process_status(status_params.pid_nimbus)
+ check_process_status(status_params.pid_nimbus)
if __name__ == "__main__":
Nimbus().execute()
diff --git a/app-packages/storm-win/package/scripts/rest_api.py b/app-packages/storm-win/package/scripts/rest_api.py
index 6a09e4e..33d8924 100644
--- a/app-packages/storm-win/package/scripts/rest_api.py
+++ b/app-packages/storm-win/package/scripts/rest_api.py
@@ -51,7 +51,7 @@
def status(self, env):
import status_params
env.set_params(status_params)
- #check_process_status(status_params.pid_rest_api)
+ check_process_status(status_params.pid_rest_api)
if __name__ == "__main__":
StormRestApi().execute()
diff --git a/app-packages/storm-win/package/scripts/service.py b/app-packages/storm-win/package/scripts/service.py
index b17c636..aa7d339 100644
--- a/app-packages/storm-win/package/scripts/service.py
+++ b/app-packages/storm-win/package/scripts/service.py
@@ -20,9 +20,9 @@
from resource_management import *
-import time
import os
import sys
+import xml.etree.ElementTree as et
"""
Slider package uses jps as pgrep does not list the whole process start command
@@ -40,14 +40,32 @@
os.environ['STORM_LOG_DIR'] = params.log_dir
os.environ['STORM_HOME'] = params.app_root
os.environ['STORM_CONF_DIR'] = params.conf_dir
- cmd = format("{storm_bin} {name} > {log_dir}/{name}.out 2>&1")
- Execute(cmd,
- logoutput=False,
- wait_for_finish=False,
- pid_file = pid_file
+ generate_xml = format("{storm_bin} --service {name} > {log_dir}/{name}.cmd")
+
+ Execute(generate_xml,
+ logoutput=True,
+ wait_for_finish=True
)
+ tree = et.parse(format("{log_dir}/{name}.cmd"))
+ root = tree.getroot()
+ cmd_part = None
+ for child in root:
+ if child.tag == "arguments":
+ cmd_part = child.text
+
+ if cmd_part:
+ cmd = format("{java64_home}\\bin\\java {cmd_part}")
+
+ Execute(cmd,
+ logoutput=False,
+ wait_for_finish=False,
+ pid_file=pid_file
+ )
+ else:
+ Logger.warn("Valid command file did not get generated at " + format("{log_dir}/{name}.cmd"))
+
elif action == "stop":
pid = format("`cat {pid_file}` >/dev/null 2>&1")
Execute(format("kill {pid}")
diff --git a/app-packages/storm-win/package/scripts/supervisor.py b/app-packages/storm-win/package/scripts/supervisor.py
index eba9fa9..47c20c9 100644
--- a/app-packages/storm-win/package/scripts/supervisor.py
+++ b/app-packages/storm-win/package/scripts/supervisor.py
@@ -53,7 +53,7 @@
import status_params
env.set_params(status_params)
- #check_process_status(status_params.pid_supervisor)
+ check_process_status(status_params.pid_supervisor)
if __name__ == "__main__":
diff --git a/app-packages/storm-win/package/scripts/ui_server.py b/app-packages/storm-win/package/scripts/ui_server.py
index 0875b76..0fe7cd2 100644
--- a/app-packages/storm-win/package/scripts/ui_server.py
+++ b/app-packages/storm-win/package/scripts/ui_server.py
@@ -49,7 +49,7 @@
def status(self, env):
import status_params
env.set_params(status_params)
- #check_process_status(status_params.pid_ui)
+ check_process_status(status_params.pid_ui)
if __name__ == "__main__":
UiServer().execute()
diff --git a/slider-agent/src/main/python/agent/Controller.py b/slider-agent/src/main/python/agent/Controller.py
index fe7047d..387bc7e 100644
--- a/slider-agent/src/main/python/agent/Controller.py
+++ b/slider-agent/src/main/python/agent/Controller.py
@@ -295,7 +295,7 @@
if 'restartEnabled' in response:
restartEnabled = response['restartEnabled']
if restartEnabled:
- logger.info("Component auto-restart is enabled.")
+ logger.debug("Component auto-restart is enabled.")
if 'hasMappedComponents' in response.keys():
self.hasMappedComponents = response['hasMappedComponents'] != False