redpanda-data / redpanda-data/redpanda
redpanda: add ability to control & inject responses to clients
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 12.6k
- Forks
- 792
- PR merge metrics
- No merged PRs in 30d
Description
As a client, I have to design and implement how to handle edge cases for when there are terrible problems in my cluster.
- Do I back off? How long?
- Do I spool messages to disk if need be?
- Do I retry certain operations? Do I fail others?
As much as I can implement the above logic, it's very hard to test: in standard integration testing, Redpanda Just Works (tm) and I cannot test the unhappy path edge cases. Either I have to write an advanced integration test suite that snipes brokers on command or rewrites responses, or I have to mock responses and program against them. Mocking itself is ok, but an injectable response in an actual redpanda flow allows me to write unit tests much closer to how things would actually happen.
I'm not sure on how we'd want to define this API, so we need to really sit down and write an RFC about this as well. This issue captures the idea so that it can potentially be picked up and an RFC could be allocated time for.
JIRA Link: CORE-1161
Contributor 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.
Research direction
No source file or test is identified. Begin by turning the proposed response-injection capability into an RFC, defining the API and how it supports client testing of unhappy paths; done means the RFC has an agreed design and implementation scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100