Skip to content
Snippets Groups Projects

Admin runner filtering by version

Merged Markus Ferrell requested to merge markus.ferrell/gitlab:admin_runner_sorting into master
All threads resolved!

What does this MR do and why?

This MR lets admins search by runner version on the admin runners page. When searching by a specific version, all runners that do not start with the searched runner version will be filtered out of the runner list. For example, searching for 14. could result 14.11.1 or 14.2.3 but not 143.2.1. If searching for 14 in the previous example, we would also get 143.2.1.

This MR does not implement search suggestions and instead defaults to two set suggestions of 15.11.0 and 15.12.0. Search suggestions would be good to add onto this MR but it might make it too big.

Part of #422046 (closed)

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

image

How to set up and validate locally

Make sure you have at least one GitLab runner registered and running.

  1. Go to http://gdk.test:3000/-/graphql-explorer

  2. Use the following query:

    {
      runners(versionPrefix: "16") {
        nodes {
          id
          managers {
            nodes {
              systemId
              version
            }
          }
        }
      }
    }
  3. The query will return any runners that have runner managers of version 16 attached.

Database query plans

Setup:

exec CREATE INDEX index_ci_runner_machines_on_major_version_trigram ON ci_runner_machines USING btree ("substring"(version, '\d+\.'::text), version, runner_id);

exec CREATE INDEX index_ci_runner_machines_on_minor_version_trigram ON ci_runner_machines USING btree ("substring"(version, '\d+\.\d+\.'::text), version, runner_id);

exec CREATE INDEX index_ci_runner_machines_on_patch_version_trigram ON ci_runner_machines USING btree ("substring"(version, '\d+\.\d+\.\d+'::text), version, runner_id);

Simple version query

Retrieve uncapped project runner count

This branch, with version filter

https://postgres.ai/console/gitlab/gitlab-production-ci/sessions/23071/commands/74264

SELECT COUNT(*)
FROM "ci_runners"
  INNER JOIN "ci_runner_machines" ON "ci_runner_machines"."runner_id" = "ci_runners"."id"
  INNER JOIN "ci_runner_versions" runner_version ON runner_version.version = "ci_runner_machines".version
WHERE "ci_runners"."runner_type" = 3
  AND substring("ci_runner_machines"."version", '\d+\.\d+\.'::text) = '15.11.'
 Aggregate  (cost=2627.10..2627.11 rows=1 width=8) (actual time=50.992..50.996 rows=1 loops=1)
   Buffers: shared hit=43916
   I/O Timings: read=0.000 write=0.000
   ->  Merge Join  (cost=12.59..2624.87 rows=891 width=0) (actual time=0.622..50.140 rows=6176 loops=1)
         Merge Cond: (ci_runner_machines.version = runner_version.version)
         Buffers: shared hit=43916
         I/O Timings: read=0.000 write=0.000
         ->  Nested Loop  (cost=0.85..2927.17 rows=1056 width=7) (actual time=0.098..48.141 rows=6176 loops=1)
               Buffers: shared hit=43861
               I/O Timings: read=0.000 write=0.000
               ->  Index Only Scan using index_ci_runner_machines_on_minor_version_trigram on public.ci_runner_machines  (cost=0.42..105.37 rows=1454 width=15) (actual time=0.015..5.987 rows=10819 loops=1)
                     Index Cond: (("substring"(ci_runner_machines.version, '\d+\.\d+\.'::text)) = '15.11.'::text)
                     Heap Fetches: 1815
                     Buffers: shared hit=5691
                     I/O Timings: read=0.000 write=0.000
               ->  Index Only Scan using index_ci_runners_on_runner_type_and_id on public.ci_runners  (cost=0.43..1.94 rows=1 width=4) (actual time=0.004..0.004 rows=1 loops=10819)
                     Index Cond: ((ci_runners.runner_type = 3) AND (ci_runners.id = ci_runner_machines.runner_id))
                     Heap Fetches: 2192
                     Buffers: shared hit=38170
                     I/O Timings: read=0.000 write=0.000
         ->  Index Only Scan using ci_runner_versions_pkey on public.ci_runner_versions runner_version  (cost=0.28..136.38 rows=2970 width=21) (actual time=0.016..0.278 rows=1213 loops=1)
               Heap Fetches: 62
               Buffers: shared hit=55
               I/O Timings: read=0.000 write=0.000

Retrieve page of 21 runners

This branch, with version filter

https://console.postgres.ai/gitlab/gitlab-production-ci/sessions/23071/commands/74265

SELECT "ci_runners".*
FROM "ci_runners"
  INNER JOIN "ci_runner_machines" ON "ci_runner_machines"."runner_id" = "ci_runners"."id"
WHERE substring("ci_runner_machines"."version", '\d+\.\d+\.'::text) = '15.11.'
ORDER BY "ci_runners"."created_at" DESC, "ci_runners"."id" DESC
LIMIT 21
 Limit  (cost=5130.23..5130.29 rows=21 width=273) (actual time=30312.677..30312.684 rows=21 loops=1)
   Buffers: shared hit=35675 read=13301 dirtied=2479
   I/O Timings: read=29349.677 write=0.000
   ->  Sort  (cost=5130.23..5133.87 rows=1454 width=273) (actual time=30312.674..30312.678 rows=21 loops=1)
         Sort Key: ci_runners.created_at DESC, ci_runners.id DESC
         Sort Method: top-N heapsort  Memory: 45kB
         Buffers: shared hit=35675 read=13301 dirtied=2479
         I/O Timings: read=29349.677 write=0.000
         ->  Nested Loop  (cost=0.85..5091.03 rows=1454 width=273) (actual time=3.377..30209.857 rows=10819 loops=1)
               Buffers: shared hit=35669 read=13301 dirtied=2479
               I/O Timings: read=29349.677 write=0.000
               ->  Index Only Scan using index_ci_runner_machines_on_minor_version_trigram on public.ci_runner_machines  (cost=0.42..105.37 rows=1454 width=8) (actual time=0.026..79.577 rows=10819 loops=1)
                     Index Cond: (("substring"(ci_runner_machines.version, '\d+\.\d+\.'::text)) = '15.11.'::text)
                     Heap Fetches: 1815
                     Buffers: shared hit=5691
                     I/O Timings: read=0.000 write=0.000
               ->  Index Scan using ci_runners_pkey on public.ci_runners  (cost=0.43..3.43 rows=1 width=273) (actual time=2.777..2.777 rows=1 loops=10819)
                     Index Cond: (ci_runners.id = ci_runner_machines.runner_id)
                     Buffers: shared hit=29978 read=13301 dirtied=2479
                     I/O Timings: read=29349.677 write=0.000

Complex query with various filters

Retrieve uncapped project runner count

master branch without version filter

https://postgres.ai/console/gitlab/gitlab-production-ci/sessions/21364/commands/69698

SELECT COUNT(*)
FROM "ci_runners"
  INNER JOIN "ci_runner_machines" ON "ci_runner_machines"."runner_id" = "ci_runners"."id"
  INNER JOIN "ci_runner_versions" runner_version ON runner_version.version = "ci_runner_machines".version
WHERE "ci_runners"."active" = TRUE
  AND "ci_runners"."created_at" <= '2023-05-15 09:32:40.914414'
  AND ("ci_runners"."contacted_at" IS NULL
    OR "ci_runners"."contacted_at" <= '2023-05-15 09:32:40.914414')
  AND "runner_version"."status" = 3
  AND "ci_runners"."runner_type" = 3
 Aggregate  (cost=291021.20..291021.21 rows=1 width=8) (actual time=2060.723..2114.579 rows=1 loops=1)
   Buffers: shared hit=923946 read=104418 dirtied=64463
   I/O Timings: read=3774.733 write=0.000
   ->  Gather  (cost=291020.98..291021.19 rows=2 width=8) (actual time=2059.662..2114.566 rows=3 loops=1)
         Workers Planned: 2
         Workers Launched: 2
         Buffers: shared hit=923946 read=104418 dirtied=64463
         I/O Timings: read=3774.733 write=0.000
         ->  Aggregate  (cost=290020.98..290020.99 rows=1 width=8) (actual time=2053.416..2053.420 rows=1 loops=3)
               Buffers: shared hit=923946 read=104418 dirtied=64463
               I/O Timings: read=3774.733 write=0.000
               ->  Nested Loop  (cost=13.27..289855.82 rows=66065 width=0) (actual time=2053.409..2053.413 rows=0 loops=3)
                     Buffers: shared hit=923946 read=104418 dirtied=64463
                     I/O Timings: read=3774.733 write=0.000
                     ->  Merge Join  (cost=12.84..102117.88 rows=162985 width=8) (actual time=0.372..623.712 rows=77089 loops=3)
                           Merge Cond: (ci_runner_machines.version = runner_version.version)
                           Buffers: shared hit=157460 read=32387 dirtied=23430
                           I/O Timings: read=1104.953 write=0.000
                           ->  Parallel Index Scan using index_ci_runner_machines_on_version on public.ci_runner_machines  (cost=0.42..104529.27 rows=173062 width=15) (actual time=0.216..599.467 rows=79760 loops=3)
                                 Buffers: shared hit=157261 read=32329 dirtied=23423
                                 I/O Timings: read=1102.269 write=0.000
                           ->  Index Only Scan using index_ci_runner_versions_on_unique_status_and_version on public.ci_runner_versions runner_version  (cost=0.28..140.87 rows=2453 width=21) (actual time=0.104..2.229 rows=1584 loops=3)
                                 Index Cond: (runner_version.status = 3)
                                 Heap Fetches: 623
                                 Buffers: shared hit=199 read=58 dirtied=7
                                 I/O Timings: read=2.683 write=0.000
                     ->  Index Scan using index_ci_runners_on_runner_type_and_id on public.ci_runners  (cost=0.43..1.15 rows=1 width=4) (actual time=0.018..0.018 rows=0 loops=231267)
                           Index Cond: ((ci_runners.runner_type = 3) AND (ci_runners.id = ci_runner_machines.runner_id))
                           Filter: (ci_runners.active AND (ci_runners.created_at <= '2023-05-15 09:32:40.914414'::timestamp without time zone) AND ((ci_runners.contacted_at IS NULL) OR (ci_runners.contacted_at <= '2023-05-15 09:32:40.914414'::timestamp without time zone)))
                           Rows Removed by Filter: 1
                           Buffers: shared hit=766486 read=72031 dirtied=41033
                           I/O Timings: read=2669.781 write=0.000
This branch, with version filter

https://console.postgres.ai/gitlab/gitlab-production-ci/sessions/23071/commands/74266

SELECT COUNT(*)
FROM "ci_runners"
  INNER JOIN "ci_runner_machines" ON "ci_runner_machines"."runner_id" = "ci_runners"."id"
  INNER JOIN "ci_runner_versions" runner_version ON runner_version.version = "ci_runner_machines".version
WHERE "ci_runners"."active" = TRUE
  AND "ci_runners"."created_at" <= '2023-05-15 09:40:23.437431'
  AND ("ci_runners"."contacted_at" IS NULL
    OR "ci_runners"."contacted_at" <= '2023-05-15 09:40:23.437431')
  AND "runner_version"."status" = 3
  AND "ci_runners"."runner_type" = 3
  AND substring("ci_runner_machines"."version", '\d+\.\d+\.\d+'::text) = '15.11.1'
 Aggregate  (cost=4312.40..4312.41 rows=1 width=8) (actual time=26.545..26.548 rows=1 loops=1)
   Buffers: shared hit=1664 read=15 dirtied=3
   I/O Timings: read=21.835 write=0.000
   ->  Nested Loop  (cost=8.88..4311.29 rows=445 width=0) (actual time=26.539..26.541 rows=0 loops=1)
         Buffers: shared hit=1664 read=15 dirtied=3
         I/O Timings: read=21.835 write=0.000
         ->  Merge Join  (cost=8.45..201.48 rows=1201 width=8) (actual time=22.591..23.333 rows=432 loops=1)
               Merge Cond: (ci_runner_machines.version = runner_version.version)
               Buffers: shared hit=229 read=15
               I/O Timings: read=21.835 write=0.000
               ->  Index Only Scan using index_ci_runner_machines_on_patch_version_trigram on public.ci_runner_machines  (cost=0.42..105.37 rows=1454 width=15) (actual time=9.362..10.008 rows=432 loops=1)
                     Index Cond: (("substring"(ci_runner_machines.version, '\d+\.\d+\.\d+'::text)) = '15.11.1'::text)
                     Heap Fetches: 90
                     Buffers: shared hit=202 read=5
                     I/O Timings: read=9.403 write=0.000
               ->  Index Only Scan using index_ci_runner_versions_on_unique_status_and_version on public.ci_runner_versions runner_version  (cost=0.28..90.22 rows=2910 width=21) (actual time=3.882..12.932 rows=1208 loops=1)
                     Index Cond: (runner_version.status = 3)
                     Heap Fetches: 63
                     Buffers: shared hit=27 read=10
                     I/O Timings: read=12.432 write=0.000
         ->  Index Scan using index_ci_runners_on_runner_type_and_id on public.ci_runners  (cost=0.43..3.42 rows=1 width=4) (actual time=0.007..0.007 rows=0 loops=432)
               Index Cond: ((ci_runners.runner_type = 3) AND (ci_runners.id = ci_runner_machines.runner_id))
               Filter: (ci_runners.active AND (ci_runners.created_at <= '2023-05-15 09:40:23.437431'::timestamp without time zone) AND ((ci_runners.contacted_at IS NULL) OR (ci_runners.contacted_at <= '2023-05-15 09:40:23.437431'::timestamp without time zone)))
               Rows Removed by Filter: 0
               Buffers: shared hit=1435 dirtied=3
               I/O Timings: read=0.000 write=0.000

Retrieve page of 21 runners

master branch without version filter

https://console.postgres.ai/gitlab/gitlab-production-ci/sessions/21364/commands/69705

SELECT "ci_runners".*
FROM "ci_runners"
  INNER JOIN "ci_runner_machines" ON "ci_runner_machines"."runner_id" = "ci_runners"."id"
  INNER JOIN "ci_runner_versions" runner_version ON runner_version.version = "ci_runner_machines".version
WHERE "ci_runners"."active" = TRUE
  AND "ci_runners"."created_at" <= '2023-05-15 10:02:55.055500'
  AND ("ci_runners"."contacted_at" IS NULL
    OR "ci_runners"."contacted_at" <= '2023-05-15 10:02:55.055500')
  AND "runner_version"."status" = 3
ORDER BY "ci_runners"."created_at" DESC, "ci_runners"."id" DESC
LIMIT 21
 Limit  (cost=1.13..111.91 rows=21 width=276) (actual time=25806.407..25806.418 rows=0 loops=1)
   Buffers: shared hit=6084364 read=208308 dirtied=55673 written=20494
   I/O Timings: read=18392.120 write=609.862
   ->  Nested Loop  (cost=1.13..1146393.47 rows=217328 width=276) (actual time=25806.404..25806.415 rows=0 loops=1)
         Buffers: shared hit=6084364 read=208308 dirtied=55673 written=20494
         I/O Timings: read=18392.120 write=609.862
         ->  Nested Loop  (cost=0.85..1077114.10 rows=230765 width=283) (actual time=25806.394..25806.395 rows=0 loops=1)
               Buffers: shared hit=6084364 read=208308 dirtied=55673 written=20494
               I/O Timings: read=18392.120 write=609.862
               ->  Index Scan using index_ci_runners_on_created_at_desc_and_id_desc on public.ci_runners  (cost=0.43..308312.35 rows=1440305 width=276) (actual time=21.397..22191.689 rows=1686430 loops=1)
                     Index Cond: (ci_runners.created_at <= '2023-05-15 10:02:55.0555'::timestamp without time zone)
                     Filter: (ci_runners.active AND ((ci_runners.contacted_at IS NULL) OR (ci_runners.contacted_at <= '2023-05-15 10:02:55.0555'::timestamp without time zone)))
                     Rows Removed by Filter: 240876
                     Buffers: shared hit=1045167 read=188210 dirtied=55673 written=19025
                     I/O Timings: read=17658.094 write=564.974
               ->  Index Scan using index_ci_runner_machines_on_runner_id_and_system_xid on public.ci_runner_machines  (cost=0.42..0.52 rows=1 width=15) (actual time=0.002..0.002 rows=0 loops=1686430)
                     Index Cond: (ci_runner_machines.runner_id = ci_runners.id)
                     Buffers: shared hit=5039197 read=20098 written=1469
                     I/O Timings: read=734.026 write=44.888
         ->  Index Only Scan using index_ci_runner_versions_on_unique_status_and_version on public.ci_runner_versions runner_version  (cost=0.28..0.30 rows=1 width=21) (actual time=0.000..0.000 rows=0 loops=0)
               Index Cond: ((runner_version.status = 3) AND (runner_version.version = ci_runner_machines.version))
               Heap Fetches: 0
               I/O Timings: read=0.000 write=0.000
This branch, with version filter

https://console.postgres.ai/gitlab/gitlab-production-ci/sessions/23071/commands/74269

SELECT "ci_runners".*
FROM "ci_runners"
  INNER JOIN "ci_runner_machines" ON "ci_runner_machines"."runner_id" = "ci_runners"."id"
  INNER JOIN "ci_runner_versions" runner_version ON runner_version.version = "ci_runner_machines".version
WHERE "ci_runners"."active" = TRUE
  AND "ci_runners"."created_at" <= '2023-05-15 10:06:01.772944'
  AND ("ci_runners"."contacted_at" IS NULL
    OR "ci_runners"."contacted_at" <= '2023-05-15 10:06:01.772944')
  AND "runner_version"."status" = 3
  AND substring("ci_runner_machines"."version", '\d+\.\d+\.'::text) = '15.11.'
ORDER BY "ci_runners"."created_at" DESC, "ci_runners"."id" DESC
LIMIT 21
 Limit  (cost=4341.44..4341.50 rows=21 width=273) (actual time=10637.304..10637.308 rows=0 loops=1)
   Buffers: shared hit=42849 read=6218 dirtied=767
   I/O Timings: read=10304.432 write=0.000
   ->  Sort  (cost=4341.44..4342.98 rows=613 width=273) (actual time=10637.301..10637.304 rows=0 loops=1)
         Sort Key: ci_runners.created_at DESC, ci_runners.id DESC
         Sort Method: quicksort  Memory: 25kB
         Buffers: shared hit=42849 read=6218 dirtied=767
         I/O Timings: read=10304.432 write=0.000
         ->  Nested Loop  (cost=8.88..4324.92 rows=613 width=273) (actual time=10637.251..10637.254 rows=0 loops=1)
               Buffers: shared hit=42843 read=6218 dirtied=767
               I/O Timings: read=10304.432 write=0.000
               ->  Merge Join  (cost=8.45..201.48 rows=1201 width=8) (actual time=0.523..58.476 rows=10819 loops=1)
                     Merge Cond: (ci_runner_machines.version = runner_version.version)
                     Buffers: shared hit=5724
                     I/O Timings: read=0.000 write=0.000
                     ->  Index Only Scan using index_ci_runner_machines_on_minor_version_trigram on public.ci_runner_machines  (cost=0.42..105.37 rows=1454 width=15) (actual time=0.018..43.688 rows=10819 loops=1)
                           Index Cond: (("substring"(ci_runner_machines.version, '\d+\.\d+\.'::text)) = '15.11.'::text)
                           Heap Fetches: 1815
                           Buffers: shared hit=5691
                           I/O Timings: read=0.000 write=0.000
                     ->  Index Only Scan using index_ci_runner_versions_on_unique_status_and_version on public.ci_runner_versions runner_version  (cost=0.28..90.22 rows=2910 width=21) (actual time=0.053..0.309 rows=1208 loops=1)
                           Index Cond: (runner_version.status = 3)
                           Heap Fetches: 60
                           Buffers: shared hit=33
                           I/O Timings: read=0.000 write=0.000
               ->  Index Scan using index_ci_runners_on_active on public.ci_runners  (cost=0.43..3.43 rows=1 width=273) (actual time=0.976..0.976 rows=0 loops=10819)
                     Index Cond: ((ci_runners.active = true) AND (ci_runners.id = ci_runner_machines.runner_id))
                     Filter: ((ci_runners.created_at <= '2023-05-15 10:06:01.772944'::timestamp without time zone) AND ((ci_runners.contacted_at IS NULL) OR (ci_runners.contacted_at <= '2023-05-15 10:06:01.772944'::timestamp without time zone)))
                     Rows Removed by Filter: 1
                     Buffers: shared hit=37119 read=6218 dirtied=767
                     I/O Timings: read=10304.432 write=0.000

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 Pedro Pombeiro

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Ashraf Khamis removed review request for @ashrafkhamis

    removed review request for @ashrafkhamis

  • added workflowin dev label and removed workflowin review label

  • Markus Ferrell added 2 commits

    added 2 commits

    Compare with previous version

  • Edited by Markus Ferrell
  • @vyaklushin, this Community contribution is ready for review.

    • Do you have capacity and domain expertise to review this? We are mindful of your time, so if you are not able to take this on, please re-assign to one or more other reviewers.
    • Add the workflowin dev label if the merge request needs action from the author.

    This message was generated automatically. You're welcome to improve it.

  • requested review from @vyaklushin

  • Ashraf Khamis requested review from @ashrafkhamis

    requested review from @ashrafkhamis

  • Ashraf Khamis approved this merge request

    approved this merge request

  • Ashraf Khamis removed review request for @ashrafkhamis

    removed review request for @ashrafkhamis

  • requested review from @pedropombeiro

  • Vasilii Iakliushin requested review from @djadmin

    requested review from @djadmin

  • Gina Doyle added UX label

    added UX label

  • Gina Doyle requested review from @gdoyle

    requested review from @gdoyle

  • Miguel Rincon changed title from Admin runner sorting by version to Admin runner filtering by version

    changed title from Admin runner sorting by version to Admin runner filtering by version

  • @markus.ferrell I updated the MR title to filtering instead of sorting.

  • Miguel Rincon
  • Pedro Pombeiro changed the description

    changed the description

  • added database label

  • Pedro Pombeiro requested review from @joseph

    requested review from @joseph

  • Markus Ferrell added 3 commits

    added 3 commits

    Compare with previous version

  • Markus Ferrell changed the description

    changed the description

  • Markus Ferrell added 1 commit

    added 1 commit

    Compare with previous version

  • Dheeraj Joshi
  • Dheeraj Joshi removed review request for @djadmin

    removed review request for @djadmin

  • Markus Ferrell added 3 commits

    added 3 commits

    Compare with previous version

  • Markus Ferrell added 1 commit

    added 1 commit

    Compare with previous version

    • Resolved by Markus Ferrell

      Value menu

      When the user selects version as the key, we should not show the menu at all, since we are not allowing them to choose from any value options. This is similar to how we can search by tag in groups (see screenshot below). @markus.ferrell We should remove the menu from appearing here. cc: @mrincon in case you need to add additional details

      Screenshot_2023-05-10_at_1.06.58_PM

      Tags filter in groups: Screenshot_2023-05-10_at_1.08.12_PM

  • Pedro Pombeiro changed the description

    changed the description

    • Resolved by Pedro Pombeiro

      I think we'll need to do something regarding the database performance. If you search for a non-existing version, the database query will time out because Postgres is sequentially scanning the table by created_at and id and then dropping rows that don't match the version (which will be all rows).

      Time: 2.537 min  
        - planning: 0.870 ms  
        - execution: 2.537 min  
          - I/O read: 4.655 min  
          - I/O write: 0.000 ms  
        
      Shared buffers:  
        - hits: 1184127 (~9.00 GiB) from the buffer pool  
        - reads: 258759 (~2.00 GiB) from the OS file cache, including disk I/O  
        - dirtied: 42385 (~331.10 MiB)  
        - writes: 0  
       Limit  (cost=1000.58..447112.35 rows=1 width=282) (actual time=152080.476..152219.986 rows=0 loops=1)
         Buffers: shared hit=1184127 read=258759 dirtied=42385
         I/O Timings: read=279281.711 write=0.000
         ->  Gather Merge  (cost=1000.58..447112.35 rows=1 width=282) (actual time=152080.471..152219.979 rows=0 loops=1)
               Workers Planned: 2
               Workers Launched: 2
               Buffers: shared hit=1184127 read=258759 dirtied=42385
               I/O Timings: read=279281.711 write=0.000
               ->  Parallel Index Scan using index_ci_runners_on_created_at_desc_and_id_desc on public.ci_runners  (cost=0.56..446112.21 rows=1 width=282) (actual time=152050.486..152050.487 rows=0 loops=3)
                     Filter: ((ci_runners.version)::text ~~* '156.11.%'::text)
                     Rows Removed by Filter: 670822
                     Buffers: shared hit=1184127 read=258759 dirtied=42385
                     I/O Timings: read=279281.711 write=0.000

      https://postgres.ai/console/gitlab/gitlab-production-ci/sessions/18503/commands/61386

      Edited by Pedro Pombeiro
  • Gina Doyle approved this merge request

    approved this merge request

  • Gina Doyle removed review request for @gdoyle

    removed review request for @gdoyle

  • Markus Ferrell mentioned in merge request !120889 (closed)

    mentioned in merge request !120889 (closed)

    • Resolved by Pedro Pombeiro

      @gdoyle @mrincon so this MR introduces the ability to search runners by their version. However, given the recent introduction of the concept of runner managers (who are the ones who do have a version), I'm wondering if this implementation will match what users are expecting. A runner's version will contain the version of the latest runner that pinged the GitLab instance for a job. If you have multiple runner managers under a runner, each runner manager with a different version, your search might come out empty when in fact there is a runner manager running the version that you're searching for.

      So it sounds like what we really want is to instead perform this search on the ci_runner_machines table, and then return all the unique runners that own those runner managers/runner machines. WDYT?

  • added blocked label

  • Pedro Pombeiro removed milestone %16.0

    removed milestone %16.0

  • Pedro Pombeiro removed review request for @vyaklushin, @pedropombeiro, and @joseph

    removed review request for @vyaklushin, @pedropombeiro, and @joseph

  • Hi @vyaklushin :wave:

    We noticed this MR is marked as workflowready for review but no reviewer is assigned. workflowin dev has automatically been applied to this MR based on the likelihood the review is finished. If additional reviews are still required, please assign a reviewer and reapply workflowready for review.

    @markus.ferrell you may also request a review by commenting @gitlab-bot ready. You can also assign reviewers directly using @gitlab-bot ready @user1 @user2 if you know the relevant reviewer(s), such as those who were involved in a related issue.

    This message was generated automatically. You're welcome to improve it.

  • added workflowin dev label and removed workflowin review label

  • @markus.ferrell, it seems we're waiting on an action from you for approximately two weeks.

    This message was generated automatically. You're welcome to improve it.

  • added idle label

  • removed idle label

  • Caroline Simpson mentioned in merge request !123131 (merged)

    mentioned in merge request !123131 (merged)

  • Markus Ferrell added 12316 commits

    added 12316 commits

    Compare with previous version

  • 🤖 GitLab Bot 🤖 added sectionci label and removed sectionops label

    added sectionci label and removed sectionops label

  • requested review from @pedropombeiro

  • @pedropombeiro, this Community contribution is ready for review.

    • Do you have capacity and domain expertise to review this? We are mindful of your time, so if you are not able to take this on, please re-assign to one or more other reviewers.
    • Add the workflowin dev label if the merge request needs action from the author.

    This message was generated automatically. You're welcome to improve it.

  • Pedro Pombeiro changed the description

    changed the description

  • Markus Ferrell added 3237 commits

    added 3237 commits

    Compare with previous version

  • Markus Ferrell added 170 commits

    added 170 commits

    Compare with previous version

  • Markus Ferrell mentioned in merge request !128809 (merged)

    mentioned in merge request !128809 (merged)

  • removed blocked label

  • A deleted user added databasereview pending label
  • Contributor
    1 Message
    :book: This merge request adds or changes documentation files. A review from the Technical Writing team before you merge is recommended. Reviews can happen after you merge.

    Documentation review

    The following files require a review from a technical writer:

    The review does not need to block merging this merge request. See the:

    Reviewer roulette

    Changes that require review have been detected!

    Please refer to the table below for assigning reviewers and maintainers suggested by Danger in the specified category:

    Category Reviewer Maintainer
    backend @aakriti.gupta profile link current availability (UTC+2) @engwan profile link current availability (UTC+8)
    database @jarka profile link current availability (UTC+2) @ahegyi profile link current availability (UTC+2)
    UX @pedroms profile link current availability (UTC+2) Maintainer review is optional for UX
    ~"Verify" Reviewer review is optional for ~"Verify" @vshushlin profile link current availability (UTC+2)

    Please check reviewer's status!

    • available Reviewer is available!
    • unavailable Reviewer is unavailable!

    Feel free to override these selections if you think someone else would be better-suited or use the GitLab Review Workload Dashboard to find other available reviewers.

    To read more on how to use the reviewer roulette, please take a look at the Engineering workflow and code review guidelines. Please consider assigning a reviewer or maintainer who is a domain expert in the area of the merge request.

    Once you've decided who will review this merge request, assign them as a reviewer! Danger does not automatically notify them for you.

    If needed, you can retry the :repeat: danger-review job that generated this comment.

    Generated by :no_entry_sign: Danger

  • Contributor

    Bundle size analysis [beta]

    This compares changes in bundle size for entry points between the commits 01feeb59 and 64ff860b

    :sparkles: Special assets

    Entrypoint / Name Size before Size after Diff Diff in percent
    average 4.17 MB 4.17 MB - 0.0 %
    mainChunk 3.02 MB 3.02 MB - 0.0 %

    Note: We do not have exact data for 01feeb59. So we have used data from: 623c4fb7.
    The intended commit has no webpack pipeline, so we chose the last commit with one before it.

    Please look at the full report for more details


    Read more about how this report works.

    Generated by :no_entry_sign: Danger

  • Contributor

    @markus.ferrell Some end-to-end (E2E) tests should run based on the stage label.

    Please start the trigger-omnibus-and-follow-up-e2e job in the qa stage and ensure tests in the follow-up-e2e:package-and-test-ee pipeline pass before this MR is merged. (E2E tests are computationally intensive and don't run automatically for every push/rebase, so we ask you to run this job manually at least once.)

    To run all E2E tests, apply the pipeline:run-all-e2e label and run a new pipeline.

    E2E test jobs are allowed to fail due to flakiness. See current failures at the latest pipeline triage issue.

    Once done, apply the :white_check_mark: emoji on this comment.

    For any questions or help, reach out on the internal #quality Slack channel.

  • Contributor

    Allure report

    allure-report-publisher generated test report!

    e2e-test-on-gdk: :white_check_mark: test report for 6e31228e

    expand test summary
    +------------------------------------------------------------------+
    |                          suites summary                          |
    +-------------+--------+--------+---------+-------+-------+--------+
    |             | passed | failed | skipped | flaky | total | result |
    +-------------+--------+--------+---------+-------+-------+--------+
    | Plan        | 51     | 0      | 0       | 0     | 51    | ✅     |
    | Manage      | 0      | 0      | 1       | 0     | 1     | ➖     |
    | Create      | 32     | 0      | 5       | 0     | 37    | ✅     |
    | Data Stores | 20     | 0      | 0       | 0     | 20    | ✅     |
    | Govern      | 45     | 0      | 0       | 0     | 45    | ✅     |
    | Verify      | 20     | 0      | 0       | 0     | 20    | ✅     |
    +-------------+--------+--------+---------+-------+-------+--------+
    | Total       | 168    | 0      | 6       | 0     | 174   | ✅     |
    +-------------+--------+--------+---------+-------+-------+--------+

    e2e-review-qa: :exclamation: test report for 64ff860b

    expand test summary
    +-----------------------------------------------------------------------+
    |                            suites summary                             |
    +------------------+--------+--------+---------+-------+-------+--------+
    |                  | passed | failed | skipped | flaky | total | result |
    +------------------+--------+--------+---------+-------+-------+--------+
    | Create           | 8      | 0      | 1       | 0     | 9     | ✅     |
    | Manage           | 1      | 0      | 0       | 0     | 1     | ✅     |
    | Verify           | 8      | 0      | 0       | 0     | 8     | ✅     |
    | Plan             | 3      | 0      | 1       | 0     | 4     | ✅     |
    | Package          | 0      | 0      | 1       | 0     | 1     | ➖     |
    | Data Stores      | 2      | 0      | 0       | 0     | 2     | ✅     |
    | Framework sanity | 0      | 0      | 1       | 0     | 1     | ➖     |
    | Govern           | 2      | 0      | 0       | 0     | 2     | ✅     |
    | Monitor          | 4      | 0      | 0       | 1     | 4     | ❗     |
    +------------------+--------+--------+---------+-------+-------+--------+
    | Total            | 28     | 0      | 4       | 1     | 32    | ❗     |
    +------------------+--------+--------+---------+-------+-------+--------+
  • Markus Ferrell added 504 commits

    added 504 commits

    Compare with previous version

  • added blocked label

  • Markus Ferrell mentioned in merge request !129264 (closed)

    mentioned in merge request !129264 (closed)

    • Resolved by Pedro Pombeiro

      @markus.ferrell I've found another (kind of unrelated) issue that I'll need to fix first, in order for the database review to be simpler. The problem is that since Ci::Runner.with_version is being introduced, joining ci_runners with ci_runner_managers, this will make the complex query scenario in the MR description very inefficient, given that it will query on ci_runner_managers for version values, but also on ci_runners for other values such as contacted_at. So we need to move online/offline, and stale scopes to operate similarly on ci_runner_machines values. Something like this:

      diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
      index 0413bb480d40..9ddc6d7185b4 100644
      --- a/app/models/ci/runner.rb
      +++ b/app/models/ci/runner.rb
      @@ -87,7 +87,14 @@ class Runner < Ci::ApplicationRecord
       
           scope :active, -> (value = true) { where(active: value) }
           scope :paused, -> { active(false) }
      -    scope :online, -> { where(arel_table[:contacted_at].gt(online_contact_time_deadline)) }
      +    scope :online, -> do
      +      where('EXISTS(?)',
      +        RunnerManager.select(1)
      +          .where(RunnerManager.arel_table[:runner_id].eq(arel_table[:id]))
      +          .where(RunnerManager.arel_table[:contacted_at].gt(online_contact_time_deadline))
      +          .limit(1)
      +      )
      +    end
           scope :recent, -> do
             timestamp = stale_deadline
       
      diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb
      index 56e69cc2b9c9..13307fe91a9c 100644
      --- a/spec/models/ci/runner_spec.rb
      +++ b/spec/models/ci/runner_spec.rb
      @@ -612,12 +612,24 @@ def stub_redis_runner_contacted_at(value)
         end
       
         describe '.online', :freeze_time do
      -    subject { described_class.online }
      +    subject(:scope) { described_class.online }
       
      -    let!(:runner1) { create(:ci_runner, :instance, contacted_at: 2.hours.ago) }
      -    let!(:runner2) { create(:ci_runner, :instance, contacted_at: 1.second.ago) }
      +    let!(:runner1) { create(:ci_runner, :instance) }
       
      -    it { is_expected.to match_array([runner2]) }
      +    context 'when runners have no managers attached' do
      +      it { is_expected.to be_empty }
      +    end
      +
      +    context 'when runners have managers attached' do
      +      let!(:runner2) { create(:ci_runner, :instance) }
      +
      +      before do
      +        create(:ci_runner_machine, runner: runner1, contacted_at: 2.hours.ago)
      +        create(:ci_runner_machine, runner: runner2, contacted_at: 1.second.ago)
      +      end
      +
      +      it { is_expected.to contain_exactly runner2 }
      +    end
         end
       
         describe '#online?', :clean_gitlab_redis_cache, :freeze_time do

      This should be done before we introduce with_version, ideally on a separate MR blocking this one.

    • Resolved by Pedro Pombeiro

      note: @markus.ferrell you'll also want to update the following file, so that the counts on the top of the page reflect the runners with the matched version:

      diff --git a/ee/app/assets/javascripts/ci/runner/graphql/list/all_runners_count.query.graphql b/ee/app/assets/javascripts/ci/runner/graphql/list/all_runners_count.query.graphql
      index b1e537f2f064..6889a71d056f 100644
      --- a/ee/app/assets/javascripts/ci/runner/graphql/list/all_runners_count.query.graphql
      +++ b/ee/app/assets/javascripts/ci/runner/graphql/list/all_runners_count.query.graphql
      @@ -5,6 +5,7 @@ query getAllRunnersCountEE(
         $type: CiRunnerType
         $tagList: [String!]
         $search: String
      +  $version: String
       ) {
         runners(
           paused: $paused
      @@ -13,6 +14,7 @@ query getAllRunnersCountEE(
           type: $type
           tagList: $tagList
           search: $search
      +    version: $version
         ) {
           count
         }
  • Pedro Pombeiro changed the description

    changed the description

  • mentioned in issue #422046 (closed)

  • added grouprunner label and removed grouppipeline execution label

  • Pedro Pombeiro changed the description

    changed the description

  • Pedro Pombeiro changed milestone to %16.3

    changed milestone to %16.3

  • Markus Ferrell added 1 commit

    added 1 commit

    • 568f89e2 - change version to version_prefix

    Compare with previous version

  • Markus Ferrell added 1 commit

    added 1 commit

    Compare with previous version

  • Pedro Pombeiro
    • Resolved by Pedro Pombeiro

      @markus.ferrell Due to a long standing issue (#352455), to prevent potential outages we should split this MR into frontend and API/backend changes.

      The idea is to first merge the API/backend changes and wait until they hit production, and then merge the frontend changes.

      These are the frontend changes that would have to go to a separate MR:

      • assets/javascr‎ipts/ci/runner‎
      • ee/app/assets/javascript‎s/ci/runner/graphql/list
      • spec/frontend/ci/runner/admin_runners/admin_runners_app_spec.js
      • locale/gitlab.pot

      I am sorry this creates extra churn.

  • Markus Ferrell added 1 commit

    added 1 commit

    Compare with previous version

  • Markus Ferrell added 1 commit

    added 1 commit

    • ad4ced59 - More name changes and an extra test

    Compare with previous version

  • Markus Ferrell added 1 commit

    added 1 commit

    Compare with previous version

  • This is my last day at Kitware so somebody else will be picking up this issue in the future. @joe-snyder for awareness

  • Pedro Pombeiro changed the description

    changed the description

  • assigned to @joe-snyder and unassigned @markus.ferrell

  • Joe Snyder added 1317 commits

    added 1317 commits

    Compare with previous version

  • Joe Snyder added 1006 commits

    added 1006 commits

    Compare with previous version

  • Pedro Pombeiro changed milestone to %16.4

    changed milestone to %16.4

  • Pedro Pombeiro requested review from @jarka

    requested review from @jarka

  • @jarka @pedropombeiro, this Community contribution is ready for review.

    • Do you have capacity and domain expertise to review this? We are mindful of your time, so if you are not able to take this on, please re-assign to one or more other reviewers.
    • Add the workflowin dev label if the merge request needs action from the author.

    This message was generated automatically. You're welcome to improve it.

  • Pedro Pombeiro changed the description

    changed the description

  • Pedro Pombeiro requested review from @fneill

    requested review from @fneill

  • Joe Snyder added 1 commit

    added 1 commit

    • d83545cb - Update documentation string for version_prefix

    Compare with previous version

  • Fiona Neill approved this merge request

    approved this merge request

  • Fiona Neill removed review request for @fneill

    removed review request for @fneill

  • Joe Snyder added 1313 commits

    added 1313 commits

    Compare with previous version

  • Joe Snyder added 826 commits

    added 826 commits

    Compare with previous version

  • Pedro Pombeiro
  • Joe Snyder added 1 commit

    added 1 commit

    • 61fac49e - Add comment explaining edge case in test

    Compare with previous version

  • @jarka, @pedropombeiro, this Community contribution was recently assigned to you for review.

    • Do you still have capacity to review this? We are mindful of your time, so if you are not able to take this on, please re-assign to one or more other reviewers.
    • Add the workflowin dev label if the merge request needs action from the author.

    This message was generated automatically. You're welcome to improve it.

  • Joe Snyder added 3060 commits

    added 3060 commits

    Compare with previous version

  • @pedropombeiro, thanks for the comments :bow: I've addressed them in this latest push. PTAL again!

  • Joe Snyder added 229 commits

    added 229 commits

    Compare with previous version

  • Joe Snyder added 498 commits

    added 498 commits

    Compare with previous version

  • Pedro Pombeiro removed review request for @jarka

    removed review request for @jarka

  • Pedro Pombeiro changed the description

    changed the description

  • Joe Snyder added 625 commits

    added 625 commits

    Compare with previous version

  • Pedro Pombeiro changed the description

    changed the description

  • Pedro Pombeiro changed milestone to %16.6

    changed milestone to %16.6

  • Pedro Pombeiro
  • Contributor

    All findings based on the AppSec custom Semgrep rules have been resolved! :tada:

  • A deleted user added Data WarehouseImpact Check label
  • Pedro Pombeiro changed the description

    changed the description

  • Pedro Pombeiro requested review from @minac

    requested review from @minac

  • Vladimir Shushlin requested review from @vshushlin

    requested review from @vshushlin

  • Mehmet Emin INAC
  • Mehmet Emin INAC requested review from @mayra-cabrera and removed review request for @minac

    requested review from @mayra-cabrera and removed review request for @minac

  • Contributor

    Database migrations (on the main database)

    Migrations included in this change have been executed on gitlab.com data for testing purposes. For details, please see the migration testing pipeline (limited access).

    Migration Type Total runtime Result DB size change
    20231002144140 - AddSemverIndexCiRunnerMachines Regular 4.4 s :white_check_mark: +24.00 KiB
    Runtime Histogram for all migrations
    Query Runtime Count
    0 seconds - 0.01 seconds 0
    0.01 seconds - 0.1 seconds 6
    0.1 seconds - 1 second 0
    1 second - 5 seconds 0
    5 seconds - 15 seconds 0
    15 seconds - 5 minutes 0
    5 minutes + 0

    Migration: 20231002144140 - AddSemverIndexCiRunnerMachines

    • Type: Regular
    • Duration: 4.4 s
    • Database size change: +24.00 KiB
    Calls Total Time Max Time Mean Time Rows Query
    1 20.4 ms 20.4 ms 20.4 ms 0
    CREATE INDEX CONCURRENTLY "index_ci_runner_machines_on_major_version_trigram" ON "ci_runner_machines" (((substring(version from '^\d+.'))), version, runner_id)
    1 9.4 ms 9.4 ms 9.4 ms 0
    CREATE INDEX CONCURRENTLY "index_ci_runner_machines_on_minor_version_trigram" ON "ci_runner_machines" (((substring(version from '^\d+.\d+.'))), version, runner_id)
    1 5.4 ms 5.4 ms 5.4 ms 1
    SELECT "feature_gates"."key", "feature_gates"."value"  FROM "feature_gates"  WHERE "feature_gates"."feature_key" = $1
    1 1.9 ms 1.9 ms 1.9 ms 0
    CREATE INDEX CONCURRENTLY "index_ci_runner_machines_on_patch_version_trigram" ON "ci_runner_machines" (((substring(version from '^\d+.\d+.\d+'))), version, runner_id)
    2 0.0 ms 0.0 ms 0.0 ms 2
    SELECT pg_backend_pid()
    Histogram for AddSemverIndexCiRunnerMachines
    Query Runtime Count
    0 seconds - 0.01 seconds 0
    0.01 seconds - 0.1 seconds 6
    0.1 seconds - 1 second 0
    1 second - 5 seconds 0
    5 seconds - 15 seconds 0
    15 seconds - 5 minutes 0
    5 minutes + 0

    Other information

    Other migrations pending on GitLab.com
    Migration Type Total runtime Result DB size change
    20230927045103 - AsyncIdxVulnerabilityOccurencesOnPrimIdenId Post deploy 3.2 s :white_check_mark: +8.00 KiB [note]
    20231004080224 - SwapColumnsForCiStagesPipelineIdBigint Post deploy 3.0 s :white_check_mark: +0.00 B
    20231009115743 - AddDuplicateIndexRuleTypeFourAndApplicableColumn Post deploy 350.5 s :warning: +1.18 GiB
    20231013031159 - SwapColumnsForCiPipelinesPipelineIdBigint Post deploy 2.5 s :white_check_mark: +0.00 B
    20231013181758 - RemoveTempIndexForProjectStatisticsPipelineArtifactsSizeMigration Post deploy 2.4 s :white_check_mark: -6.53 MiB
    20231016100238 - RemoveUsersProjectsCreatorIdFk Post deploy 2.6 s :warning: +0.00 B
    20231016101611 - RemoveUsersProjectsMarkedForDeletionByUserIdFk Post deploy 2.0 s :white_check_mark: +0.00 B
    20231017064317 - SwapColumnsForCiPipelineVariablesPipelineIdBigint Post deploy 2.7 s :white_check_mark: +0.00 B
    20231017172156 - AddIndexOnProjectsForAdjournedDeletion Post deploy 384.3 s :white_check_mark: +2.65 MiB
    Clone details
    Clone ID Clone Created At Clone Data Timestamp Expected Removal Time
    database-testing-2425819-11564240-main 2023-10-18T21:50:44Z 2023-10-18T14:39:11Z 2023-10-19 10:07:42 +0000
    database-testing-2425819-11564240-ci 2023-10-18T21:50:44Z 2023-10-18T20:46:54Z 2023-10-19 10:07:42 +0000

    Job artifacts

    Database migrations (on the ci database)

    Migrations included in this change have been executed on gitlab.com data for testing purposes. For details, please see the migration testing pipeline (limited access).

    Migration Type Total runtime Result DB size change
    20231002144140 - AddSemverIndexCiRunnerMachines Regular 16.8 s :white_check_mark: +29.49 MiB
    Runtime Histogram for all migrations
    Query Runtime Count
    0 seconds - 0.01 seconds 0
    0.01 seconds - 0.1 seconds 2
    0.1 seconds - 1 second 0
    1 second - 5 seconds 2
    5 seconds - 15 seconds 1
    15 seconds - 5 minutes 0
    5 minutes + 0

    Migration: 20231002144140 - AddSemverIndexCiRunnerMachines

    • Type: Regular
    • Duration: 16.8 s
    • Database size change: +29.49 MiB
    Calls Total Time Max Time Mean Time Rows Query
    1 7942.4 ms 7942.4 ms 7942.4 ms 0
    CREATE INDEX CONCURRENTLY "index_ci_runner_machines_on_major_version_trigram" ON "ci_runner_machines" (((substring(version from '^\d+.'))), version, runner_id)
    1 2132.5 ms 2132.5 ms 2132.5 ms 0
    CREATE INDEX CONCURRENTLY "index_ci_runner_machines_on_patch_version_trigram" ON "ci_runner_machines" (((substring(version from '^\d+.\d+.\d+'))), version, runner_id)
    1 2026.4 ms 2026.4 ms 2026.4 ms 0
    CREATE INDEX CONCURRENTLY "index_ci_runner_machines_on_minor_version_trigram" ON "ci_runner_machines" (((substring(version from '^\d+.\d+.'))), version, runner_id)
    2 0.0 ms 0.0 ms 0.0 ms 2
    SELECT pg_backend_pid()
    Histogram for AddSemverIndexCiRunnerMachines
    Query Runtime Count
    0 seconds - 0.01 seconds 0
    0.01 seconds - 0.1 seconds 2
    0.1 seconds - 1 second 0
    1 second - 5 seconds 2
    5 seconds - 15 seconds 1
    15 seconds - 5 minutes 0
    5 minutes + 0

    Other information

    Other migrations pending on GitLab.com
    Migration Type Total runtime Result DB size change
    20231009115743 - AddDuplicateIndexRuleTypeFourAndApplicableColumn Post deploy 3.3 s :white_check_mark: +8.00 KiB [note]
    20231013181758 - RemoveTempIndexForProjectStatisticsPipelineArtifactsSizeMigration Post deploy 3.3 s :white_check_mark: -8.00 KiB
    20231017064317 - SwapColumnsForCiPipelineVariablesPipelineIdBigint Post deploy 3.5 s :white_check_mark: +0.00 B
    20231017172156 - AddIndexOnProjectsForAdjournedDeletion Post deploy 5.2 s :white_check_mark: +8.00 KiB [note]
    Clone details
    Clone ID Clone Created At Clone Data Timestamp Expected Removal Time
    database-testing-2425819-11564240-main 2023-10-18T21:50:44Z 2023-10-18T14:39:11Z 2023-10-19 10:07:42 +0000
    database-testing-2425819-11564240-ci 2023-10-18T21:50:44Z 2023-10-18T20:46:54Z 2023-10-19 10:07:42 +0000

    Job artifacts


    Brought to you by gitlab-org/database-team/gitlab-com-database-testing. Epic

  • Thanks @joe-snyder and @pedropombeiro I've left some thoughts from database.

  • Mayra Cabrera removed review request for @mayra-cabrera

    removed review request for @mayra-cabrera

  • Joe Snyder added 527 commits

    added 527 commits

    Compare with previous version

  • Vladimir Shushlin
  • Vladimir Shushlin
  • Vladimir Shushlin
  • Thank you for all the hard work, @joe-snyder! And thanks to @pedropombeiro and @mayra-cabrera for an excellent review! I love this solution :heart_eyes: :100: :dancing_penguin:

    @joe-snyder I left a bunch of small comments, otherwise, it looks great!

  • Joe Snyder added 534 commits

    added 534 commits

    Compare with previous version

  • Joe Snyder added 163 commits

    added 163 commits

    Compare with previous version

  • Joe Snyder added 176 commits

    added 176 commits

    Compare with previous version

  • mentioned in issue #428771 (closed)

  • Vladimir Shushlin resolved all threads

    resolved all threads

  • Joe Snyder added 99 commits

    added 99 commits

    Compare with previous version

  • Mayra Cabrera approved this merge request

    approved this merge request

  • added databaseapproved label and removed databasereviewed label

  • Vladimir Shushlin resolved all threads

    resolved all threads

  • Vladimir Shushlin approved this merge request

    approved this merge request

  • Thank you so much for all the hard work, @joe-snyder and all reviewers! :green_heart: I'm really happy with the final solution and the state of this MR :100: :thumbsup: :dancing_penguin:

    I kicked off another pipeline and set MWPS! :rocket:

  • Vladimir Shushlin enabled an automatic merge when the pipeline for 537c07c6 succeeds

    enabled an automatic merge when the pipeline for 537c07c6 succeeds

  • @markus.ferrell, how was your code review experience with this merge request? Please tell us how we can continue to iterate and improve:

    1. React with a :thumbsup: or a :thumbsdown: on this comment to describe your experience.
    2. Create a new comment starting with @gitlab-bot feedback below, and leave any additional feedback you have for us in the comment.

    Interested in learning more tips and tricks to solve your next challenge faster? Subscribe to the GitLab Community Newsletter for contributor-focused content and opportunities to level up.

    Thanks for your help! :heart:

    This message was generated automatically. You're welcome to improve it.

  • mentioned in commit fd5d1014

  • Hello @markus.ferrell :wave:

    The database team is looking for ways to improve the database review process and we would love your help!

    If you'd be open to someone on the database team reaching out to you for a chat, or if you'd like to leave some feedback asynchronously, just post a reply to this comment mentioning:

    @gitlab-org/database-team

    And someone will be by shortly!

    Thanks for your help! :heart:

    This message was generated automatically. You're welcome to improve it.

  • added workflowstaging label and removed workflowcanary label

  • Joe Snyder mentioned in merge request !135025 (merged)

    mentioned in merge request !135025 (merged)

  • Please register or sign in to reply
    Loading