-
Notifications
You must be signed in to change notification settings - Fork 111
Open
Description
Proposed Change
User Story
As a CF ARP WG
I want to only use maintained dependencies
So that I am not exposed to the need of huge refactoring under time-pressure.
Problem
The repo https://github.com/tedsuo/ifrit is not maintained for several years. It offers an abstraction layer for native go channel- and process-handling. It is heavily used throughout routing-release, but also in many other CF repositories.
To reduce the risk of ad-hoc activities if it ever needs changes (e.g. due to CVEs or adjustments in golang) and to trigger a discussion if go-primitives are preferred over the abstraction by the majority of developers, this issue is created.
Options:
- Replace
ifritwith idiomatic go.
An untested example for the gorouter was drafted in sap-contributions@6cf8916#diff-636ef16853458537432de96b291a12d4d1218e1425fe959ac712884948f02376. For routing-release, more usages need to be adjusted, see direct imports ofifritbelow.
Pro: Less dependencies, style preferred by some devs
Con: Efforts for all WGs and risk to introduce untested side-effects - Take over
ifritin some working group of cloudfoundry and maintain it
Pro: Solution for all WGs with minimal effort
Con: One WG has to take ownership, abstraction remains - Accept the current situation and go with add manual test instructions #1 or point to acceptance-tests repo README for instructions to run acceptance tests #2 in case of an issue
References
- Direct usages of
ifritin routing-release:
➜ routing-release git:(develop) rg -l --type go --glob '!**/vendor/**' github.com/tedsuo/ifrit
src/code.cloudfoundry.org/cf-tcp-router/metrics_reporter/metrics_reporter_test.go
src/code.cloudfoundry.org/route-registrar/main.go
src/code.cloudfoundry.org/cf-tcp-router/syncer/syncer_test.go
src/code.cloudfoundry.org/gorouter/router/router_drain_test.go
src/code.cloudfoundry.org/cf-tcp-router/watcher/watcher.go
src/code.cloudfoundry.org/routing-acceptance-tests/assets/tcp-sample-receiver/testrunner/sample-receiver-runner.go
src/code.cloudfoundry.org/route-registrar/registrar/registrar.go
src/code.cloudfoundry.org/cf-tcp-router/watcher/watcher_test.go
src/code.cloudfoundry.org/route-registrar/registrar/routes_config_watcher_test.go
src/code.cloudfoundry.org/cf-tcp-router/monitor/monitor_test.go
src/code.cloudfoundry.org/gorouter/router/router_test.go
src/code.cloudfoundry.org/cf-tcp-router/cmd/cf-tcp-router/main_test.go
src/code.cloudfoundry.org/cf-tcp-router/cmd/cf-tcp-router/main.go
src/code.cloudfoundry.org/routing-api/helpers/helpers_test.go
src/code.cloudfoundry.org/gorouter/route_fetcher/route_fetcher_test.go
src/code.cloudfoundry.org/cf-tcp-router/cmd/cf-tcp-router/main_suite_test.go
src/code.cloudfoundry.org/gorouter/cmd/gorouter/main.go
src/code.cloudfoundry.org/cf-tcp-router/cmd/cf-tcp-router/testrunner/runner.go
src/code.cloudfoundry.org/gorouter/metrics/monitor/nats_monitor_test.go
src/code.cloudfoundry.org/gorouter/metrics/monitor/fd_monitor_test.go
src/code.cloudfoundry.org/gorouter/mbus/subscriber_test.go
src/code.cloudfoundry.org/routing-api/admin/server_test.go
src/code.cloudfoundry.org/routing-api/admin/server.go
src/code.cloudfoundry.org/routing-api/cmd/routing-api/main_test.go
src/code.cloudfoundry.org/routing-api/cmd/routing-api/routing_api_suite_test.go
src/code.cloudfoundry.org/routing-api/cmd/routing-api/locket_test.go
src/code.cloudfoundry.org/routing-api/cmd/routing-api/stats_test.go
src/code.cloudfoundry.org/routing-api/cmd/routing-api/api_test.go
src/code.cloudfoundry.org/routing-api/cmd/routing-api/main.go
src/code.cloudfoundry.org/routing-api/cmd/routing-api/testrunner/locket.go
src/code.cloudfoundry.org/routing-api/cmd/routing-api/testrunner/runner.go
- Usages of ifrit across the cloudfoundry org, condensed list:
gh api -H 'Accept: application/vnd.github+json' \
--paginate \
'search/code?q=org:cloudfoundry+"github.com/tedsuo/ifrit"&per_page=100' \
--jq '.items[].repository.full_name' \
| sort -u
cloudfoundry/app-autoscaler
cloudfoundry/app-autoscaler-release
cloudfoundry/bbs
cloudfoundry/blackbox
cloudfoundry/bosh-openstack-cpi-release
cloudfoundry/bosh-utils
cloudfoundry/cc-uploader
cloudfoundry/cf-networking-helpers
cloudfoundry/cf-networking-release
cloudfoundry/clock
cloudfoundry/cloud_controller_ng
cloudfoundry/debugserver
cloudfoundry/diego-release
cloudfoundry/dockerdriver
cloudfoundry/executor
cloudfoundry/existingvolumebroker
cloudfoundry/go-fetcher
cloudfoundry/grace
cloudfoundry/guardian
cloudfoundry/locket
cloudfoundry/mapfs-release
cloudfoundry/nats-release
cloudfoundry/nfs-volume-release
cloudfoundry/pxc-release
cloudfoundry/rep
cloudfoundry/routing-api
cloudfoundry/routing-release
cloudfoundry/runtimeschema
cloudfoundry/silk-release
cloudfoundry/smb-volume-release
cloudfoundry/sync-integration-tests
cloudfoundry/tps
Acceptance criteria
- Options are discussed within the CF community and decision is taken
- Relevant part for routing-release is adjusted/implemented
Related links
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Inbox