diff mbox series

[ovs-dev] Fix missing flows in ls_in_dhcp_options table

Message ID 20230918164631.3144868-1-xsimonar@redhat.com
State Accepted
Headers show
Series [ovs-dev] Fix missing flows in ls_in_dhcp_options table | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes fail github build: failed

Commit Message

Xavier Simonart Sept. 18, 2023, 4:46 p.m. UTC
When ha-chassis-group is updated, causing a new hv to become master,
port move to a different chassis, and flows get created in table ls_in_dhcp_options.
If pb->chassis is reported empty by sb (because set to [] by the hv being the
previous owner of the port) those flows were deleted.
However, when pb->chassis is finally updated by sb (to the new hv), flows were
not re-installed, as runtime_data was not seen as updated.

This caused some random failures in test "external logical port".

Signed-off-by: Xavier Simonart <xsimonar@redhat.com>
---
 controller/binding.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Mark Michelson Sept. 19, 2023, 8 p.m. UTC | #1
Thanks Xavier,

Acked-by: Mark Michelson <mmichels@redhat.com>

On 9/18/23 12:46, Xavier Simonart wrote:
> When ha-chassis-group is updated, causing a new hv to become master,
> port move to a different chassis, and flows get created in table ls_in_dhcp_options.
> If pb->chassis is reported empty by sb (because set to [] by the hv being the
> previous owner of the port) those flows were deleted.
> However, when pb->chassis is finally updated by sb (to the new hv), flows were
> not re-installed, as runtime_data was not seen as updated.
> 
> This caused some random failures in test "external logical port".
> 
> Signed-off-by: Xavier Simonart <xsimonar@redhat.com>
> ---
>   controller/binding.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/controller/binding.c b/controller/binding.c
> index fd08aaafa..d48fd99aa 100644
> --- a/controller/binding.c
> +++ b/controller/binding.c
> @@ -1362,6 +1362,7 @@ claim_lport(const struct sbrec_port_binding *pb,
>               register_claim_timestamp(pb->logical_port, now);
>               sset_find_and_delete(postponed_ports, pb->logical_port);
>           } else {
> +            update_tracked = true;
>               if (!notify_up) {
>                   if (!claimed_lport_set_up(pb, parent_pb, sb_readonly)) {
>                       return false;
Dumitru Ceara Oct. 10, 2023, 1:34 p.m. UTC | #2
On 9/19/23 22:00, Mark Michelson wrote:
> Thanks Xavier,
> 
> Acked-by: Mark Michelson <mmichels@redhat.com>
> 

Thanks, Xavier, Mark!

I applied this to main and backported it to stable branches down to and
including 22.09.  Do we need this on older branches too (I assume so)?
If so, could you please post a custom backport patch?

Thanks,
Dumitru

> On 9/18/23 12:46, Xavier Simonart wrote:
>> When ha-chassis-group is updated, causing a new hv to become master,
>> port move to a different chassis, and flows get created in table
>> ls_in_dhcp_options.
>> If pb->chassis is reported empty by sb (because set to [] by the hv
>> being the
>> previous owner of the port) those flows were deleted.
>> However, when pb->chassis is finally updated by sb (to the new hv),
>> flows were
>> not re-installed, as runtime_data was not seen as updated.
>>
>> This caused some random failures in test "external logical port".
>>
>> Signed-off-by: Xavier Simonart <xsimonar@redhat.com>
>> ---
>>   controller/binding.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/controller/binding.c b/controller/binding.c
>> index fd08aaafa..d48fd99aa 100644
>> --- a/controller/binding.c
>> +++ b/controller/binding.c
>> @@ -1362,6 +1362,7 @@ claim_lport(const struct sbrec_port_binding *pb,
>>               register_claim_timestamp(pb->logical_port, now);
>>               sset_find_and_delete(postponed_ports, pb->logical_port);
>>           } else {
>> +            update_tracked = true;
>>               if (!notify_up) {
>>                   if (!claimed_lport_set_up(pb, parent_pb,
>> sb_readonly)) {
>>                       return false;
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
diff mbox series

Patch

diff --git a/controller/binding.c b/controller/binding.c
index fd08aaafa..d48fd99aa 100644
--- a/controller/binding.c
+++ b/controller/binding.c
@@ -1362,6 +1362,7 @@  claim_lport(const struct sbrec_port_binding *pb,
             register_claim_timestamp(pb->logical_port, now);
             sset_find_and_delete(postponed_ports, pb->logical_port);
         } else {
+            update_tracked = true;
             if (!notify_up) {
                 if (!claimed_lport_set_up(pb, parent_pb, sb_readonly)) {
                     return false;