Exclude failed UI improvements
- Dominant language
- C++
- Stars
- 16.7k
- Forks
- 1.6k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 126
Description
There are a couple things that I noticed while using the `fdbcli> exclude failed` command that could be changed to improve usability:
1. The command disallows excluding enough coordinators that you would lose a quorum, but this does not take into account previous exclusions. For example, if I have three coordinators and exclude failed two of them, it will give me an error. If I exclude failed one and then another, both operations will complete successfully. (See also #4328).
2. The include command requires specifying `failed` to re-include failed processes, and if you omit it nothing happens. Instead, if you try to include a process that had been exclude failed, it should print a warning describing why it didn't do anything.
3. The include command help and auto-completion doesn't mention the `failed` option.
4. The exclude command says the following in its help:
```
If 'failed' is set, the transaction log queue is dropped pre-emptively before
waiting
for data movement to finish and the server cannot be included again.
```
I'd recommend something like this, which avoids implementation details and is more precise about inclusion. If there is some other straightforward benefit to exclude failed, we could try to describe it instead or in addition to the below.
```
If 'failed' is set, the process(es) are immediately forgotten and their data can
no longer be used. This allows the cluster to discard any state kept by the
transaction logs for those processes. A failed process can be re-included
without its data using 'include failed'.
```
Contributor guide
Research direction
Start by reproducing the `fdbcli` `exclude failed` and `include` commands with multiple coordinators, then inspect the command handling, help, and auto-completion paths. Done means quorum checks account for prior exclusions, omitted `failed` produces a warning when appropriate, help and completion document the option, and the `exclude failed` description matches the requested behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- cli, databases, distributed-systems
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100