lex-microsoft_teams 0.6.6 → 0.6.8

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: fd2d2ac7556a1fcc52771005868ce843b3a8fef46dc9976be60a7eb012213bdc
4
- data.tar.gz: 07d0d60609364d9a622bc26976b7c34e2a18fa5fba8c0b519873613d106cfb9d
3
+ metadata.gz: 78d528fe35f21ca1bfda03d8d581c2d979b70f23155339a1dc81e49eec40b4ab
4
+ data.tar.gz: 8e2d9541849239b25e00b3ca117779157d405c64555948175416b930406ec7e6
5
5
  SHA512:
6
- metadata.gz: 94583b4e0b8fa58b1d5fbb49a851859a42cb22078debb5379cc68f44e5e0fa61da55aca0ab469791a4ee72c0bf763526fe69e7473186a6dbf3deb9395b4d5298
7
- data.tar.gz: 7f6971571bc4fde09bf690a922b5aa262fdb2b314e2cffd261530b77643f124be67336d2d6008c1bf14d3ae493d936fa79ab38ece856f62774489ee4427d841d
6
+ metadata.gz: 18d439c2d3dae6af4747d71072fc8f6ce92151293103eb0cb3946f6233a5f48c58a4c7a7ab841dd3a2bb6a854e5649b2b729afaada8d28e78f337f35b047f46d
7
+ data.tar.gz: 3c2b26ef4eef98dec5eb788416c64397ed2c3ef63f353803fe9b9283046ecc3186f68300c186c212c7a206ab6222318a2b9273a5edeb735aedfa8382baa29c63
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.6.8] - 2026-03-22
4
+
5
+ ### Fixed
6
+ - TokenCache deadlock: `cached_delegated_token` held `@mutex` while calling `refresh_delegated` -> `save_to_local` which re-acquired `@mutex`. Moved refresh outside synchronize block.
7
+
8
+ ### Added
9
+ - INFO logging in ProfileIngest and CacheBulkIngest `manual` methods for boot-time visibility
10
+
11
+ ## [0.6.7] - 2026-03-22
12
+
13
+ ### Fixed
14
+ - ProfileIngest actor uses `TokenCache.instance` singleton instead of `TokenCache.new` (empty cache returned nil token, preventing boot-time profile ingest)
15
+
3
16
  ## [0.6.6] - 2026-03-22
4
17
 
5
18
  ### Added
@@ -21,6 +21,15 @@ module Legion
21
21
  false
22
22
  end
23
23
 
24
+ def manual
25
+ Legion::Logging.info('[Teams::CacheBulkIngest] CacheBulkIngest firing') if defined?(Legion::Logging)
26
+ result = runner_class.ingest_cache(**args)
27
+ Legion::Logging.info("[Teams::CacheBulkIngest] Complete: #{result.inspect[0, 200]}") if defined?(Legion::Logging)
28
+ result
29
+ rescue StandardError => e
30
+ Legion::Logging.error("[Teams::CacheBulkIngest] Error: #{e.message}") if defined?(Legion::Logging)
31
+ end
32
+
24
33
  def args
25
34
  { imprint_active: imprint_active? }
26
35
  end
@@ -23,8 +23,13 @@ module Legion
23
23
  end
24
24
 
25
25
  def manual
26
+ Legion::Logging.info('[Teams::ProfileIngest] ProfileIngest firing') if defined?(Legion::Logging)
26
27
  token = resolve_token
27
- return unless token
28
+ unless token
29
+ Legion::Logging.warn('[Teams::ProfileIngest] No token available, skipping') if defined?(Legion::Logging)
30
+ return
31
+ end
32
+ Legion::Logging.info('[Teams::ProfileIngest] Token acquired, starting ingest') if defined?(Legion::Logging)
28
33
 
29
34
  settings = begin
30
35
  Legion::Settings[:microsoft_teams] || {}
@@ -49,8 +54,7 @@ module Legion
49
54
 
50
55
  def resolve_token
51
56
  if defined?(Legion::Extensions::MicrosoftTeams::Helpers::TokenCache)
52
- cache = Legion::Extensions::MicrosoftTeams::Helpers::TokenCache.new
53
- cache.cached_delegated_token
57
+ Legion::Extensions::MicrosoftTeams::Helpers::TokenCache.instance.cached_delegated_token
54
58
  end
55
59
  rescue StandardError
56
60
  nil
@@ -76,7 +76,7 @@ module Legion
76
76
  # --- Delegated token (user auth) ---
77
77
 
78
78
  def cached_delegated_token
79
- @mutex.synchronize do
79
+ needs_refresh = @mutex.synchronize do
80
80
  unless @delegated_cache
81
81
  log_debug('No delegated token in cache')
82
82
  return nil
@@ -87,9 +87,13 @@ module Legion
87
87
  return @delegated_cache[:token]
88
88
  end
89
89
 
90
- log_info('Delegated token expired, attempting refresh')
91
- refresh_delegated
90
+ true
92
91
  end
92
+
93
+ return unless needs_refresh
94
+
95
+ log_info('Delegated token expired, attempting refresh')
96
+ refresh_delegated
93
97
  end
94
98
 
95
99
  def store_delegated_token(access_token:, refresh_token:, expires_in:, scopes:)
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module MicrosoftTeams
6
- VERSION = '0.6.6'
6
+ VERSION = '0.6.8'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-microsoft_teams
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.6.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity