blob: 25315654bb8263bbd8f6ea09c980ecd5c074c3c3 [file] [log] [blame]
@REM ------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ------------------------------------------------------------
@echo off
setlocal
goto opts
:usage
echo.
echo Usage: %~nx0 [-f[orce]]:
echo.
echo -f[orce] : Forcibly terminates any running ${PRODUCT} processes (after shutting down cluster, if running)
exit /B 0
:kill
echo Killing %1...
TASKKILL /F /PID %1
echo %1...killed
exit /B 0
:opts
if "%1" == "" goto postopts
if "%1" == "-f" (
set force=1
) else if "%1" == "-force" (
set force=1
) else if "%1" == "-usage" (
goto :usage
) else if "%1" == "-help" (
goto :usage
) else if "%1" == "--help" (
goto :usage
) else if "%1" == "--usage" (
goto :usage
) else (
echo ERROR: unknown argument '%1'
call :usage
exit /B 1
)
shift
goto opts
:postopts
set DIRNAME=%~dp0
pushd %DIRNAME%\..
set CLUSTERDIR=%cd%
cd %CLUSTERDIR%\..\..
set INSTALLDIR=%cd%
set tempfile="%TEMP%\stop-sample-cluster-%random%"
call "%INSTALLDIR%\bin\${HELPER_COMMAND}" get_cluster_state -quiet
if %ERRORLEVEL% EQU 1 (
echo WARNING: sample cluster does not appear to be running
goto :post_shutdown
)
call "%INSTALLDIR%\bin\${HELPER_COMMAND}" shutdown_cluster_all
echo INFO: Waiting for cluster to shutdown...
set tries=0
:wait_loop
set /A tries=%tries% + 1
if "%tries%" == "60" goto :timed_out
wmic process where ^
"name='java.exe' and CommandLine like '%%org.codehaus.mojo.appassembler.booter.AppassemblerBooter%%' and (CommandLine like '%%app.name=\"%%[cn]c\"%%' or CommandLine like '%%app.name=\"%%ncservice\"%%')" ^
GET processid >%tempfile% 2> nul
set found=
for /F "skip=1" %%P in ('type %tempfile%') DO set found=1
if "%found%" == "1" (
call "%INSTALLDIR%\bin\${HELPER_COMMAND}" sleep -timeout 1 -quiet
goto :wait_loop
)
goto :post_shutdown
:timed_out
echo timed out!
:post_shutdown
echo.
wmic process where ^
"name='java.exe' and CommandLine like '%%org.codehaus.mojo.appassembler.booter.AppassemblerBooter%%' and (CommandLine like '%%app.name=\"%%[cn]c\"%%' or CommandLine like '%%app.name=\"%%ncservice\"%%')" ^
GET processid > %tempfile% 2> nul
set found=
for /F "skip=1" %%P in ('type %tempfile%') DO set found=1
if "%found%" == "1" (
if "%force%" == "1" (
echo WARNING: ${PRODUCT} processes remain after cluster shutdown; -f[orce] specified, forcibly terminating ${PRODUCT} processes:
for /F "skip=1" %%P in ('type %tempfile%') DO call :kill %%P
) else (
echo WARNING: ${PRODUCT} processes remain after cluster shutdown; re-run with -f[orce] to forcibly terminate all ${PRODUCT} processes:
for /F "skip=1" %%P in ('type %tempfile%') DO @echo - %%P
)
)
del %tempfile%
goto :END
:ERROR
popd
exit /B 1
:END
popd