hubcio opened a new issue, #4452:
URL: https://github.com/apache/iggy/issues/4452

   ## Problem
   
   - `stream delete`, `stream purge`, `topic delete`, `topic purge`, `partition 
delete`, `segment delete`, `consumer-group delete`, `user delete`, `pat delete` 
and `context delete` run at once, with no prompt.
   - A provisioning script cannot run twice. If a stream exists, `stream 
create` fails. If it does not exist, `stream delete` fails.
   - `iggy ping` against a stopped server returns after 10.06 s with `Error: 
IggyClient(SdkError(CannotEstablishConnection))`, a Rust debug value. The wait 
comes from the CLI client defaults (`core/common/src/types/args/mod.rs:384`): 
10 retries, 1 s apart (#3903). Over WebSocket the CLI waits 60 s, and over QUIC 
it waits about 100 s per attempt.
   - Server down, wrong password, "not found" and "already exists" all exit 
with code 1, so a script cannot tell them apart.
   
   ## Proposal
   
   - On a TTY, show what a destructive command will delete, and ask for `y`. 
Add `-y, --yes` to each of these commands. If stdin is not a TTY, keep the 
current behavior.
   - Add `--if-not-exists` to `stream create`, `topic create`, `consumer-group 
create` and `user create`. Add `--if-exists` to the matching delete commands 
and to `pat delete`. Treat the "already exists" or "not found" error of the 
server as success. A check before the call can race with another client.
   - Add `--connect-timeout` (for example `5s`) for the connection and the 
login on every transport. The retries then run inside this time. The timeout 
also covers a login that gets no reply (#4262).
   - Print the error and its cause chain instead of the `Debug` value 
(`core/cli/src/main.rs:359`). The top-level `Display` is only a label, for 
example "Iggy client error".
   - Add distinct exit codes for connection, authentication, "not found" and 
"already exists" errors. Do not use 2 (clap usage errors) or 101 (panics).
   
   ## Notes
   
   - A script that starts from a terminal also has a TTY on stdin, so the 
prompt is a breaking change for it.
   - With `--if-not-exists`, `user create` keeps the old password of an 
existing user. `pat create` gets no such flag, because it cannot print the 
token of an existing PAT.
   - The partition and segment commands take a count, so the new flags do not 
apply to them.
   - While #3735 is open, the error details stay empty. For example, the CLI 
prints "Stream with ID: 0 was not found." for a missing stream.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to