Skip to content

chore: replace ifrit with stdlib runner - #1182

Draft
silvestre wants to merge 2 commits into
mainfrom
replace-ifrit
Draft

chore: replace ifrit with stdlib runner#1182
silvestre wants to merge 2 commits into
mainfrom
replace-ifrit

Conversation

@silvestre

Copy link
Copy Markdown
Member

Issue

ifrit (github.com/tedsuo/ifrit) is not maintained.

Fix

Replace ifrit with a small internal helpers/runner package built on Go stdlib
(context, net/http, os/signal). The package provides the same primitives
that ifrit did: a Runner interface, a RunFunc adapter, named Member structs,
and StartOrdered for ordered startup with LIFO graceful shutdown triggered by
SIGINT/SIGTERM or context cancellation.

A companion helpers/runner/testrunner package replaces ginkgomon_v2 for tests,
offering Invoke/Interrupt/Kill helpers for in-process runners and a
CmdRunner that starts external binaries and waits for a configurable start-check
string in their combined stdout+stderr before signalling ready.

All five Go services (api, eventgenerator, scalingengine, metricsforwarder,
operator) and the shared startup, sync, and helpers packages are updated
accordingly. ifrit is removed from go.mod.

Comment thread CLAUDE.md
Comment thread CLAUDE.md
@silvestre silvestre added the skip-dependency-postprocessing This label prevents a dependency post-processing that is normally required for Renovate PRs mostly label May 11, 2026
# Issue
`ifrit` (`github.com/tedsuo/ifrit`) is not maintained.

# Fix
Replace `ifrit` with a small internal `helpers/runner` package built on Go stdlib
(`context`, `net/http`, `os/signal`). The package provides the same primitives
that `ifrit` did: a `Runner` interface, a `RunFunc` adapter, named `Member` structs,
and `StartOrdered` for ordered startup with LIFO graceful shutdown triggered by
`SIGINT`/`SIGTERM` or context cancellation.

A companion `helpers/runner/testrunner` package replaces `ginkgomon_v2` for tests,
offering `Invoke`/`Interrupt`/`Kill` helpers for in-process runners and a
`CmdRunner` that starts external binaries and waits for a configurable start-check
string in their combined stdout+stderr before signalling ready.

All five Go services (`api`, `eventgenerator`, `scalingengine`, `metricsforwarder`,
`operator`) and the shared `startup`, `sync`, and `helpers` packages are updated
accordingly. `ifrit` is removed from `go.mod`.
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore skip-dependency-postprocessing This label prevents a dependency post-processing that is normally required for Renovate PRs mostly

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants