From 020b9936cd42a37b69ac9455ad55e858787522f8 Mon Sep 17 00:00:00 2001 From: LFC Date: Tue, 29 Nov 2022 18:39:18 +0800 Subject: [PATCH] fix: correctly detach spawned mysql listener task (#657) Co-authored-by: luofucong --- src/servers/src/mysql/server.rs | 16 +++++----------- src/servers/tests/mysql/mysql_server_test.rs | 1 - 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/servers/src/mysql/server.rs b/src/servers/src/mysql/server.rs index f66669303c..d0373414f7 100644 --- a/src/servers/src/mysql/server.rs +++ b/src/servers/src/mysql/server.rs @@ -82,20 +82,14 @@ impl MysqlServer { let (r, w) = stream.into_split(); let w = BufWriter::with_capacity(DEFAULT_RESULT_SET_WRITE_BUFFER_SIZE, w); - // TODO(LFC): Use `output_stream` to write large MySQL ResultSet to client. - let spawn_result = io_runtime - .spawn(AsyncMysqlIntermediary::run_on(shim, r, w)) - .await; - match spawn_result { - Ok(run_result) => { - if let Err(e) = run_result { - // TODO(LFC): Write this error and the below one to client as well, in MySQL text protocol. + io_runtime.spawn(async move { + // TODO(LFC): Use `output_stream` to write large MySQL ResultSet to client. + if let Err(e) = AsyncMysqlIntermediary::run_on(shim, r, w).await { + // TODO(LFC): Write this error to client as well, in MySQL text protocol. // Looks like we have to expose opensrv-mysql's `PacketWriter`? error!(e; "Internal error occurred during query exec, server actively close the channel to let client try next time.") } - } - Err(e) => error!("IO runtime cannot execute task, error: {}", e), - } + }); Ok(()) } } diff --git a/src/servers/tests/mysql/mysql_server_test.rs b/src/servers/tests/mysql/mysql_server_test.rs index ba82e8d68f..ce351fce6b 100644 --- a/src/servers/tests/mysql/mysql_server_test.rs +++ b/src/servers/tests/mysql/mysql_server_test.rs @@ -184,7 +184,6 @@ async fn test_query_concurrently() -> Result<()> { let should_recreate_conn = expected == 1; if should_recreate_conn { - connection.disconnect().await.unwrap(); connection = create_connection(server_port, index % 2 == 0) .await .unwrap();