Skip to content

Add compliance_frameworks_with_pipeline to usage ping

Max Woolf requested to merge 329897-track-compliance-pipeline-usage into master

What does this MR do?

  • Adds a new usage ping entry to count the number of custom compliance frameworks that have an associated GitLab CI configuration file.
  • All SQL queries are tested in #database-lab and execute in <20ms from cold cache.

Review

Min Query

SELECT MIN("compliance_management_frameworks"."id") FROM "compliance_management_frameworks" WHERE "compliance_management_frameworks"."pipeline_configuration_full_path" IS NOT NULL

Query Plan

 Result  (cost=2.87..2.88 rows=1 width=8) (actual time=0.355..0.356 rows=1 loops=1)
   Buffers: shared hit=61
   I/O Timings: read=0.000 write=0.000
   InitPlan 1 (returns $0)
     ->  Limit  (cost=0.28..2.87 rows=1 width=8) (actual time=0.350..0.350 rows=1 loops=1)
           Buffers: shared hit=61
           I/O Timings: read=0.000 write=0.000
           ->  Index Scan using compliance_management_frameworks_pkey on public.compliance_management_frameworks  (cost=0.28..109.37 rows=42 width=8) (actual time=0.348..0.348 rows=1 loops=1)
                 Index Cond: (compliance_management_frameworks.id IS NOT NULL)
                 Filter: (compliance_management_frameworks.pipeline_configuration_full_path IS NOT NULL)
                 Rows Removed by Filter: 1423
                 Buffers: shared hit=61
                 I/O Timings: read=0.000 write=0.000

Timings

Time: 1.302 ms
  - planning: 0.894 ms
  - execution: 0.408 ms
    - I/O read: 0.000 ms
    - I/O write: 0.000 ms

Shared buffers:
  - hits: 61 (~488.00 KiB) from the buffer pool
  - reads: 0 from the OS file cache, including disk I/O
  - dirtied: 0
  - writes: 0

Max Query

SELECT MAX("compliance_management_frameworks"."id") FROM "compliance_management_frameworks" WHERE "compliance_management_frameworks"."pipeline_configuration_full_path" IS NOT NULL

Query Plan

 Result  (cost=2.87..2.88 rows=1 width=8) (actual time=0.177..0.178 rows=1 loops=1)
   Buffers: shared read=3
   I/O Timings: read=0.143 write=0.000
   InitPlan 1 (returns $0)
     ->  Limit  (cost=0.28..2.87 rows=1 width=8) (actual time=0.173..0.174 rows=1 loops=1)
           Buffers: shared read=3
           I/O Timings: read=0.143 write=0.000
           ->  Index Scan using compliance_management_frameworks_pkey on public.compliance_management_frameworks  (cost=0.28..109.37 rows=42 width=8) (actual time=0.171..0.172 rows=1 loops=1)
                 Index Cond: (compliance_management_frameworks.id IS NOT NULL)
                 Filter: (compliance_management_frameworks.pipeline_configuration_full_path IS NOT NULL)
                 Rows Removed by Filter: 0
                 Buffers: shared read=3
                 I/O Timings: read=0.143 write=0.000

Timings

Time: 0.993 ms
  - planning: 0.777 ms
  - execution: 0.216 ms
    - I/O read: 0.143 ms
    - I/O write: 0.000 ms

Shared buffers:
  - hits: 0 from the buffer pool
  - reads: 3 (~24.00 KiB) from the OS file cache, including disk I/O
  - dirtied: 0
  - writes: 0

Count Query

SELECT COUNT("compliance_management_frameworks"."id") FROM "compliance_management_frameworks" WHERE "compliance_management_frameworks"."pipeline_configuration_full_path" IS NOT NULL

Query Plan

 Aggregate  (cost=27.77..27.78 rows=1 width=8) (actual time=0.137..0.138 rows=1 loops=1)
   Buffers: shared hit=17 read=2
   I/O Timings: read=0.057 write=0.000
   ->  Index Scan using idx_max_test_2 on public.compliance_management_frameworks  (cost=0.28..27.66 rows=42 width=8) (actual time=0.088..0.126 rows=48 loops=1)
         Index Cond: (compliance_management_frameworks.pipeline_configuration_full_path IS NOT NULL)
         Buffers: shared hit=17 read=2
         I/O Timings: read=0.057 write=0.000

Timings

Time: 0.989 ms
  - planning: 0.114 ms
  - execution: 0.875 ms
    - I/O read: 0.497 ms
    - I/O write: 0.000 ms

Shared buffers:
  - hits: 1 (~8.00 KiB) from the buffer pool
  - reads: 18 (~144.00 KiB) from the OS file cache, including disk I/O
  - dirtied: 0
  - writes: 0

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #329897 (closed)

Edited by Max Woolf

Merge request reports