Claude
b8ad1b3e8f
Optimize runner creation with parallel execution
...
This change improves performance during large scale-up operations by
creating ephemeral runners in parallel instead of sequentially.
Key improvements:
- Implement parallel runner creation using goroutines
- Add concurrency limit (10) via semaphore pattern to prevent API overload
- Maintain thread-safe error collection with mutex
- Use atomic counter for accurate progress tracking
- Preserve all existing error handling and logging behavior
Expected impact: 5-10x faster scale-up for large runner sets (e.g., 1→100 runners)
The implementation uses:
- sync.WaitGroup to coordinate goroutine completion
- Buffered channel as semaphore to limit concurrent API calls
- sync.Mutex to protect shared error slice
- sync/atomic for thread-safe progress counter
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 19:03:31 +00:00
Nikola Jokic
ddc2918a48
Requeue if create pod returns already exists error ( #4201 )
2025-08-14 17:00:48 +02:00
Nikola Jokic
c27541140a
Remove JIT config from ephemeral runner status field ( #4191 )
2025-08-04 12:35:04 +02:00
Nikola Jokic
9890c0592d
Explicitly requeue during backoff ephemeral runner ( #4152 )
2025-06-27 12:05:43 +02:00
Nikola Jokic
3b5693eecb
Remove check if runner exists after exit code 0 ( #4142 )
2025-06-27 11:11:39 +02:00
Nikola Jokic
e46c929241
Azure Key Vault integration to resolve secrets ( #4090 )
2025-06-11 15:53:33 +02:00
Wim Fournier
d4af75d82e
Delete config secret when listener pod gets deleted ( #4033 )
...
Co-authored-by: Nikola Jokic <jokicnikola07@gmail.com>
2025-06-11 15:53:04 +02:00
Nikola Jokic
1dbb88cb9e
Allow use of client id as an app id ( #4057 )
2025-05-16 16:21:06 +02:00
Nikola Jokic
43f1cd0dac
Refactor resource naming removing unnecessary calculations ( #4076 )
2025-05-15 10:56:34 +02:00
Nikola Jokic
389d842a30
Relax version requirements to allow patch version mismatch ( #4080 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-14 21:38:16 +02:00
Nikola Jokic
cae7efa2c6
Create backoff mechanism for failed runners and allow re-creation of failed ephemeral runners ( #4059 )
2025-05-14 15:38:50 +02:00
Ryosei Karaki
f832b0b254
upgrade(golangci-lint): v2.1.2 ( #4023 )
...
Signed-off-by: karamaru-alpha <mrnk3078@gmail.com>
2025-04-17 16:14:31 +02:00
Nikola Jokic
5a960b5ebb
Create configurable metrics ( #3975 )
2025-03-24 15:27:42 +01:00
kahirokunn
eaa3f2a3a0
chore: Added `OwnerReferences` during resource creation for `EphemeralRunnerSet`, `EphemeralRunner`, and `EphemeralRunnerPod` ( #3575 )
2025-03-19 15:03:20 +01:00
Nikola Jokic
fb9b96bf75
Update all dependencies, conforming to the new controller-runtime API ( #3949 )
2025-03-11 15:52:52 +01:00
Nikola Jokic
d8f1a61ab6
Clean up as much as possible in a single pass for the EphemeralRunner reconciler ( #3941 )
2025-03-10 11:03:45 +01:00
Nikola Jokic
2dab45c373
Wrap errors in controller helper methods and swap logic in cleanups ( #3960 )
2025-03-07 11:58:53 +01:00
Nikola Jokic
7a5996f467
Remove old githubrunnerscalesetlistener, remove warning and fix config bug ( #3937 )
2025-03-07 11:58:16 +01:00
Nikola Jokic
e122615553
Use Ready from the pod conditions when setting it to the EphemeralRunner ( #3891 )
2025-03-05 10:21:06 +01:00
Nikola Jokic
e12a892748
Rename log from target/actual to build/autoscalingRunnerSet version ( #3957 )
2025-03-04 17:01:34 +01:00
&es
7ccc177b84
Sanitize labels ending in hyphen, underscore, and dot ( #3664 )
2025-02-18 15:15:39 +01:00
Yusuke Kuoka
32ae917937
Make EphemeralRunnerReconciler create runner pods earlier ( #3831 )
...
Co-authored-by: Bassem Dghaidi <568794+Link-@users.noreply.github.com>
2024-12-11 21:28:29 +01:00
Yusuke Kuoka
3998f6dee6
Make EphemeralRunnerController MaxConcurrentReconciles configurable ( #3832 )
...
Co-authored-by: Bassem Dghaidi <568794+Link-@users.noreply.github.com>
2024-12-11 21:19:43 +01:00
Nikola Jokic
b349ded2be
Increase test timeouts to avoid CI test failures ( #3554 )
2024-06-21 13:45:48 +02:00
Nikola Jokic
6276c84493
AutoscalingListener controller: Inspect listener container state instead of pod phase ( #3548 )
2024-06-21 13:40:08 +02:00
Nikola Jokic
a62ca3d853
Exclude label prefix propagation ( #3607 )
2024-06-21 12:12:14 +02:00
Nikola Jokic
2cc793a835
Remove `.Named()` from the ephemeral runner controller ( #3596 )
2024-06-17 10:36:08 +02:00
Serge
e45ac190e2
Customize work directory ( #3477 )
2024-06-04 15:16:45 +02:00
Katarzyna
d0fb7206a4
Fix problem with ephemeralRunner Succeeded state before build executed ( #3528 )
2024-06-03 10:49:45 +02:00
Nikola Jokic
9afd93065f
Remove finalizers in one pass to speed up cleanups AutoscalingRunnerSet ( #3536 )
2024-05-27 09:21:31 +02:00
Nikola Jokic
ab92e4edc3
Re-use the last desired patch on empty batch ( #3453 )
2024-05-17 15:12:16 +02:00
Nikola Jokic
fa7a4f584e
Extract single place to set up indexers ( #3454 )
2024-05-17 14:42:46 +02:00
Nikola Jokic
9b51f25800
Rename imports in tests to remove double import and to improve readability ( #3455 )
2024-05-17 14:37:13 +02:00
Bryan Peterson
109750f816
propogate arbitrary labels from runnersets to all created resources ( #3157 )
2024-04-23 11:19:32 +02:00
Nikola Jokic
8075e5ee74
Refactor actions client error to include request id ( #3430 )
...
Co-authored-by: Francesco Renzi <rentziass@gmail.com>
2024-04-16 12:57:44 +02:00
Nikola Jokic
963ae48a3f
Include self correction on empty batch and avoid removing pending runners when cluster is busy ( #3426 )
2024-04-16 12:55:25 +02:00
Nikola Jokic
b6a95ae879
Change duplicate message key in logs while updating ephemeral runner status ( #3380 )
2024-03-26 12:57:46 +01:00
Nikola Jokic
7a643a5107
Fix overscaling when the controller is much faster then the listener ( #3371 )
...
Co-authored-by: Francesco Renzi <rentziass@gmail.com>
2024-03-20 15:36:12 +01:00
Nikola Jokic
c9099a5a56
Add annotation with values hash to re-create listener ( #3195 )
2024-03-19 14:29:49 +01:00
Hidehito Yabuuchi
48706584fd
Propagate runner scale set name annotation to EphemeralRunner ( #3098 )
2024-03-19 12:50:49 +01:00
Nikola Jokic
c00465973e
Publish metrics in the new ghalistener ( #3193 )
2024-01-25 14:46:42 +01:00
Nikola Jokic
fe8c3bb789
Change listener container name ( #3167 )
2023-12-19 12:22:52 +01:00
Serge
d7d479172d
Fix override listener pod spec ( #3139 ) ( #3161 )
...
Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2023-12-18 16:50:06 +01:00
Nikola Jokic
b78cadd901
Refactoring listener app with configurable fallback ( #3096 )
2023-12-08 13:41:06 +01:00
Nikola Jokic
202a97ab12
Modify user agent format with subsystem and is proxy configured information ( #3116 )
2023-12-08 13:16:29 +01:00
Toru Komatsu
b08d533105
Record the error when the creation pod fails ( #3112 )
...
Signed-off-by: utam0k <k0ma@utam0k.jp>
2023-12-07 21:11:52 +01:00
Toru Komatsu
7793e1974a
Record a reason for pod failure in EphemeralRunner ( #3074 )
...
Signed-off-by: utam0k <k0ma@utam0k.jp>
2023-11-21 08:26:29 +01:00
Nikola Jokic
2939640fa9
Add ResizePolicy and RestartPolicy on mergeListenerContainer ( #3075 )
2023-11-15 10:39:11 +01:00
Nikola Jokic
65fd04540c
Bump go version and all direct dependencies to newest for k8s compatibility ( #2947 )
2023-11-14 16:19:43 +01:00
Nikola Jokic
95487735a2
Remove inheritance of imagePullPolicy from manager to listeners ( #3009 )
2023-11-07 15:08:36 +01:00