::----------------------------------------------------------------------------- :: Copyright (c) Perforce Software, Inc., 2007-2014. All rights reserved :: :: Redistribution and use in source and binary forms, with or without :: modification, are permitted provided that the following conditions are met: :: :: 1 Redistributions of source code must retain the above copyright :: notice, this list of conditions and the following disclaimer. :: :: 2. Redistributions in binary form must reproduce the above copyright :: notice, this list of conditions and the following disclaimer in the :: documentation and/or other materials provided with the distribution. :: :: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS :: "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT :: LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS :: FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE :: SOFTWARE, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, :: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT :: LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, :: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON :: ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR :: TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF :: THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH :: DAMAGE. ::----------------------------------------------------------------------------- :: This script must run via task scheduler under a login that has access to the %REMOTE_DEPOTDATA_ROOT% :: share on the master server. That same login also has to have access to the replica server. @echo off set current_script_dir=%~p0 call %current_script_dir%p4env.bat %1 if errorlevel 1 ( echo Weekly Sync Replica aborted - invalid config file found. echo . exit /B 1 ) if x%SDP_INSTANCE% == x ( echo Weekly Sync Replica aborted - no instance specified. echo . exit /B 1 ) @echo off set LOG=%LOGS_DIR%\weekly_sync_replica.log echo Start Weekly Sync Replica > %LOG% 2>&1 date /t >> %LOG% 2>&1 time /t >> %LOG% 2>&1 :: 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 weekly_sync_replica.bat with Administrator privileges.>> %LOG% goto ERROR ) :: Need to login to the Master server (via P4TARGET) if not exist %ADMIN_PASS_FILE% ( set errmsg=Can't find admin password file %ADMIN_PASS_FILE% echo %errmsg% exit /b 1 ) %SDP_INSTANCE_BIN_DIR%\p4 -p %P4TARGET% -u %SDP_P4SUPERUSER% login -a < %ADMIN_PASS_FILE% if not %ERRORLEVEL% EQU 0 goto ERROR if NOT ERRORLEVEL 0 goto ERROR echo xcopy /D /I %REMOTE_CHECKPOINTS_DIR%\*.* %CHECKPOINTS_DIR%\*.* >> %LOG% 2>&1 xcopy /D /I %REMOTE_CHECKPOINTS_DIR%\*.* %CHECKPOINTS_DIR%\*.* >> %LOG% 2>&1 echo Determining current journal counter with 'p4 counter journal'.>> %LOG% for /F %%F in ('%SDP_INSTANCE_BIN_DIR%\p4 -p %P4TARGET% -u %SDP_P4SUPERUSER% 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 ) echo Journal counter %JNL% found.>> %LOG% set /a REMOVEJNL=%JNL%-%KEEPCKPS%-1 >> %LOG% 2>&1 echo attrib -r %CHECKPOINTS_DIR%\*.%REMOVEJNL%.* >> %LOG% 2>&1 attrib -r %CHECKPOINTS_DIR%\*.%REMOVEJNL%.* >> %LOG% 2>&1 echo del %CHECKPOINTS_DIR%\*.%REMOVEJNL%.* >> %LOG% 2>&1 del %CHECKPOINTS_DIR%\*.%REMOVEJNL%.* >> %LOG% 2>&1 echo del %OFFLINE_DB_DIR%\db.* >> %LOG% 2>&1 del %OFFLINE_DB_DIR%\db.* >> %LOG% 2>&1 REM Unset P4NAME to allow p4d 2012.2 to recover checkpoint set P4NAME= echo %SDP_INSTANCE_BIN_DIR%\p4d.exe -r %OFFLINE_DB_DIR% -jr -z %CHECKPOINTS_DIR%\p4_%REMOTE_SDP_INSTANCE%.ckp.%JNL%.gz >> %LOG% 2>&1 %SDP_INSTANCE_BIN_DIR%\p4d.exe -r %OFFLINE_DB_DIR% -jr -z %CHECKPOINTS_DIR%\p4_%REMOTE_SDP_INSTANCE%.ckp.%JNL%.gz >> %LOG% 2>&1 echo Stopping %SDP_INSTANCE_P4SERVICE_NAME% >> %LOG% 2>&1 net stop %SDP_INSTANCE_P4SERVICE_NAME% >> %LOG% 2>&1 del %LOGS_DIR%\log >> %LOG% 2>&1 del %LOGS_DIR%\journal >> %LOG% 2>&1 cd %P4ROOT% >> %LOG% 2>&1 del %P4ROOT%\save\db.* >> %LOG% 2>&1 echo Moving %OFFLINE_DB_DIR%\db.* to %P4ROOT% >> %LOG% 2>&1 move db.* %P4ROOT%\save >> %LOG% 2>&1 move %OFFLINE_DB_DIR%\db.* %P4ROOT% >> %LOG% 2>&1 echo Removing state files >> %LOG% 2>&1 del state >> %LOG% 2>&1 del rdb.lbr >> %LOG% 2>&1 echo Starting %SDP_INSTANCE_P4SERVICE_NAME% >> %LOG% 2>&1 net start %SDP_INSTANCE_P4SERVICE_NAME% >> %LOG% 2>&1 echo %SDP_INSTANCE_BIN_DIR%\p4d.exe -r %OFFLINE_DB_DIR% -jr -z %CHECKPOINTS_DIR%\p4_%REMOTE_SDP_INSTANCE%.ckp.%JNL%.gz >> %LOG% 2>&1 %SDP_INSTANCE_BIN_DIR%\p4d.exe -r %OFFLINE_DB_DIR% -jr -z %CHECKPOINTS_DIR%\p4_%REMOTE_SDP_INSTANCE%.ckp.%JNL%.gz >> %LOG% 2>&1 echo End Weekly Sync Replica >> %LOG% 2>&1 date /t >> %LOG% 2>&1 time /t >> %LOG% 2>&1 set ERRORTEXT= goto SKIP_ERROR :ERROR echo ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR >> %LOG% 2>&1 echo Weekly Sync Replica Failed >> %LOG% 2>&1 echo Weekly Sync Replica Failed - please see %LOG% echo . echo ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR >> %LOG% 2>&1 set ERRORTEXT=Weekly Sync Replica Failed! :SKIP_ERROR %SCRIPTS_DIR%\blat.exe -install %mailhost% %mailfrom% %SCRIPTS_DIR%\blat.exe %LOG% -to %maillist% -subject "%ERRORTEXT% %COMPUTERNAME% %SDP_INSTANCE_P4SERVICE_NAME% Weekly Sync Replica log" if "%ERRORTEXT%x" == "x" ( echo . echo Weekly Sync Replica completed successfully! See %LOG% ) :END
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 26659 | Robert Cowham |
Removing out-of-date files and ancient utilities. Updating SDP Guide for Windows with includes to various .ps1 scripts Add new sync-replica.ps1 and call it from sync_replica.bat |
||
#3 | 24601 | C. Thomas Tyler |
Eliminated unnecessary removal of live rdb.lbr file. The rdb.lbr from was being removed duing the scripts that reset a replica using offline databases. The rdb.lbr file is not regenerated from a checkpoint, and is not affected in the process of regneration from a checkpoint, and thus should not be removed in checkpoint-related processing. Removing it was functionally mostly harmless, as the rdb.lbr file gets regenerated and update as needed by user activity, and also by p4verify.sh. However, removing it unnecesarily caused unnecessary delay in getting archive files sync'd. The processing in switch_db_files() in backup_functions.sh (for the UNIX/Linux implementation) expects the rdb.lbr file to exist prior to the db swap. #review-23900 |
||
#2 | 16029 | C. Thomas Tyler |
Routine merge to dev from main using: p4 merge -b perforce_software-sdp-dev |
||
#1 | 10961 | C. Thomas Tyler | Merge down from main. | ||
//guest/perforce_software/sdp/main/Server/Windows/p4/common/bin/weekly_sync_replica.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. |