fix ulimit problem and wait for mysql daemon to come up

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@4613 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
lissav 2009-11-18 20:04:20 +00:00
parent 857c5197af
commit 8d6fe7c36f

View File

@ -332,6 +332,13 @@ if ($::INIT)
#
&restorexcatdb;
if ($::osname eq 'AIX')
{
xCAT::MsgUtils->message("I", "xCAT is now running on the MySQL database.\nYou should log out and back in, so that the new ulimit settings will take affect.");
} else {
xCAT::MsgUtils->message("I", "xCAT is now running on the MySQL database.");
}
} # end initialization
if ($::SETUPODBC)
@ -395,14 +402,24 @@ sub setulimits
my $limitsfile = "/etc/security/limits";
my $limitstmpfile = "/etc/security/limits.tmp";
my $limitsbackup = "/etc/security/limits.backup";
my $cmd =
"ulimit -m unlimited; ulimit -d unlimited;ulimit -f unlimited; ulimit -s unlimited;";
xCAT::Utils->runcmd($cmd, 0);
if ($::RUNCMD_RC != 0)
{
xCAT::MsgUtils->message("E", " $cmd failed.");
exit(1);
}
#my $cmd =
# "ulimit -n unlimited; ulimit -m unlimited; ulimit -d unlimited;ulimit -f unlimited; ulimit -s unlimited;";
#xCAT::Utils->runcmd($cmd, 0);
#if ($::RUNCMD_RC != 0)
#{
# xCAT::MsgUtils->message("E", " $cmd failed.");
# exit(1);
#}
#sleep 20;
#$cmd = "ulimit -a ";
#my @output=xCAT::Utils->runcmd($cmd, 0);
#if ($::RUNCMD_RC != 0)
#{
# xCAT::MsgUtils->message("E", " $cmd failed.");
# exit(1);
#}
# xCAT::MsgUtils->message("I", " $output[0]\n, $output[1]\n, $output[2]\n,$output[3]\n.");
# backup ulimits if not already backed up
if (!(-e ("$limitsbackup")))
@ -759,10 +776,12 @@ sub initmysqldb
# Create the MySQL data directory and initialize the grant tables
# if not already setup
my $cmd2 =
"ulimit -n unlimited; ulimit -m unlimited; ulimit -d unlimited;ulimit -f unlimited; ulimit -s unlimited;";
if ($::osname eq 'AIX')
{
$cmd =
$cmd = $cmd2;
$cmd .=
"$::installdir/scripts/mysql_install_db --user=mysql --basedir=$::installdir";
}
else
@ -799,7 +818,10 @@ sub mysqlstart
chomp $hostname;
#$cmd = "$::installdir/bin/mysqld_safe --user=mysql &"; #doesnot return
$cmd =
my $cmd2 =
"ulimit -n unlimited; ulimit -m unlimited; ulimit -d unlimited;ulimit -f unlimited; ulimit -s unlimited;";
$cmd = $cmd2;
$cmd .=
"$::installdir/bin/mysqld --user=mysql --basedir=$::installdir --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/$hostname.err --pid-file=/var/lib/mysql/$hostname.pid --socket=/tmp/mysql.sock --port=3306 &";
}
else
@ -820,13 +842,31 @@ sub mysqlstart
exit(1);
}
# make sure running
$cmd = "ps -ef | grep mysqld";
my $i;
for ($i = 0 ; $i < 12 ; $i++)
{
my @output = xCAT::Utils->runcmd($cmd, 0);
my $mysqlcheck = "--datadir"; # see if really running
if (grep(/$mysqlcheck/, @output))
{
sleep 10; # give a few extra seconds to be sure
return;
}
else
{
sleep 10; # wait for daemon
}
}
xCAT::MsgUtils->message("E",
" Could not start the mysql daemon, in time allocated ( 2minutes)");
exit(1);
}
#-----------------------------------------------------------------------------
=head3 mysqlreboot
#-----------------------------------------------------------------------------
=head3 mysqlreboot
@ -923,7 +963,10 @@ sub setupmysqlroot
# set root password in database
if ($::osname eq 'AIX')
{
$cmd = "$::installdir/bin/mysqladmin -u root password $::rootpassword";
my $cmd2 =
"ulimit -n unlimited; ulimit -m unlimited; ulimit -d unlimited;ulimit -f unlimited; ulimit -s unlimited;";
$cmd = $cmd2;
$cmd .= "$::installdir/bin/mysqladmin -u root password $::rootpassword";
}
else
{