Message ID | 20220121145142.763-1-jatedev@gmail.com |
---|---|
State | Accepted, archived |
Commit | be6ecc160ac4a8d9715257b9b955363cecc081ea |
Headers | show |
Series | [dunfell,1.46,v2] hashserv: specify loop for asyncio in python < 3.6 | expand |
Hi Jate, Just want to confirm that the only difference between V1 and V2 is the addition of the reference to the bug number? Thanks, Steve On Fri, Jan 21, 2022 at 4:52 AM Jate Sujjavanich <jatedev@gmail.com> wrote: > > [YOCTO #14697] > > Detect python version 3.5 restoring loop argument where > it is still required. In 3.6 auto loop detection is available. > > Bitbake 1.46 is used in dunfell which lists a minimum python version > of 3.5. Omitting this argument leads to a regression and hang during > "Initialising tasks" at 44%. > > Signed-off-by: Jate Sujjavanich <jatedev@gmail.com> > --- > lib/hashserv/server.py | 23 +++++++++++++++++------ > 1 file changed, 17 insertions(+), 6 deletions(-) > > diff --git a/lib/hashserv/server.py b/lib/hashserv/server.py > index 56f354bd..f38a22ad 100644 > --- a/lib/hashserv/server.py > +++ b/lib/hashserv/server.py > @@ -12,6 +12,7 @@ import math > import os > import signal > import socket > +import sys > import time > from . import chunkify, DEFAULT_MAX_CHUNK > > @@ -419,9 +420,14 @@ class Server(object): > self._cleanup_socket = None > > def start_tcp_server(self, host, port): > - self.server = self.loop.run_until_complete( > - asyncio.start_server(self.handle_client, host, port) > - ) > + if sys.version_info[0] == 3 and sys.version_info[1] < 6: > + self.server = self.loop.run_until_complete( > + asyncio.start_server(self.handle_client, host, port, loop=self.loop) > + ) > + else: > + self.server = self.loop.run_until_complete( > + asyncio.start_server(self.handle_client, host, port) > + ) > > for s in self.server.sockets: > logger.info('Listening on %r' % (s.getsockname(),)) > @@ -444,9 +450,14 @@ class Server(object): > try: > # Work around path length limits in AF_UNIX > os.chdir(os.path.dirname(path)) > - self.server = self.loop.run_until_complete( > - asyncio.start_unix_server(self.handle_client, os.path.basename(path)) > - ) > + if sys.version_info[0] == 3 and sys.version_info[1] < 6: > + self.server = self.loop.run_until_complete( > + asyncio.start_unix_server(self.handle_client, os.path.basename(path), loop=self.loop) > + ) > + else: > + self.server = self.loop.run_until_complete( > + asyncio.start_unix_server(self.handle_client, os.path.basename(path)) > + ) > finally: > os.chdir(cwd) > > -- > 2.25.1 >
- Changed the version check on the minor (< 7 to <6) after testing python 3.6 with bitbake. - Changed the comment to reflect this - Added Bugzilla tracker On Fri, Jan 21, 2022 at 9:55 AM Steve Sakoman <steve@sakoman.com> wrote: > Hi Jate, > > Just want to confirm that the only difference between V1 and V2 is the > addition of the reference to the bug number? > > Thanks, > > Steve > > On Fri, Jan 21, 2022 at 4:52 AM Jate Sujjavanich <jatedev@gmail.com> > wrote: > > > > [YOCTO #14697] > > > > Detect python version 3.5 restoring loop argument where > > it is still required. In 3.6 auto loop detection is available. > > > > Bitbake 1.46 is used in dunfell which lists a minimum python version > > of 3.5. Omitting this argument leads to a regression and hang during > > "Initialising tasks" at 44%. > > > > Signed-off-by: Jate Sujjavanich <jatedev@gmail.com> > > --- > > lib/hashserv/server.py | 23 +++++++++++++++++------ > > 1 file changed, 17 insertions(+), 6 deletions(-) > > > > diff --git a/lib/hashserv/server.py b/lib/hashserv/server.py > > index 56f354bd..f38a22ad 100644 > > --- a/lib/hashserv/server.py > > +++ b/lib/hashserv/server.py > > @@ -12,6 +12,7 @@ import math > > import os > > import signal > > import socket > > +import sys > > import time > > from . import chunkify, DEFAULT_MAX_CHUNK > > > > @@ -419,9 +420,14 @@ class Server(object): > > self._cleanup_socket = None > > > > def start_tcp_server(self, host, port): > > - self.server = self.loop.run_until_complete( > > - asyncio.start_server(self.handle_client, host, port) > > - ) > > + if sys.version_info[0] == 3 and sys.version_info[1] < 6: > > + self.server = self.loop.run_until_complete( > > + asyncio.start_server(self.handle_client, host, port, > loop=self.loop) > > + ) > > + else: > > + self.server = self.loop.run_until_complete( > > + asyncio.start_server(self.handle_client, host, port) > > + ) > > > > for s in self.server.sockets: > > logger.info('Listening on %r' % (s.getsockname(),)) > > @@ -444,9 +450,14 @@ class Server(object): > > try: > > # Work around path length limits in AF_UNIX > > os.chdir(os.path.dirname(path)) > > - self.server = self.loop.run_until_complete( > > - asyncio.start_unix_server(self.handle_client, > os.path.basename(path)) > > - ) > > + if sys.version_info[0] == 3 and sys.version_info[1] < 6: > > + self.server = self.loop.run_until_complete( > > + asyncio.start_unix_server(self.handle_client, > os.path.basename(path), loop=self.loop) > > + ) > > + else: > > + self.server = self.loop.run_until_complete( > > + asyncio.start_unix_server(self.handle_client, > os.path.basename(path)) > > + ) > > finally: > > os.chdir(cwd) > > > > -- > > 2.25.1 > > >
On Fri, Jan 21, 2022 at 6:05 AM Jate Sujjavanich <jatedev@gmail.com> wrote: > > - Changed the version check on the minor (< 7 to <6) after testing python 3.6 with bitbake. > - Changed the comment to reflect this > - Added Bugzilla tracker Thanks! Steve > On Fri, Jan 21, 2022 at 9:55 AM Steve Sakoman <steve@sakoman.com> wrote: >> >> Hi Jate, >> >> Just want to confirm that the only difference between V1 and V2 is the >> addition of the reference to the bug number? >> >> Thanks, >> >> Steve >> >> On Fri, Jan 21, 2022 at 4:52 AM Jate Sujjavanich <jatedev@gmail.com> wrote: >> > >> > [YOCTO #14697] >> > >> > Detect python version 3.5 restoring loop argument where >> > it is still required. In 3.6 auto loop detection is available. >> > >> > Bitbake 1.46 is used in dunfell which lists a minimum python version >> > of 3.5. Omitting this argument leads to a regression and hang during >> > "Initialising tasks" at 44%. >> > >> > Signed-off-by: Jate Sujjavanich <jatedev@gmail.com> >> > --- >> > lib/hashserv/server.py | 23 +++++++++++++++++------ >> > 1 file changed, 17 insertions(+), 6 deletions(-) >> > >> > diff --git a/lib/hashserv/server.py b/lib/hashserv/server.py >> > index 56f354bd..f38a22ad 100644 >> > --- a/lib/hashserv/server.py >> > +++ b/lib/hashserv/server.py >> > @@ -12,6 +12,7 @@ import math >> > import os >> > import signal >> > import socket >> > +import sys >> > import time >> > from . import chunkify, DEFAULT_MAX_CHUNK >> > >> > @@ -419,9 +420,14 @@ class Server(object): >> > self._cleanup_socket = None >> > >> > def start_tcp_server(self, host, port): >> > - self.server = self.loop.run_until_complete( >> > - asyncio.start_server(self.handle_client, host, port) >> > - ) >> > + if sys.version_info[0] == 3 and sys.version_info[1] < 6: >> > + self.server = self.loop.run_until_complete( >> > + asyncio.start_server(self.handle_client, host, port, loop=self.loop) >> > + ) >> > + else: >> > + self.server = self.loop.run_until_complete( >> > + asyncio.start_server(self.handle_client, host, port) >> > + ) >> > >> > for s in self.server.sockets: >> > logger.info('Listening on %r' % (s.getsockname(),)) >> > @@ -444,9 +450,14 @@ class Server(object): >> > try: >> > # Work around path length limits in AF_UNIX >> > os.chdir(os.path.dirname(path)) >> > - self.server = self.loop.run_until_complete( >> > - asyncio.start_unix_server(self.handle_client, os.path.basename(path)) >> > - ) >> > + if sys.version_info[0] == 3 and sys.version_info[1] < 6: >> > + self.server = self.loop.run_until_complete( >> > + asyncio.start_unix_server(self.handle_client, os.path.basename(path), loop=self.loop) >> > + ) >> > + else: >> > + self.server = self.loop.run_until_complete( >> > + asyncio.start_unix_server(self.handle_client, os.path.basename(path)) >> > + ) >> > finally: >> > os.chdir(cwd) >> > >> > -- >> > 2.25.1 >> >
diff --git a/lib/hashserv/server.py b/lib/hashserv/server.py index 56f354bd..f38a22ad 100644 --- a/lib/hashserv/server.py +++ b/lib/hashserv/server.py @@ -12,6 +12,7 @@ import math import os import signal import socket +import sys import time from . import chunkify, DEFAULT_MAX_CHUNK @@ -419,9 +420,14 @@ class Server(object): self._cleanup_socket = None def start_tcp_server(self, host, port): - self.server = self.loop.run_until_complete( - asyncio.start_server(self.handle_client, host, port) - ) + if sys.version_info[0] == 3 and sys.version_info[1] < 6: + self.server = self.loop.run_until_complete( + asyncio.start_server(self.handle_client, host, port, loop=self.loop) + ) + else: + self.server = self.loop.run_until_complete( + asyncio.start_server(self.handle_client, host, port) + ) for s in self.server.sockets: logger.info('Listening on %r' % (s.getsockname(),)) @@ -444,9 +450,14 @@ class Server(object): try: # Work around path length limits in AF_UNIX os.chdir(os.path.dirname(path)) - self.server = self.loop.run_until_complete( - asyncio.start_unix_server(self.handle_client, os.path.basename(path)) - ) + if sys.version_info[0] == 3 and sys.version_info[1] < 6: + self.server = self.loop.run_until_complete( + asyncio.start_unix_server(self.handle_client, os.path.basename(path), loop=self.loop) + ) + else: + self.server = self.loop.run_until_complete( + asyncio.start_unix_server(self.handle_client, os.path.basename(path)) + ) finally: os.chdir(cwd)
[YOCTO #14697] Detect python version 3.5 restoring loop argument where it is still required. In 3.6 auto loop detection is available. Bitbake 1.46 is used in dunfell which lists a minimum python version of 3.5. Omitting this argument leads to a regression and hang during "Initialising tasks" at 44%. Signed-off-by: Jate Sujjavanich <jatedev@gmail.com> --- lib/hashserv/server.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)