Commit 34beb21
fix(cortex-collab): track pending reservations in Guards spawn slot limit (#477)
The test_guards_reservation test was failing because reserve_spawn_slot()
only checked threads_set.len() for the current count, but that set only
contains committed threads. This allowed multiple pending reservations to
bypass the limit.
Added pending_count atomic counter to track reservations that haven't been
committed yet. The check now includes both active threads and pending
reservations: current_count + pending >= max_threads.
- Added pending_count field to Guards struct
- Updated reserve_spawn_slot to check pending count when enforcing limit
- Updated commit() to decrement pending_count when reservation becomes active
- Updated cancel() and Drop to decrement pending_count when releasing
Co-authored-by: Droid Agent <droid@factory.ai>1 parent e9ea251 commit 34beb21
1 file changed
Lines changed: 14 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
23 | 26 | | |
24 | 27 | | |
25 | 28 | | |
| |||
30 | 33 | | |
31 | 34 | | |
32 | 35 | | |
| 36 | + | |
33 | 37 | | |
34 | 38 | | |
35 | 39 | | |
| |||
39 | 43 | | |
40 | 44 | | |
41 | 45 | | |
| 46 | + | |
42 | 47 | | |
43 | 48 | | |
44 | 49 | | |
| |||
48 | 53 | | |
49 | 54 | | |
50 | 55 | | |
| 56 | + | |
51 | 57 | | |
52 | | - | |
| 58 | + | |
53 | 59 | | |
54 | 60 | | |
55 | 61 | | |
56 | | - | |
| 62 | + | |
| 63 | + | |
57 | 64 | | |
58 | 65 | | |
59 | 66 | | |
| |||
109 | 116 | | |
110 | 117 | | |
111 | 118 | | |
| 119 | + | |
| 120 | + | |
112 | 121 | | |
113 | 122 | | |
114 | 123 | | |
115 | 124 | | |
116 | 125 | | |
117 | 126 | | |
| 127 | + | |
118 | 128 | | |
119 | 129 | | |
120 | 130 | | |
| |||
124 | 134 | | |
125 | 135 | | |
126 | 136 | | |
127 | | - | |
| 137 | + | |
| 138 | + | |
128 | 139 | | |
129 | 140 | | |
130 | 141 | | |
| |||
0 commit comments