Commit 45f3e9ec authored by unknown's avatar unknown

Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into  perch.ndb.mysql.com:/home/jonas/src/51-new

parents 558d0851 a5ac8675
#!/usr/bin/perl -w
use strict;
if(@ARGV < 1)
{
print STDERR "Usage:\n";
print STDERR "\tndb_error_reporter config.ini [username] [--fs]\n\n";
print STDERR "\tusername is a user that you can use to ssh into\n";
print STDERR "\t all of your nodes with.\n\n";
print STDERR "\t--fs means include the filesystems in the report\n";
print STDERR "\t WARNING: This may require a lot of disk space.\n";
print STDERR "\t Only use this option when asked to.\n\n";
exit(1);
}
my $config_file= $ARGV[0];
my $config_get_fs= 0;
my $config_username= '';
if(defined($ARGV[1]))
{
$config_get_fs= 1 if $ARGV[1] eq '--fs';
$config_username= $ARGV[1].'@' if $ARGV[1] ne '--fs';
$config_get_fs= (defined $ARGV[2] && $ARGV[2] eq '--fs')?1:$config_get_fs;
}
if(!stat($config_file))
{
print STDERR "Cannot open configuration file.\n\n";
exit(1);
}
my @nodes= split ' ',`ndb_config --config-file=$ARGV[0] --nodes --query=id --type=ndbd`;
push @nodes, split ' ',`ndb_config --config-file=$ARGV[0] --nodes --query=id --type=ndb_mgmd`;
sub config {
my $nodeid= shift;
my $query= shift;
my $res= `ndb_config --config-file=$ARGV[0] --id=$nodeid --query=$query`;
chomp $res;
$res;
}
my @t= localtime();
my $reportdir= sprintf('ndb_error_report_%u%02u%02u%02u%02u%02u',
($t[5]+1900),($t[4]+1),$t[3],$t[2],$t[1],$t[0]);
if(stat($reportdir) || stat($reportdir.'tar.bz2'))
{
print STDERR "It looks like another ndb_error_report process is running.\n";
print STDERR "If that is not the case, remove the ndb_error_report directory";
print STDERR " and run ndb_error_report again.\n\n";
exit(1);
}
mkdir($reportdir);
foreach my $node (@nodes)
{
print "\n\n Copying data from node $node".
(($config_get_fs)?" with filesystem":"").
"\n\n";
my $recurse= ($config_get_fs)?'-r ':'';
system 'scp '.$recurse.$config_username.config($node,'host').
':'.config($node,'datadir')."/ndb_".$node."* ".
"$reportdir/\n";
}
print "\n\n Copying configuration file...\n\n\t$config_file\n\n";
system "cp $config_file $reportdir/";
my $r = system 'bzip2 2>&1 > /dev/null < /dev/null';
my $outfile;
if($r==0)
{
$outfile= "$reportdir.tar.bz2";
system "tar c $reportdir|bzip2 > $outfile";
}
else
{
$outfile= "$reportdir.tar.gz";
system "tar c $reportdir|gzip > $outfile";
}
system "rm -rf $reportdir";
print "\n\nPlease attach $outfile to your error report\n\n";
...@@ -15107,7 +15107,7 @@ Dbdict::create_file_abort_complete(Signal* signal, SchemaOp* op) ...@@ -15107,7 +15107,7 @@ Dbdict::create_file_abort_complete(Signal* signal, SchemaOp* op)
} }
release_object(f_ptr.p->m_obj_ptr_i); release_object(f_ptr.p->m_obj_ptr_i);
c_file_pool.release(f_ptr); c_file_hash.release(f_ptr);
} }
execute(signal, op->m_callback, 0); execute(signal, op->m_callback, 0);
...@@ -15145,7 +15145,7 @@ Dbdict::drop_file_commit_complete(Signal* signal, SchemaOp* op) ...@@ -15145,7 +15145,7 @@ Dbdict::drop_file_commit_complete(Signal* signal, SchemaOp* op)
decrease_ref_count(fg_ptr.p->m_obj_ptr_i); decrease_ref_count(fg_ptr.p->m_obj_ptr_i);
release_object(f_ptr.p->m_obj_ptr_i); release_object(f_ptr.p->m_obj_ptr_i);
c_file_pool.release(f_ptr); c_file_hash.release(f_ptr);
execute(signal, op->m_callback, 0); execute(signal, op->m_callback, 0);
} }
...@@ -15310,6 +15310,7 @@ Dbdict::drop_fg_commit_start(Signal* signal, SchemaOp* op) ...@@ -15310,6 +15310,7 @@ Dbdict::drop_fg_commit_start(Signal* signal, SchemaOp* op)
tableEntry->m_tableState = SchemaFile::DROP_TABLE_COMMITTED; tableEntry->m_tableState = SchemaFile::DROP_TABLE_COMMITTED;
computeChecksum(xsf, objId / NDB_SF_PAGE_ENTRIES); computeChecksum(xsf, objId / NDB_SF_PAGE_ENTRIES);
release_object(filePtr.p->m_obj_ptr_i); release_object(filePtr.p->m_obj_ptr_i);
c_file_hash.remove(filePtr);
} }
list.release(); list.release();
} }
......
...@@ -4093,8 +4093,14 @@ Suma::get_buffer_ptr(Signal* signal, Uint32 buck, Uint32 gci, Uint32 sz) ...@@ -4093,8 +4093,14 @@ Suma::get_buffer_ptr(Signal* signal, Uint32 buck, Uint32 gci, Uint32 sz)
Bucket* bucket= c_buckets+buck; Bucket* bucket= c_buckets+buck;
Page_pos pos= bucket->m_buffer_head; Page_pos pos= bucket->m_buffer_head;
Buffer_page* page= (Buffer_page*)m_tup->c_page_pool.getPtr(pos.m_page_id); Buffer_page* page = 0;
Uint32* ptr= page->m_data + pos.m_page_pos; Uint32 *ptr = 0;
if (likely(pos.m_page_id != RNIL))
{
page= (Buffer_page*)m_tup->c_page_pool.getPtr(pos.m_page_id);
ptr= page->m_data + pos.m_page_pos;
}
const bool same_gci = (gci == pos.m_last_gci) && (!ERROR_INSERTED(13022)); const bool same_gci = (gci == pos.m_last_gci) && (!ERROR_INSERTED(13022));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment