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

Reply via email to