Skip to content

Allow to persist ClickHouse state on settings

Felipe Artur requested to merge issue_432191 into master

What does this MR do and why?

Database/Model work to allow persisting use_clickhouse_for_analytics setting column in database.

This setting is not changing any behavior yet, the checks for ClickHouse availability will be present in follow-ups.

related to #432191 (closed)

MR acceptance checklist

Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

How to set up and validate locally

Use Application Settings REST API to update the use_clickhouse_for_analytics field.

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/application/settings?use_clickhouse_for_analytics=true"

Migration output

main: == [advisory_lock_connection] object_id: 118140, pg_backend_pid: 33500
main: == 20240215191658 AddClickHouseToApplicationSettings: migrating ===============
main: -- add_column(:application_settings, :clickhouse, :jsonb, {:default=>{}, :null=>false})
main:    -> 0.0024s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("ALTER TABLE application_settings\nADD CONSTRAINT check_application_settings_clickhouse_is_hash\nCHECK ( (jsonb_typeof(clickhouse) = 'object') )\nNOT VALID;\n")
main:    -> 0.0013s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0004s
main: -- execute("ALTER TABLE application_settings VALIDATE CONSTRAINT check_application_settings_clickhouse_is_hash;")
main:    -> 0.0010s
main: -- execute("RESET statement_timeout")
main:    -> 0.0003s
main: == 20240215191658 AddClickHouseToApplicationSettings: migrated (0.0198s) ======

main: == [advisory_lock_connection] object_id: 118140, pg_backend_pid: 33500
ci: == [advisory_lock_connection] object_id: 118360, pg_backend_pid: 33502
ci: == 20240215191658 AddClickHouseToApplicationSettings: migrating ===============
ci: -- add_column(:application_settings, :clickhouse, :jsonb, {:default=>{}, :null=>false})
ci:    -> 0.0027s
ci: -- transaction_open?(nil)
ci:    -> 0.0000s
ci: -- transaction_open?(nil)
ci:    -> 0.0000s
ci: -- execute("ALTER TABLE application_settings\nADD CONSTRAINT check_application_settings_clickhouse_is_hash\nCHECK ( (jsonb_typeof(clickhouse) = 'object') )\nNOT VALID;\n")
ci:    -> 0.0013s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0004s
ci: -- execute("ALTER TABLE application_settings VALIDATE CONSTRAINT check_application_settings_clickhouse_is_hash;")
ci:    -> 0.0009s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0004s
ci: == 20240215191658 AddClickHouseToApplicationSettings: migrated (0.0206s) ======
Edited by Felipe Artur

Merge request reports