On 30 Aug 2024, at 15:07, Aaron Conole wrote:
> Eelco Chaudron <[email protected]> writes: > >> On 30 Aug 2024, at 12:23, Eelco Chaudron wrote: >> >>> On 30 Aug 2024, at 11:15, Simon Horman wrote: >>> >>>> On Thu, Aug 29, 2024 at 12:04:33PM -0400, Michael Santana wrote: >>>>> Python3.12 is throwing syntax warnings in ovs-dpctl-top >>>>> >>>>> [root@localhost ~]# python --version >>>>> Python 3.12.5 >>>>> [root@localhost ~]# ovs-dpctl-top --help > /dev/null >>>>> /usr/bin/ovs-dpctl-top:392: SyntaxWarning: invalid escape sequence '\w' >>>>> FIELDS_CMPND = re.compile("([\w]+)\((.+)\)") >>>>> /usr/bin/ovs-dpctl-top:394: SyntaxWarning: invalid escape sequence '\w' >>>>> FIELDS_CMPND_ELEMENT = re.compile("([\w:]+)=([/\.\w:]+)") >>>>> /usr/bin/ovs-dpctl-top:395: SyntaxWarning: invalid escape sequence '\w' >>>>> FIELDS_ELEMENT = re.compile("([\w]+):([-\.\w]+)") >>>>> >>>>> >>>>> The warning seems to be new to python3.12 >>>>> >>>>> Python 3.12.5 (main, Aug 23 2024, 00:00:00) >>>>>>>> import re >>>>>>>> re.compile("([\w]+)\((.+)\)") >>>>> <stdin>:1: SyntaxWarning: invalid escape sequence '\w' >>>>> re.compile('([\\w]+)\\((.+)\\)') >>>>>>>> re.compile(r"([\w]+)\((.+)\)") >>>>> re.compile('([\\w]+)\\((.+)\\)') >>>> >>>> Thanks Michael, >>>> >>>> I also see this. >>>> >>>>> >>>>> Python 3.11.4 (main, Jun 7 2023, 00:00:00) >>>>>>>> import re >>>>>>>> re.compile("([\w]+)\((.+)\)") >>>>> re.compile('([\\w]+)\\((.+)\\)') >>>>> >>>>> >>>>> Prepending the string with r tells python treat the string as a raw string >>>>> literal and to not try to scape \w, \(, etc, and gets rid of the warning >>>>> >>>>> Signed-off-by: Michael Santana <[email protected]> >>>> >>>> The checkpatch warning flagged by the robot aside, which I think can be >>>> addressed when the patch is applied, this looks good to me. >>>> >>>> Acked-by: Simon Horman <[email protected]> >>> >>> Tested the change, and it looks good to me. >>> >>> Acked-by: Eelco Chaudron <[email protected]> >> >> I wanted to add that I have a general problem with the tool, I assume it’s >> related to my machine, but it might not be. >> I get these errors for flows added: >> >> in_port(2)in thread Thread-1: >> Traceback (most recent call last): >> File "/usr/lib64/python3.9/threading.py", line 980, in _bootstrap_inner >> self.run() >> File "/root/Documents/scratch/ovs/./utilities/ovs-dpctl-top", line 1126, in >> run >> self._flow_db.decay(self._interval) >> File "/root/Documents/scratch/ovs/./utilities/ovs-dpctl-top", line 1010, in >> decay >> for (key, value) in self._flows.items(): >> RuntimeError: dictionary changed size during iteration >> >> Can you confirm the tool works for you with active traffic? > > I think this is an issue in the tool. Can you try the following > snippet and see if it resolves your issue? > > diff --git a/utilities/ovs-dpctl-top.in b/utilities/ovs-dpctl-top.in > index 1708c2f374..f2d5bae6a6 100755 > --- a/utilities/ovs-dpctl-top.in > +++ b/utilities/ovs-dpctl-top.in > @@ -1007,7 +1007,7 @@ class FlowDB: > def decay(self, decayTimeInSeconds): > """ Decay content. """ > now = datetime.datetime.now() > - for (key, value) in self._flows.items(): > + for (key, value) in list(self._flows.items()): > (stats_dict, updateTime) = value > delta = now - updateTime Yes, that solved it for me. Gues we need another patch ;) //Eelco _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
