Skip to content

Backfill application_settings product_analytics_data_collector_host

What does this MR do and why?

Relates to: #389490 (closed)

jitsu_host and collector_host should be stored separately. However, currently we only store jitsu_host and calculate the collector_host based on jitsu_host.

Recently, we added a new product_analytics_data_collector_host to application_settings table to store the above-mentioned collector host.

This current MR is for filling this new column. Note that this feature is behind a feature flag and there should be only a handful of records to be updated.

Running the migration locally produced the following output.

gitlab git:(backfill-product-analytics-application-setting-for-collector-host)VERSION=20230308112121 bundle exec rails db:migrate:up:main
main: == 20230308112121 BackfillProductAnalyticsDataCollectorHost: migrating ========
main: -- transaction_open?()
main:    -> 0.0000s
main: -- execute("UPDATE application_settings\nSET product_analytics_data_collector_host = regexp_replace(jitsu_host, '://(.+?\\.)', '://collector.', 'g')\nWHERE jitsu_host IS NOT NULL AND id BETWEEN 1 AND 1;\n")
main:    -> 0.0051s
Backfill application_settings product_analytics_data_collector_host
main: == 20230308112121 BackfillProductAnalyticsDataCollectorHost: migrated (0.6365s)

Query plan (without batching)

Time: 31.685 ms  
  - planning: 3.170 ms  
  - execution: 28.515 ms  
    - I/O read: 22.233 ms  
    - I/O write: 0.000 ms  
  
Shared buffers:  
  - hits: 82 (~656.00 KiB) from the buffer pool  
  - reads: 17 (~136.00 KiB) from the OS file cache, including disk I/O  
  - dirtied: 5 (~40.00 KiB)  
  - writes: 0  

How to set up and validate locally

  1. Have a record with jitsu host
    ApplicationSetting.first.update(jitsu_host: "https://configurator.testing.my-product-analytics.com", product_analytics_enabled: true)
    
  2. Run migration
    bVERSION=20230308112121 bundle exec rails db:migrate:up:main
  3. Check product_analytics_data_collector_host
    ApplicationSetting.first.product_analytics_data_collector_host #should be "https://collector.testing.my-product-analytics.com"
    

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Halil Coban

Merge request reports

Loading