def _get_master_port(self, datadir): ''' Obtain the master port from the pgconf file ''' logger.debug('_get_master_port') pgconf_dict = pgconf.readfile(os.path.join(datadir, 'postgresql.conf')) return pgconf_dict.int('port')
def _get_coordinator_port(self, datadir): ''' Obtain the coordinator port from the pgconf file ''' logger.debug('_get_coordinator_port') pgconf_dict = pgconf.readfile(os.path.join(datadir, 'postgresql.conf')) return pgconf_dict.int('port') or os.getenv('PGPORT')
def _get_master_port(self, datadir): """ Obtain the master port from the pgconf file """ logger.debug("_get_master_port") pgconf_dict = pgconf.readfile(os.path.join(datadir, "postgresql.conf")) return pgconf_dict.int("port") or os.getenv("PGPORT")
def __init__(self, masterDataDir, readFromMasterCatalog, timeout=None, retries=None): """ masterDataDir: if None then we try to find it from the system environment readFromMasterCatalog: if True then we will connect to the master in utility mode and fetch some more data from there (like collation settings) """ if masterDataDir is None: self.__masterDataDir = gp.get_masterdatadir() else: self.__masterDataDir = masterDataDir logger.debug("Obtaining master's port from master data directory") pgconf_dict = pgconf.readfile(self.__masterDataDir + "/postgresql.conf") self.__masterPort = pgconf_dict.int('port') logger.debug("Read from postgresql.conf port=%s" % self.__masterPort) self.__masterMaxConnections = pgconf_dict.int('max_connections') logger.debug("Read from postgresql.conf max_connections=%s" % self.__masterMaxConnections) self.__gpHome = gp.get_gphome() self.__gpVersion = gp.GpVersion.local( 'local GP software version check', self.__gpHome) logger.info("local Greenplum Version: '%s'" % self.__gpVersion) # read collation settings from master if readFromMasterCatalog: dbUrl = dbconn.DbURL(port=self.__masterPort, dbname='template1', timeout=timeout, retries=retries) conn = dbconn.connect(dbUrl, utility=True) (self.__lcCollate, self.__lcMonetary, self.__lcNumeric) = catalog.getCollationSettings(conn) # MPP-13807, read/show the master's database version too self.__pgVersion = dbconn.execSQLForSingletonRow( conn, "select version();")[0] logger.info("master Greenplum Version: '%s'" % self.__pgVersion) conn.close() checkNotNone("lc_collate", self.__lcCollate) checkNotNone("lc_monetary", self.__lcMonetary) checkNotNone("lc_numeric", self.__lcNumeric) else: self.__lcCollate = None self.__lcMonetary = None self.__lcNumeric = None self.__pgVersion = None
def __init__(self, coordinatorDataDir, readFromCoordinatorCatalog, timeout=None, retries=None, verbose=True): """ coordinatorDataDir: if None then we try to find it from the system environment readFromCoordinatorCatalog: if True then we will connect to the coordinator in utility mode and fetch some more data from there (like collation settings) """ if coordinatorDataDir is None: self.__coordinatorDataDir = gp.get_coordinatordatadir() else: self.__coordinatorDataDir = coordinatorDataDir logger.debug( "Obtaining coordinator's port from coordinator data directory") pgconf_dict = pgconf.readfile(self.__coordinatorDataDir + "/postgresql.conf") self.__coordinatorPort = pgconf_dict.int('port') logger.debug("Read from postgresql.conf port=%s" % self.__coordinatorPort) self.__coordinatorMaxConnections = pgconf_dict.int('max_connections') logger.debug("Read from postgresql.conf max_connections=%s" % self.__coordinatorMaxConnections) self.__gpHome = gp.get_gphome() self.__gpVersion = gp.GpVersion.local( 'local GP software version check', self.__gpHome) if verbose: logger.info("local Greenplum Version: '%s'" % self.__gpVersion) # read collation settings from coordinator if readFromCoordinatorCatalog: dbUrl = dbconn.DbURL(port=self.__coordinatorPort, dbname='template1', timeout=timeout, retries=retries) conn = dbconn.connect(dbUrl, utility=True) # MPP-13807, read/show the coordinator's database version too self.__pgVersion = dbconn.queryRow(conn, "select version();")[0] logger.info("coordinator Greenplum Version: '%s'" % self.__pgVersion) conn.close() else: self.__pgVersion = None
def __init__(self, masterDataDir, readFromMasterCatalog, timeout=None, retries=None, verbose=True): """ masterDataDir: if None then we try to find it from the system environment readFromMasterCatalog: if True then we will connect to the master in utility mode and fetch some more data from there (like collation settings) """ if masterDataDir is None: self.__masterDataDir = gp.get_masterdatadir() else: self.__masterDataDir = masterDataDir logger.debug("Obtaining master's port from master data directory") pgconf_dict = pgconf.readfile(self.__masterDataDir + "/postgresql.conf") self.__masterPort = pgconf_dict.int('port') logger.debug("Read from postgresql.conf port=%s" % self.__masterPort) self.__masterMaxConnections = pgconf_dict.int('max_connections') logger.debug("Read from postgresql.conf max_connections=%s" % self.__masterMaxConnections) self.__gpHome = gp.get_gphome() self.__gpVersion = gp.GpVersion.local('local GP software version check',self.__gpHome) if verbose: logger.info("local Greenplum Version: '%s'" % self.__gpVersion) # read collation settings from master if readFromMasterCatalog: dbUrl = dbconn.DbURL(port=self.__masterPort, dbname='template1', timeout=timeout, retries=retries) conn = dbconn.connect(dbUrl, utility=True) (self.__lcCollate, self.__lcMonetary, self.__lcNumeric) = catalog.getCollationSettings(conn) # MPP-13807, read/show the master's database version too self.__pgVersion = dbconn.execSQLForSingletonRow(conn, "select version();")[0] logger.info("master Greenplum Version: '%s'" % self.__pgVersion) conn.close() checkNotNone("lc_collate", self.__lcCollate) checkNotNone("lc_monetary", self.__lcMonetary) checkNotNone("lc_numeric", self.__lcNumeric) else: self.__lcCollate = None self.__lcMonetary = None self.__lcNumeric = None self.__pgVersion = None
def recovery_startup(datadir): """ investigate a db that may still be running """ pid = read_postmaster_pidfile(datadir) if check_pid(pid): info_str = "found postmaster with pid: %d for datadir: %s still running" % ( pid, datadir) logger.info(info_str) logger.info("attempting to shutdown db with datadir: %s" % datadir) cmd = SegmentStop('db shutdown', datadir, mode='fast') cmd.run() if check_pid(pid): info_str = "unable to stop postmaster with pid: %d for datadir: %s still running" % ( pid, datadir) logger.info(info_str) return info_str else: logger.info("shutdown of db successful with datadir: %s" % datadir) return None else: #if we get this far it means we don't have a pid and need to do some cleanup. pgconf_dict = pgconf.readfile(datadir + "/postgresql.conf") port = pgconf_dict.int('port') lockfile = "/tmp/.s.PGSQL.%s" % port tmpfile_exists = os.path.exists(lockfile) logger.info("No db instance process, entering recovery startup mode") if tmpfile_exists: logger.info("Clearing db instance lock files") os.remove(lockfile) postmaster_pid_file = "%s/postmaster.pid" % datadir if os.path.exists(postmaster_pid_file): logger.info("Clearing db instance pid file") os.remove("%s/postmaster.pid" % datadir) return None
def recovery_startup(datadir): """ investigate a db that may still be running """ pid=read_postmaster_pidfile(datadir) if check_pid(pid): info_str="found postmaster with pid: %d for datadir: %s still running" % (pid,datadir) logger.info(info_str) logger.info("attempting to shutdown db with datadir: %s" % datadir ) cmd=SegmentStop('db shutdown' , datadir,mode='fast') cmd.run() if check_pid(pid): info_str="unable to stop postmaster with pid: %d for datadir: %s still running" % (pid,datadir) logger.info(info_str) return info_str else: logger.info("shutdown of db successful with datadir: %s" % datadir) return None else: #if we get this far it means we don't have a pid and need to do some cleanup. pgconf_dict = pgconf.readfile(datadir + "/postgresql.conf") port = pgconf_dict.int('port') lockfile="/tmp/.s.PGSQL.%s" % port tmpfile_exists = os.path.exists(lockfile) logger.info("No db instance process, entering recovery startup mode") if tmpfile_exists: logger.info("Clearing db instance lock files") os.remove(lockfile) postmaster_pid_file = "%s/postmaster.pid" % datadir if os.path.exists(postmaster_pid_file): logger.info("Clearing db instance pid file") os.remove("%s/postmaster.pid" % datadir) return None
def get_master_port(self): pgconf_dict = pgconf.readfile(self.master_datadir + "/postgresql.conf") return pgconf_dict.int('port')
def get_masterport(datadir): return pgconf.readfile(os.path.join(datadir, 'postgresql.conf')).int('port')