]> granicus.if.org Git - php/commitdiff
Make "MySQL server has gone away" errors more consistent
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 3 Jun 2019 10:47:48 +0000 (12:47 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 3 Jun 2019 12:27:47 +0000 (14:27 +0200)
Don't generate explicit warnings for these in two places, use usual
error handling mechanism. Additionally suppress a number of warnings
if the server has gone away.

ext/mysqli/tests/mysqli_change_user_new.phpt
ext/mysqli/tests/mysqli_mysqlnd_read_timeout.phpt
ext/mysqli/tests/mysqli_pconn_max_links.phpt
ext/mysqlnd/mysqlnd_result.c
ext/mysqlnd/mysqlnd_wireprotocol.c

index ec6b3e31c980e1e8d03acabd1837d82a061e1079..e9ef937406937b1442bb575fbde4893213c0988d 100644 (file)
@@ -35,9 +35,6 @@ if (mysqli_get_server_version($link) < 50600)
 
        print "done!";
 ?>
---EXPECTF--
-Warning: mysqli_query(): MySQL server has gone away in %s on line %d
-
-Warning: mysqli_query(): Error reading result set's header in %s on line %d
+--EXPECT--
 [003] [2006] MySQL server has gone away
 done!
index 7dbdc134eb7b663c53307eaa1ca24a24c21a0484..4f65f77480327193d9c7385a5200de04c6d9c5b6 100644 (file)
@@ -28,9 +28,6 @@ mysqlnd.net_read_timeout=1
 
        print "done!";
 ?>
---EXPECTF--
-Warning: mysqli_query(): MySQL server has gone away in %s on line %d
-
-Warning: mysqli_query(): Error reading result set's header in %s on line %d
-[002] [%d] %s
+--EXPECT--
+[002] [2006] MySQL server has gone away
 done!
index 4b610c3a9aa6a23fd6fe1f41ea46704a9950f4e0..221be0699fe2b51fc5d9ec638c300165c9ace314 100644 (file)
@@ -234,10 +234,6 @@ Before second pconnect:array(3) {
   ["cached_plinks"]=>
   int(0)
 }
-
-Warning: main(): MySQL server has gone away in %s on line %d
-
-Warning: main(): Error reading result set's header in %s line %d
 After second pconnect:array(3) {
   ["total"]=>
   int(1)
index 3f3630de7f1464ca47f47e115084b449bf388e9c..5c6eeddd0b3083bd1b1a346e96b5b38dd083a275 100644 (file)
@@ -391,7 +391,9 @@ mysqlnd_query_read_result_set_header(MYSQLND_CONN_DATA * conn, MYSQLND_STMT * s)
                UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(conn->upsert_status);
 
                if (FAIL == (ret = PACKET_READ(conn, &rset_header))) {
-                       php_error_docref(NULL, E_WARNING, "Error reading result set's header");
+                       if (conn->error_info->error_no != CR_SERVER_GONE_ERROR) {
+                               php_error_docref(NULL, E_WARNING, "Error reading result set's header");
+                       }
                        break;
                }
 
index a85629ddffa1109f62f8b93abe2475e504173a94..b56a92c15271654056d9fa987a132bb06d623b16 100644 (file)
@@ -296,7 +296,6 @@ mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header,
        if (FAIL == mysqlnd_read_header(pfc, vio, packet_header, stats, error_info)) {
                SET_CONNECTION_STATE(connection_state, CONN_QUIT_SENT);
                SET_CLIENT_ERROR(error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);
-               php_error_docref(NULL, E_WARNING, "%s", mysqlnd_server_gone);
                DBG_ERR_FMT("Can't read %s's header", packet_type_as_text);
                DBG_RETURN(FAIL);
        }
@@ -308,7 +307,6 @@ mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header,
        if (FAIL == pfc->data->m.receive(pfc, vio, buf, packet_header->size, stats, error_info)) {
                SET_CONNECTION_STATE(connection_state, CONN_QUIT_SENT);
                SET_CLIENT_ERROR(error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);
-               php_error_docref(NULL, E_WARNING, "%s", mysqlnd_server_gone);
                DBG_ERR_FMT("Empty '%s' packet body", packet_type_as_text);
                DBG_RETURN(FAIL);
        }
@@ -2532,7 +2530,7 @@ MYSQLND_METHOD(mysqlnd_protocol, send_command)(
        MYSQLND_INC_CONN_STATISTIC(stats, STAT_COM_QUIT + command - 1 /* because of COM_SLEEP */ );
 
        if (! PACKET_WRITE(payload_decoder_factory->conn, &cmd_packet)) {
-               if (!silent) {
+               if (!silent && error_info->error_no != CR_SERVER_GONE_ERROR) {
                        DBG_ERR_FMT("Error while sending %s packet", mysqlnd_command_to_text[command]);
                        php_error(E_WARNING, "Error while sending %s packet. PID=%d", mysqlnd_command_to_text[command], getpid());
                }