lex-telemetry 0.1.3 → 0.1.4
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 +4 -4
- data/CHANGELOG.md +13 -0
- data/Gemfile +2 -0
- data/lex-telemetry.gemspec +2 -0
- data/lib/legion/extensions/telemetry/actors/region_reporter.rb +2 -2
- data/lib/legion/extensions/telemetry/runners/telemetry.rb +32 -0
- data/lib/legion/extensions/telemetry/version.rb +1 -1
- metadata +15 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 783eceb3850cecfce20c43c308552378cf9c974c41c00ef9c977c55bd0f878fd
|
|
4
|
+
data.tar.gz: 06ac5a8ea95873f8936e0e8155f0563e622bbff9d21053bab0d8dada2aedb0b5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f35fe3b501776e7fa383bb4cff16b06a17ef388ba3d0dafddb6e1ffcc7c62d98d2376d3a87e55fe93d344739ed3860cbbb34e9bdb61ae2126f47c5d69a923d81
|
|
7
|
+
data.tar.gz: f98c67177e37a991164b2e583b5cf36ef66dbfc851485c1fbb700924c4e256acd72649e4a72ffe2356965df50f64115ceb4d3e9a69c79567f08bd8ea78bcbe01
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.4] - 2026-03-21
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- `record_cross_region(from_region:, to_region:)`: thread-safe atomic counter for cross-region message routing
|
|
7
|
+
- `record_replication_lag(region:, lag_seconds:)`: stores latest replication lag sample per region
|
|
8
|
+
- `region_stats`: returns cross-region counters and replication lag samples
|
|
9
|
+
- `concurrent-ruby` runtime dependency for `Concurrent::AtomicFixnum` and `Concurrent::Hash`
|
|
10
|
+
- Subscription actor now records cross-region metrics when lex-telemetry is loaded
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- `RegionReporter` actor interval reduced from 120s to 60s
|
|
14
|
+
- `RegionReporter` now calls `region_stats` instead of `region_metrics`
|
|
15
|
+
|
|
3
16
|
## [0.1.3] - 2026-03-21
|
|
4
17
|
|
|
5
18
|
### Added
|
data/Gemfile
CHANGED
data/lex-telemetry.gemspec
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'concurrent'
|
|
4
|
+
|
|
3
5
|
module Legion
|
|
4
6
|
module Extensions
|
|
5
7
|
module Telemetry
|
|
@@ -7,6 +9,34 @@ module Legion
|
|
|
7
9
|
module Telemetry
|
|
8
10
|
module_function
|
|
9
11
|
|
|
12
|
+
def cross_region_counters
|
|
13
|
+
@cross_region_counters ||= Concurrent::Hash.new { |h, k| h[k] = Concurrent::AtomicFixnum.new(0) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def replication_lag_samples
|
|
17
|
+
@replication_lag_samples ||= Concurrent::Hash.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def record_cross_region(from_region:, to_region:, **_opts)
|
|
21
|
+
key = "#{from_region}->#{to_region}"
|
|
22
|
+
cross_region_counters[key].increment
|
|
23
|
+
{ success: true, key: key, count: cross_region_counters[key].value }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def record_replication_lag(region:, lag_seconds:, **_opts)
|
|
27
|
+
replication_lag_samples[region] = { lag_seconds: lag_seconds, recorded_at: Time.now.to_i }
|
|
28
|
+
{ success: true, region: region, lag_seconds: lag_seconds }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def region_stats(**_opts)
|
|
32
|
+
{
|
|
33
|
+
success: true,
|
|
34
|
+
cross_region: cross_region_counters.transform_values(&:value),
|
|
35
|
+
replication_lag: replication_lag_samples.dup,
|
|
36
|
+
timestamp: Time.now.to_i
|
|
37
|
+
}
|
|
38
|
+
end
|
|
39
|
+
|
|
10
40
|
SCAN_DIRS = [
|
|
11
41
|
File.expand_path('~/.claude/projects')
|
|
12
42
|
].freeze
|
|
@@ -176,6 +206,8 @@ module Legion
|
|
|
176
206
|
@event_store = nil
|
|
177
207
|
@parsers = nil
|
|
178
208
|
@high_water_mark = nil
|
|
209
|
+
@cross_region_counters = nil
|
|
210
|
+
@replication_lag_samples = nil
|
|
179
211
|
end
|
|
180
212
|
end
|
|
181
213
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-telemetry
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -9,6 +9,20 @@ bindir: bin
|
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: concurrent-ruby
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1.2'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '1.2'
|
|
12
26
|
- !ruby/object:Gem::Dependency
|
|
13
27
|
name: rake
|
|
14
28
|
requirement: !ruby/object:Gem::Requirement
|