pt-heartbeat crashes with sleep argument error
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Toolkit moved to https://jira.percona.com/projects/PT |
Fix Released
|
Medium
|
Frank Cizmich |
Bug Description
The exception which kills the daemon:
Time::HiRes:
The error is triggered by this statement:
5279 sleep $next_interval - time;
This was noticed in v2.2.6 but the related function (make_interval_
Corresponding code segment:
5259 # #######
5260 # Monitor or update the heartbeat table.
5261 # #######
5262 my $end = $o->get('run-time') ? int(time + $o->get(
5263 PTDEBUG && _d($end ? ('Will exit at', ts($end)) : 'Running forever');
5264
5265 my $get_next_interval = make_interval_
5266
5267 while ( # Stop if...
5268 (!$end || int(time) < $end) # runtime exceeded, or
5269 && !-f $sentinel # sentinel file created
5270 ) {
5271 eval {
5272 my $next_interval = $get_next_
5273 if ( time >= $next_interval ) {
5274 do { $next_interval = $get_next_
5275 until $next_interval > time;
5276 PTDEBUG && _d("Missed last interval; next interval:",
5277 ts($next_
5278 }
5279 sleep $next_interval - time;
5280 PTDEBUG && _d('Woke up at', ts(time));
5281
The "make_interval_
5444 sub make_interval_iter {
5445 my ( $interval, $skew ) = @_;
5446 die "I need an interval argument" unless defined $interval;
5447 my ($s) = gettimeofday();
5448 my $start_s = $s + 1;
5449 my $i = 0;
5450 my $get_next_interval = sub {
5451 return $start_s + ($interval * $i++) + $skew;
5452 };
5453 return $get_next_interval;
5454 }
Related branches
- Daniel Nichter: Approve
-
Diff: 42 lines (+12/-6)1 file modifiedbin/pt-heartbeat (+12/-6)
summary: |
- pt-heartbeat crashes with error due to integer overflows + pt-heartbeat crashes with sleep argument error |
tags: | added: pt-heartbeat |
Changed in percona-toolkit: | |
status: | In Progress → Fix Committed |
Changed in percona-toolkit: | |
status: | Fix Committed → Fix Released |
Might be related to: /bugs.launchpad .net/percona- toolkit/ +bug/1406422
- https:/