:: ============================================================================
:: Copyright and license info is available in the LICENSE file included with
:: the Server Deployment Package (SDP), and also available online:
:: https://swarm.workshop.perforce.com/projects/perforce-software-sdp/view/main/LICENSE
:: ----------------------------------------------------------------------------
@echo off
set current_script_dir=%~p0
set SCRIPT_NAME=live_checkpoint.bat
set SCRIPT_TASK=Live Checkpoint
call %current_script_dir%p4env.bat %1
if errorlevel 1 (
echo %SCRIPT_TASK% aborted - invalid config file found.
echo .
exit /B 1
)
if x%SDP_INSTANCE% == x (
echo %SCRIPT_TASK% aborted - no instance parameter specified.
echo .
exit /B 1
)
set ORIG_DIR=%CD%
set LOGFILE=checkpoint.log
set LOG=%LOGS_DIR%\%LOGFILE%
set JNL=
set CKP=
cd /d "%LOGS_DIR%"
:: Initialize log with a call to p4login.
call %SCRIPTS_DIR%\p4login > %LOG% 2>&1
date /t >> %LOG%
time /t >> %LOG%
if NOT ERRORLEVEL 0 goto ERROR
if exist %CHECKPOINTS_DIR%\ckp_running.txt (
echo "Last checkpoint process hasn't completed. Check the backup process." >> %LOG%
goto ERROR
) else (
echo "Checkpoint running." > %CHECKPOINTS_DIR%\ckp_running.txt
)
:: Check if we are in admin mode - things won't work otherwise - can't stop the service.
net session > NUL 2>&1
IF not %ERRORLEVEL% EQU 0 (
ECHO You must run %SCRIPT_NAME% with Administrator privileges.>> %LOG%
goto ERROR
)
echo Determining current journal counter with 'p4 counter journal'. >> %LOG%
for /F %%F in ('%SDP_INSTANCE_BIN_DIR%\p4 counter journal') do (set JNL=%%F)
if %JNL%x == x (
echo ERROR:>>%LOG%
echo ERROR: Could not determine journal counter; JNL not set!>>%LOG%
echo ERROR:>>%LOG%
goto ERROR
)
set /A CKP=JNL+1
if %CKP%x == x (
echo ERROR:>>%LOG%
echo ERROR: Could not determine next checkpoint number; CKP not set!>>%LOG%
echo ERROR:>>%LOG%
goto ERROR
)
echo Checkpoint/journal numbers are %CKP%/%JNL%.>> %LOG%
echo Start %SDP_INSTANCE_P4SERVICE_NAME% %SCRIPT_TASK%>> %LOG%
echo .>> %LOG%
echo %SDP_INSTANCE_BIN_DIR%\p4d -r %P4ROOT% -jc -Z %CHECKPOINTS_DIR%\%SDP_INSTANCE_P4SERVICE_NAME%>> %LOG%
%SDP_INSTANCE_BIN_DIR%\p4d -r "%P4ROOT%" -jc -Z %CHECKPOINTS_DIR%\%SDP_INSTANCE_P4SERVICE_NAME% >> %LOG% 2>&1
if NOT ERRORLEVEL 0 goto ERROR
echo Recreating Off-line db files from %CHECKPOINTS_DIR%\%SDP_INSTANCE_P4SERVICE_NAME%.ckp.%CKP%.gz.>> %LOG%
echo .>> %LOG%
echo del /f /q %OFFLINE_DB_DIR%\db.*>> %LOG%
del /f /q %OFFLINE_DB_DIR%\db.* >> %LOG% 2>&1
echo %SDP_INSTANCE_BIN_DIR%\p4d -r %OFFLINE_DB_DIR% -z -jr %CHECKPOINTS_DIR%\%SDP_INSTANCE_P4SERVICE_NAME%.ckp.%CKP%.gz>> %LOG%
%SDP_INSTANCE_BIN_DIR%\p4d -r %OFFLINE_DB_DIR% -z -jr %CHECKPOINTS_DIR%\%SDP_INSTANCE_P4SERVICE_NAME%.ckp.%CKP%.gz >> %LOG% 2>&1
if NOT ERRORLEVEL 0 goto ERROR
set ERRORTEXT=
goto SKIPERROR
:ERROR
echo ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR >> %LOG% 2>&1
echo %SCRIPT_TASK% Failed >> %LOG% 2>&1
echo %SCRIPT_TASK% Failed - please see %LOG%
echo ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR >> %LOG% 2>&1
set ERRORTEXT=%SCRIPT_TASK% failed!
:SKIPERROR
date /t >> %LOG%
time /t >> %LOG%
echo End %SDP_INSTANCE_P4SERVICE_NAME% %SCRIPT_TASK% >> %LOG%
echo Renaming server log files.>> %LOG%
echo . >> %LOG%
cd /d "%SCRIPTS_DIR%"
if "%ERRORTEXT%x" == "x" (
echo Calling %SCRIPTS_DIR%\remove_old_logs.bat %CKP% %JNL% %KEEPCKPS% %KEEPLOGS% >> %LOG%
call %SCRIPTS_DIR%\remove_old_logs.bat %CKP% %JNL% %KEEPCKPS% %KEEPLOGS% >> %LOG% 2>&1
) else (
echo Skipping old checkpoint and server log removal due to error.>>%LOG%
)
cd /d "%LOGS_DIR%"
if exist %LOGFILE%.%CKP% (
if exist %LOGFILE%.%CKP%.old (del /f /q %LOGFILE%.%CKP%.old >> %LOG% 2>&1)
move /y %LOGFILE%.%CKP% %LOGFILE%.%CKP%.old >> %LOG% 2>&1
)
echo Copying %LOG% to %LOGFILE%.%CKP% >> %LOG%
copy /y %LOG% %LOGFILE%.%CKP% > NUL
%SCRIPTS_DIR%\blat.exe -install %mailhost% %mailfrom%
%SCRIPTS_DIR%\blat.exe %LOG%.%CKP% -to %maillist% -subject "%ERRORTEXT% %COMPUTERNAME% %SDP_INSTANCE_P4SERVICE_NAME% %SCRIPT_TASK% log"
if "%ERRORTEXT%x" == "x" (
echo .
echo %SCRIPT_TASK% completed successfully! See %LOG%
)
:END
del %CHECKPOINTS_DIR%\ckp_running.txt
cd /d "%ORIG_DIR%"
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #3 | 23205 | Robert Cowham | Merged all changes from dev to test | ||
| #2 | 20726 | Robert Cowham | Catch up from dev | ||
| #1 | 18586 | Robert Cowham | Branching using cowhamr.sdp.dev | ||
| //guest/perforce_software/sdp/dev/Server/Windows/p4/common/bin/live_checkpoint.bat | |||||
| #6 | 22927 | Robert Cowham | Add lower case option for filename | ||
| #5 | 20536 | Robert Cowham | Remove .bat files now replaced by .ps1 equivalents | ||
| #4 | 16029 | C. Thomas Tyler |
Routine merge to dev from main using: p4 merge -b perforce_software-sdp-dev |
||
| #3 | 15701 | C. Thomas Tyler | Routine merge down using 'p4 merge -b perforce_software-sdp-dev'. | ||
| #2 | 15375 | adrian_waters | Routine merge-down from main->dev | ||
| #1 | 10961 | C. Thomas Tyler | Merge down from main. | ||
| //guest/perforce_software/sdp/main/Server/Windows/p4/common/bin/live_checkpoint.bat | |||||
| #1 | 10872 | C. Thomas Tyler |
Added Windows SDP into The Workshop: * Combined (back) into Unix SDP structure. * Avoided adding duplicate files p4verify.pl, p4review.(py,cfg). * Upgraded 'dist.sh' utility to produce both Unix and Windows packages (*.tgz and *.zip), adjusting line endings on text files to be appropriate for Windows prior to packaging. To Do: * Resolve duplication of [template_]configure_new_server.bat. * Merge test suites for Windows and Unix into a cohesive set. |
||