bitbake: cooker/siggen: Support exit calls and use for hashserv client

We have shutdown functions within the async client code but the siggen
doesn't currently call them. We notice on python 3.10 (such as on fedora35)
that at exit, there is a stray asyncio process left behind. Usually this
doesn't cause problems but it could potentially be a cause of a hang.

For general cleanliness and completness, add in hooks to call the exit handler.

(Bitbake rev: 9ee3fb95330003878fbd64b3ce8897aad96fcd0f)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2022-03-24 23:23:28 +00:00
parent a10ac380b7
commit 88fcf8422d
2 changed files with 10 additions and 0 deletions

View File

@@ -1717,6 +1717,7 @@ class BBCooker:
def post_serve(self):
self.shutdown(force=True)
prserv.serv.auto_shutdown()
bb.parse.siggen.exit()
if self.hashserv:
self.hashserv.process.terminate()
self.hashserv.process.join()

View File

@@ -156,6 +156,9 @@ class SignatureGenerator(object):
return DataCacheProxy()
def exit(self):
return
class SignatureGeneratorBasic(SignatureGenerator):
"""
"""
@@ -489,6 +492,12 @@ class SignatureGeneratorUniHashMixIn(object):
self._client = hashserv.create_client(self.server)
return self._client
def exit(self):
if getattr(self, '_client', None) is not None:
self._client.close()
self._client = None
return super().exit()
def get_stampfile_hash(self, tid):
if tid in self.taskhash:
# If a unique hash is reported, use it as the stampfile hash. This