@@ -106,7 +106,9 @@ def process_running(pid):
106
106
for name , apid , _ in lines :
107
107
name = name .decode ('utf-8' )
108
108
if name == EXEC_MYSQLD and pid == int (apid ):
109
+ LOGGER .debug ("Process %d is running." , pid )
109
110
return True
111
+ LOGGER .debug ("Process %d not running." , pid )
110
112
return False
111
113
112
114
# We are on a UNIX-like system
@@ -328,12 +330,11 @@ def _start_server(self):
328
330
except (OSError , ValueError ) as err :
329
331
raise MySQLServerError (err )
330
332
331
- def _stop_server (self ):
333
+ def _stop_server (self , pid = None ):
332
334
"""Stop the MySQL server"""
333
- if not self ._process :
334
- return False
335
+ pid = pid if pid is not None else get_pid (self ._pid_file )
335
336
try :
336
- process_terminate (self . _process . pid )
337
+ process_terminate (pid )
337
338
except (OSError , ValueError ) as err :
338
339
raise MySQLServerError (err )
339
340
@@ -646,6 +647,7 @@ def update_config(self, **kwargs):
646
647
sys .exit (1 )
647
648
648
649
def start (self , ** kwargs ):
650
+ LOGGER .debug ("Attempting to start MySQL server %s" , self .name )
649
651
if self .check_running ():
650
652
LOGGER .error ("MySQL server '{name}' already running" .format (
651
653
name = self .name ))
@@ -691,23 +693,31 @@ def stop(self):
691
693
"""
692
694
pid = get_pid (self ._pid_file )
693
695
if not pid :
696
+ LOGGER .error ("Process id not found, unable to stop MySQL server." )
694
697
return
695
- try :
696
- if not self ._stop_server ():
697
- process_terminate (pid )
698
- except (MySQLServerError , OSError ) as err :
699
- if self ._debug is True :
700
- raise
701
- LOGGER .error ("Failed stopping MySQL server '{name}': "
702
- "{error}" .format (error = str (err ), name = self ._name ))
703
- sys .exit (1 )
704
- else :
705
- time .sleep (3 )
698
+ LOGGER .debug ("Attempting to stop MySQL server %s (pid=%s)." ,
699
+ self ._name , pid )
700
+ tries = 5
701
+ while tries > 0 :
702
+ try :
703
+ self ._stop_server (pid )
704
+ except (MySQLServerError , OSError ) as err :
705
+ LOGGER .error ("Failed stopping MySQL server '{name}': "
706
+ "{error}" .format (error = str (err ), name = self ._name ))
707
+ if self ._debug is True :
708
+ raise
709
+ sys .exit (1 )
710
+ else :
711
+ LOGGER .debug ("Waiting for MySQL server to stop..." )
712
+ time .sleep (1 )
713
+ if not self .check_running (pid ):
714
+ LOGGER .debug ("MySQL server stopped '{name}' "
715
+ "(pid={pid})" .format (pid = pid , name = self ._name ))
716
+ return True
717
+ tries = - 1
706
718
707
- if self .check_running (pid ):
708
- LOGGER .debug ("MySQL server stopped '{name}' "
709
- "(pid={pid})" .format (pid = pid , name = self ._name ))
710
- return True
719
+ LOGGER .error ("Failed stopping MySQL server '{name}': "
720
+ "{error}" .format (error = str (err ), name = self ._name ))
711
721
712
722
return False
713
723
@@ -734,7 +744,7 @@ def check_running(self, pid=None):
734
744
"""
735
745
pid = pid or get_pid (self ._pid_file )
736
746
if pid :
737
- LOGGER .debug ("Got PID %d" , pid )
747
+ LOGGER .debug ("Checking PID %d" , pid )
738
748
return process_running (pid )
739
749
740
750
return False
0 commit comments