mirror of https://github.com/sysown/proxysql
feature/aws-rds-monitor
v3.0_fix_ci-mysqlx-cache-and-soak
GH-Actions
v3.0
v3.0_fix_codecov-coverage-path-prefix
issue-1288-load-mysql-variables-feedback
ci/fix-pgsql-socket-g1-cache-key
v3.0_fix_ci-mysqlx-fetch-depth
cleanup/drop-unreachable-port-defaults
feature/pgsql-native-backend-protocol
fix/pgsql-unix-socket
ci-pgsql-socket-g1
v3.0_fix_coverage-gcov-prefix-strip
fix/pgsql-omit-port-zero
aws-rds-bg
fix/jemalloc-page-size-auto-detect
docs/passthrough-auth-spec
feature/ci-codecov-tap-all-groups-callers
fix/run-tests-backtick-leak
ci/zstd-level-15
feature/ci-codecov-tap-all-groups-callees
v3.0_partition-fairness
feature/ci-codecov-tap-legacy-g2
v3.0_partition-gate
fix/ci-cache-restore-path
v3.0_fix-stale-pause-until
feature/perf-improvements-test2
fix/kill-proxysqlgenai-build-flag
feat/passthrough-auth
ci-trigger-tolerate-cleanup-401
fix/5790-mariadb-collation-255
fix/parsersql-1.0.3-pg-set-fixes
issue_5639
pgsql_dns_cache
fix/5755-followup-typecast-digest-fixtures
v3.0_merge-5776-5784
v3.0_latency_consistency_improvement
fix/galera-g5-cluster-start
fix/ghcr-pull-retry
v3.0_cap_violation_5767
ci-mariadb10-galera-GH-Actions
ci/fix-gr-g5-cluster-start
ci-mysql84-gr-g1-g9-GH-Actions
perf/pull-ci-base-from-ghcr
fix/split-test-groups
fix/rename-set-parser-workflow
gh-actions/add-set-parser-algorithm-3-g1
fix/4760-advertise-lenenc-auth-capability
feature/mysqlx-stack-consolidated
feature/mysqlx-asan-coverage-docker-isolation
fix/ci-unit-tests-tsan-project-name
feature/mysqlx-tsan-v3-companion
feature/ci-builds-add-tsan-matrix
ci-reduce-polling-interval
feature/mysqlx-tsan-workflow-only
feature/mysqlx-ci-validation-workflows
feature/mysqlx-test-leak-cleanup
feature/mysqlx-behavioural-tap
feature/mysqlx-parity-cleanup
ci-g5-enable-cluster
feature/mysqlx-tls-passthrough
feature/mysqlx-asymmetric-tls
feature/mysqlx-state-machines
feature/build-tsan-plumbing
feature/mysqlx-observability-p0
fix/mysqlx-review-findings
v3.0-test-ci
ci/fix-mysql-apt-key-expired-v2
ci/fix-mysql-apt-key-expired
mariadb-rpl-helper
fix-fc-parsing
ci/fix-upload-artifact-eacces
ci/fix-cache-prune-permissions
ci/shrink-test-cache
ci/fix-tap-build-target
ci/gh-actions-readme-pointer
ci/fix-mysql84-infradb-label
ci/add-missing-group-reusables
infra-mysql57-binlog
feature/pgbouncer-compat
v3.0_pgsql_sslkeylog_5281
fix/5554-resolution-family-limitation
fix/3p-ci-error-handling
v3.0-5493
v3.0-ci260322_cluster
copilot/extract-server-selection-algorithm
copilot/extract-health-state-logic
copilot/extract-query-rule-matching-logic
copilot/extract-connection-pool-logic
v3.0-set_parser_v3
feature/arm-builds
release-notes-3.0.6-4.0.6-draft
v3.0.6-add-tap-test_stats_table_check
v2.7.3-test260221
v4.0-mcp-stats
copilot/uninstall-amazon-linux-2023
fix-prometheus-labels-test
tap-mcp-client
agent-skill-tap-test
v4.0-tsdb1
v3.0-fix_5256
gh-pages
feature/modern-docs
v4.0
v4.0-fix-vec-search
v4.0_rag_sys_prompt
v4.0_rag_mcp
v4.0-tsdb
feature/v4-docs-init
otel_system_libs
otel_clean
v3.0-5288
otel
otel_2
fix/postgresql-cluster-sync
v3.0-releate_notes_scripts_fixes
test_gh-actions_triggers
postgresql-digest-testing-improvement
v3.0_select_auto_commit
v3.0-5218
fix-5221
fix/5186-proxysql-stop-admin-crash
v3.0-4951
add-claude-github-actions-1763877527835
fix-rpm
v3.0-DS_crash
add-claude-github-actions-1763663272333
add-claude-github-actions-1763663091346
add-claude-github-actions-1763663091411
add-claude-github-actions-1763476725261
add-claude-github-actions-1763476725489
v3.0_optimizations_and_stability
v2.7.3.1
v3.0.3-upgrade_json
v3.0.sonar-cli
v3.0.sonar-config
otel-tracepoint
v3.0.2-merge-upgrade_deps-add_new_distros
v3.0.2-upgrade_deps
v3.0.2-add_new_distros
v3.0-add_more_testing_groups
v3.0-upgrade_prometheus-cpp
v3.0-upgrade_json
v3.0-upgrade_sqlite3
v3.0-upgrade_libmicrohttpd
v3.0-upgrade_curl
v3.0-add_centos10_builds
v3.0-add_fedora42_builds
v3.0_PG_PrepStmt
v3.0-sliced_groups
v3.0_auth_negotiation
v2.7
v2.7-fix_run_name
v3.0_4799_4827
v3.0-3687
v2.7-pmm_runtime_servers_metrics
v2.7-4839
v2.7-4841
v2.7-bump_version_to_2.7.3
2.6.6-4841
v2.x_pg_PrepStmtBase_240714
v3.0-4803-4817
v3.0-4803
v2.7-minorBugs
v3.0-privates
v2.x-logging_mem_2
v2.7_fix
v2.7_amd64_build_fix
v2.7-fix_aux_threads_ssl_leaks
v2.7-fix_ssl_params_leak
v2.7-rm_malloc_conf_on_version
v2.7_compression
v2.7-actions-add-3p-tests-parameter
none
v2.7-fix_hang_on_resume
v2.x-logging_mem
v2.7_servers_defaults
v2.7-mariadb_column_metadata_integrity_check
ssl_optimization
v2.7_reg_test_4716_single_semicolon
v2.7_issue_4707_threshold_resultset_size
v2.7_reg_test_4723_query_cache_stores_empty_result
2.7_randomized_cache_ttl
v3.0_fix_multiple_builds
v3.0_servers_defaults
v2.7-update_actions_triggers_v2
v2.7-update_actions_triggers
v2.6
v2.6.x-update_triggers
v2.6-4646
v2.7.1-update_actions
v2.x
v2.6.x-testing-global-multiplexing-disabled
use-wrlock-in-dns-cache-empty
v2.6.x-fix-darwin
v2.x-admin_list_ciphers
v2.x-sqlite3_pass_exts
v2.x-tap_tests_opt_ssl
v2.6.0-update_to_libhttpserver_v0.19
v2.x_router_2ports
v2.6.0-update_to_openssl_v3.1.5
v2.x-2411025
v2.x-profiling_poc1
v2.x_sha2pass_draft2
v2.x-webui_fixes
v2.6.0-more-makefile-fixes
v2.x-20230914_test
v2.x-20230913_test
v2.5.5-branch
v2.5.5-branch_255_patches
v2.x-aurora_autodiscovery-refactor_cluster_mysql_servers-gr_bootstrap_mode_2
v2.x_mysql_connector_j_fixes
v2.6-deprecate_old_clickhouse
v2.x_refactor_cluster_mysql_servers
v2.x-aurora_autodiscovery
v2.x-zd70545
v2.x-aurora_autodiscovery_shunned_promotion
v2.x-tap20230609
v2.x-test20230530
v2.x_sha2pass_draft2-TEST
v2.x-session_track_system_variables_v2
v2.x-status-variables-for-set-stmts
v2.x-enable_session_state_trackers
v2.x-increase-logging-eof_fast_forward-t
v2.x-3863-special-query
v2.x-session_track_system_variables
v2.x_refactor_read_only_action
v2.x_sha2pass_draft1
v2.2.0-sqliteserver_read_only
v2.x-digest_umap_aux-comparison
v2.4.8
v2.x-4105_4114
v2.x-3583-server_closed_conn
v2.x-group_replication_rework-SHUNNED_promotion
v2.1.0-var-global-multiplex
v2.x-CI-hostname-tap-test-fixes
v2.x-limit-version-check
v2.x-fix_deprecate_eof_warning
v2.x-3698
v2.x_tidb_replica_read
v2.x-HostGroups_attributes
v2.0.18.221009
v2.x-ci_reg_test_3273_ssl_con
TAP_test_restapi
v2.x-tap_tests_groups
v2.x-tap_test_sqlite3_server-t
PRS_3888_3903_2
PRS_3888_3903
v2.x_code_refactor_2206
v2.x-multipacket_poc_1
v2.x-impr_hg_latency_obsv
v2.x-gcc-warnings
v2.x-hg_lock_session_id
v2.x-3768
v2.x-3371
v2.x-ci_verifications
v2.x-thread_local_qps_limit
v2.x-parser_table
v2.1.1-3207
v2.x-qps_limits
v2.x-3711
v2.x-3642
v2.x-3674
v2.x-ssl3_warnings
V2
v2.3.2
v2.3.2_3646_3647
v2.x-client_err_limit_conn_timeout
v2.x-keep_multiplexing_regression_fix
v2.3.2-3628
v2.2.2-to-v2.3.0-7
v2.2.2-to-v2.3.0-7_merge
v2.2.2-to-v2.3.0-6
v2.2.2-to-v2.3.0-6_merge
v2.2.2-to-v2.3.0-5
v2.2.2-to-v2.3.0-4
v2.2.2-to-v2.3.0-3
v2.2.2-to-v2.3.0-2
v2.2.2-to-v2.3.0-1
v2.3.1
v2.0.14-70226
v2.3.0
v2.x-client_err_limit-gr_replication_lag_action
v2.2.2
v2.2.1-3603
v2.2.1-centos7-ASAN
v2.2.1
v2.2.1-3601
v2.2.1-3599
v2.2.1-3597
v2.2.1-3595
v2.2.0-restapi_server_exc_log
v2.x-3574
v2.x-3558
v2.2.0-3546-centos-7-gcc-8
v2.x-3549
v2.x-cluster_large_mysql_users
v2.x-cov_ci_verification
v2.0.14-tb1
v2.0.14-tb1-3494
v2.0.14-tb1-3488
v2.0.14-tb1-3117
v2.0.14-tb1-2762
v2.0.14-2762
v1.4.13-arm
v2.1.1-3296
v2.2.0
v2.0.18
v2.1.1
v2.0.18-3342
v2.0.18-3182
v2.1.1-3184
v2.1.0-revert-da7fdfe14
v2.0.18-revert-da7fdfe14
v1.4.13-70160
v2.0.18-3354
v2.0.18-3350
v2.0.14-3339
1.4.13-70160
v2.0.18-3339
v2.1.1-3317
v2.1.1-3319
v2.0.18-3317
v2.1.2-LBalgo
v2.0.18-1574
v2.1.2-hgman
v2.0.17
v2.1.0
v2.0.17-3288
v2.0.17-3276
v2.0.17-3273
v2.0.16
v2.0.16-3267
v2.0.16-3265
v2.0.16-3262
v2.0.16-3261
v2.1.1-3252
v2.1.1-collation
v2.0.16-3252
v2.0.16-collation
v2.1.0-parser
v2.0.16-3219
v2.0.16-3216
v2.0.16-3201
v2.0.16-2330
revert-3191-v2.0.16-3190
v2.0.16-3204
v2.0.16-3177
v2.0.16-2619
v2.0.16-3190
v2.0.16-3187
v2.1.0-70118
v2.0.16-3133
v2.0.16-3133_ci_verification
v2.0.16-3150
v2.0.16-change_user
v2.0.15
v2.0.15_amd64_fix
v2.0.15_arm64_packages
v1.4.14-ssl
v2.0.15_arm64
v2.1.0-2820
v2.0.15-sslbug
v2.0.15-KillTrx
v2.0.14
v2.0.14-ch_build_fix
v2.0.14-focal
v2.0.14-valgrind20200904
v2.1.0-3042
v2.0.14-3035
v2.0.14-3036
v2.0.14-2955
v2.0.14-vars
v2.0.14-3005
v2.0.14-3003
v2.0.14_2970_2979
v2.0.14-NOTSOCK
v2.1.0'
v2.0.14-2958
v1.4.10-zd
v2.0.13
v2.0.13-autocommit_fix
v2.1.0-2892
v2.0.13-2711
v2.0.13-duplicated_variables
v2.0.13-duplicated_variables_for_2.1.0
v2.0.12-deprecate_eof
v2.1.0-1377
v2.1.0-admin_queries
v2.0.12-var-global-multiplex
v2.1.0-var-foreign-key
v2.0.12
v2.0.12-tab-small-log
v2.0.12-var-foreign-key
v2.0.12-var-long-query-time
v2.0.12-galera-shunned
v2.1.0-admin_queries_2
v2.1.0-tap-rm-config
v2.0.12-tap-rm-config-test
v2.1.0-QP_stmt_3
v2.0.11-fix-multi-2-ci
v2.0.11-fix-multi
v2.0.11-266_0-3
2.1.0
v2.0.11
v2.1.0-track-vars
v2.1.0-track-variables
v2.0.11-track-variables
v2.0.11-2526
v2.0.11-tap-tests
v2.0.13-2698-commit1
v2.0.10-galera-pxc-maint-mode
v2.0.11-track-vars
v2.0.10-2647
v2.0.11-track
v2.0.11-track-session-vars
v2.0.9-var-array-review
v2.0.11-stats
v2.0.10
v2.0.10-centos67
v1.4.14.2
1.4.14.2
v1.4.14-show-warnings
v2.0.9
v2.0.9-var-array_2
v2.0.9-var-array
v1.4.16
v2.0.8
val214-changing_charset
v2.0.6
v1.4.16-1922_2
v1.4.13.2
v2.0.4-charset248
v2.0.5
v1.4.10-67841
v2.0.4
v2.0.4-sqlite327
v2.0.3
v2.0.2
v1.4.15
v2.0.1
v1.4.14
v2.0.0
v1.4.14-ping_shun
v1.4.14-1828
v1.4.14-latency_awareness
v1.4.12
v1.4.13-admin_deadlock
v2.0.0-improve_speed
v1.4.13
v1.4.13-autocommit_revert
v1.4.11.2
v1.4.13-ps
v2.0.0_bionic_deb_fix
v2_962
v1.4.12-1640
v1.4.11-names_tz
v1.4.12-1693
master
v1.4.11
v1.4.10
v1.4.6
v1.3.10
jenkins_test
v2.0.0-cachegrind
v1.4.9
v2.0-lab
v149_1511
v149_1382
v1.4.7-f2
v1.4.7-f1
v149_1491
v1.4.5-kub
v1.4.8
v2.0-web2
v1.4.3
v1.4.7
bsd_install_update
v1.4.2
v1.4.1-ch2
v1.4.1
v1.3.9
v1.4.1-ch
v1.3.8
v1.3.8-dev
v1.3.7
v1.3.7-dev
v1.3.6-dev
v1.4.0-clickhouse
v1.4.0
v1.3.6
v1.3.5
v1.3.5-dev
v1.4.0-955
v1.3.4
v1.3.4-dev
v1.3.3
v1.3.3-dev
v1.3.2
v1.3.2-dev
v1.3.2-766
v1.3.0h
v1.3.1-utf8mb4
1.4.0-840
v1.3.1
v1.2.6
v1.3.0
v1.4.0-797
v1.2.5-715
v1.2.5
v1.2.4-lowmem
v1.3.1-dev-mem
v1.2.0
connleak
lab-1.2.0
v1.1.2
T107_add_proxysql_consul_requirements
T89_write_consul_integration_doc
T98_consul_multi_table_config
mongoose
evhttp
SQLiteServer
1.0
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
2.7.3
2.6.6.1
3.0.1
2.7.2
3.0.0
2.6.6
2.7.1
2.7.0
2.6.5
2.6.4
2.6.3
2.6.2
2.6.1
2.5.5
2.6.0
2.5.4
2.5.3
2.5.2
2.5.1
2.4.8
2.5.0
2.4.7
2.4.6
2.4.5
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.2
2.3.1
2.3.0
2.2.2
2.2.1
2.2.0
2.0.18
2.1.1
2.0.17
2.0.16
2.0.15
2.0.14
2.0.13
2.0.12
2.0.11
2.1.0
2.0.10
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
1.4.16
1.4.15
2.0.1
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.3.10
1.4.9
2.0.0
1.4.8
1.4.7
1.4.6
1.4.4
1.4.3
1.4.2
1.3.9
1.3.8
1.4.1
1.3.7
1.4.0
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0h
1.3.0g
1.3.0f
1.3.0e
1.3.0d
1.3.0c
v1.3.0b
1.4.5
v1.1.0
v1.1.0-rc
v1.1.1-beta
v1.1.1-beta.1
v1.1.1-beta.2
v1.1.1-beta.3
v1.1.1-beta.4
v1.1.1-beta.5
v1.1.1-beta.6
v1.1.2
v1.2.0a
v1.2.0b
v1.2.0c
v1.2.0d
v1.2.0e
v1.2.0f
v1.2.0g
v1.2.0h
v1.2.0i
v1.2.0j
v1.2.0k
v1.2.1
v1.2.2
v1.2.3
v1.2.4
v1.2.4.0923
v1.2.5
v1.2.6
v1.3.0
v1.3.0a
v1.3.0g
v1.3.0h
v1.3.1
v1.3.10
v1.3.2
v1.3.2-1
v1.3.3
v1.3.4
v1.3.5
v1.3.6
v1.3.7
v1.3.8
v1.3.9
v1.3.9-prev.1
v1.4.0
v1.4.1
v1.4.10
v1.4.11
v1.4.12
v1.4.13
v1.4.14
v1.4.15
v1.4.16
v1.4.2
v1.4.3
v1.4.4
v1.4.5
v1.4.6
v1.4.7
v1.4.8
v1.4.9
v2.0.0-beta.1
v2.0.0-rc1
v2.0.0-rc2
v2.0.1
v2.0.10
v2.0.11
v2.0.12
v2.0.13
v2.0.14
v2.0.15
v2.0.16
v2.0.17
v2.0.18
v2.0.2
v2.0.3
v2.0.4
v2.0.5
v2.0.6
v2.0.7
v2.0.8
v2.0.9
v2.1.0
v2.1.1
v2.2.0
v2.2.1
v2.2.2
v2.3.0
v2.3.1
v2.3.2
v2.4.0
v2.4.1
v2.4.2
v2.4.3
v2.4.4
v2.4.5
v2.4.6
v2.4.7
v2.4.8
v2.5.0
v2.5.1
v2.5.2
v2.5.3
v2.5.4
v2.5.5
v2.6.0
v2.6.1
v2.6.2
v2.6.3
v2.6.4
v2.6.5
v2.6.6
v2.7.0
v2.7.1
v2.7.2
v2.7.3
v3.0.0-alpha
v3.0.1
v3.0.2
v3.0.3
v3.0.4
v3.0.5
v3.0.6
v3.0.7
v3.0.8
v3.0.9
v3.1.6
v3.1.7
v3.1.8
v3.1.9
v4.0.6
v4.0.7
v4.0.8
${ noResults }
263 Commits (6cdd4e697eb86982e3dfd2ceab009ead5da0efcb)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
1d2eea260c |
ci(asan-coverage): containerise unit-tests workflow + extract runner script
Ports CI-unit-tests-asan-coverage from host-direct execution to Docker isolation, mirroring the architecture established for TSAN in PR #5725. Closes #5721 for the ASAN-coverage half. Why: Two parallel CI runs on a shared / self-hosted runner can no longer collide on the host filesystem (no /opt/proxysql contention, no toolchain skew between build env and run env). The runner stays clean — no host-direct `apt install lcov fastcov`, no host-direct `make build_deps_debug` polluting it. Architecture: * Build phase: `make ubuntu24-tap` with WITHASAN=1 WITHGCOV=1 NOJEMALLOC=1 PROXYSQLGENAI=1, runs entirely inside the ubuntu24_dbg_build container (same path TSAN uses). * Test+coverage phase: `docker compose run --rm` re-enters the same image and invokes the new canonical runner script test/infra/control/run-unit-tests-asan-coverage.bash. The workflow YAML is now a thin wrapper around the script — local repro and CI execute the exact same command. The extracted script: * Iterates every executable under test/tap/tests/unit/ (drop-in replacement for the old host-direct loop). Deliberately not routed through run-tests-isolated.bash because that runner's dual-directory test discovery (test/tap/tests/ in addition to .../unit/) pulls in misclassified entries from groups.json that aren't actually unit tests (e.g. unit-strip_schema_from_ query-t lives in test/tap/tests/, needs backend infra, fails silently as a host-direct binary). Cleaning that up is out of scope here. * Captures baseline (--initial) + post-test LCOV, merges, filters /usr + deps + test, runs genhtml. * Idempotent on lcov / libprotobuf-dev — only apt-installs when missing so re-running locally inside the same container is fast. * Honours ASAN_OPTIONS from the caller; defaults match the env block at the top of the workflow. PROXYSQLGENAI=1 stays (instead of dropping to PROXYSQL40=1) — the unit-test set includes genai_*_unit-t binaries that only build under the genai tier. Coverage scope is unchanged from the pre-Docker workflow. Verified locally — same `make ubuntu24-tap` + `docker compose run --rm ... run-unit-tests-asan-coverage.bash` invocation the workflow uses: 83/83 unit tests pass under ASAN, coverage report generated (13.1% lines / 21.3% functions, expected for the unit-only scope), lcov.info + coverage/html/ + unit-test-logs/ all land in the host workspace via the bind mount. Workflow YAML net diff: -185 lines (the test+coverage logic moved out of the YAML into the script). |
2 months ago |
|
|
540fb5b4e6 |
ci(tsan): drop bogus -p PROJECT from docker compose run
Fixes a regression introduced in
|
2 months ago |
|
|
6099d06c1e |
ci(tsan): address review findings on PR #5725
Two small follow-ups from the CodeRabbit + Gemini review:
* include/makefiles_vars.mk — emit a $(warning ...) for
vm.mmap_rnd_bits=28 from the WITHTSAN=1 branch, mirroring the
existing ASAN warning. Both sanitizers need the same 28-bit
ASLR ceiling and the original commit's claim that "the warning
above already covers both" was wrong: the ASAN warning only
fires under WITHASAN=1, so a TSAN-only build was running
silent.
* .github/workflows/CI-unit-tests-tsan.yml — fix the compose
project-name transform to match the Makefile. The Makefile's
binaries/proxysql% rule uses `${GIT_VERSION/./}` (strip first
dot only); the workflow was using `${GIT_VERSION//./}` (strip
all dots), which put `docker compose run` into a different
project namespace than `make ubuntu24-tap` had declared. In
practice the Makefile tears down its project before exiting
so the visible effect was just a redundant fresh
network/volume on the run step, but the build-chain contract
is "same project name throughout" and we should honour it.
Comment block updated so it stops claiming the two transforms
are the same operation.
|
2 months ago |
|
|
50f97de7a9 |
ci: add CI-unit-tests-tsan workflow + mysqlx-tsan-g1 TAP group
Wires up Phase 2 of issue #5675: ThreadSanitizer coverage for the mysqlx + plugin-chassis unit tests. Both the build AND the test execution run inside the ubuntu24_dbg_build container — staying within the isolation contract that all ProxySQL CI honors. Two parallel runs on a shared / self-hosted runner can never collide on the host filesystem (no /opt/proxysql contention, no toolchain contention, no shared-lib version skew between the build env and the run env). The build flag plumbing: * include/makefiles_vars.mk gains a WITHTSAN=1 branch that sets WASAN := -fsanitize=thread and forces NOJEMALLOC=1. WITHTSAN is mutually exclusive with WITHASAN — both reroute the same memory-management hooks and the linker rejects the combo. * docker-compose.yml passes WITHTSAN through to the build container alongside WITHASAN/WITHGCOV. PROXYSQL40 also gets explicit passthrough so chassis-only callers don't need to opt into the broader PROXYSQLGENAI cascade just to build the mysqlx plugin. * docker/.../entrypoint.bash installs libprotobuf-dev on demand when either PROXYSQL40=1 or PROXYSQLGENAI=1 is set (mysqlx plugin's pkg-config check) and forwards whichever flag the operator set explicitly to make. The workflow: * Lowers vm.mmap_rnd_bits to 28 on the runner — TSAN can't reserve its shadow region on Linux 5.18+ default of 32. The privileged container inherits the host setting, so a host-side sysctl is sufficient (same constraint the existing ASAN-coverage workflow already documents). * Runs `make ubuntu24-tap` for the build, then re-enters the same image via `docker compose run --rm` for test execution. Same volume mount (./:/opt/proxysql), same toolchain, same runtime libs — what the binaries linked against is what they load. The compose project name is recomputed from git describe so `run` lands inside the namespace `up` declared. * Installs python3-packaging + libprotobuf-dev on the fly inside the test container. The build image is package-build-focused and ships neither: python3-packaging is needed by run-tests-isolated.bash for @proxysql_min_version filtering, and libprotobuf-dev provides the libprotobuf.so.32 the mysqlx_*-t binaries link against dynamically (the build entrypoint already installs it during build, but a fresh `docker compose run` container starts clean). The TAP group: * mysqlx-tsan-g1/env.sh sets SKIP_PROXYSQL=1 (no daemon, no backend infra needed for unit tests) and TSAN_OPTIONS to collect every race in one run rather than aborting on the first. * groups.json registers all mysqlx_*-t and plugin_*-t binaries that build cleanly on plain v3.0; mysqlx_admin_commands_unit-t and mysqlx_robustness_unit-t are deliberately excluded (pre-existing v3.0 baseline failures unrelated to TSAN, also skipped in unit-tests-g1's known-failures list). plugin_runtime_views_unit-t is excluded because plain v3.0 has the .cpp file but the Makefile's PROXYSQL40 UNIT_TESTS list never registers it for build — the test suite expects chassis features added later in the stack. Verified locally — same `make ubuntu24-tap` build path the workflow uses, then `docker compose run --rm ubuntu24_dbg_build ... run-tests-isolated.bash` for execution: 26/26 unit tests pass under TSAN with no races reported. |
2 months ago |
|
|
d4427731b7 |
Merge remote-tracking branch 'origin/v3.0' into plugin-chassis
Picks up the v3.0 fixes that unblock plugin-chassis CI: - |
2 months ago |
|
|
47ab14148f |
ci: add libprotobuf-dev to unit-tests-asan-coverage workflow
This workflow runs directly on the GitHub runner host (not inside one of the deb/rhel/suse-compliant docker containers whose entrypoints already install libprotobuf-dev on demand), so the dependency must be installed in the workflow itself. Without it, building with PROXYSQLGENAI=1 fails at Makefile parse time: the top-level Makefile recurses into plugins/mysqlx (PROXYSQL40 is implied by PROXYSQLGENAI), and plugins/mysqlx/Makefile's protobuf 3.x ABI guard aborts when it cannot find pkg-config metadata for protobuf. The rest of the dependency list mirrors INSTALL.md's Ubuntu section, to which libprotobuf-dev was added separately for general builds; this brings the workflow's package set in line with that. |
2 months ago |
|
|
99a745f6ed |
ci(mysqlx): wire mysqlx-soak group into TAP harness end-to-end
Completes the four follow-up items documented in the mysqlx-soak
group's README. After this commit, the harness scripts run inside
the proper docker-isolated TAP framework — no more ad-hoc invocations.
## (1) Add mysql-connector-python to proxysql-ci-base
test/infra/docker-base/Dockerfile installs python3 + a few pip
packages but lacked the X DevAPI bindings. Add
`mysql-connector-python` to the existing `pip3 install` line. Image
must be rebuilt (`docker build -t proxysql-ci-base:latest
test/infra/docker-base`); the new soak-tests CI job rebuilds
unconditionally per run, so CI gets the new package automatically.
## (2) TAP wrappers for the harness scripts
Two new Bash TAP entries under test/tap/tests/:
* test_mysqlx_soak_behavioral-t.sh — emits two TAP assertions:
scenario 1 = SIGTERM-mid-traffic (the harness signals the proxysql
container with `docker kill -s TERM proxysql.${INFRA_ID}` mid-run
and verifies clients receive Mysqlx::Error 1053 instead of TCP
RST); scenario 2 = LOAD MYSQLX ROUTES TO RUNTIME mid-traffic.
Both fall back to "skip" if mysql-connector-python is missing,
or if the proxysql container is unreachable after scenario 1.
* test_mysqlx_soak_stress-t.sh — single TAP assertion that wraps
stress.py. Defaults to 60s/20-clients to fit a CI timeout; long
soaks invoke stress.py directly with --duration 24h per issue
#5677.
Both wrappers default the connection params to the docker-internal
hostname `proxysql` (via network alias) so they work from inside the
test-runner container; environment overrides let local invocations
point elsewhere.
## (3) Register in groups.json
Two new entries:
"test_mysqlx_soak_behavioral-t" : [ "mysqlx-soak-g1", "@proxysql_min_version:4.0" ],
"test_mysqlx_soak_stress-t" : [ "mysqlx-soak-g1", "@proxysql_min_version:4.0" ],
Both use the @proxysql_min_version:4.0 tag (the harness only makes
sense in chassis-aware builds). Lint passes (421 entries, sorted).
## (4) CI job
Add `soak-tests` job to .github/workflows/CI-mysqlx.yml. Pattern
mirrors CI-taptests-pgsql-cluster.yml: restore build cache, build
plugin, build proxysql-ci-base, ensure-infras (TAP_GROUP=mysqlx-soak),
run-tests-isolated (TAP_GROUP=mysqlx-soak-g1), cleanup, archive logs
on failure.
The job runs after unit-tests passes (same dependency as e2e-tests)
and is independent of e2e-tests (parallel execution OK).
## What this covers
* Builds the plugin and rebuilds the test image with the X DevAPI.
* Stands up a real MySQL 8.4 backend (3-node replication via the
existing infra-dbdeployer-mysql84 image, X protocol on port
23306-23308 inside the docker network).
* Stands up ProxySQL in a container with the plugin .so bind-mounted
and a per-group config that declares plugins=("...").
* The mysqlx-soak setup-infras hook provisions one route, one user,
one endpoint, reloads, and verifies the listener bound on 6603.
* Two TAP tests run inside the test-runner container against the
freshly-stood-up ProxySQL, exercising the plugin end-to-end.
## What this does NOT cover
* Long-running soaks (24-72h). The CI job runs a 60s stress for
signal; the full soak per issue #5677 needs staging.
* All compression/TLS combinations. The harness's defaults are
uncompressed + clear-text; matrix expansion is future work.
* Listener-port collisions across parallel CI runs. INFRA_ID
isolates docker-network names but the TAP_GROUP-scoped MYSQLX_
PROXYSQL_PORT (default 6603) is a single value. CI runs are
serial per workflow concurrency group; not a problem today but
worth flagging if matrix-fanout is added.
|
2 months ago |
|
|
df7e335e23 |
fix(ci,infra): pass PROXYSQL40 to plugin build, remove orphaned infra files
Three CI/infra clean-ups that fall out of the independent review. 1) .github/workflows/CI-mysqlx.yml: pass PROXYSQL40=1 (and the implied tier flags) to `make` when building the mysqlx plugin. plugins/mysqlx/Makefile picks up tier flags from the environment and propagates them as -DPROXYSQL40 / -DPROXYSQL31 / -DPROXYSQLFFTO / -DPROXYSQLTSDB / -DPROXYSQLGENAI on every compile line. If the workflow runs `make` with no flags, the plugin is built without -DPROXYSQL40 — meaning the ProxySQL_PluginDescriptor and ProxySQL_PluginServices struct layouts compiled into the plugin .so differ from the layouts that the cached src/proxysql binary (built upstream by CI-trigger with the full tier flags) sees. The link succeeds and the first virtual dispatch into a plugin callback crashes or, worse, corrupts memory silently. The Makefile already warns about exactly this in lines 56-61. Pass the flags explicitly. 2) test/tap/groups/mysqlx-e2e/infras.lst + test/infra/docker-compose-mysqlx.yml: delete both — they are orphaned. `infras.lst` referenced `infra-mysqlx`, which has never existed under `test/infra/`. ensure-infras.bash would have errored on it — except `mysqlx-e2e/env.sh` exports SKIP_PROXYSQL=1, which makes ensure-infras.bash short-circuit at line 38 before it reaches the docker-compose loop. So infras.lst was both wrong AND unreachable — the worst combination for the next reader trying to figure out how the e2e group is wired. Similarly, `test/infra/docker-compose-mysqlx.yml` was a docker-compose file that no `infra-*/` directory points at, left over from an early plan to use Docker for the mysqlx backend that was abandoned in favour of dbdeployer. Both files are dead weight; delete them. 3) test/tap/groups/mysqlx-e2e/env.sh: comment the unconventional wiring so the next reader doesn't have to reverse-engineer it. Document why this group has no `infras.lst` / no `infra-mysqlx/` dir, why CI uses inline dbdeployer instead of ensure-infras.bash, and that setup-infras.bash + pre-cleanup.bash exist for local-only ad-hoc use today. 4) test/tap/tests/Makefile: drop the dangling `test_mysqlx_listener_smoke-t` target. That test was retired together with the dormant MysqlxWorker path in commit 98aee7db2; the unit/Makefile no longer builds it. The wrapper target in test/tap/tests/Makefile remained and would fail `make test_mysqlx_listener_smoke-t` with "no rule to make target". Replace with a NOTE pointing at where the listener-lifecycle coverage actually lives now (mysqlx_thread_unit-t, mysqlx_robustness_unit-t). Verified: the plugin still builds clean with the tier flags exported to the sub-make. No behavioural change for the docker-using groups. |
2 months ago |
|
|
78f06fcade |
ci: fix macOS package naming and release upload
The 6 macOS workflows had three interacting bugs:
1. All three tier variants (stable/v31/genai) produced tarballs with
the same filename (proxysql-${GIT_VERSION}-macos-<arch>.tar.gz),
where GIT_VERSION came straight from `git describe`. The Makefile
bumps the version for v31/genai builds, but the workflow did not
mirror that — so a v3.1 or v4.0 binary was packaged under a 3.0.x
name.
2. `gh release upload --clobber` then overwrote the tarballs of the
sibling tier jobs racing on the same filename, leaving only one
surviving macOS artifact per arch across the three tiers.
3. `gh release create v3.0-head --draft 2>/dev/null || true` spawned
extra duplicate drafts, and `gh release upload v3.0-head` picked a
non-deterministic draft (often a stale SHA) rather than the
canonical current-SHA draft used by the Linux package workflows.
Fixes, matching the Linux CI-package-* workflows:
- Add an `init_release` job that finds or creates the canonical draft
for the current SHA+tag via a race-tolerant lowest-id-wins loop, and
passes RELEASE_ID to the build job.
- Compute the tarball version by mirroring the Makefile's tier bump
(major+1 for GENAI, minor+1 for 31), so artifacts are named
proxysql-3.0.8-…, proxysql-3.1.8-…, proxysql-4.0.8-… — consistent
with the Linux RPM/DEB naming convention.
- Upload by release ID with per-asset delete-if-exists, eliminating
cross-tier clobber and stale-draft targeting.
|
2 months ago |
|
|
ac6438955f |
ci: drop shared concurrency group on init_release, use race-tolerant find-or-create
The previous design serialized all init_release jobs via
concurrency:
group: release-init-${{ github.sha }}
cancel-in-progress: false
That ran into GitHub's "1 running + 1 pending" rule on concurrency
groups: when a third job tries to enter the group, the currently-
pending one is cancelled in favor of the newer arrival. Triggering all
156 package workflows at once caused ~142 of them to be cancelled
before their init_release even got a chance to run.
Replace serialization with a race-tolerant find-or-create loop that
all 156 init jobs run in parallel:
- Stagger start 0-9s to reduce thundering-herd on the first query.
- Up to 6 attempts: look up drafts matching this SHA + tag_name
(strongest key); use the one with the lowest id (deterministic
winner).
- If none exist, POST create; sleep 2-5s; re-query. Multiple creates
may race during the initial burst, producing a handful of
duplicate drafts, but every worker converges on the same
lowest-id draft.
- Fail hard after 6 attempts.
Duplicates from races are not deleted here (deletion under contention
risks a worker using a just-deleted release). A follow-up can sweep
zero-asset duplicate drafts periodically if the list grows.
|
2 months ago |
|
|
1dd62fc4aa |
ci: expand amd64 package workflows to include clang and dbg variants
ARM64 only has the plain gcc variant per distro (13 × 3 tiers = 39).
amd64 supports three build variants per distro in the Makefile — plain
gcc, -clang, and -dbg — so the per-distro workflow count should be
3× higher: 13 distros × 3 variants × 3 tiers = 117 amd64 workflows.
Naming: CI-package-amd64-<distro>[-<tier>][-<variant>]
ex: CI-package-amd64-almalinux10
CI-package-amd64-almalinux10-clang
CI-package-amd64-almalinux10-dbg
CI-package-amd64-almalinux10-v31
CI-package-amd64-almalinux10-v31-clang
CI-package-amd64-almalinux10-v31-dbg
CI-package-amd64-almalinux10-genai
CI-package-amd64-almalinux10-genai-clang
CI-package-amd64-almalinux10-genai-dbg
Internally each workflow now exposes both DIST (distro) and
MAKE_TARGET (distro + variant suffix) env vars; the build step uses
MAKE_TARGET so the -clang / -dbg Makefile targets are invoked
correctly. Shared init_release concurrency group and one-draft-per-SHA
release dedup (Option A) unchanged and applies to all 156 workflows.
|
2 months ago |
|
|
5bd72d1f28 |
ci: add amd64 package workflows, fix upload glob, dedupe release drafts
- Add 39 CI-package-amd64-<distro>[-tier].yml workflows mirroring the
existing ARM64 matrix (13 distros × 3 tiers: stable, v31, genai) on
ubuntu-24.04 runners.
- Fix the upload glob in all 78 package workflows: the previous
`binaries/*.[mb]` matched only single-char extensions (nothing), so no
artifacts were ever attached. Restored to `binaries/*[mb]` (matches
.rpm / .deb trailing char).
- Replace the single-job `gh release create --draft` pattern (which
produced one brand-new draft per workflow run because GitHub does not
dedupe drafts by tag name) with a two-job structure:
- init_release: serialized across all 78 workflows via
concurrency.group=release-init-<sha> with cancel-in-progress:false.
Finds or creates one draft named "<branch>-head - <git describe>"
and outputs its release_id.
- build: needs init_release, uploads artifacts by release ID using
the uploads.github.com endpoint (idempotent: deletes any existing
asset with the same name before re-upload).
Result: exactly one draft release per commit, hidden, containing all
package artifacts from every distro × tier × arch combination.
|
2 months ago |
|
|
6220ebf726 |
fix: macOS build - sqlite3 link and missing libtool
- deps/Makefile: Use -dynamiclib -undefined dynamic_lookup for sqlite3 shared lib on Darwin (Linux -shared allows unresolved symbols, macOS does not). Also link OpenSSL for SHA1 symbol resolution. - workflows: Add libtool to brew install (provides glibtoolize needed by curl's autoreconf). |
2 months ago |
|
|
05848ef2e4 |
ci: fix macOS workflows - don't override PATH globally
Homebrew's git/make shadow system tools causing checkout to fail (sed, basename, uname not found). Move PATH override into the build step only and remove make/git from brew install list (already on runner). |
2 months ago |
|
|
1c654339c9 |
ci: add 6 on-demand macOS build workflows
Add workflow_dispatch-only workflows for building ProxySQL natively on macOS (no Docker). Covers Intel (macos-13) and Apple Silicon (macos-14) across 3 feature tiers (stable, PROXYSQL31, PROXYSQLGENAI). Each workflow installs Homebrew dependencies, builds with make -j, creates a tarball of the binary with sha256, and uploads to the <branch>-head draft prerelease. |
2 months ago |
|
|
4cd48b9db6 |
ci: replace artifact upload with GitHub Release upload
Artifact storage limit (500MB) is too small for 39 packages (~40MB each). Switch to gh release upload to a <branch>-head draft prerelease, matching the existing ci-package-build.yml pattern. Create the release if it doesn't exist, then upload with --clobber. Update permissions from contents:read to contents:write for release uploads. |
2 months ago |
|
|
53e9716482 |
ci: add permissions block and remove unused BIN_PKG/BIN_HASH
Add explicit permissions (contents: read, checks: write) to ensure checks-action works under read-only default token permissions. Remove dead BIN_PKG and BIN_HASH environment variable assignments that could corrupt $GITHUB_ENV with multi-line ls output. |
2 months ago |
|
|
cec72a8226 |
ci: add 39 on-demand ARM64 package build workflows
Add workflow_dispatch-only workflows for building ARM64 packages across 13 distros and 3 feature tiers (stable/v3.0, PROXYSQL31/v3.1, PROXYSQLGENAI/v4.0). Each workflow is self-contained, runs on ubuntu-24.04-arm, and uploads the built .deb/.rpm as a 90-day workflow artifact. |
2 months ago |
|
|
7ca0d153cc
|
Merge pull request #5654 from sysown/fix/pgsql-active-tx-on-broken-conn
fix(pgsql): surface mid-transaction backend errors instead of silently replaying |
2 months ago |
|
|
10c9dc8ee5 |
ci: add CI-mysql56-single-g1 caller for the mysql56-single-g1 TAP group
Context ------- PR #5166 introduced a new TAP group 'mysql56-single-g1' backed by 'test/infra/infra-dbdeployer-mysql56-single/' (a dbdeployer-based MySQL 5.6 fixture). Four new tests register against this group in 'test/tap/groups/groups.json': - mysql-session_track_variables_enforced-t - mysql-session_track_variables_ff_mysql56-t - mysql-session_track_variables_optional-t Without a dedicated CI workflow these tests are never exercised automatically: the generic 'CI-taptests-groups' plumbing hardcodes 'infradb: [ mysql57 ]' in its matrix, and no existing 'CI-mysql*' caller routes to the 'mysql56-single-g1' group. Changes ------- This commit adds the v3.0-branch half of the standard caller/reusable pair, following the architecture documented in 'doc/GH-Actions/README.md' (section "The dedicated-reusable pattern"). The file is modelled on 'CI-mysql84-g1.yml' verbatim -- only the workflow name and the 'uses:' target change. Like every other 'CI-*.yml' caller on v3.0: - Triggers on 'workflow_run' after 'CI-trigger' completes successfully (so the build/test caches are guaranteed populated) plus manual 'workflow_dispatch'. - Uses 'concurrency.cancel-in-progress: true' to cancel any in-flight run when a new push lands on the same branch. - Delegates all real work to 'ci-mysql56-single-g1.yml' on the 'GH-Actions' branch. The reusable half of the pair -- 'ci-mysql56-single-g1.yml' on the 'GH-Actions' branch -- is added in a separate commit on that branch. Until both halves are present this caller will fail with "workflow not found". That is the expected landing order per the project's CI workflow: the reusable ships first on 'GH-Actions', then the caller ships on v3.0, matching how 'CI-mysql84-g1.yml' was introduced (see 'doc/GH-Actions/README.md' section "Adding a new test group end-to-end"). |
2 months ago |
|
|
c2200e472d |
ci(lint): catch TAP tests missing from groups.json on every PR
Previously CI-lint-groups-json only triggered when groups.json itself was
edited and only checked formatting. That can't catch the "author added a
new test source but forgot to register it" case (which is exactly what
happened with pgsql-retry_guard_in_txn_on_broken_backend-t before this
series).
- Drop the paths filter so the workflow runs on every pull_request/push.
- Add a --source mode to check_groups.py that scans test/tap/tests* for
*-t.{cpp,sh,py,php} (and extension-less -t scripts) and flags any
source file not registered in groups.json as an ERROR. Requires no
build — runs in seconds.
- The reverse direction (entry in groups.json with no matching source)
is a NOTE in source mode, because a handful of binaries are built
from differently-named sources via explicit Makefile targets (e.g.
mysql_reconnect_libmariadb-t from mysql_reconnect.cpp).
- Executable mode behavior is unchanged; run-multi-group.bash keeps
calling check_groups.py with no flag.
|
2 months ago |
|
|
c723ede0cf |
Merge remote-tracking branch 'origin/plugin-chassis' into ProtocolX-rebased
# Conflicts: # lib/ProxySQL_PluginManager.cpp # plugins/mysqlx/Makefile # plugins/mysqlx/include/mysqlx_plugin.h # plugins/mysqlx/include/mysqlx_session.h # test/tap/groups/groups.json # test/tap/tests/test_mysqlx_listener_smoke-t.cpp # test/tap/tests/unit/Makefile |
2 months ago |
|
|
b3d4de0bc8 |
Merge remote-tracking branch 'origin/v3.0' into plugin-chassis
# Conflicts: # test/tap/groups/groups.json |
2 months ago |
|
|
e462bb0cb4 |
fix: address PR review feedback
Resolves in-scope review items on PR #5651. Items deemed out of scope for this PR (O(N) admin dispatch lookup, per-plugin mutex, worker backpressure, runtime-reload DDL semantics, E2E tests going through ProxySQL rather than directly to MySQL) are tracked elsewhere; items that were already fixed in earlier commits on this branch (Admin_Handler MYSQLX alias vectors, Admin_Bootstrap PROXYSQL40 gating) are acknowledged as stale. Changes: * .github/workflows/CI-mysqlx.yml: add `include/` and `src/proxysql_global.cpp` to both `sparse-checkout` blocks. The plugin Makefile discovers the repo root via `src/proxysql_global.cpp` and includes headers from `include/`; without these, `make` inside `plugins/mysqlx` climbs up to `/` or fails on missing includes. (coderabbit: "Checkout the files required by the plugin Makefile.") * .github/workflows/CI-mysqlx.yml: `fail-on-cache-miss` now depends on `github.event_name == 'workflow_run'`. Strict behavior is retained for the cache-driven pipeline that CI-trigger populates; manual `workflow_dispatch` runs no longer fail when the SHA-specific cache doesn't exist yet. (coderabbit: "Don't make manual runs depend on a pre-existing build cache.") * plugins/mysqlx/Makefile: replace the unbounded `while [ ! -f ./src/proxysql_global.cpp ]; do cd ..; done` with a bounded upward walk (up to 12 levels) that fails fast with a clear error message when the marker file is missing — e.g. on a sparse checkout that omits `src/proxysql_global.cpp`. Build output no longer appears to hang indefinitely. (coderabbit: "Prevent root discovery from hanging on sparse or invalid checkouts.") * doc/PLUGIN_API.md: update startup sequence from the old three-phase (load → init → start) description to the four-phase chassis lifecycle (load → register_schemas → admin materialize → init → start). Document the `register_schemas` descriptor field and the `abi_version` / `PROXYSQL_PLUGIN_ABI_VERSION` contract. Clarify that `stop()` pairs with `init()` (not `start()`) for teardown symmetry. (coderabbit: "Update plugin lifecycle documentation to reflect four-phase model and ABI versioning.") * plugins/mysqlx/include/mysqlx_session.h: default-initialize every field in `MysqlxCredentials`. `bool x_enabled` was indeterminate for a default-constructed instance, which would let a lookup miss produce a value that silently authenticates. In-class initializers give every field a deterministic default. (coderabbit: "Default- initialize credential fields used by auth decisions.") * plugins/mysqlx/src/mysqlx_backend_session.cpp: close `backend_fd_` when `authenticate_backend()` returns false. Previously `connect()` stored the newly-opened fd in `backend_fd_` and returned the auth result; a retry on the same `MysqlxBackendSession` would then overwrite `backend_fd_` and leak the previous socket. (coderabbit: "Close/reset `backend_fd_` when authentication fails.") * lib/Admin_Bootstrap.cpp: `materialize_plugin_tables()` now runs DDL only for the subset of plugin-declared tables that were freshly inserted into `tables_defs_*` (the rest are already materialized). DDL failures are startup-fatal: on `execute()` returning false, log the plugin kind + table name + SQL and `exit(EXIT_FAILURE)`. A partially materialized schema produces opaque runtime errors from the plugin later on, so aborting startup is the right default. (gemini + coderabbit: "Execute DDL only for newly materialized plugin tables" / "add error checking".) Not changed in this commit (deferred / out of scope / stale): * CI-mysqlx E2E tests going through ProxySQL (requires plumbing listener + admin config in the CI workflow). * O(N) admin dispatch scan → hash map. * Descriptor build-id hash for libstdc++ compat detection. * Per-plugin mutex on mutable plugin context. * Worker client-fd enqueue backpressure. * Stale plan-doc feedback on docs/superpowers/plans/*.md. Verification (clean tree): * `unset PROXYSQL*; make cleanall && make debug -j$(nproc) && make build_tap_test_debug -j$(nproc)` -- 0 errors. * `PROXYSQLGENAI=1 make cleanall && PROXYSQLGENAI=1 make debug -j$(nproc) && PROXYSQLGENAI=1 make build_tap_test_debug -j$(nproc)` -- 0 errors. * Plugin unit tests (PROXYSQL40): 48 + 52 + 26 + 46 + 10 = 182 pass. |
2 months ago |
|
|
872479aeba
|
Merge pull request #5650 from sysown/feat/cla-assistant-setup
Add Contributor License Agreement (ICLA + CCLA) |
2 months ago |
|
|
615a620ee6 |
Add Contributor License Agreement (ICLA + CCLA) for CLA assistant
Introduces .github/CLA.md with both Individual and Corporate variants,
adapted from the Apache ICLA v2.2 and Software Grant / Corporate CLA
(r190612) with the following changes:
- "The Apache Software Foundation" replaced with "ProxySQL LLC"
throughout; downstream references to "the Foundation" become "the
Company".
- Nonprofit-specific language ("not use Your Contributions in a way
that is contrary to the public benefit or inconsistent with its
nonprofit status and bylaws") removed — ProxySQL LLC is a commercial
entity, so the reservation reduces to the simpler "Except for the
license granted herein to the Company and recipients of software
distributed by the Company, You reserve all right, title, and
interest in and to Your Contributions."
- Email-submission instructions and PDF form fields removed; signing
is handled by the CLA assistant (https://cla-assistant.io) flow and
identity is captured from the contributor's GitHub account.
- Apache-specific references removed (Apache IDs, Apache mailing
lists, Apache privacy policy).
Substance of the license grants, definitions, and representations is
preserved verbatim from the Apache templates.
CONTRIBUTING.md gains a 'Contributor License Agreement' section linking
to .github/CLA.md and describing the CLA assistant signing flow.
Two browser steps still required to activate:
1. Sign in to cla-assistant.io as a sysown/proxysql admin
2. Point it at https://github.com/sysown/proxysql/blob/v3.0/.github/CLA.md
(after this PR is merged so the raw URL resolves). No workflow file
or webhook is needed; the bot operates via the installed GitHub App.
Recommend legal review before enforcing on PRs.
|
2 months ago |
|
|
6435524416 |
ci(mysqlx): run all mysqlx tests and fail fast when X Protocol missing
CI-mysqlx.yml previously only ran the test_mysqlx_e2e_* binaries and hard-coded the MYSQLX_E2E_* variables inline. That missed the integration smoke tests (test_mysqlx_admin_tables, test_mysqlx_listener_smoke, test_mysqlx_plugin_load) and meant the group's env.sh was never consulted, so MYSQLX_E2E_PROXYSQL_PORT was unset and test_mysqlx_e2e_routing-t silently skipped. Now the step sources test/tap/groups/mysqlx-e2e/env.sh and iterates every test_mysqlx_*-t binary. Errors out if the glob matches nothing, so a future rename that quietly elides every mysqlx test doesn't pass a green CI. env.sh: use the mysqlx_test / mysqlx_test credentials provisioned by setup-infras.bash, not root with empty password. setup-infras.bash: return exit 1 when X Protocol isn't reachable on 33060 rather than exit 0, so CI actually fails instead of running every test against a missing backend. pre-cleanup.bash: derive the sandbox version from the msb_*/ directory name rather than hardcoding 8.4.8. setup-infras.bash uses --newest so the patch level drifts with upstream MySQL releases. |
2 months ago |
|
|
0ce8693c29 |
ci: disable CI-taptests-groups auto-trigger (same 403 on jenkins-build-scripts)
All four matrices (tests, tests/unit, tests_with_deps/*) of CI-taptests-groups fail at the 'Checkout jenkins_build_scripts' step with: fatal: unable to access 'https://github.com/proxysql/jenkins-build-scripts/': The requested URL returned error: 403 Same root cause as the CI-repltests / CI-shuntest disabling in the previous commit: GH_TOKEN_PROXYSQL no longer has access to the proxysql/jenkins-build-scripts repo. Comment out the workflow_run trigger so the workflow stops firing automatically on every push; workflow_dispatch is preserved for manual re-runs once the secret is refreshed. |
2 months ago |
|
|
feed404031 |
ci: disable repltests/shuntest auto-trigger and fix 'make unit_tests'
Two test-infrastructure fixes on this branch.
1) CI-repltests / CI-shuntest: every run since the upstream
proxysql/jenkins-build-scripts access broke has been failing at the
Checkout step with HTTP 403. Comment out the workflow_run trigger so
they no longer auto-fire on every push; keep workflow_dispatch so
they can still be manually re-run once the token/repo-access is
fixed. Same root cause affects CI-taptests-groups as well — that
needs the GH_TOKEN_PROXYSQL secret refreshed, not a code change.
2) test/tap/tests/unit/Makefile: 'make unit_tests' (invoked from
test/tap/Makefile via $(MAKECMDGOALS)) failed with
make[1]: *** No rule to make target 'unit_tests'
because the unit Makefile only exposed 'all' and 'debug'. Commit
|
2 months ago |
|
|
5c1549dcc6 |
merge: resolve conflicts with v3.0 branch
Merge origin/v3.0 into ProtocolX. One conflict in test/tap/tests/unit/Makefile resolved by keeping both mysqlx unit tests (ProtocolX) and pgsql_servers_ssl_params unit test + GENAI vec.o link (v3.0). |
2 months ago |
|
|
92949a9404 |
ci: add CI-unit-tests-asan-coverage workflow
Builds ProxySQL with PROXYSQLGENAI=1 + WITHASAN=1 + WITHGCOV=1 (and the NOJEMALLOC=1 that ASAN forces), then builds and runs every unit test under test/tap/tests/unit/ and publishes an LCOV coverage report. Self-contained design: unlike the existing CI-taptests-asan workflow this one runs entirely on the GitHub runner. It does not depend on the private proxysql/jenkins-build-scripts repo or any backend MySQL/Docker infrastructure because unit tests link against libproxysql.a via the stub test_globals.o and run as standalone binaries. Full job definition lives in this file rather than being delegated to a reusable workflow on the GH-Actions branch. Key points: - Deps are built with 'make build_deps' (optimized, with debug symbols) rather than build_deps_debug: third-party code is not what we want to instrument, and a non-debug deps build is significantly faster. - lib + src are built with 'make debug' so ASAN / gcov instrument ProxySQL's own code only. - Only test/tap/tests/unit/ is built via 'make unit_tests'; the integration TAP tests under test/tap/tests/ are intentionally skipped because they require running backends. - ASAN_OPTIONS starts with detect_leaks=0 because the existing unit tests were not written leak-free. Flipping this to =1 once those leaks are cleaned up will immediately turn this workflow into a leak regression guard. - vm.mmap_rnd_bits is lowered to 28 at the start of the job to satisfy ASAN's shadow-memory requirement on modern kernels (include/makefiles_vars.mk explicitly warns about this). - Trigger uses the same workflow_run: [CI-trigger] pattern as the rest of the CI-* files in this directory, plus workflow_dispatch for manual runs. Artifacts on every run (pass or fail): - unit-tests-coverage-lcov-<sha>: the merged lcov .info file - unit-tests-coverage-html-<sha>: genhtml output directory - unit-tests-logs-<sha>: per-test stdout/stderr captures Security: every 'run:' step only consumes values from env: (SHA, ASAN_OPTIONS, etc.) or GitHub-provided variables like \$GITHUB_WORKSPACE. No untrusted user input (PR titles, issue bodies, commit messages, fork branch names, etc.) is interpolated into shell commands, so there is no command-injection surface. |
2 months ago |
|
|
818481a62d |
ci: disable CI-unittests caller temporarily (remove workflow_run trigger)
CI-unittests cannot run in the normal CI cascade right now because the companion PR on GH-Actions (#5603) strips unit test binaries from the _test cache payload to keep it under GitHub's 10 GB per-repo quota. The unit tests are still COMPILED in ci-builds.yml (a sanity check enforces UNIT_COUNT > 0 before stripping, so compile errors in unit tests still fail the build) but their binaries don't ship in the cache, so CI-unittests would fail on "Cache restore test" or on the safety net in proxysql-tester.py that detects zero discovered test binaries. Rather than leave CI-unittests producing confusing red failures on every cascade, remove the workflow_run trigger so it stops firing automatically. The workflow_dispatch trigger is kept so it can still be invoked manually from the Actions tab (e.g. to test a re-enablement branch). This is intentionally the minimum surgical change: - No file deletion (preserves the caller for easy re-enable). - No change to the reusable on GH-Actions (ci-unittests.yml is dormant when no caller invokes it). - An inline comment block at the top of the caller explains the situation and lists the options for re-enabling (docker rebuild, expanded _src cache with incremental make, or artifact plumbing). Re-enabling CI-unittests is a separate follow-up effort. The goal for now is to unblock CI-legacy-g* and CI-mysql84-g* by getting the _test cache under quota; unit tests will come back later with a proper rebuild strategy. Companion PR: sysown/proxysql#5603 |
2 months ago |
|
|
5aad576125 |
ci: rewire group callers to dedicated reusables; add CI-unittests; document CI architecture
Rewiring
--------
Following the landing of sysown/proxysql#5597 on the GH-Actions branch
(which adds the nine dedicated reusable workflows), point each of the
eight existing group callers at its dedicated reusable instead of the
broken generic ci-taptests-groups.yml:
CI-legacy-g1.yml → ci-legacy-g1.yml@GH-Actions
CI-legacy-g3.yml → ci-legacy-g3.yml@GH-Actions
CI-legacy-g5.yml → ci-legacy-g5.yml@GH-Actions
CI-mysql84-g1.yml → ci-mysql84-g1.yml@GH-Actions
CI-mysql84-g2.yml → ci-mysql84-g2.yml@GH-Actions
CI-mysql84-g3.yml → ci-mysql84-g3.yml@GH-Actions
CI-mysql84-g4.yml → ci-mysql84-g4.yml@GH-Actions
CI-mysql84-g5.yml → ci-mysql84-g5.yml@GH-Actions
Each edit also drops the now-useless `testgroup: '["<group>"]'` input
that the new dedicated reusables do not accept (and the old generic
reusable silently ignored).
This is the other half of the fix started in #5597. Before this change,
the eight group workflows were routed to ci-taptests-groups.yml, whose
tests job strategy evaluates from a cached proxysql/tap-matrix.json that
CI-builds has been populating as "[ ]". With an empty matrix vector
GitHub Actions rejects the strategy with "Matrix vector 'testgroup'
does not contain any values" and the tests job never instantiates --
visible for example in run 24240099115. With this PR merged (after
#5597), these eight workflows will route to their own dedicated
reusables and start running real tests on the next push.
CI-unittests caller
-------------------
Adds a new v3.0 caller CI-unittests.yml targeting
ci-unittests.yml@GH-Actions (also added in #5597). This runs the 42
unit-tests-g1 binaries listed in test/tap/groups/groups.json directly
on the runner, via the SKIP_PROXYSQL=1 host-only branch in
run-tests-isolated.bash -- no Docker, no backends.
Documentation
-------------
Replaces doc/GH-Actions/README.md with an expanded, current CI
architecture reference (~800 lines). Covers:
* The two-branch caller/reusable split and the workflow_run
default-branch rule that forces it
* The CI-trigger / CI-builds babysitter pattern and why test workflows
chain on CI-trigger completion (and not on CI-builds directly --
see
|
2 months ago |
|
|
78b8f5ac62 |
ci: revert test workflows to listen on CI-trigger completion
Commit
|
2 months ago |
|
|
8aec8952c6 |
ci: add GitHub Actions workflow for mysqlx plugin using dbdeployer
Add CI-mysqlx.yml with two jobs: 1. unit-tests: Runs mysqlx and plugin unit tests (no backend needed). Builds the mysqlx plugin .so and executes all *_unit-t test binaries. 2. e2e-tests: Provisions MySQL 8.4 sandbox via dbdeployer, verifies X Protocol on port 33060, then runs E2E handshake and routing tests. Uses dbdeployer for backend provisioning instead of Docker Compose, marking the first use of dbdeployer in ProxySQL CI. |
2 months ago |
|
|
9671a414a3 |
ci: comprehensive CI workflow and infrastructure fixes
Workflow trigger chain fix: - All 24 test workflows now trigger on CI-builds completion instead of CI-trigger completion, ensuring build artifacts are available before tests start New test group workflows: - Add CI-legacy-g1, CI-legacy-g3, CI-legacy-g5 - Add CI-mysql84-g1 through CI-mysql84-g5 - All use the generic ci-taptests-groups.yml reusable workflow groups.json linter: - Add lint_groups_json.py enforcing compact one-line-per-entry format - Add CI-lint-groups-json.yml workflow triggered on groups.json changes - Reformat groups.json to comply with documented format Makefile fixes: - Fix $(error) call with unescaped ')' that broke all docker-compose builds since Release 3.0.8 - Fix CURVER extraction regex to handle 'v' prefix from git describe CI-taptests-pgsql-cluster rewrite: - Replace old jenkins-build-scripts with Unified CI infrastructure - Use ensure-infras.bash + run-tests-isolated.bash Infrastructure improvements: - Add --hostname test-runner to test-runner container for cross-container DNS resolution - Pass TAP_PGSQL_SYNC_REPLICA_PORT through to test container - Default TAP_PGSQL_SYNC_REPLICA_PORT=6042 when cluster nodes active |
2 months ago |
|
|
73a561450d |
Fix race condition in CI-legacy-* workflow triggers
All 4 CI-legacy workflows used `types: [ in_progress ]` which fired them before CI-builds finished, causing cache-miss failures on the build artifacts. Change to `types: [ completed ]` and add success guard, matching the pattern used by CI-taptests-groups. Affected workflows: - CI-legacy-clickhouse-g1 - CI-legacy-g2 - CI-legacy-g2-genai - CI-legacy-g4 |
2 months ago |
|
|
cde4cc78eb |
ci: add CI workflows for legacy-g4 and legacy-clickhouse-g1
Add dispatcher workflows that trigger on CI-trigger: - CI-legacy-g4.yml — runs legacy-g4 TAP test group - CI-legacy-clickhouse-g1.yml — runs legacy-clickhouse-g1 TAP tests Both use in_progress trigger type (start immediately with CI-trigger) matching the pattern of CI-legacy-g2.yml. Also includes draft reusable workflows in gh-actions-reusable/ that need to be pushed to the GH-Actions branch: - ci-legacy-g4.yml — adapted from ci-legacy-g2.yml - ci-legacy-clickhouse-g1.yml — adapted with clickhouse23 infra To activate: 1. Push ci-legacy-g4.yml and ci-legacy-clickhouse-g1.yml to sysown/proxysql GH-Actions branch under .github/workflows/ 2. The dispatcher workflows on feature branches will then find them Already active (no changes needed): - CI-legacy-g2.yml — already exists - CI-basictests.yml — already exists |
3 months ago |
|
|
c1eb55d39d |
Add CI-legacy-g2 and CI-legacy-g2-genai caller workflows
Two new CI workflows for the legacy-g2 TAP test group: - CI-legacy-g2: runs against ubuntu22-tap build (standard) - CI-legacy-g2-genai: runs against ubuntu24-tap-genai-gcov build (PROXYSQLGENAI=1, WITHGCOV=1, with coverage report upload) Both use SKIP_CLUSTER_START=1 and TAP_USE_NOISE=1. Reusable workflows are on the GH-Actions branch. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
3 months ago |
|
|
a902a9ccfd |
"Claude Code Review workflow"
|
3 months ago |
|
|
8792cf35b6 |
"Claude PR Assistant workflow"
|
3 months ago |
|
|
62b8103bae
|
update GH-Actions triggers
|
9 months ago |
|
|
3c5e052eb8 |
add action php_pdo_pgsql testing
|
10 months ago |
|
|
ae96637af9
|
add GH Actions trigger for pgJDBC testing
|
10 months ago |
|
|
4cbfb3d83a |
fix GH actions run name
|
1 year ago |
|
|
fdd744adbd
|
Create CI-3p-aiomysql.yml
Signed-off-by: Miro Stauder <miro@proxysql.com> |
1 year ago |
|
|
a9a3583957
|
Update issue templates
|
1 year ago |
|
|
30b05fd72d
|
Update CI-trigger.yml
|
1 year ago |
|
|
e3a239a6c4
|
rephrase run-pgsql condition
|
2 years ago |
|
|
1fa73aacc5
|
add workflow_dispatch inputs
add run-mariadb where missing make run-pgsql conditional |
2 years ago |