summaryrefslogtreecommitdiff
path: root/dev-db/percona-toolkit/files/percona-toolkit-3.0.10-slave-delay-fix.patch
blob: 8b8e17d7bfd7a66b034d4bd7c665cd41159056dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
https://bugs.launchpad.net/percona-toolkit/+bug/962330
https://bugs.launchpad.net/percona-toolkit/+bug/1095476

diff --git a/bin/pt-slave-delay b/bin/pt-slave-delay
index 750b733..fca04e4 100755
--- a/bin/pt-slave-delay
+++ b/bin/pt-slave-delay
@@ -4244,6 +4244,7 @@ sub main {
    my ( $TS, $FILE, $POS ) = ( 0, 1, 2 );
    my @positions;
    my $next_start = 0;
+   my $initial_delay = 0;
    $now    = time();
    my $end = $now + ( $o->get('run-time') || 0 );    # When we should exit
 
@@ -4258,6 +4259,10 @@ sub main {
       die "Slave SQL thread is not running";
    }
 
+   if (defined $status->{seconds_behind_master} and $status->{seconds_behind_master} > 0) {
+      $initial_delay = $status->{seconds_behind_master};
+   }
+
    my $master_dbh;
    if ( $master_dsn ) {
       PTDEBUG && _d('Connecting to master via DSN from cmd-line');
@@ -4383,7 +4388,7 @@ sub main {
             || $pos->[$POS] != $res->{position} )
          {
             push @positions,
-               [ $now, $res->{file}, $res->{position} ];
+               [ $now - ( $initial_delay || 0 ), $res->{file}, $res->{position} ];
          }
       }
       else {
@@ -4403,7 +4408,7 @@ sub main {
                 # That happened because for an already lagged slave, $now
                 # isn't the correct time, but is actually
                 # $now - $seconds_lagged.
-                 $now - ( $status->{seconds_behind_master} || 0 ),
+                 $now - ( $initial_delay || 0 ),
                  $status->{master_log_file},
                  $status->{read_master_log_pos}
             ];