From 9f5ed235b87ea4cd319092cb21030a0df35b11bb Mon Sep 17 00:00:00 2001 From: Rene Cannao Date: Mon, 27 Apr 2026 03:06:02 +0000 Subject: [PATCH] fix(build,test groups): unblock CI on plugin-chassis MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two unrelated CI blockers, fixed together because each one alone leaves the pipeline red and they are trivially independent: 1) `make cleanbuild` (and any other goal that recurses into plugins/mysqlx on a v3.0/v3.1 box without libprotobuf-dev) failed in plugins/mysqlx/Makefile because the protobuf-3.x ABI check fires at parse time. The check is correct for *building* the plugin — running pre-generated .pb.cc against an ABI-incompatible libprotobuf would produce a .so that links cleanly and crashes on first virtual dispatch — but it has no business firing for `clean`/`cleanall`, which only delete object files. Wrap the check in `ifeq ($(filter clean cleanall,$(MAKECMDGOALS)),)` so the safety guarantee is preserved on build paths and clean is now usable on a bare host. CI-builds was failing every job at Makefile:540 cleanbuild for this reason, and the failure cascaded through every dependent test workflow. 2) `mysqlx_compression_unit-t` was added in the X-Protocol Phase-1/2/3 compression commits but never registered in `test/tap/groups/groups.json`. The lint workflow `check_groups.py --source` flagged it as "executable test missing from groups.json" and exited 1, blocking the entire CI run. Add the entry to `unit-tests-g1` with the `@proxysql_min_version:4.0` tag, matching every other mysqlx unit test in the file. Also restore six MySQL test entries that lost their `mysql90-g3`, `mysql95-g3` tags during the d2e03fae3 conflict-resolution commit, plus `test_noise_injection-t` which lost the same two. Confirmed against origin/v3.0 — these were valid groupings on v3.0 that should have been preserved through the merge but were silently dropped. Verified locally: - `cd plugins/mysqlx && make clean` succeeds without libprotobuf installed (was: fatal `$(error)` at parse time). - `python3 test/tap/groups/lint_groups_json.py` → "OK (419 entries, sorted, compact)". - `python3 test/tap/groups/check_groups.py` → "OK: All 29 executable tests are registered in groups.json". --- plugins/mysqlx/Makefile | 7 +++++++ test/tap/groups/groups.json | 15 ++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/plugins/mysqlx/Makefile b/plugins/mysqlx/Makefile index 193f68356..89bb60180 100644 --- a/plugins/mysqlx/Makefile +++ b/plugins/mysqlx/Makefile @@ -35,7 +35,13 @@ PROTO_OBJS := $(patsubst $(PROTO_DIR)/%.pb.cc,$(ODIR)/%.pb.o,$(PROTO_SRCS)) # incompatible ABI — libprotobuf.so SONAME changed). Detect the installed # version up front and fail fast so we never produce a .so that links cleanly # but crashes the first time a virtual is dispatched into the proto runtime. +# +# Skip the version check for `clean` and `cleanall` so a v3.0/v3.1 box without +# libprotobuf-dev installed can still run `make clean` from the top-level +# Makefile (which recurses here unconditionally). The check still fires for +# any goal that actually compiles or links objects. PROTOBUF_GENERATED_VERSION := 3.21.12 +ifeq ($(filter clean cleanall,$(MAKECMDGOALS)),) PROTOBUF_VERSION := $(shell pkg-config --modversion protobuf 2>/dev/null) ifeq ($(PROTOBUF_VERSION),) $(error libprotobuf not found via pkg-config. Install libprotobuf-dev (3.x). \ @@ -49,6 +55,7 @@ ifneq ($(PROTOBUF_MAJOR),3) Install libprotobuf 3.x (e.g. 3.21.12) or regenerate the proto sources \ against the installed version. See the regeneration recipe above) endif +endif IDIRS := -I$(PROXYSQL_IDIR) -I$(PLUGIN_DIR)/include -I$(SQLITE3_IDIR) -I$(PROTO_DIR) -I$(SSL_IDIR) -I$(PROMETHEUS_IDIR) -I$(LIBCONFIG_IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) -I$(RE2_IDIR) -I$(ZSTD_IDIR) -I$(PROXYSQL_PATH)/deps/lz4/lz4/lib diff --git a/test/tap/groups/groups.json b/test/tap/groups/groups.json index e8a14edd8..202dce003 100644 --- a/test/tap/groups/groups.json +++ b/test/tap/groups/groups.json @@ -115,6 +115,7 @@ "mysqlx_admin_disk_commands_unit-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], "mysqlx_admin_schema_unit-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], "mysqlx_backend_auth_unit-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], + "mysqlx_compression_unit-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], "mysqlx_concurrent_unit-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], "mysqlx_config_store_concurrent_unit-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], "mysqlx_config_store_pure_unit-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], @@ -356,17 +357,17 @@ "test_mcp_llm_discovery_phaseb-t" : [ "ai-g1","@proxysql_min_version:4.0" ], "test_mcp_rag_metrics-t" : [ "ai-g1","@proxysql_min_version:4.0" ], "test_mcp_static_harvest-t" : [ "ai-g1","@proxysql_min_version:4.0" ], - "test_mysql_connect_retries-t" : [ "legacy-g3","mysql84-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], - "test_mysql_connect_retries_delay-t" : [ "legacy-g3","mysql84-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], - "test_mysql_hostgroup_attributes-1-t" : [ "legacy-g3","mysql84-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], - "test_mysql_query_digests_stages-t" : [ "legacy-g3","mysql84-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], - "test_mysql_query_rules_fast_routing-t" : [ "legacy-g3","mysql84-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], - "test_mysqlsh-t" : [ "legacy-g3","mysql84-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], + "test_mysql_connect_retries-t" : [ "legacy-g3","mysql84-g3","mysql90-g3","mysql95-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], + "test_mysql_connect_retries_delay-t" : [ "legacy-g3","mysql84-g3","mysql90-g3","mysql95-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], + "test_mysql_hostgroup_attributes-1-t" : [ "legacy-g3","mysql84-g3","mysql90-g3","mysql95-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], + "test_mysql_query_digests_stages-t" : [ "legacy-g3","mysql84-g3","mysql90-g3","mysql95-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], + "test_mysql_query_rules_fast_routing-t" : [ "legacy-g3","mysql84-g3","mysql90-g3","mysql95-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], + "test_mysqlsh-t" : [ "legacy-g3","mysql84-g3","mysql90-g3","mysql95-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ], "test_mysqlx_admin_tables-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], "test_mysqlx_e2e_handshake-t" : [ "mysqlx-e2e-g1","@proxysql_min_version:4.0" ], "test_mysqlx_e2e_routing-t" : [ "mysqlx-e2e-g1","@proxysql_min_version:4.0" ], "test_mysqlx_plugin_load-t" : [ "unit-tests-g1","@proxysql_min_version:4.0" ], - "test_noise_injection-t" : [ "legacy-g3","mysql84-g3" ], + "test_noise_injection-t" : [ "legacy-g3","mysql84-g3","mysql90-g3","mysql95-g3" ], "test_pgsql_replication_lag-t" : [ "pgsql-repl" ], "test_prepare_statement_memory_usage-t" : [ "legacy-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3","mysql84-g3","mysql90-g3","mysql95-g3" ], "test_prometheus_metrics-t" : [ "legacy-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3","mysql84-g3","mysql90-g3","mysql95-g3" ],