maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #09070
Re: [Commits] 2b3bffb: MDEV-8491 - On shutdown, report the user and the host executed that.
Hi, Sergey!
On Nov 25, Sergey Vojtovich wrote:
> revision-id: 2b3bffb42cc4adbec2d91c1b9c4028374b63a51a (mariadb-10.1.8-75-g2b3bffb)
> parent(s): 6019fee7d84e8ec7d64337ad080a04f9c106bb68
> committer: Sergey Vojtovich
> timestamp: 2015-11-25 18:12:19 +0400
> message:
>
> MDEV-8491 - On shutdown, report the user and the host executed that.
First, a test would be nice. I suppose you can add
it to the main.shutdown test.
> diff --git a/sql/mysqld.cc b/sql/mysqld.cc
> index 0502841..0694cb0 100644
> --- a/sql/mysqld.cc
> +++ b/sql/mysqld.cc
> @@ -1806,10 +1806,34 @@ static void close_server_sock()
> #endif /*EMBEDDED_LIBRARY*/
>
>
> -void kill_mysql(void)
> +static volatile char *shutdown_user;
> +static void set_shutdown_user(THD *thd)
> +{
> + char user_host_buff[MAX_USER_HOST_SIZE + 1];
> + char *user, *expected_shutdown_user= 0;
> + Security_context *sctx= thd->security_ctx;
> +
> + strxnmov(user_host_buff, MAX_USER_HOST_SIZE,
> + sctx->priv_user ? sctx->priv_user : "", "[",
> + sctx->user ? sctx->user : (thd->slave_thread ? "SQL_SLAVE" : ""),
> + "] @ ",
> + sctx->host ? sctx->host : "", " [",
> + sctx->ip ? sctx->ip : "", "]", NullS);
this will be the fifth time this expression shows up in the source code.
turn it into a function, perhaps? Like, an inline method of THD?
also, sometimes it's "SQL_SLAVE", sometimes it's "", sometimes it's
"unauthenticated", etc. I hope these differences can be removed and
there will be one method that works identically for all occasions.
Btw, you can use safe_str() helper here.
> +
> + if ((user= my_strdup(user_host_buff, MYF(0))) &&
> + !my_atomic_casptr((void **) &shutdown_user,
> + (void **) &expected_shutdown_user, user))
> + my_free(user);
> +}
Interesting. Why is that?
> +
> +
> +void kill_mysql(THD *thd)
> {
> DBUG_ENTER("kill_mysql");
>
> + if (thd)
> + set_shutdown_user(thd);
> +
> #if defined(SIGNALS_DONT_BREAK_READ) && !defined(EMBEDDED_LIBRARY)
> abort_loop=1; // Break connection loops
> close_server_sock(); // Force accept to wake up
> @@ -1888,7 +1912,13 @@ static void __cdecl kill_server(int sig_ptr)
> if (sig != 0) // 0 is not a valid signal number
> my_sigset(sig, SIG_IGN); /* purify inspected */
> if (sig == MYSQL_KILL_SIGNAL || sig == 0)
> - sql_print_information(ER_DEFAULT(ER_NORMAL_SHUTDOWN),my_progname);
> + {
> + char *user= (char *) my_atomic_loadptr((void**) &shutdown_user);
> + sql_print_information(ER_DEFAULT(ER_NORMAL_SHUTDOWN), my_progname,
> + user ? user : "unknown");
can it, really, be "unknown" here? when?
> + if (user)
> + my_free(user);
> + }
> else
> sql_print_error(ER_DEFAULT(ER_GOT_SIGNAL),my_progname,sig); /* purecov: inspected */
>
> diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt
> index 59908dc..f65d466 100644
> --- a/sql/share/errmsg-utf8.txt
> +++ b/sql/share/errmsg-utf8.txt
> @@ -1735,29 +1735,29 @@ ER_WRONG_AUTO_KEY 42000 S1009
> ER_UNUSED_9
> eng "You should never see it"
> ER_NORMAL_SHUTDOWN
> - cze "%s: normální ukončení\n"
> - dan "%s: Normal nedlukning\n"
> - nla "%s: Normaal afgesloten \n"
> - eng "%s: Normal shutdown\n"
> - est "%s: MariaDB lõpetas\n"
> - fre "%s: Arrêt normal du serveur\n"
> - ger "%s: Normal heruntergefahren\n"
> - greek "%s: Φυσιολογική διαδικασία shutdown\n"
> - hun "%s: Normal leallitas\n"
> - ita "%s: Shutdown normale\n"
> - jpn "%s: 通常シャットダウン\n"
> - kor "%s: 정상적인 shutdown\n"
> - nor "%s: Normal avslutning\n"
> - norwegian-ny "%s: Normal nedkopling\n"
> - pol "%s: Standardowe zakończenie działania\n"
> - por "%s: 'Shutdown' normal\n"
> - rum "%s: Terminare normala\n"
> - rus "%s: Корректная остановка\n"
> - serbian "%s: Normalno gašenje\n"
> - slo "%s: normálne ukončenie\n"
> - spa "%s: Apagado normal\n"
> - swe "%s: Normal avslutning\n"
> - ukr "%s: Нормальне завершення\n"
> + cze "%s: normální ukončení %s\n"
> + dan "%s: Normal nedlukning %s\n"
> + nla "%s: Normaal afgesloten %s\n"
> + eng "%s: Normal shutdown by %s\n"
> + est "%s: MariaDB lõpetas %s\n"
> + fre "%s: Arrêt normal du serveur %s\n"
> + ger "%s: Normal heruntergefahren %s\n"
> + greek "%s: Φυσιολογική διαδικασία shutdown %s\n"
> + hun "%s: Normal leallitas %s\n"
> + ita "%s: Shutdown normale %s\n"
> + jpn "%s: 通常シャットダウン %s\n"
> + kor "%s: 정상적인 shutdown %s\n"
> + nor "%s: Normal avslutning %s\n"
> + norwegian-ny "%s: Normal nedkopling %s\n"
> + pol "%s: Standardowe zakończenie działania %s\n"
> + por "%s: 'Shutdown' normal %s\n"
> + rum "%s: Terminare normala %s\n"
> + rus "%s: Корректная остановка пользователем %s\n"
> + serbian "%s: Normalno gašenje %s\n"
> + slo "%s: normálne ukončenie %s\n"
> + spa "%s: Apagado normal %s\n"
> + swe "%s: Normal avslutning %s\n"
> + ukr "%s: Нормальне завершення %s\n"
Here you've fixed only the english and russian messages. Others would
look pretty weird. Normal procedure in such a case is to remove all
other languages and only keep those that you've fixed. In this case you
can, perhaps, fix all of them in some easy way, like
ger "%s: Normal heruntergefahren (%s)\n"
ger "%s: Normal heruntergefahren / %s\n"
ger "%s (%s): Normal heruntergefahren\n"
ger "%s / %s: Normal heruntergefahren\n"
or something else along these lines. See how it'll look like in the log:
mysqld: Normal heruntergefahren foo [bar] @ localhost [127.0.0.1]
mysqld: Normal heruntergefahren (foo [bar] @ localhost [127.0.0.1])
mysqld: Normal heruntergefahren / foo [bar] @ localhost [127.0.0.1]
mysqld (foo [bar] @ localhost [127.0.0.1]): Normal heruntergefahren
mysqld / foo [bar] @ localhost [127.0.0.1]: Normal heruntergefahren
Regards,
Sergei
Follow ups