Skip to content

Run Quorum Queue property test on different OTP versions (backport #14042) #14046

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 6, 2025

Conversation

mergify[bot]
Copy link

@mergify mergify bot commented Jun 6, 2025

What?

PR #13971 added a property test that applies the same quorum queue Raft
commands on different quorum queue members on different Erlang nodes
ensuring that the state machine ends up in exaclty the same state.
The different Erlang nodes run the same Erlang/OTP version however.

This commit adds another property test where the different Erlang nodes
run different Erlang/OTP versions.

Why?

This test allows spotting any non-determinism that could occur when
running quorum queue members in a mixed version cluster, where mixed
version means in our context different Erlang/OTP versions.

How?

CI runs currently tests with Erlang 27.

This commit starts an Erlang 26 node in docker, specifically for the
rabbit_fifo_prop_SUITE.

Test case two_nodes_different_otp_version running Erlang 27 then transfers
a few Erlang modules (e.g. module rabbit_fifo) to the Erlang 26 node.
The test case then runs the Ra commands on its own node in Erlang 27 and
on the Erlang 26 node in Docker.

By default, this test case is skipped locally to avoid any local dependency on
Docker and to avoid assuming specific OTP versions being installed on the local host.
However, to run this test case locally, simply start a lower versioned Erlang node as
follows:

erl -sname rabbit_fifo_prop@localhost

This is an automatic backport of pull request #14042 done by [Mergify](https://mergify.com).

 ## What?

PR #13971 added a property test that applies the same quorum queue Raft
command on different quorum queue members on different Erlang nodes
ensuring that the state machine ends up in exaclty the same state.
The different Erlang nodes run the **same** Erlang/OTP version however.

This commit adds another property test where the different Erlang nodes
run **different** Erlang/OTP versions.

 ## Why?

This test allows spotting any non-determinism that could occur when
running quorum queue members in a mixed version cluster, where mixed
version means in our context different Erlang/OTP versions.

 ## How?

CI runs currently tests with Erlang 27.

This commit starts an Erlang 26 node in docker, specifically for the
`rabbit_fifo_prop_SUITE`.

Test case `two_nodes_different_otp_version` running Erlang 27 then transfers
a few Erlang modules (e.g. module `rabbit_fifo`) to the Erlang 26 node.
The test case then runs the Ra commands on its own node in Erlang 27 and
on the Erlang 26 node in Docker.

By default, this test case is skipped locally.
However, to run this test case locally, simply start an Erlang node as
follows:
```
erl -sname rabbit_fifo_prop@localhost
```

(cherry picked from commit eccf9fe)
@mergify mergify bot assigned ansd Jun 6, 2025
@mergify mergify bot added the make label Jun 6, 2025
@michaelklishin michaelklishin added this to the 4.1.2 milestone Jun 6, 2025
@ansd ansd merged commit 5091226 into v4.1.x Jun 6, 2025
276 checks passed
@ansd ansd deleted the mergify/bp/v4.1.x/pr-14042 branch June 6, 2025 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants