Committer: ailyin
LJSUP-7287 (verify DB schema in moveucluster)U trunk/bin/worker/moveucluster U trunk/cgi-bin/LJ/UserManage.pm U trunk/cgi-bin/LJ/Worker/UserManage/CheckTables.pm
Modified: trunk/bin/worker/moveucluster =================================================================== --- trunk/bin/worker/moveucluster 2010-11-08 11:49:00 UTC (rev 9677) +++ trunk/bin/worker/moveucluster 2010-11-09 03:56:59 UTC (rev 9678) @@ -9,10 +9,34 @@ package LJ::NewWorker::TheSchwartz::MoveUCluster; use base 'LJ::NewWorker::TheSchwartz'; + +use Getopt::Long; + sub capabilities { return LJ::UserManage->capabilities; } +my $check_tables; + +sub options { + my ($self) = @_; + return ( + 'check-tables|c' => \$check_tables, + $self->SUPER::options(), + ); +} + +sub work_as_script { + return unless $check_tables; + + foreach my $clust (@LJ::CLUSTERS) { + warn "checking tables on cluster $clust...\n"; + LJ::UserManage->check_tables($clust); + } + + return 1; +} + __PACKAGE__->start; 1; Modified: trunk/cgi-bin/LJ/UserManage.pm =================================================================== --- trunk/cgi-bin/LJ/UserManage.pm 2010-11-08 11:49:00 UTC (rev 9677) +++ trunk/cgi-bin/LJ/UserManage.pm 2010-11-09 03:56:59 UTC (rev 9678) @@ -366,5 +366,25 @@ ? 'AND journalid NOT IN (' . join(', ', @protected_journals_ids) . ')' : ''; } + +sub check_tables { + my ($class, $clust) = @_; + + my %table_info = ( + LJ::UserManage::TABLES_INFO(), + LJ::UserManageInt::TABLES_INFO(), + ); + + my $dbh = LJ::get_cluster_master($clust); $dbh->{'RaiseError'} = 1; + + my @tables = @{$dbh->selectcol_arrayref('SHOW TABLES')}; + my @unspecified_tables = grep { !exists($table_info{$_}) } @tables; + + if (@unspecified_tables) { + my $message = "I don't know how to deal with the following tables:\n" . + join("\n", map { " $_" } @unspecified_tables) . "\n"; + die $message; + } +} 1; Modified: trunk/cgi-bin/LJ/Worker/UserManage/CheckTables.pm =================================================================== --- trunk/cgi-bin/LJ/Worker/UserManage/CheckTables.pm 2010-11-08 11:49:00 UTC (rev 9677) +++ trunk/cgi-bin/LJ/Worker/UserManage/CheckTables.pm 2010-11-09 03:56:59 UTC (rev 9678) @@ -28,18 +28,8 @@ return $class->finished($job, $callback); } - my $dbh = LJ::get_cluster_master($clust); $dbh->{'RaiseError'} = 1; - - my @tables = @{$dbh->selectcol_arrayref('SHOW TABLES')}; - my @unspecified_tables = grep { !exists($table_info{$_}) } @tables; - - if (@unspecified_tables) { - my $message = "I don't know how to deal with the following tables:\n" . - join("\n", map { " $_" } @unspecified_tables) . "\n"; - die $message; - } else { - return $class->finished($job, $callback); - } + LJ::UserManage->check_tables($clust); + return $class->finished($job, $callback); } 1;