netresearch
ofelia
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
feat: replace scheduler semaphore with go-cron MaxConcurrentSkip middleware (#500) ## Summary - Replaces manual `jobSemaphore chan struct{}` with `concurrencySemaphore` type integrated into go-cron's middleware chain - Adds `maxConcurrentSkipWrapper` as a `cron.JobWrapper` in `WithChain()` for cron-scheduled jobs - Removes semaphore check from `runWithCtx()` — concurrency enforced at middleware layer - Manual/triggered jobs get explicit concurrency checks in `RunJob()` and `Start()` - `SetMaxConcurrentJobs()` supports thread-safe resize via `concurrencySem.resize()` - Adds `ErrConcurrencyLimitReached` sentinel error for programmatic error handling - Token bucket `RateLimiter` in resilience.go preserved (used for HTTP, not jobs) Closes #492 ## Test plan - [x] All existing tests pass (`go test ./... -count=1`) - [x] Race detector clean (`go test -race ./core/...`) - [x] Linter clean (`golangci-lint run ./...`) - [x] Concurrency tests verify middleware-based limiting - [x] 3 code review cycles completed (all approved)
main
4 days ago
fix: improve concurrency middleware documentation
feat/492-native-rate-limiting
4 days ago
feat: replace custom WorkflowOrchestrator with go-cron native DAG engine (#499) ## Summary - Replaces custom `WorkflowOrchestrator` (~296 lines) with go-cron v0.12.0's native DAG engine - New `BuildWorkflowDependencies()` function maps config to `AddDependencyByName` API - Dependency mapping: `depends-on` → OnSuccess, `on-success` → OnSuccess, `on-failure` → OnFailure - Removes cleanup goroutine — go-cron handles workflow retention natively - Removes `CanExecute()`/`JobStarted()`/`JobCompleted()` from execution path - Net reduction: -282 lines (8 files changed, +417/-699) Closes #491 ## Test plan - [x] All existing tests pass (`go test ./... -count=1`) - [x] Race detector clean (`go test -race ./...`) - [x] Linter clean (`golangci-lint run ./...`) - [x] 8 new workflow tests covering dependency wiring, cycle detection, trigger conditions - [x] 3 code review cycles completed (all approved)
main
4 days ago
fix: improve concurrency middleware documentation
feat/492-native-rate-limiting
4 days ago
fix: add @triggered edge tests, improve dependency error message
feat/491-native-dag-workflow
4 days ago
feat: use native go-cron @triggered schedule instead of manual handling (#498) ## Summary - Removes manual triggered schedule handling (`@triggered`/`@manual`/`@none`) by leveraging go-cron v0.12.0's native `TriggeredSchedule` support - All jobs now register through `cron.AddJob()` — no special-case bypass for triggered schedules - `RunJob()` delegates to `cron.TriggerEntryByName()` instead of manually spawning goroutines - `DisableJob()`/`EnableJob()` use native `PauseEntryByName()`/`ResumeEntryByName()` for all job types - `Start()` uses `WithRunImmediately()` for startup execution instead of manual goroutine management - `web/server.go` uses `cron.IsTriggered(entry.Schedule)` type assertion instead of string-based check Closes #490 ## Test plan - [x] All existing tests pass (`go test ./... -count=1`) - [x] Race detector clean (`go test -race ./core/...`) - [x] Linter clean (`golangci-lint run ./...`) - [x] 10 new tests covering triggered job lifecycle (register, run, startup, disable/enable, remove) - [x] 3 code review cycles completed (all approved)
main
4 days ago
fix: improve concurrency middleware documentation
feat/492-native-rate-limiting
4 days ago
fix: add @triggered edge tests, improve dependency error message
feat/491-native-dag-workflow
4 days ago
Active Branches
No pull requests found
As pull requests are created, their performance will appear here.
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs