Shutdown() is implemented by both merchants but declared by no interface — interface holders cannot clean up [PR #120 review debt]
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
Research direction
Read the interface definitions at src/merchant/merchant.go:336 and src/merchant_types/types.go:35, then compare them with the existing Shutdown() error implementations at src/merchant/merchant.go:568 and src/merchant/merchant_degraded.go:104. Add the lifecycle method to the intended interface or interfaces and confirm both implementations satisfy the contract; callers holding those interfaces should be able to shut down without type assertions.
Written by the indexing model from the issue text.
Description
From the review-debt audit of PR #120 (mint resilience; merged 2026-05-26). Thread: 3279314729. Still present at current main.
Shutdown() exists on both merchant implementations but on no interface. Merchant (src/merchant/merchant.go:568) and MerchantDegraded (src/merchant/merchant_degraded.go:104) both implement Shutdown() error, but neither MerchantInterface (src/merchant/merchant.go:336 — no Shutdown in its body) nor the provider-facing merchant_types.PaymentMerchant (src/merchant_types/types.go:35) declares it. Callers holding the interface (including MerchantProvider consumers) still cannot invoke clean shutdown without type assertions — the original review's exact point, unaddressed 5 months later. Fix: add Shutdown() error to the interface(s) that are meant to own the lifecycle contract (and keep both implementations satisfying it).
- Dominant language
- Go
- Stars
- 12
- Forks
- 14
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 237
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from OpenTollGate/tollgate-module-basic-go
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
OpenTollGate/tollgate-module-basic-go#1027 ·
Maintainers usually reply within 1 day
-
Session event emits the customer's MAC address in the p tag — spec-invalid value on every payment responsePossibly taken @Amperstrand claimed this 5 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
OpenTollGate/tollgate-module-basic-go#949 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
OpenTollGate/tollgate-module-basic-go#833 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
OpenTollGate/tollgate-module-basic-go#813 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
OpenTollGate/tollgate-module-basic-go#804 ·
Maintainers usually reply within 1 day
All issues in OpenTollGate/tollgate-module-basic-go
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
grafana/tempo-operator#1691 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
hashicorp/terraform-mcp-server#583 ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
backend bug low-priority
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
lognorman20/monaco#6225 ·