Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-19282

Log more specific warning with log_warnings=2 if connection is aborted prior to authentication

Details

    Description

      If a connection is aborted prior to authentication, then a warning is only logged if log_warnings=4 is set, and the warning is the same "Aborted connection ... (CLOSE_CONNECTION)" warning as it is for any other connection.

      You can reproduce this by setting log_warnings=4:

      SET GLOBAL log_warnings=4;
      

      And then something like using telnet to connect to the MariaDB port, and then killing the telnet process:

      $ telnet 127.0.0.1 3306
      Trying 127.0.0.1...
      Connected to 127.0.0.1.
      Escape character is '^]'.
      Y
      5.5.5-10.1.38-MariaDB@TcxOay_?▒MFWbhc931>#4mysql_native_password^CConnection closed by foreign host
      

      At that point, the error log will contain a message like this:

      2019-04-18 18:12:55 140535201905408 [Warning] Aborted connection 328 to db: 'unconnected' user: 'unauthenticated' host: 'localhost' (CLOSE_CONNECTION)
      

      I think this message should actually read something like this:

      2019-04-18 18:12:55 140535201905408 [Warning] Aborted connection 328 to db: 'unconnected' user: 'unauthenticated' host: 'localhost' (Connection closed without authenticating)
      

      I also think that this message should be logged when log_warnings=2, instead of log_warnings=4.

      I also think that MDEV-19277 should be implemented as part of this.

      Attachments

        Issue Links

          Activity

            sanja Oleksandr Byelkin added a comment - - edited

            what can be more descriptive? the code is like this:

              thd->print_aborted_warning(3, sql_errno ? ER_DEFAULT(sql_errno)
                                                      : "CLOSE_CONNECTION");
            
            

            i.e. if there is no error we write "CLOSE_CONNECTION" as an error, probably I can write "CLOSED_BY_USER_CONNECTION", but it would not be true, we just do not know why connection is closed, so I am open for suggestion about what to write if the connection closed with no error.

            NORMALLY_CLOSED_CONNECTION ?
            NO_ERROR_CLOSED_CONNECTION ?
            This connection closed without an error ?

            sanja Oleksandr Byelkin added a comment - - edited what can be more descriptive? the code is like this: thd->print_aborted_warning(3, sql_errno ? ER_DEFAULT(sql_errno) : "CLOSE_CONNECTION"); i.e. if there is no error we write "CLOSE_CONNECTION" as an error, probably I can write "CLOSED_BY_USER_CONNECTION", but it would not be true, we just do not know why connection is closed, so I am open for suggestion about what to write if the connection closed with no error. NORMALLY_CLOSED_CONNECTION ? NO_ERROR_CLOSED_CONNECTION ? This connection closed without an error ?

            My suggestion in the issue description was "Connection closed without authenticating". This is way more descriptive because it makes it extremely clear that the connection had not performed authentication before it was closed.

            GeoffMontee Geoff Montee (Inactive) added a comment - My suggestion in the issue description was "Connection closed without authenticating". This is way more descriptive because it makes it extremely clear that the connection had not performed authentication before it was closed.
            sanja Oleksandr Byelkin added a comment - - edited

            I can not write this if it was authenticated, I can make 2 cases for closing without an error:
            1) connection closed normally
            2) connection closed normally without authentication

            sanja Oleksandr Byelkin added a comment - - edited I can not write this if it was authenticated, I can make 2 cases for closing without an error: 1) connection closed normally 2) connection closed normally without authentication

            That sounds good to me.

            GeoffMontee Geoff Montee (Inactive) added a comment - That sounds good to me.

            Hi sanja. The patch is fine, but I'd like have a test case for connect timeout (connect with socket on the port, and do nothing for a while), if possible.
            A more specific error message in case of connect timeout would be helpful (this can be made another MDEV, if you wish)

            wlad Vladislav Vaintroub added a comment - Hi sanja . The patch is fine, but I'd like have a test case for connect timeout (connect with socket on the port, and do nothing for a while), if possible. A more specific error message in case of connect timeout would be helpful (this can be made another MDEV, if you wish)

            People

              sanja Oleksandr Byelkin
              GeoffMontee Geoff Montee (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.