Message ID | 20241107133004.7469-8-shaw.leon@gmail.com |
---|---|
State | New |
Headers | show |
Series | net: Improve netns handling in RTNL and ip_tunnel | expand |
On Fri, Nov 8, 2024 at 1:16 AM Donald Hunter <donald.hunter@gmail.com> wrote: > > It's then a question of whether we need the repeat logic in poll_ntf() > because it's always possible to use check_ntf() in your own repeat > logic. Either way, I'd prefer not to call the parameter "max_retries" > because semantically I don't think we are retrying - it is a count of > how many times to repeat the poll. Thoughts? Should it be a "duration" > parameter? Yes, a "duration" is better. The meaning of "retry" or "count" is not clear. The original check_ntf() is good enough for the test case in this series. Could you make the change, or do you prefer me to submit another patch?
On Fri, 8 Nov 2024 at 08:46, Xiao Liang <shaw.leon@gmail.com> wrote: > > On Fri, Nov 8, 2024 at 1:16 AM Donald Hunter <donald.hunter@gmail.com> wrote: > > > > It's then a question of whether we need the repeat logic in poll_ntf() > > because it's always possible to use check_ntf() in your own repeat > > logic. Either way, I'd prefer not to call the parameter "max_retries" > > because semantically I don't think we are retrying - it is a count of > > how many times to repeat the poll. Thoughts? Should it be a "duration" > > parameter? > > Yes, a "duration" is better. The meaning of "retry" or "count" is not clear. > The original check_ntf() is good enough for the test case in this > series. Could you make the change, or do you prefer me to submit > another patch? I'm happy to make the change. I have prepared a patch which reverts most of 1bf70e6c3a53 and introduces poll_ntf(interval, duration). Jakub, is it okay to submit this as a single patch, or would you prefer me to actually revert 1bf70e6c3a53? (there's about 5 lines retained from the original patch).
On Fri, 8 Nov 2024 at 10:04, Donald Hunter <donald.hunter@gmail.com> wrote: > > Jakub, is it okay to submit this as a single patch, or would you > prefer me to actually revert 1bf70e6c3a53? (there's about 5 lines > retained from the original patch). I'll submit it as a series with a revert and a new patch. The patch is much cleaner that way.
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py index 92f85698c50e..dff5166a4650 100644 --- a/tools/net/ynl/lib/ynl.py +++ b/tools/net/ynl/lib/ynl.py @@ -907,7 +907,8 @@ class YnlFamily(SpecFamily): msg['msg'] = attrs self.async_msg_queue.put(msg) - def check_ntf(self, interval=0.1): + def check_ntf(self, interval=0.1, max_retries=None): + retry = 0 while True: try: reply = self.sock.recv(self._recv_size, socket.MSG_DONTWAIT) @@ -933,7 +934,11 @@ class YnlFamily(SpecFamily): try: yield self.async_msg_queue.get_nowait() + retry = 0 except queue.Empty: + retry += 1 + if max_retries is not None and retry > max_retries: + return try: time.sleep(interval) except KeyboardInterrupt:
Since commit 1bf70e6c3a53 ("tools/net/ynl: improve async notification handling"), check_ntf() would block indefinitely if there's no messages. In some cases we want to set a limit on waiting time. This patch adds max_reties parameter check_ntf(), and makes it stop when no message is recievied in that number of consecutive retries. Signed-off-by: Xiao Liang <shaw.leon@gmail.com> --- tools/net/ynl/lib/ynl.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)