diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-03-24 23:23:28 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-03-26 09:27:43 +0000 |
commit | 88fcf8422dd04372d73aacfef0ee50de09ef41bd (patch) | |
tree | 2984b56895d81600650652d6c0bb704432396fb7 /bitbake | |
parent | a10ac380b781073fc995a3ee245d570f7b49055d (diff) | |
download | poky-88fcf8422dd04372d73aacfef0ee50de09ef41bd.tar.gz |
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>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/cooker.py | 1 | ||||
-rw-r--r-- | bitbake/lib/bb/siggen.py | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index f79dc2770d..c0a7a2fd79 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -1717,6 +1717,7 @@ class BBCooker: | |||
1717 | def post_serve(self): | 1717 | def post_serve(self): |
1718 | self.shutdown(force=True) | 1718 | self.shutdown(force=True) |
1719 | prserv.serv.auto_shutdown() | 1719 | prserv.serv.auto_shutdown() |
1720 | bb.parse.siggen.exit() | ||
1720 | if self.hashserv: | 1721 | if self.hashserv: |
1721 | self.hashserv.process.terminate() | 1722 | self.hashserv.process.terminate() |
1722 | self.hashserv.process.join() | 1723 | self.hashserv.process.join() |
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py index 96e16a45f8..ff6b24ccda 100644 --- a/bitbake/lib/bb/siggen.py +++ b/bitbake/lib/bb/siggen.py | |||
@@ -156,6 +156,9 @@ class SignatureGenerator(object): | |||
156 | 156 | ||
157 | return DataCacheProxy() | 157 | return DataCacheProxy() |
158 | 158 | ||
159 | def exit(self): | ||
160 | return | ||
161 | |||
159 | class SignatureGeneratorBasic(SignatureGenerator): | 162 | class SignatureGeneratorBasic(SignatureGenerator): |
160 | """ | 163 | """ |
161 | """ | 164 | """ |
@@ -489,6 +492,12 @@ class SignatureGeneratorUniHashMixIn(object): | |||
489 | self._client = hashserv.create_client(self.server) | 492 | self._client = hashserv.create_client(self.server) |
490 | return self._client | 493 | return self._client |
491 | 494 | ||
495 | def exit(self): | ||
496 | if getattr(self, '_client', None) is not None: | ||
497 | self._client.close() | ||
498 | self._client = None | ||
499 | return super().exit() | ||
500 | |||
492 | def get_stampfile_hash(self, tid): | 501 | def get_stampfile_hash(self, tid): |
493 | if tid in self.taskhash: | 502 | if tid in self.taskhash: |
494 | # If a unique hash is reported, use it as the stampfile hash. This | 503 | # If a unique hash is reported, use it as the stampfile hash. This |