ATLAS-1733: updated atlas_stop.py script to work in Windows environment

Signed-off-by: Madhan Neethiraj <mad...@apache.org>


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

Branch: refs/heads/feature-odf
Commit: ad398393f712fdbb689a33883182f65f8ef58ac7
Parents: 8fe110c
Author: Graham Wallis <graham_wal...@uk.ibm.com>
Authored: Tue Jul 11 09:26:45 2017 -0700
Committer: Madhan Neethiraj <mad...@apache.org>
Committed: Tue Jul 11 09:26:45 2017 -0700

----------------------------------------------------------------------
 distro/src/bin/atlas_stop.py | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/ad398393/distro/src/bin/atlas_stop.py
----------------------------------------------------------------------
diff --git a/distro/src/bin/atlas_stop.py b/distro/src/bin/atlas_stop.py
index a25d25a..66edd90 100755
--- a/distro/src/bin/atlas_stop.py
+++ b/distro/src/bin/atlas_stop.py
@@ -15,8 +15,18 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
+
+# Signal handling is OS-specific because there is no SIGKILL on Windows.
+
 import os
-from signal import SIGTERM, SIGKILL
+
+if os.name == "nt":
+  # Attempting to import SIGKILL on Windows would cause script to fail.
+  from signal import SIGTERM
+else:
+  from signal import SIGTERM, SIGKILL
+
 import sys
 import traceback
 import time
@@ -63,15 +73,22 @@ def main():
     # stop hbase
     if mc.is_hbase_local(confdir):
         mc.run_hbase_action(mc.hbaseBinDir(atlas_home), "stop", None, None, 
True)
-               
+
     if mc.exist_pid(pid):
         #after 30 seconds kill it
         time.sleep(30)
         try:
-            sys.stderr.write("did not stop gracefully after 30 seconds 
seconds: killing with SIGKILL\n")
-            os.kill(pid, SIGKILL)
+
+            if os.name == "nt":
+              # If running on Windows then timeout termination uses SIGTERM 
instead of SIGKILL.
+              sys.stderr.write("did not stop gracefully after 30 seconds: 
killing process using SIGTERM\n")
+              os.kill(pid, SIGTERM)
+            else:
+              sys.stderr.write("did not stop gracefully after 30 seconds: 
killing process using SIGKILL\n")
+              os.kill(pid, SIGKILL)
+
         except:
-            pass                       
+            pass
 
 if __name__ == '__main__':
     try:

Reply via email to