ci-queue 0.79.0 → 0.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a6bc964bea9e748549dc7e57a2ec4c0207e080fa5d644fac6d75165b88b44cf
4
- data.tar.gz: 22acfa15e29f811514aea54861ae9f4c422e11d42eadbed7241b030f5a3ed79f
3
+ metadata.gz: b8f6b51411e322411c49898ac1a082148ca8b584769d8d3e52ddfd87b11cbb96
4
+ data.tar.gz: ee4e4beba8f6d2f97400631f7ac7b47ed8561c2af223e369ad9fcdbe88f4c6e3
5
5
  SHA512:
6
- metadata.gz: 02b7be5eea0c4f50eacd9caa19bb64f7ab52720deb92897573efad680bf1130aa717f09302b3c6573bd0c7e5eed592ba3acb601cfeb8a2eabbdc9cb422826d2e
7
- data.tar.gz: dbdca360f7eba2da549559f982c73175302dc5e92f414972f39c8a6fb77de9a95d3dfc783bae4be3a63dcefa2844c69e5fae3842f828dff42d66a2b9058aae64
6
+ metadata.gz: d8f03c40ee904cc069300219ffd71262237de5d291eae1ab682289faae8108f90ec127cbd327b5ea1c0afe9a674e493670e3097922f8848bc3757ebbcb8c38f4
7
+ data.tar.gz: 8c9904ae453b65bd1be76f5cf3c49098f33a2cc1270699ec7569477465ff3c6369931da7e9a2eae789fc1949b07341148d2e8e73276d0362568bd65801fc6723
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ci-queue (0.79.0)
4
+ ci-queue (0.80.0)
5
5
  logger
6
6
 
7
7
  GEM
@@ -214,7 +214,7 @@ module CI
214
214
  end
215
215
 
216
216
  def key(*args)
217
- ['build', build_id, *args].join(':')
217
+ KeyShortener.key(config.build_id, *args)
218
218
  end
219
219
 
220
220
  def build_id
@@ -139,7 +139,7 @@ module CI
139
139
  end
140
140
 
141
141
  def key(*args)
142
- ['build', config.build_id, *args].join(':')
142
+ KeyShortener.key(config.build_id, *args)
143
143
  end
144
144
  end
145
145
  end
@@ -52,7 +52,7 @@ module CI
52
52
  attr_reader :redis, :config
53
53
 
54
54
  def key(*args)
55
- ['build', config.build_id, *args].join(':')
55
+ KeyShortener.key(config.build_id, *args)
56
56
  end
57
57
 
58
58
  def record_stats(stats, pipeline: redis)
@@ -0,0 +1,53 @@
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
+
33
+ # We're transforming the key to a shorter format to minimize network traffic.
34
+ #
35
+ # Strategy:
36
+ # - Shorten prefix: 'b' instead of 'build'
37
+ # - Hash UUID: 8-char MD5 instead of 36-char UUID
38
+ # - Alias suffixes: single letters instead of full words
39
+ #
40
+ # Example:
41
+ # build:unit:019aef0e-c010-433e-b706-c658d3c16372:running (55 bytes)
42
+ # -> b:f03d3bef:r (13 bytes, 76% reduction)
43
+
44
+ def self.key(build_id, *args)
45
+ digest = Digest::MD5.hexdigest(build_id)[0..7]
46
+ shortened_args = args.map { |arg| SUFFIX_ALIASES[arg] || arg }
47
+
48
+ ['b', digest, *shortened_args].join(':')
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -11,6 +11,7 @@ require 'ci/queue/redis/retry'
11
11
  require 'ci/queue/redis/supervisor'
12
12
  require 'ci/queue/redis/grind_supervisor'
13
13
  require 'ci/queue/redis/test_time_record'
14
+ require 'ci/queue/redis/key_shortener'
14
15
 
15
16
  module CI
16
17
  module Queue
@@ -2,7 +2,7 @@
2
2
 
3
3
  module CI
4
4
  module Queue
5
- VERSION = '0.79.0'
5
+ VERSION = '0.80.0'
6
6
  DEV_SCRIPTS_ROOT = ::File.expand_path('../../../../../redis', __FILE__)
7
7
  RELEASE_SCRIPTS_ROOT = ::File.expand_path('../redis', __FILE__)
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.79.0
4
+ version: 0.80.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
@@ -203,6 +203,7 @@ files:
203
203
  - lib/ci/queue/redis/grind_record.rb
204
204
  - lib/ci/queue/redis/grind_supervisor.rb
205
205
  - lib/ci/queue/redis/heartbeat.lua
206
+ - lib/ci/queue/redis/key_shortener.rb
206
207
  - lib/ci/queue/redis/monitor.rb
207
208
  - lib/ci/queue/redis/release.lua
208
209
  - lib/ci/queue/redis/requeue.lua