~hingo/percona-toolkit/pqd-mongodb-24

« back to all changes in this revision

Viewing changes to bin/pt-upgrade

  • Committer: Daniel Nichter
  • Date: 2013-03-13 18:38:45 UTC
  • Revision ID: daniel@percona.com-20130313183845-qka3b8qx14yrqgw4
Fix lib/Cxn.pm that didn't merge correctly.  Fix t/lib/OptionParser.t test failure.  Update Cxn, OptionParser, and DSNParser in all tools.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2397
2397
               || '';
2398
2398
 
2399
2399
   my $self = {
2400
 
      dsn          => $dsn,
2401
 
      dbh          => $args{dbh},
2402
 
      dsn_name     => $dsn_name,
2403
 
      hostname     => '',
2404
 
      set          => $args{set},
2405
 
      NAME_lc      => defined($args{NAME_lc}) ? $args{NAME_lc} : 1,
2406
 
      dbh_set      => 0,
2407
 
      ask_pass     => $o->get('ask-pass'),
2408
 
      DSNParser    => $dp,
 
2400
      dsn             => $dsn,
 
2401
      dbh             => $args{dbh},
 
2402
      dsn_name        => $dsn_name,
 
2403
      hostname        => '',
 
2404
      set             => $args{set},
 
2405
      NAME_lc         => defined($args{NAME_lc}) ? $args{NAME_lc} : 1,
 
2406
      dbh_set         => 0,
 
2407
      ask_pass        => $o->get('ask-pass'),
 
2408
      DSNParser       => $dp,
2409
2409
      is_cluster_node => undef,
 
2410
      parent          => $args{parent},
2410
2411
   };
2411
2412
 
2412
2413
   return bless $self, $class;
2413
2414
}
2414
2415
 
2415
2416
sub connect {
2416
 
   my ( $self ) = @_;
 
2417
   my ( $self, %opts ) = @_;
2417
2418
   my $dsn = $self->{dsn};
2418
2419
   my $dp  = $self->{DSNParser};
2419
2420
 
2423
2424
         $dsn->{p} = OptionParser::prompt_noecho("Enter MySQL password: ");
2424
2425
         $self->{asked_for_pass} = 1;
2425
2426
      }
2426
 
      $dbh = $dp->get_dbh($dp->get_cxn_params($dsn),  { AutoCommit => 1 });
 
2427
      $dbh = $dp->get_dbh(
 
2428
         $dp->get_cxn_params($dsn),
 
2429
         {
 
2430
            AutoCommit => 1,
 
2431
            %opts,
 
2432
         },
 
2433
      );
2427
2434
   }
2428
 
   PTDEBUG && _d($dbh, 'Connected dbh to', $self->{name});
2429
2435
 
2430
 
   return $self->set_dbh($dbh);
 
2436
   $dbh = $self->set_dbh($dbh);
 
2437
   PTDEBUG && _d($dbh, 'Connected dbh to', $self->{hostname},$self->{dsn_name});
 
2438
   return $dbh;
2431
2439
}
2432
2440
 
2433
2441
sub set_dbh {
2450
2458
      $self->{hostname} = $hostname;
2451
2459
   }
2452
2460
 
 
2461
   if ( $self->{parent} ) {
 
2462
      PTDEBUG && _d($dbh, 'Setting InactiveDestroy=1 in parent');
 
2463
      $dbh->{InactiveDestroy} = 1;
 
2464
   }
 
2465
 
2453
2466
   if ( my $set = $self->{set}) {
2454
2467
      $set->($dbh);
2455
2468
   }
2459
2472
   return $dbh;
2460
2473
}
2461
2474
 
 
2475
sub lost_connection {
 
2476
   my ($self, $e) = @_;
 
2477
   return 0 unless $e;
 
2478
   return $e =~ m/MySQL server has gone away/
 
2479
       || $e =~ m/Lost connection to MySQL server/;
 
2480
}
 
2481
 
2462
2482
sub dbh {
2463
2483
   my ($self) = @_;
2464
2484
   return $self->{dbh};
2477
2497
 
2478
2498
sub DESTROY {
2479
2499
   my ($self) = @_;
2480
 
   if ( $self->{dbh}
2481
 
         && blessed($self->{dbh})
2482
 
         && $self->{dbh}->can("disconnect") ) {
2483
 
      PTDEBUG && _d('Disconnecting dbh', $self->{dbh}, $self->{name});
 
2500
 
 
2501
   PTDEBUG && _d('Destroying cxn');
 
2502
 
 
2503
   if ( $self->{parent} ) {
 
2504
      PTDEBUG && _d($self->{dbh}, 'Not disconnecting dbh in parent');
 
2505
   }
 
2506
   elsif ( $self->{dbh}
 
2507
           && blessed($self->{dbh})
 
2508
           && $self->{dbh}->can("disconnect") )
 
2509
   {
 
2510
      PTDEBUG && _d($self->{dbh}, 'Disconnecting dbh on', $self->{hostname},
 
2511
         $self->{dsn_name});
2484
2512
      $self->{dbh}->disconnect();
2485
2513
   }
 
2514
 
2486
2515
   return;
2487
2516
}
2488
2517