codership / galera

Synchronous multi-master replication library
GNU General Public License v2.0
447 stars 177 forks source link

armel build regression in 25.3.29: test failure #572

Closed ottok closed 3 years ago

ottok commented 4 years ago

Latest galera-3 release does not pass builds on armel. Noticed this in the official upload to Debian.

From: https://buildd.debian.org/status/fetch.php?pkg=galera-3&arch=armel&ver=25.3.29-2&stamp=1587128672&raw=0

image

builder_unit_test(["gcs/src/unit_tests/gcs_tests.passed"], ["gcs/src/unit_tests/gcs_tests"])
Running suite(s): GCS component message
100%: Checks: 1, Failures: 0, Errors: 0
Running suite(s): GCS send monitor
100%: Checks: 5, Failures: 0, Errors: 0
Running suite(s): GCS state message
100%: Checks: 5, Failures: 0, Errors: 0
Running suite(s): GCS FIFO functions
100%: Checks: 1, Failures: 0, Errors: 0
Running suite(s): GCS core protocol
100%: Checks: 1, Failures: 0, Errors: 0
Running suite(s): GCS defragmenter
100%: Checks: 1, Failures: 0, Errors: 0
Running suite(s): GCS node context
100%: Checks: 1, Failures: 0, Errors: 0
Running suite(s): GCS membership changes
100%: Checks: 1, Failures: 0, Errors: 0
Running suite(s): GCS group context
100%: Checks: 1, Failures: 0, Errors: 0
Running suite(s): GCS backend interface
100%: Checks: 1, Failures: 0, Errors: 0
Running suite(s): GCS state transfer FC
100%: Checks: 3, Failures: 0, Errors: 0
Total test failed: 0
g++ -o libgalera_smm.so -Wl,-z,relro -shared -Wl,--version-script=/<<PKGBUILDDIR>>/galera-sym.map galerautils/src/gu_abort.os galerautils/src/gu_dbug.os galerautils/src/gu_fifo.os galerautils/src/gu_lock_step.os galerautils/src/gu_log.os galerautils/src/gu_mem.os galerautils/src/gu_mmh3.os galerautils/src/gu_spooky.os galerautils/src/gu_crc32c.os galerautils/src/gu_rand.os galerautils/src/gu_threads.os galerautils/src/gu_hexdump.os galerautils/src/gu_to.os galerautils/src/gu_utils.os galerautils/src/gu_uuid.os galerautils/src/gu_backtrace.os galerautils/src/gu_limits.os galerautils/src/gu_time.os galerautils/src/gu_init.os www.evanjones.ca/crc32c.os galerautils/src/gu_vlq.os galerautils/src/gu_datetime.os galerautils/src/gu_exception.os galerautils/src/gu_serialize.os galerautils/src/gu_logger.os galerautils/src/gu_regex.os galerautils/src/gu_string_utils.os galerautils/src/gu_uri.os galerautils/src/gu_buffer.os galerautils/src/gu_utils++.os galerautils/src/gu_config.os galerautils/src/gu_fdesc.os galerautils/src/gu_mmap.os galerautils/src/gu_alloc.os galerautils/src/gu_rset.os galerautils/src/gu_resolver.os galerautils/src/gu_histogram.os galerautils/src/gu_stats.os galerautils/src/gu_asio.os galerautils/src/gu_debug_sync.os galerautils/src/gu_thread.os galerautils/src/gu_hexdump++.os galerautils/src/gu_uuid++.os gcache/src/GCache_seqno.os gcache/src/gcache_params.os gcache/src/gcache_page.os gcache/src/gcache_page_store.os gcache/src/gcache_rb_store.os gcache/src/gcache_mem_store.os gcache/src/GCache_memops.os gcache/src/GCache.os gcomm/src/conf.os gcomm/src/defaults.os gcomm/src/datagram.os gcomm/src/evs_consensus.os gcomm/src/evs_input_map2.os gcomm/src/evs_message2.os gcomm/src/evs_node.os gcomm/src/evs_proto.os gcomm/src/gmcast.os gcomm/src/gmcast_proto.os gcomm/src/pc.os gcomm/src/pc_proto.os gcomm/src/protonet.os gcomm/src/protostack.os gcomm/src/transport.os gcomm/src/uuid.os gcomm/src/view.os gcomm/src/socket.os gcomm/src/asio_tcp.os gcomm/src/asio_udp.os gcomm/src/asio_protonet.os gcs/src/gcs_params.os gcs/src/gcs_conf.os gcs/src/gcs_fifo_lite.os gcs/src/gcs_msg_type.os gcs/src/gcs_comp_msg.os gcs/src/gcs_sm.os gcs/src/gcs_backend.os gcs/src/gcs_dummy.os gcs/src/gcs_act_proto.os gcs/src/gcs_defrag.os gcs/src/gcs_state_msg.os gcs/src/gcs_node.os gcs/src/gcs_group.os gcs/src/gcs_core.os gcs/src/gcs_fc.os gcs/src/gcs.os gcs/src/gcs_gcomm.os galera/src/mapped_buffer.os galera/src/write_set.os galera/src/data_set.os galera/src/key_set.os galera/src/write_set_ng.os galera/src/trx_handle.os galera/src/key_entry_os.os galera/src/wsdb.os galera/src/certification.os galera/src/galera_service_thd.os galera/src/wsrep_params.os galera/src/replicator_smm_params.os galera/src/gcs_action_source.os galera/src/galera_info.os galera/src/replicator.os galera/src/ist.os galera/src/gcs_dummy.os galera/src/saved_state.os galera/src/libmmgalera++-replicator_smm.os galera/src/libmmgalera++-replicator_str.os galera/src/libmmgalera++-replicator_smm_stats.os galera/src/libmmgalera++-wsrep_provider.os -lpthread -latomic -lrt -lssl -lcrypto
Checking dynamic symbols for 'libgalera_smm.so'...
g++ -o gcomm/test/check_gcomm -Wl,-z,relro gcomm/test/check_fair_send_queue.o gcomm/test/check_gcomm.o gcomm/test/check_trace.o gcomm/test/check_types.o gcomm/test/check_util.o gcomm/test/check_evs2.o gcomm/test/check_pc.o gcomm/src/libgcomm.a galerautils/src/libgalerautils++.a galerautils/src/libgalerautils.a -lpthread -latomic -lrt -lssl -lcrypto -lcheck -lm -lsubunit -lrt
builder_unit_test(["gcomm/test/gcomm_check.passed"], ["gcomm/test/check_gcomm"])
Running suite(s): fair_send_queue
 util
 types
 gcomm::evs
 gcomm::pc
98%: Checks: 87, Failures: 0, Errors: 1
gcomm/test/check_evs2.cpp:1259:E:test_proto_split_merge:test_proto_split_merge:0: (after this point) Test timeout expired
scons: *** [gcomm/test/gcomm_check.passed] Error 1

Handling tests like on armhf might be an option.

Reported originally by Adrian Bunk at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=958040

This issue did not exist in previous galera-3 releases: https://buildd.debian.org/status/logs.php?pkg=galera-3&arch=armel image

This does not apply for galera-4 at 26.4.3 https://buildd.debian.org/status/package.php?p=galera-4&suite=sid image

ottok commented 4 years ago

The platform armel is one of the official Debian platforms. If this issue is not fixed, then the Galera 3 will be removed from Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=961636

Could somebody check this out please? @temeo ?

temeo commented 4 years ago

@ottok Could you try the following patch which should reduce the runtime overhead significantly for may EVS tests:

diff --git a/gcomm/test/check_trace.cpp b/gcomm/test/check_trace.cpp
index 72f2bbd0..d2ab1853 100644
--- a/gcomm/test/check_trace.cpp
+++ b/gcomm/test/check_trace.cpp
@@ -272,10 +272,10 @@ void gcomm::PropagationMatrix::propagate_until_cvi(bool handle_timers)
         }
         if (handle_timers)
         {
-            // Assume that time progresses in millisecond intervals
+            // Assume that time progresses in 50 millisecond intervals
             // and that is fine enough granularity for all tests
             // which deal with timers.
-            gu::datetime::SimClock::inc_time(gu::datetime::MSec);
+            gu::datetime::SimClock::inc_time(50*gu::datetime::MSec);
         }
     }
     while (all_in == false);
ottok commented 4 years ago

I confirm the patch works. In an upload to Debian experimental armel now works: image

https://buildd.debian.org/status/package.php?p=galera-3&suite=experimental

temeo commented 4 years ago

Thanks, will include this change to the next release.

ottok commented 4 years ago

armel in galera-3 25.3.30-1 built fine on Debian buildds, so this issue can be closed.

image

Status of latest galera-4 on armel is also good, see #576.

ottok commented 4 years ago

Re-opening, this is good because a patch downstream: https://salsa.debian.org/mariadb-team/galera-3/-/blob/master/debian/patches/572.patch

Issue should be closed only once this patch is for sure in an upstream master branch.

temeo commented 3 years ago

The patch was included in 3.31 and 4.6.