redpanda-data / redpanda-data/redpanda

redpanda: add ability to control & inject responses to clients

Open
#8,694 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

kind/enhance
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.