26 lines
1.3 KiB
Diff
26 lines
1.3 KiB
Diff
|
--- ./patroni/postmaster.py 2018-09-26 13:58:59.000000000 +0200
|
||
|
+++ ./patroni/postmaster.py_ 2018-09-26 13:58:54.567944491 +0200
|
||
|
@@ -39,14 +39,15 @@
|
||
|
return {}
|
||
|
|
||
|
def _is_postmaster_process(self):
|
||
|
+ postmaster_pid = int(self._postmaster_pid.get('pid', 0))
|
||
|
try:
|
||
|
- start_time = int(self._postmaster_pid.get('start_time', 0))
|
||
|
- if start_time and abs(self.create_time() - start_time) > 3:
|
||
|
- logger.info('Process %s is not postmaster, too much difference between PID file start time %s and '
|
||
|
- 'process start time %s', self.pid, self.create_time(), start_time)
|
||
|
- return False
|
||
|
- except ValueError:
|
||
|
- logger.warning('Garbage start time value in pid file: %r', self._postmaster_pid.get('start_time'))
|
||
|
+ self.send_signal(0)
|
||
|
+ except psutil.NoSuchProcess:
|
||
|
+ logger.warning("Could not send stop signal to PostgreSQL")
|
||
|
+ return False
|
||
|
+ except psutil.AccessDenied as e:
|
||
|
+ logger.warning("Could not send stop signal to PostgreSQL (error: {0})".format(e))
|
||
|
+ return False
|
||
|
|
||
|
# Extra safety check. The process can't be ourselves, our parent or our direct child.
|
||
|
if self.pid == os.getpid() or self.pid == os.getppid() or self.ppid() == os.getpid():
|