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: