diff options
| -rw-r--r-- | bitbake/lib/prserv/serv.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py index 719941b32e..3489200536 100644 --- a/bitbake/lib/prserv/serv.py +++ b/bitbake/lib/prserv/serv.py | |||
| @@ -86,7 +86,8 @@ class PRServer(SimpleXMLRPCServer): | |||
| 86 | def work_forever(self,): | 86 | def work_forever(self,): |
| 87 | self.quit = False | 87 | self.quit = False |
| 88 | self.timeout = 0.5 | 88 | self.timeout = 0.5 |
| 89 | logger.info("PRServer: started! DBfile: %s, IP: %s, PORT: %s, PID: %s" % | 89 | |
| 90 | logger.info("Started PRServer with DBfile: %s, IP: %s, PORT: %s, PID: %s" % | ||
| 90 | (self.dbfile, self.host, self.port, str(os.getpid()))) | 91 | (self.dbfile, self.host, self.port, str(os.getpid()))) |
| 91 | 92 | ||
| 92 | while not self.quit: | 93 | while not self.quit: |
| @@ -97,7 +98,10 @@ class PRServer(SimpleXMLRPCServer): | |||
| 97 | return | 98 | return |
| 98 | 99 | ||
| 99 | def start(self): | 100 | def start(self): |
| 100 | self.daemonize() | 101 | pid = self.daemonize() |
| 102 | # Ensure both the parent sees this and the child from the work_forever log entry above | ||
| 103 | logger.info("Started PRServer with DBfile: %s, IP: %s, PORT: %s, PID: %s" % | ||
| 104 | (self.dbfile, self.host, self.port, str(pid))) | ||
| 101 | 105 | ||
| 102 | def delpid(self): | 106 | def delpid(self): |
| 103 | os.remove(self.pidfile) | 107 | os.remove(self.pidfile) |
| @@ -111,7 +115,7 @@ class PRServer(SimpleXMLRPCServer): | |||
| 111 | if pid > 0: | 115 | if pid > 0: |
| 112 | os.waitpid(pid, 0) | 116 | os.waitpid(pid, 0) |
| 113 | #parent return instead of exit to give control | 117 | #parent return instead of exit to give control |
| 114 | return | 118 | return pid |
| 115 | except OSError as e: | 119 | except OSError as e: |
| 116 | raise Exception("%s [%d]" % (e.strerror, e.errno)) | 120 | raise Exception("%s [%d]" % (e.strerror, e.errno)) |
| 117 | 121 | ||
| @@ -139,14 +143,21 @@ class PRServer(SimpleXMLRPCServer): | |||
| 139 | os.dup2(so.fileno(),sys.stdout.fileno()) | 143 | os.dup2(so.fileno(),sys.stdout.fileno()) |
| 140 | os.dup2(se.fileno(),sys.stderr.fileno()) | 144 | os.dup2(se.fileno(),sys.stderr.fileno()) |
| 141 | 145 | ||
| 146 | # Ensure logging makes it to the logfile | ||
| 147 | streamhandler = logging.StreamHandler() | ||
| 148 | streamhandler.setLevel(logging.DEBUG) | ||
| 149 | formatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s") | ||
| 150 | streamhandler.setFormatter(formatter) | ||
| 151 | logger.addHandler(streamhandler) | ||
| 152 | |||
| 142 | # write pidfile | 153 | # write pidfile |
| 143 | atexit.register(self.delpid) | ||
| 144 | pid = str(os.getpid()) | 154 | pid = str(os.getpid()) |
| 145 | pf = file(self.pidfile, 'w') | 155 | pf = file(self.pidfile, 'w') |
| 146 | pf.write("%s\n" % pid) | 156 | pf.write("%s\n" % pid) |
| 147 | pf.close() | 157 | pf.close() |
| 148 | 158 | ||
| 149 | self.work_forever() | 159 | self.work_forever() |
| 160 | self.delpid | ||
| 150 | os._exit(0) | 161 | os._exit(0) |
| 151 | 162 | ||
| 152 | class PRServSingleton(): | 163 | class PRServSingleton(): |
| @@ -179,6 +190,7 @@ class PRServerConnection(): | |||
| 179 | import socket | 190 | import socket |
| 180 | socket.setdefaulttimeout(2) | 191 | socket.setdefaulttimeout(2) |
| 181 | try: | 192 | try: |
| 193 | logger.info("Terminating PRServer...") | ||
| 182 | self.connection.quit() | 194 | self.connection.quit() |
| 183 | except Exception as exc: | 195 | except Exception as exc: |
| 184 | sys.stderr.write("%s\n" % str(exc)) | 196 | sys.stderr.write("%s\n" % str(exc)) |
