You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iggy.apache.org by hg...@apache.org on 2026/10/23 17:40:06 UTC

(iggy) branch perf/miri-under-20-minutes created (now 59eca2122)

This is an automated email from the ASF dual-hosted git repository.

hubcio pushed a change to branch perf/miri-under-20-minutes
in repository https://gitbox.apache.org/repos/asf/iggy.git


      at 59eca2122 perf(ci): exclude slow regression tests from Miri

This branch includes the following new commits:

     new 59eca2122 perf(ci): exclude slow regression tests from Miri

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(iggy) 01/01: perf(ci): exclude slow regression tests from Miri

Posted by hg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hubcio pushed a commit to branch perf/miri-under-20-minutes
in repository https://gitbox.apache.org/repos/asf/iggy.git

commit 59eca21220d1e88720a0ffe6e9b210e0ed49c40e
Author: Hubert Gruszecki <h....@gmail.com>
AuthorDate: Fri Oct 23 19:39:24 2026 +0200

    perf(ci): exclude slow regression tests from Miri
    
    Miri takes 30m59s in GitHub, exceeding the 20-minute target.
    Keep the 15 long recovery simulations and the options-count boundary
    case enabled in native runs, but ignore them under Miri. Retain the
    four shorter recovery checks and remove the unused scheduling
    override for the boundary case.
---
 .config/nextest.toml                           |  8 --------
 core/binary_protocol/src/primitives/options.rs |  1 +
 core/consensus/src/impls.rs                    | 15 +++++++++++++++
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/.config/nextest.toml b/.config/nextest.toml
index cfb54ed76..8c1647413 100644
--- a/.config/nextest.toml
+++ b/.config/nextest.toml
@@ -101,13 +101,5 @@ slow-timeout = { period = "60s", terminate-after = 5 }
 # Keep Miri bounded by the CI job timeout instead of the native-test limit.
 slow-timeout = { period = "60s" }
 
-[[profile.default-miri.overrides]]
-# Start the options boundary test early so other work overlaps it.
-filter = '''
-    package(=iggy_binary_protocol)
-    & test(=primitives::options::tests::entry_count_over_limit_is_rejected)
-'''
-priority = 100
-
 [profile.ci]
 retries = 3
diff --git a/core/binary_protocol/src/primitives/options.rs b/core/binary_protocol/src/primitives/options.rs
index bc6be4026..983dcab4a 100644
--- a/core/binary_protocol/src/primitives/options.rs
+++ b/core/binary_protocol/src/primitives/options.rs
@@ -371,6 +371,7 @@ mod tests {
     }
 
     #[test]
+    #[cfg_attr(miri, ignore = "large options-count boundary; covered by native tests")]
     fn entry_count_over_limit_is_rejected() {
         let keys: Vec<String> = (0..=MAX_OPTIONS).map(|i| format!("key_{i}")).collect();
         let entries: Vec<(u8, &[u8], u8, &[u8])> = keys
diff --git a/core/consensus/src/impls.rs b/core/consensus/src/impls.rs
index cedbd3ba5..00c69ab89 100644
--- a/core/consensus/src/impls.rs
+++ b/core/consensus/src/impls.rs
@@ -8844,6 +8844,7 @@ mod recovery_election_tests {
     /// their fallback election, which an asynchronous network permits. Whatever
     /// the restarted pair decide without it must still contain the committed ops.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_survivor_in_view_change_when_restarted_pair_elects_should_keep_committed_ops() {
         let plane = PlaneKind::Partitions;
         let mut cluster = Cluster {
@@ -8882,6 +8883,7 @@ mod recovery_election_tests {
     /// restarted pair may not settle a view without it, and once it reports
     /// the cluster settles holding every committed op.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_survivor_in_view_change_when_it_stays_reachable_should_settle_with_committed_ops() {
         let plane = PlaneKind::Partitions;
         let mut cluster = Cluster {
@@ -8905,6 +8907,7 @@ mod recovery_election_tests {
     /// count, must stay unavailable rather than settle on their short logs, and
     /// recover as soon as the survivor is back.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_survivor_partitioned_when_restarted_pair_elects_should_halt_until_it_returns() {
         let plane = PlaneKind::Partitions;
         let mut cluster = Cluster {
@@ -8941,6 +8944,7 @@ mod recovery_election_tests {
     /// `replicated` durability an op the shorter logs lack may have been
     /// acknowledged by them before their crash.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_full_cluster_restart_when_every_replica_reports_should_settle_on_the_longest_log() {
         let plane = PlaneKind::Partitions;
         let mut cluster = Cluster {
@@ -8966,6 +8970,7 @@ mod recovery_election_tests {
     /// empty vote: the view starts on the logs that elected, and the barred
     /// replica joins it through the `StartView`.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_full_restart_with_one_replica_barred_from_election_when_logs_are_untrusted_should_settle_on_its_empty_vote_without_dropping_ops()
      {
         let plane = PlaneKind::Partitions;
@@ -9006,6 +9011,7 @@ mod recovery_election_tests {
     /// It may vote but never lead: it stays `Recovering` until a `StartView`
     /// from another primary, so the others move past its view and settle.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_barred_replica_is_the_next_primary_candidate_when_others_elect_should_never_lead() {
         let plane = PlaneKind::Partitions;
         let barred = restarted(LAGGING_BACKUP, COMMITTED, false);
@@ -9050,6 +9056,7 @@ mod recovery_election_tests {
     /// an empty voter stays `Recovering` and in its own view: voting is not
     /// joining.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_barred_replica_when_it_only_hears_a_view_change_should_stay_recovering() {
         let plane = PlaneKind::Partitions;
         let barred = restarted(SURVIVOR, COMMITTED, false);
@@ -9089,6 +9096,7 @@ mod recovery_election_tests {
     /// hold ops nobody else has. It must not cast an empty vote that would let
     /// the others start a view without that log.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_full_restart_when_a_replica_still_probes_should_wait_for_its_log() {
         let plane = PlaneKind::Partitions;
         let slow = restarted(SURVIVOR, COMMITTED, false);
@@ -9113,6 +9121,7 @@ mod recovery_election_tests {
     /// Persisted recovery never needs the barred replica, so it stays silent
     /// and the trusted pair settle as a plain quorum.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_complete_logs_when_a_replica_is_barred_should_send_no_empty_vote() {
         let plane = PlaneKind::Partitions;
         let barred = restarted(SURVIVOR, COMMITTED, true);
@@ -9144,6 +9153,7 @@ mod recovery_election_tests {
     /// holds every op it acknowledged and the restarted pair keep the fast
     /// fallback: they settle without waiting for the survivor.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_complete_recovered_logs_when_survivor_is_silent_should_elect_without_it() {
         let plane = PlaneKind::Partitions;
         let mut cluster = Cluster {
@@ -9245,6 +9255,7 @@ mod recovery_election_tests {
     /// is cut off. Flagged untrusted, it does not complete a trusted one, so the
     /// candidate waits for the survivor rather than dropping the tail.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_trusted_lagging_primary_when_restarted_replica_completes_its_quorum_should_keep_committed_ops()
      {
         let plane = PlaneKind::Partitions;
@@ -9400,6 +9411,7 @@ mod recovery_election_tests {
     /// third replica's view change cannot complete they stay quiet and
     /// `Recovering`; once it can, the group settles.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_two_barred_replicas_when_do_view_changes_are_broadcast_should_not_answer_each_other() {
         let plane = PlaneKind::Partitions;
         let mut cluster = Cluster {
@@ -9445,6 +9457,7 @@ mod recovery_election_tests {
     /// fallback election must treat their logs as the intact ones they are:
     /// marking them untrusted would halt a group that lost only one replica.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_replicas_that_never_restarted_when_a_runtime_probe_exhausts_should_elect_trusted_without_the_third()
      {
         let plane = PlaneKind::Partitions;
@@ -9529,6 +9542,7 @@ mod recovery_election_tests {
     /// `StartView`, which vouches for their logs. A later runtime probe that
     /// exhausts with that primary gone must elect them trusted.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_restarted_replicas_that_adopted_a_start_view_when_a_runtime_probe_exhausts_should_elect_trusted_without_the_third()
      {
         const SETTLED_VIEW: u32 = OLD_VIEW + 2;
@@ -9579,6 +9593,7 @@ mod recovery_election_tests {
     /// `StartView`. A later runtime probe that exhausts with the third gone must
     /// elect both trusted.
     #[test]
+    #[cfg_attr(miri, ignore = "slow recovery simulation; covered by native tests")]
     fn given_full_restart_that_settled_when_a_runtime_probe_exhausts_should_elect_trusted_without_the_third()
      {
         let plane = PlaneKind::Partitions;