Merge mysql.com:/home/stewart/Documents/MySQL/4.1/main
into mysql.com:/home/stewart/Documents/MySQL/4.1/cleanup ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Auto merged ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: Auto merged
This commit is contained in:
commit
5da2f8439e
@ -3774,7 +3774,7 @@ Backup::checkFile(Signal* signal, BackupFilePtr filePtr)
|
|||||||
req->userReference = reference();
|
req->userReference = reference();
|
||||||
req->varIndex = 0;
|
req->varIndex = 0;
|
||||||
req->offset = tmp - c_startOfPages;
|
req->offset = tmp - c_startOfPages;
|
||||||
req->size = sz; // Avrunda uppot
|
req->size = sz; // Round up
|
||||||
|
|
||||||
sendSignal(NDBFS_REF, GSN_FSAPPENDREQ, signal,
|
sendSignal(NDBFS_REF, GSN_FSAPPENDREQ, signal,
|
||||||
FsAppendReq::SignalLength, JBA);
|
FsAppendReq::SignalLength, JBA);
|
||||||
|
@ -11018,7 +11018,11 @@ void Dbdih::initCommonData()
|
|||||||
|
|
||||||
cnoReplicas = 1;
|
cnoReplicas = 1;
|
||||||
ndb_mgm_get_int_parameter(p, CFG_DB_NO_REPLICAS, &cnoReplicas);
|
ndb_mgm_get_int_parameter(p, CFG_DB_NO_REPLICAS, &cnoReplicas);
|
||||||
cnoReplicas = cnoReplicas > 4 ? 4 : cnoReplicas;
|
if (cnoReplicas > 4)
|
||||||
|
{
|
||||||
|
progError(__LINE__, NDBD_EXIT_INVALID_CONFIG,
|
||||||
|
"Only up to four replicas are supported. Check NoOfReplicas.");
|
||||||
|
}
|
||||||
|
|
||||||
cgcpDelay = 2000;
|
cgcpDelay = 2000;
|
||||||
ndb_mgm_get_int_parameter(p, CFG_DB_GCP_INTERVAL, &cgcpDelay);
|
ndb_mgm_get_int_parameter(p, CFG_DB_GCP_INTERVAL, &cgcpDelay);
|
||||||
@ -11610,14 +11614,14 @@ void Dbdih::execCHECKNODEGROUPSREQ(Signal* signal)
|
|||||||
break;
|
break;
|
||||||
case CheckNodeGroups::GetNodeGroupMembers: {
|
case CheckNodeGroups::GetNodeGroupMembers: {
|
||||||
ok = true;
|
ok = true;
|
||||||
Uint32 ownNodeGoup =
|
Uint32 ownNodeGroup =
|
||||||
Sysfile::getNodeGroup(sd->nodeId, SYSFILE->nodeGroups);
|
Sysfile::getNodeGroup(sd->nodeId, SYSFILE->nodeGroups);
|
||||||
|
|
||||||
sd->output = ownNodeGoup;
|
sd->output = ownNodeGroup;
|
||||||
sd->mask.clear();
|
sd->mask.clear();
|
||||||
|
|
||||||
NodeGroupRecordPtr ngPtr;
|
NodeGroupRecordPtr ngPtr;
|
||||||
ngPtr.i = ownNodeGoup;
|
ngPtr.i = ownNodeGroup;
|
||||||
ptrAss(ngPtr, nodeGroupRecord);
|
ptrAss(ngPtr, nodeGroupRecord);
|
||||||
for (Uint32 j = 0; j < ngPtr.p->nodeCount; j++) {
|
for (Uint32 j = 0; j < ngPtr.p->nodeCount; j++) {
|
||||||
jam();
|
jam();
|
||||||
@ -11625,7 +11629,7 @@ void Dbdih::execCHECKNODEGROUPSREQ(Signal* signal)
|
|||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
for (int i = 0; i < MAX_NDB_NODES; i++) {
|
for (int i = 0; i < MAX_NDB_NODES; i++) {
|
||||||
if (ownNodeGoup ==
|
if (ownNodeGroup ==
|
||||||
Sysfile::getNodeGroup(i, SYSFILE->nodeGroups)) {
|
Sysfile::getNodeGroup(i, SYSFILE->nodeGroups)) {
|
||||||
sd->mask.set(i);
|
sd->mask.set(i);
|
||||||
}
|
}
|
||||||
|
@ -18458,60 +18458,54 @@ void
|
|||||||
Dblqh::execCREATE_TRIG_REQ(Signal* signal)
|
Dblqh::execCREATE_TRIG_REQ(Signal* signal)
|
||||||
{
|
{
|
||||||
jamEntry();
|
jamEntry();
|
||||||
NodeId myNodeId = getOwnNodeId();
|
|
||||||
BlockReference tupref = calcTupBlockRef(myNodeId);
|
|
||||||
|
|
||||||
sendSignal(tupref, GSN_CREATE_TRIG_REQ, signal, CreateTrigReq::SignalLength, JBB);
|
sendSignal(DBTUP_REF, GSN_CREATE_TRIG_REQ, signal,
|
||||||
|
CreateTrigReq::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Dblqh::execCREATE_TRIG_CONF(Signal* signal)
|
Dblqh::execCREATE_TRIG_CONF(Signal* signal)
|
||||||
{
|
{
|
||||||
jamEntry();
|
jamEntry();
|
||||||
NodeId myNodeId = getOwnNodeId();
|
|
||||||
BlockReference dictref = calcDictBlockRef(myNodeId);
|
|
||||||
|
|
||||||
sendSignal(dictref, GSN_CREATE_TRIG_CONF, signal, CreateTrigConf::SignalLength, JBB);
|
sendSignal(DBDICT_REF, GSN_CREATE_TRIG_CONF, signal,
|
||||||
|
CreateTrigConf::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Dblqh::execCREATE_TRIG_REF(Signal* signal)
|
Dblqh::execCREATE_TRIG_REF(Signal* signal)
|
||||||
{
|
{
|
||||||
jamEntry();
|
jamEntry();
|
||||||
NodeId myNodeId = getOwnNodeId();
|
|
||||||
BlockReference dictref = calcDictBlockRef(myNodeId);
|
|
||||||
|
|
||||||
sendSignal(dictref, GSN_CREATE_TRIG_REF, signal, CreateTrigRef::SignalLength, JBB);
|
sendSignal(DBDICT_REF, GSN_CREATE_TRIG_REF, signal,
|
||||||
|
CreateTrigRef::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Dblqh::execDROP_TRIG_REQ(Signal* signal)
|
Dblqh::execDROP_TRIG_REQ(Signal* signal)
|
||||||
{
|
{
|
||||||
jamEntry();
|
jamEntry();
|
||||||
NodeId myNodeId = getOwnNodeId();
|
|
||||||
BlockReference tupref = calcTupBlockRef(myNodeId);
|
|
||||||
|
|
||||||
sendSignal(tupref, GSN_DROP_TRIG_REQ, signal, DropTrigReq::SignalLength, JBB);
|
sendSignal(DBTUP_REF, GSN_DROP_TRIG_REQ, signal,
|
||||||
|
DropTrigReq::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Dblqh::execDROP_TRIG_CONF(Signal* signal)
|
Dblqh::execDROP_TRIG_CONF(Signal* signal)
|
||||||
{
|
{
|
||||||
jamEntry();
|
jamEntry();
|
||||||
NodeId myNodeId = getOwnNodeId();
|
|
||||||
BlockReference dictref = calcDictBlockRef(myNodeId);
|
|
||||||
|
|
||||||
sendSignal(dictref, GSN_DROP_TRIG_CONF, signal, DropTrigConf::SignalLength, JBB);
|
sendSignal(DBDICT_REF, GSN_DROP_TRIG_CONF, signal,
|
||||||
|
DropTrigConf::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Dblqh::execDROP_TRIG_REF(Signal* signal)
|
Dblqh::execDROP_TRIG_REF(Signal* signal)
|
||||||
{
|
{
|
||||||
jamEntry();
|
jamEntry();
|
||||||
NodeId myNodeId = getOwnNodeId();
|
|
||||||
BlockReference dictref = calcDictBlockRef(myNodeId);
|
|
||||||
|
|
||||||
sendSignal(dictref, GSN_DROP_TRIG_REF, signal, DropTrigRef::SignalLength, JBB);
|
sendSignal(DBDICT_REF, GSN_DROP_TRIG_REF, signal,
|
||||||
|
DropTrigRef::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint32 Dblqh::calcPageCheckSum(LogPageRecordPtr logP){
|
Uint32 Dblqh::calcPageCheckSum(LogPageRecordPtr logP){
|
||||||
|
88
ndb/tools/ndb_error_reporter
Executable file
88
ndb/tools/ndb_error_reporter
Executable file
@ -0,0 +1,88 @@
|
|||||||
|
#!/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";
|
@ -146,9 +146,9 @@ foreach(@{$tables})
|
|||||||
elsif($type =~ /varchar/ || $type =~ /varbinary/)
|
elsif($type =~ /varchar/ || $type =~ /varbinary/)
|
||||||
{
|
{
|
||||||
my $fixed= 1+$size;
|
my $fixed= 1+$size;
|
||||||
my @dynamic=$dbh->selectrow_array("select avg(length("
|
my @dynamic=$dbh->selectrow_array("select avg(length(`"
|
||||||
.$dbh->quote($name)
|
.$name.
|
||||||
.")) from `".$table.'`');
|
."`)) from `".$table.'`');
|
||||||
$dynamic[0]=0 if !$dynamic[0];
|
$dynamic[0]=0 if !$dynamic[0];
|
||||||
@realsize= ($fixed,$fixed,ceil($dynamic[0]));
|
@realsize= ($fixed,$fixed,ceil($dynamic[0]));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user