#!/usr/bin/perl
# Script to make sure the autosyncer has not got stranded locks
use Date::Manip;
&Date_Init();
# auto sync interval in seconds
$sync_interval=300;
# lock file
$lock_file="/tmp/p4review.lock";
$sendmailLoc = "/usr/lib/sendmail";
$p4="/usr/local/bin/p4";
# run p4 counters
$cmd="$p4 counters";
open(CMD, "$cmd|") || die ;
while(<CMD>) {
chop;
if(/change/) {
($ig,$ig,$head)=split;
}
if(/mailcounter/){
($ig,$ig,$mail)=split;
}
}
close(CMD);
# Get the time of the head change and the mail change
# subtract the two
# if greater than interval...kill the lock file since it must be stranded
#
$cmd="$p4 describe -s $head ";
open(CMD,"$cmd|") || die;
while(<CMD>) {
if(/pending/) {
# ignore pending events
exit;
}
if(/Change/) {
(@cdata)=split;
}
}
$head_time=$cdata[6];
$cmd="$p4 describe -s $mail | head -1";
open(CMD,"$cmd|") || die;
while(<CMD>) {
if(/pending/) {
# ignore pending events
exit;
}
if(Change) {
(@cdata)=split;
}
}
$mail_time=$cdata[6];
$date1=&ParseDate($mail_time);
$date2=&ParseDate($head_time);
$delta=&DateCalc($date2,$date1,\$err);
(@dspec)=split(':',$delta);
$numsecs=$dspec[3]*24 + $dsspec[4]* 60 + $dspec[5] * 60;
#print "$delta $numsecs\n";
if ($numsecs > (2* $sync_interval)) {
#print "Problem mail activated\n";
open(MAIL, "|$sendmailLoc -t");
print MAIL "To: sikand,roger,clifs\n",
"From: Cron Daemon (Cron Daemon)\n",
"Subject: Autosync un-wedge\n\n";
print MAIL "Trying to clear stranded lock file, /tmp/p4review.lock on plague\n\n";
print MAIL "Head change: $head at $head_time, last autosync event $mail at $mail_time\n";
if( -e "/tmp/p4review.lock") {
system("rm /tmp/p4review.lock");
} else {
print MAIL "\n\nCritical error: lock file does not exist, something else is wrong !!!!!\n";
print MAIL "Diagnostic: This jobs runs as user sikand on plague\n";
}
close(MAIL);
}
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #1 | 5093 | Hari Krishna Dara |
Populating perforce branch. I will be adding p4admin files to it. |
||
| //guest/perforce_software/cdsp4/release/2.2/Utils/autosync_check | |||||
| #1 | 2885 | Shiv Sikand |
Autosync updates and checking script */5 * * * * umask 02; /opt/cadroot/bin/autosync matrix_ca > /dev/null 2>&1 ; /usr/local/bin/autosync_check |
||