File tree Expand file tree Collapse file tree 5 files changed +82
-3
lines changed
Expand file tree Collapse file tree 5 files changed +82
-3
lines changed Original file line number Diff line number Diff line change 1111require 'ci/queue/redis/supervisor'
1212require 'ci/queue/redis/grind_supervisor'
1313require 'ci/queue/redis/test_time_record'
14+ require 'ci/queue/redis/key_shortener'
1415
1516module CI
1617 module Queue
Original file line number Diff line number Diff line change @@ -214,7 +214,10 @@ def measure
214214 end
215215
216216 def key ( *args )
217- [ 'build' , build_id , *args ] . join ( ':' )
217+ digest = Digest ::MD5 . hexdigest ( config . build_id ) [ 0 ..7 ]
218+ shortened_args = args . map { |arg | KeyShortener ::SUFFIX_ALIASES [ arg ] || arg }
219+
220+ [ 'b' , digest , *shortened_args ] . join ( ':' )
218221 end
219222
220223 def build_id
Original file line number Diff line number Diff line change @@ -138,8 +138,45 @@ def record_stats(stats, pipeline: redis)
138138 end
139139 end
140140
141+ SUFFIX_ALIASES = {
142+ 'running' => 'r' ,
143+ 'processed' => 'p' ,
144+ 'queue' => 'q' ,
145+ 'owners' => 'o' ,
146+ 'error-reports' => 'e' ,
147+ 'requeues-count' => 'rc' ,
148+ 'assertions' => 'a' ,
149+ 'errors' => 'er' ,
150+ 'failures' => 'f' ,
151+ 'skips' => 's' ,
152+ 'requeues' => 'rq' ,
153+ 'total_time' => 't' ,
154+ 'test_failed_count' => 'fc' ,
155+ 'completed' => 'c' ,
156+ 'master-status' => 'm' ,
157+ 'created-at' => 'ca' ,
158+ 'workers' => 'w' ,
159+ 'worker' => 'w' ,
160+ 'warnings' => 'wn' ,
161+ 'worker-errors' => 'we' ,
162+ 'flaky-reports' => 'fl' ,
163+ } . freeze
164+
165+ # We're transforming the key to a shorter format to minimize inter zone network traffic.
166+ #
167+ # Strategy:
168+ # - Shorten prefix: 'b' instead of 'build'
169+ # - Hash UUID: 8-char MD5 instead of 36-char UUID
170+ # - Alias suffixes: single letters instead of full words
171+ #
172+ # Example:
173+ # build:unit:019aef0e-c010-433e-b706-c658d3c16372:running (55 bytes)
174+ # -> b:f03d3bef:r (13 bytes, 76% reduction)
141175 def key ( *args )
142- [ 'build' , config . build_id , *args ] . join ( ':' )
176+ digest = Digest ::MD5 . hexdigest ( config . build_id ) [ 0 ..7 ]
177+ shortened_args = args . map { |arg | KeyShortener ::SUFFIX_ALIASES [ arg ] || arg }
178+
179+ [ 'b' , digest , *shortened_args ] . join ( ':' )
143180 end
144181 end
145182 end
Original file line number Diff line number Diff line change @@ -52,7 +52,10 @@ def pop_warnings
5252 attr_reader :redis , :config
5353
5454 def key ( *args )
55- [ 'build' , config . build_id , *args ] . join ( ':' )
55+ digest = Digest ::MD5 . hexdigest ( config . build_id ) [ 0 ..7 ]
56+ shortened_args = args . map { |arg | KeyShortener ::SUFFIX_ALIASES [ arg ] || arg }
57+
58+ [ 'b' , digest , *shortened_args ] . join ( ':' )
5659 end
5760
5861 def record_stats ( stats , pipeline : redis )
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+ require 'digest/md5'
3+
4+ module CI
5+ module Queue
6+ module Redis
7+ module KeyShortener
8+ # Suffix mapping for common key patterns
9+ SUFFIX_ALIASES = {
10+ 'running' => 'r' ,
11+ 'processed' => 'p' ,
12+ 'queue' => 'q' ,
13+ 'owners' => 'o' ,
14+ 'error-reports' => 'e' ,
15+ 'requeues-count' => 'rc' ,
16+ 'assertions' => 'a' ,
17+ 'errors' => 'er' ,
18+ 'failures' => 'f' ,
19+ 'skips' => 's' ,
20+ 'requeues' => 'rq' ,
21+ 'total_time' => 't' ,
22+ 'test_failed_count' => 'fc' ,
23+ 'completed' => 'c' ,
24+ 'master-status' => 'm' ,
25+ 'created-at' => 'ca' ,
26+ 'workers' => 'w' ,
27+ 'worker' => 'w' ,
28+ 'warnings' => 'wn' ,
29+ 'worker-errors' => 'we' ,
30+ 'flaky-reports' => 'fl' ,
31+ } . freeze
32+ end
33+ end
34+ end
35+ end
You can’t perform that action at this time.
0 commit comments