in automation/tinc/main/ext/qautils/gppylib/operations/gpMigratorUtil.py [0:0]
def Startup(self, env, utility=False, upgrade=False):
'''
Starts up the specified database
'''
if self.dbup:
raise UpgradeError('database already started')
self.dbup = [env, utility]
isu = ""
if utility:
isu = " in utility mode"
elif upgrade:
isu = " in upgrade mode"
if (env == self.oldenv):
logger.info('Starting old Greenplum postmaster%s' % isu)
else:
logger.info('Starting new Greenplum postmaster%s' % isu)
try:
cmd = "gpstart -a"
if utility:
cmd = cmd +' -m'
env['GPSTART_INTERNAL_MASTER_ONLY'] = '1'
if upgrade: cmd = cmd +' -U upgrade'
cmd += ' -l %s' % self.logdir
locked = os.path.join(env['MASTER_DATA_DIRECTORY'],
'pg_hba.conf'+LOCKEXT)
try:
if os.path.exists(locked):
env['PGUSER'] = MIGRATIONUSER
logger.debug("lockfile: '%s' exists" % locked)
else:
logger.debug("lockfile: '%s' does not exist" % locked)
logger.debug("Starting cluster with env = %s" % str(env))
pid = subprocess.Popen(cmd, preexec_fn=os.setpgrp,
env=env, shell=True,
stdout=self.logfile,
stderr=self.logfile,
close_fds=True)
finally:
if os.path.exists(locked):
del env['PGUSER']
# Ignore interrupt requests until startup is done
error = None
retcode = None
while retcode == None:
try:
retcode = pid.wait();
except KeyboardInterrupt, e:
if not self.interrupted:
logger.fatal('***************************************')
logger.fatal('SIGINT-: Upgrade Aborted')
logger.fatal('***************************************')
logger.info( 'Performing clean abort')
self.interrupted = True
error = e
else:
logger.info( 'SIGINT-: Still processing shutdown')
if retcode < 0:
raise UpgradeError("Startup terminated by signal");
today = date.today().strftime('%Y%m%d')
logname = os.path.join(self.logdir, 'gpstart_%s.log' % today)
if retcode == 1:
logger.warn('***************************************')
logger.warn('Warnings generated starting cluster')
logger.warn('Check %s for detailed warnings' % logname)
logger.warn('***************************************')
if retcode > 1:
logger.fatal('***************************************')
logger.fatal('Startup failed with error code %d' % retcode)
logger.fatal('Check %s for detailed warnings' % logname)
logger.fatal('***************************************')
raise UpgradeError('Startup failed')
# If we recieved an interrupt, resignal it now that the startup is done
if error:
raise error
except OSError, e:
logger.fatal(str(e))
raise UpgradeError('Startup failed')
self.CheckUp();