kshitijk4poor
687dd632a1
fix(credential_pool): serialize deferred-refresh pool mutations
...
Review folds on the #71775 salvage (dossier findings 1+2):
- self._lock becomes an RLock and the mutation primitives
(_replace_entry, _persist) are now self-locking, so the deferred
single-use-token refresh path — which deliberately runs its
cross-process flock + OAuth network I/O OUTSIDE the pool lock —
still serializes its pool mutations against concurrent
select()/rotation. In-lock callers re-acquire reentrantly.
- Dropped _refresh_pending_entries' redundant second _replace_entry:
_refresh_entry already merges the refreshed entry internally.
Adds tests/agent/test_credential_pool_deferred_refresh.py pinning both
invariants: select() must NOT hold the lock during the refresh window
(the PR's whole point), and the post-refresh mutations MUST contend on
the lock (blocking-thread probe).
2026-08-03 19:08:09 +05:30
..
2026-08-01 21:17:51 -04:00
2026-07-25 02:30:20 +00:00
2026-07-24 11:45:57 -07:00
2026-08-02 00:11:50 -07:00
2026-08-03 17:17:05 +05:30
2026-07-22 10:58:22 -07:00
2026-08-02 20:30:06 -07:00
2026-08-03 19:02:12 +05:30
2026-08-03 19:08:09 +05:30
2026-08-02 10:02:33 -07:00
2026-08-02 10:02:33 -07:00
2026-07-26 23:41:54 -07:00
2026-08-02 23:48:42 +05:30
2026-07-23 11:45:07 -07:00
2026-07-22 18:08:59 -05:00
2026-07-29 11:53:39 -07:00
2026-07-29 11:53:39 -07:00
2026-08-02 11:18:41 +05:30
2026-08-02 23:17:40 +05:30
2026-07-31 22:53:20 -07:00
2026-07-29 16:41:39 -03:00
2026-07-29 15:28:15 -07:00
2026-07-26 18:06:21 -07:00
2026-08-02 16:16:36 -07:00
2026-07-23 19:44:35 -07:00
2026-07-27 22:55:18 -05:00
2026-08-02 16:16:36 -07:00
2026-08-03 17:15:12 +05:30
2026-07-24 17:10:39 -07:00
2026-08-03 19:08:09 +05:30
2026-07-24 17:10:39 -07:00
2026-07-28 21:36:23 +00:00
2026-07-31 22:34:57 -07:00
2026-08-03 18:21:17 +05:30
2026-07-31 22:32:55 -07:00
2026-08-02 21:48:06 -07:00
2026-07-31 21:52:35 -07:00
2026-07-28 18:17:56 -07:00
2026-07-26 20:59:16 -07:00
2026-07-29 15:28:15 -07:00
2026-07-29 15:28:15 -07:00
2026-07-23 08:32:09 -07:00
2026-08-03 18:45:43 +05:30
2026-08-02 22:15:20 +05:30
2026-07-26 12:54:45 -07:00
2026-07-29 11:53:39 -07:00
2026-07-23 08:19:14 -07:00
2026-07-24 13:00:53 +05:30
2026-08-03 17:53:55 +05:30
2026-07-29 12:29:39 -07:00
2026-08-02 11:52:59 +05:30
2026-08-02 23:17:40 +05:30
2026-07-29 19:48:37 -07:00
2026-07-24 17:10:39 -07:00
2026-07-22 12:10:58 -05:00
2026-08-02 15:01:11 -07:00
2026-07-29 15:28:15 -07:00
2026-07-31 21:31:51 -07:00
2026-08-01 15:39:58 +05:30
2026-07-28 20:04:58 +05:30
2026-08-01 15:58:25 +05:30
2026-07-31 21:52:35 -07:00
2026-07-28 10:19:53 -07:00
2026-07-27 21:10:51 -07:00
2026-07-29 10:13:50 -07:00
2026-08-02 09:59:52 -07:00
2026-08-02 16:16:36 -07:00
2026-08-02 15:01:11 -07:00
2026-07-28 03:44:17 -05:00
2026-07-29 15:28:15 -07:00
2026-07-29 13:01:36 -07:00
2026-07-24 15:53:38 -07:00
2026-08-02 22:15:20 +05:30
2026-07-28 01:10:05 +05:30
2026-07-29 15:28:15 -07:00
2026-08-01 11:40:59 -07:00
2026-08-02 23:17:40 +05:30
2026-07-26 21:27:45 -07:00
2026-07-24 11:45:57 -07:00
2026-08-03 17:53:55 +05:30
2026-07-31 23:18:12 -07:00
2026-07-31 22:31:09 -07:00
2026-07-26 17:47:51 -07:00
2026-07-29 19:48:37 -07:00
2026-07-29 18:13:09 -07:00
2026-07-30 15:20:09 -07:00
2026-07-29 15:28:15 -07:00
2026-07-29 15:28:15 -07:00