- Timestamp:
- May 3, 2010, 8:50:52 AM (16 years ago)
- Location:
- branches/simtest_nebulous_branches
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
Nebulous-Server/bin/nebdiskd (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/simtest_nebulous_branches
- Property svn:mergeinfo changed
-
branches/simtest_nebulous_branches/Nebulous-Server/bin/nebdiskd
r24617 r27840 67 67 $retry ||= $c->get_retry || 1; 68 68 69 # stuff to controll failures. 70 my %host_failure_counts = (); 71 my %host_removed = (); 72 my $failure_limit = 5; 73 74 75 69 76 #my $mounts = $c->get_mounts; 70 77 my $poll_interval = $c->get_poll_interval || 5; … … 90 97 # start up logging 91 98 my $conf = ' 92 log4perl.category.nebdiskd = WARN, Screen, SERVERLOGFILE , Mailer99 log4perl.category.nebdiskd = WARN, Screen, SERVERLOGFILE 93 100 94 101 log4perl.appender.Screen = Log::Log4perl::Appender::Screen … … 107 114 log4perl.filter.MatchWarn.AcceptOnMatch = off 108 115 109 log4perl.appender.Mailer = Log::Dispatch::Email::MailSend110 log4perl.appender.Mailer.to = ps-ipp-ops@ifa.hawaii.edu111 log4perl.appender.Mailer.subject = nebdiskd alert112 log4perl.appender.Mailer.buffered = 0113 log4perl.appender.Mailer.Filter= MatchWarn114 log4perl.appender.Mailer.layout = Log::Log4perl::Layout::PatternLayout115 log4perl.appender.Mailer.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} | %H | %p | %M - %m%n116 117 116 log4perl.appender.Limiter = Log::Log4perl::Appender::Limit 118 117 log4perl.appender.Limiter.appender = Mailer 119 118 log4perl.appender.Limiter.block_period = 300 120 119 '; 120 # I've removed this bit. 121 # log4perl.appender.Mailer = Log::Dispatch::Email::MailSend 122 # log4perl.appender.Mailer.to = ps-ipp-ops@ifa.hawaii.edu 123 # log4perl.appender.Mailer.subject = nebdiskd alert 124 # log4perl.appender.Mailer.buffered = 0 125 # log4perl.appender.Mailer.Filter= MatchWarn 126 # log4perl.appender.Mailer.layout = Log::Log4perl::Layout::PatternLayout 127 # log4perl.appender.Mailer.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} | %H | %p | %M - %m%n 128 129 121 130 Log::Log4perl::init(\$conf); 122 131 my $log = Log::Log4perl::get_logger("nebdiskd"); … … 133 142 $SIG{INT} = $SIG{TERM}; 134 143 $SIG{HUP} = sub { $c = read_rcfile($rcfile) }; 144 135 145 136 146 while (1) { … … 177 187 178 188 eval { 179 my $r_query = $dbh->prepare_cached("REPLACE INTO mountedvol SELECT *, ?, ? FROM volume WHERE mountpoint = ?"); 189 my $r_query = $dbh->prepare_cached("REPLACE INTO mountedvol SELECT vol_id,name,host,path,allocate,available,xattr,mountpoint, ?, ? FROM volume WHERE mountpoint = ?"); 190 # my $d_query = $dbh->prepare_cached("UPDATE mountedvol SET allocate = ?, available = ? WHERE mountpoint = ?"); 180 191 my $d_query = $dbh->prepare_cached("DELETE FROM mountedvol WHERE mountpoint = ?"); 181 192 … … 185 196 # there may be multiple vol_ids per mountpoint but we only need to 186 197 # check each mointpont once 187 my $query = $dbh->prepare_cached("SELECT DISTINCT mountpoint FROM volume WHERE available = 1");198 my $query = $dbh->prepare_cached("SELECT DISTINCT mountpoint FROM volume"); 188 199 $query->execute; 189 200 while (my $row = $query->fetchrow_hashref) { … … 200 211 # automounter and it fails to mount 201 212 my $tries = 0; 213 my $valid_mountpoint = 1; 214 unless (exists($host_failure_counts{$mountpoint})) { 215 $host_failure_counts{$mountpoint} = 0; 216 } 202 217 TEST: eval { 203 218 $tries++; 204 219 unless (is_mountpoint($mountpoint)) { 205 $log->warn("$mnt is not a valid mountpoint"); 220 unless(defined($host_removed{$mountpoint})) { 221 $log->warn("$mountpoint is not a valid mountpoint ($tries $host_failure_counts{$mountpoint})"); 222 } 223 $valid_mountpoint = 0; 206 224 } 207 225 }; 208 if ( $@) {226 if (!$valid_mountpoint) { 209 227 # try is_mountpoint() again if $retry > 1 210 228 if ($tries < $retry) { … … 212 230 goto TEST; 213 231 } 214 $log->warn($@); 215 $d_query->execute($mountpoint); 216 next; 217 } 232 $host_failure_counts{$mountpoint}++; 233 234 if (!(defined($host_removed{$mountpoint})) || !($host_removed{$mountpoint})) { 235 if (($host_failure_counts{$mountpoint} > $failure_limit)) { 236 $host_removed{$mountpoint} = 1; 237 $log->warn("Removing $mountpoint from the mountedvol table ($host_failure_counts{$mountpoint} > $failure_limit) No further warnings unless state changes."); 238 $d_query->execute($mountpoint); 239 } 240 else { 241 $log->warn("Mountpoint $mountpoint has had $host_failure_counts{$mountpoint} failures. Will remove after $failure_limit"); 242 } 243 } 244 next; 245 246 } 247 if ($host_failure_counts{$mountpoint} != 0) { 248 $host_removed{$mountpoint} = 0; 249 $log->warn("Mountpoint $mountpoint failures cleared ($host_failure_counts{$mountpoint})"); 250 $host_failure_counts{$mountpoint} = 0; 251 } 218 252 219 253 # fetch stats on the mounted device. this has to be done AFTER
Note:
See TracChangeset
for help on using the changeset viewer.
