On 8/13/26 1:22 PM, Timothy Redaelli via dev wrote:
> The last two transactions of the "disruptive server with the old term
> and outdated log" test are checked on every server as soon as the
> leader replied.  A successful transaction reply only guarantees that
> the entry was committed by a majority; a follower may not have learned
> the new commit index and applied the entry yet.  The test then reads
> stale data with --no-leader-only and fails:
> 
>   ./ovsdb-cluster.at:1104: ovs-vsctl --db=unix:s$i.ovsdb --no-leader-only \
>       --bare --columns=type list QoS | grep . | sort | tr -d '\n'
>     @@ -1 +1 @@
>     -lmxyz
>     +lxyz
> 
> Wait for the data with OVS_WAIT_UNTIL_EQUAL instead of reading it once.
> 
> Fixes: 5d1fa6e4a4b0 ("ovsdb-cluster.at: Test disruptive server with outdated 
> log and term.")
> Signed-off-by: Timothy Redaelli <[email protected]>
> ---
> Changes from v1:
>  - Fixed "Fixes" line to use 12 characters hash.
> ---
>  tests/ovsdb-cluster.at | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/ovsdb-cluster.at b/tests/ovsdb-cluster.at
> index 1dd74e3de..323162a1d 100644
> --- a/tests/ovsdb-cluster.at
> +++ b/tests/ovsdb-cluster.at
> @@ -1098,12 +1098,19 @@ AT_CHECK([ovs-vsctl --db=unix:s1.ovsdb 
> --no-leader-only --no-wait create QoS typ
>  AT_CHECK([ovs-vsctl --db=unix:s1.ovsdb --no-leader-only --no-wait create QoS 
> type=m], [0], [ignore], [ignore])
>  
>  # Check that all the servers are in the cluster and have all the data.
> +# A successful transaction reply only guarantees that the entry was committed
> +# by a majority.  A follower may not have learned the new commit index and
> +# applied it yet, so wait for every server to catch up.
>  for i in $(seq $n); do
>      AT_CHECK([ovs-appctl -t $(pwd)/s$i cluster/status $schema_name \
>                  | grep -qE "Role: (leader|follower)"])
> -    AT_CHECK([ovs-vsctl --db=unix:s$i.ovsdb --no-leader-only --bare \
> -                --columns=type list QoS | grep . | sort | tr -d '\n'],
> -             [0], [lmxyz])
> +    OVS_WAIT_UNTIL_EQUAL([ovs-vsctl --db=unix:s$i.ovsdb --no-leader-only \
> +                            --bare --columns=type list QoS | grep . | sort], 
> [dnl
> +l
> +m
> +x
> +y
> +z])

Maybe we can do something like this instead of unfolding the output:

    OVS_WAIT_UNTIL_EQUAL([ovs-vsctl --db=unix:s$i.ovsdb --no-leader-only \
                                    --bare --columns=type list QoS | \
                            grep . | sort | tr -d '\n'], [lmxyz])

?

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to