From 9f0764ecfaf05debc78cb8dde1b5499cbfe976c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Tue, 14 Nov 2017 09:01:27 +0100 Subject: [PATCH] Throttle data retrieve from backend #1232 Retrieve from backend pauses if threshold_resultset_size*8 data is queued up to client --- lib/mysql_connection.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/mysql_connection.cpp b/lib/mysql_connection.cpp index faf1840db..f455c5a99 100644 --- a/lib/mysql_connection.cpp +++ b/lib/mysql_connection.cpp @@ -907,6 +907,15 @@ handler_again: } break; case ASYNC_USE_RESULT_CONT: + { + unsigned int buffered_data=0; + buffered_data = myds->sess->client_myds->PSarrayOUT->len * RESULTSET_BUFLEN; + buffered_data += myds->sess->client_myds->resultset->len * RESULTSET_BUFLEN; + if (buffered_data > (unsigned int)mysql_thread___threshold_resultset_size*8) { + next_event(ASYNC_USE_RESULT_CONT); // we temporarily pause . See #1232 + break; + } + } if (async_fetch_row_start==false) { async_exit_status=mysql_fetch_row_start(&mysql_row,mysql_result); async_fetch_row_start=true;