From f1b1c9dacab1071294252905a978bee210e3582e Mon Sep 17 00:00:00 2001 From: h7x4 Date: Wed, 3 Dec 2025 16:26:08 +0900 Subject: [PATCH] mysql-admutils: expect `Ready` from server before continuing --- .../mysql_admutils_compatibility/mysql_dbadm.rs | 15 ++++++++++++++- .../mysql_admutils_compatibility/mysql_useradm.rs | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/client/mysql_admutils_compatibility/mysql_dbadm.rs b/src/client/mysql_admutils_compatibility/mysql_dbadm.rs index 73b34f4..b13c014 100644 --- a/src/client/mysql_admutils_compatibility/mysql_dbadm.rs +++ b/src/client/mysql_admutils_compatibility/mysql_dbadm.rs @@ -182,7 +182,20 @@ fn tokio_run_command(command: Command, server_connection: StdUnixStream) -> anyh .unwrap() .block_on(async { let tokio_socket = TokioUnixStream::from_std(server_connection)?; - let message_stream = create_client_to_server_message_stream(tokio_socket); + let mut message_stream = create_client_to_server_message_stream(tokio_socket); + + while let Some(Ok(message)) = message_stream.next().await { + match message { + Response::Error(err) => { + anyhow::bail!("{}", err); + } + Response::Ready => break, + message => { + eprintln!("Unexpected message from server: {:?}", message); + } + } + } + match command { Command::Create(args) => create_databases(args, message_stream).await, Command::Drop(args) => drop_databases(args, message_stream).await, diff --git a/src/client/mysql_admutils_compatibility/mysql_useradm.rs b/src/client/mysql_admutils_compatibility/mysql_useradm.rs index f332603..c01ec96 100644 --- a/src/client/mysql_admutils_compatibility/mysql_useradm.rs +++ b/src/client/mysql_admutils_compatibility/mysql_useradm.rs @@ -143,7 +143,20 @@ fn tokio_run_command(command: Command, server_connection: StdUnixStream) -> anyh .unwrap() .block_on(async { let tokio_socket = TokioUnixStream::from_std(server_connection)?; - let message_stream = create_client_to_server_message_stream(tokio_socket); + let mut message_stream = create_client_to_server_message_stream(tokio_socket); + + while let Some(Ok(message)) = message_stream.next().await { + match message { + Response::Error(err) => { + anyhow::bail!("{}", err); + } + Response::Ready => break, + message => { + eprintln!("Unexpected message from server: {:?}", message); + } + } + } + match command { Command::Create(args) => create_user(args, message_stream).await, Command::Delete(args) => drop_users(args, message_stream).await,