summaryrefslogtreecommitdiff
path: root/sql/net_serv.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/net_serv.cc')
-rw-r--r--sql/net_serv.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/sql/net_serv.cc b/sql/net_serv.cc
index a96c43a94fe..409d3cac85e 100644
--- a/sql/net_serv.cc
+++ b/sql/net_serv.cc
@@ -640,8 +640,20 @@ net_real_write(NET *net,const uchar *packet, size_t len)
my_bool net_blocking = vio_is_blocking(net->vio);
DBUG_ENTER("net_real_write");
-#if defined(MYSQL_SERVER) && defined(USE_QUERY_CACHE)
- query_cache_insert(net->thd, (char*) packet, len, net->pkt_nr);
+#if defined(MYSQL_SERVER)
+ THD *thd= (THD *)net->thd;
+#if defined(USE_QUERY_CACHE)
+ query_cache_insert(thd, (char*) packet, len, net->pkt_nr);
+#endif
+ if (likely(thd))
+ {
+ /*
+ Wait until pending operations (currently it is engine
+ asynchronous group commit) are finished before replying
+ to the client, to keep durability promise.
+ */
+ thd->async_state.wait_for_pending_ops();
+ }
#endif
if (unlikely(net->error == 2))