replica_status.sh #13

  • //
  • guest/
  • perforce_software/
  • sdp/
  • main/
  • Server/
  • Unix/
  • p4/
  • common/
  • bin/
  • replica_status.sh
  • View
  • Commits
  • Open Download .zip Download (3 KB)
#!/bin/bash
#==============================================================================
# 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
#------------------------------------------------------------------------------
export SDP_INSTANCE=${SDP_INSTANCE:-Undefined}
export SDP_INSTANCE=${1:-$SDP_INSTANCE}

if [[ "$SDP_INSTANCE" == Undefined ]]; then
   echo "Instance parameter not supplied."
   echo "You must supply the Perforce instance as a parameter to this script."
   exit 1
fi

declare ErrorText=""
declare -i ExitCode=0
declare Cmd=

# shellcheck disable=SC1091
source /p4/common/bin/p4_vars "$SDP_INSTANCE"
# shellcheck disable=SC1091
source /p4/common/bin/backup_functions.sh

LOGFILE="$LOGS/replica_status.log"

rotate_log_file "$LOGFILE"

"$P4CBIN/p4login" >> "$LOGFILE" 2>&1

P4="$P4BIN -p ${P4PORT} -u $P4USER"

echo -e "\\nMetadata replication check." > "$LOGFILE"

# shellcheck disable=SC2072
if [[ "$P4D_VERSION" > "2021.1" ]]; then
   Cmd="$P4 -s pull -ljv"
else
   Cmd="$P4 -s pull -lj"
fi

echo -e "$Cmd" >> "$LOGFILE" 2>&1
$Cmd >> "$LOGFILE" 2>&1

if ( grep -q "Connection refused" "$LOGFILE" ); then
   ErrorText="ERROR - The replica is offline!"
   echo -e "\\n$ErrorText\\n" >> "$LOGFILE"
   ExitCode=1
fi

if ( grep -q "\-1" "$LOGFILE" ); then
   ErrorText="ERROR - The replica is out of sync!"
   echo -e "\\n$ErrorText\\n" >> "$LOGFILE"
   ExitCode=1
fi

if ( grep -qi "passw" "$LOGFILE" ); then
   ErrorText="ERROR - The admin user is not logged in!"
   echo -e "\\n$ErrorText\\n" >> "$LOGFILE"
   ExitCode=1
fi

if [[ -r "$P4ROOT/db.config" && -n "$SERVERID" ]]; then
   # shellcheck disable=SC2154
   copy_jd_table "db.config" "$P4ROOT"
   LbrReplication=$("$P4DBIN" -r "$JDTmpDir" -cshow | grep "${SERVERID}: lbr.replication" | cut -d ' ' -f 4)

   if [[ "$LbrReplication" == "readonly" ]]; then
      # shellcheck disable=SC2129
      echo -e "\\nArchive file replication check." >> "$LOGFILE"
      echo "$P4 -s pull -l" >> "$LOGFILE" 2>&1
      $P4 -s pull -l >> "$LOGFILE" 2>&1

      if ( grep -qE 'Transfer of librarian file .* failed' "$LOGFILE" ); then
         ErrorText="ERROR - Replica archive transfers have failed!"
         echo -e "\\n$ErrorText\\n" >> "$LOGFILE"
         ExitCode=1
      fi

      Cmd="$P4 -s pull -ls"
      echo "$Cmd" >> "$LOGFILE" 2>&1
      $Cmd >> "$LOGFILE" 2>&1
   else
      echo -e "\\nSkipping archive replication check for metadata-only replica." >> "$LOGFILE"
   fi
fi

mail_log_file "$ErrorText $HOSTNAME $P4SERVER Daily Replica Status."

exit "$ExitCode"

# Change User Description Committed
#14 31077 C. Thomas Tyler Released SDP 2024.2.31075 (2024/12/20).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#13 30297 C. Thomas Tyler Released SDP 2023.2.30295 (2024/05/08).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#12 29891 C. Thomas Tyler Released SDP 2023.1.29699 (2023/07/11).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#11 27822 C. Thomas Tyler Released SDP 2020.1.27820 (2021/06/19).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#10 25933 C. Thomas Tyler Released SDP 2019.2.25923 (2019/08/05).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#9 20767 C. Thomas Tyler Released SDP 2016.2.20755 (2016/09/29).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#8 19414 C. Thomas Tyler Released SDP/MultiArch/2016.1/19410 (2016/05/17).
#7 15856 C. Thomas Tyler Replaced the big license comment block with a shortened
form referencing the LICENSE file included with the SDP
package, and also by the URL for the license file in
The Workshop.
#6 15777 C. Thomas Tyler No functional changes.

Style Policing only on bash scripts only.

Normalized indentation and line breaks, removed offending tabs, and general whitespace
usage.
#5 13908 C. Thomas Tyler Pushing SDP 2015.1.13906.
#4 12171 Russell C. Jackson (Rusty) Merge in changes to remove the need for p4master_run.
#3 11707 Robert Cowham Refactored sending of mail to a common function.
Make the setting of "MAILFROM" work for Ubuntu (GNU Mailutils) as well as CentOS
#2 11570 Russell C. Jackson (Rusty) Brought in changes from Mark Foundry to add -S $MAILFROM to mail commands.

 Changed sync_replica.sh and weekly_sync_replica.sh to use $LOGFILE for consistency.

 Added mail command to both files as well.
#1 10148 C. Thomas Tyler Promoted the Perforce Server Deployment Package to The Workshop.