← Back to team overview

maria-developers team mailing list archive

Re: 8928497: MDEV-7067: Server outputs Galera (WSREP) information, even if Galera is disabled

 

Hi Serg,

On Thu, May 28, 2015 at 5:56 PM, Sergei Golubchik <serg@xxxxxxxxxxx> wrote:

> Hi, Nirbhay!
>
> On May 09, Nirbhay Choubey wrote:
> > revision-id: 8928497acbe3e17a105897f405d5e5138d57a249
> > parent(s): 3674c363a7e77e534c3e0d28659dc614c53fbcbc
> > committer: Nirbhay Choubey
> > branch nick: 10.1-wsrep
> > timestamp: 2015-05-09 16:11:59 -0400
> > message:
> >
> > MDEV-7067: Server outputs Galera (WSREP) information, even if Galera is
> disabled
> >
> > * mysqld_safe: Since wsrep_on variable is mandatory in 10.1, skip wsrep
> > position recovery if its OFF.
> > * mysqld: Remove "-wsrep" from server version
> > * mysqld: Remove wsrep patch version from @@version_comment
> > * mysqld: Introduce @@wsrep_patch_version
>
> Looks ok, I just didn't like the wsrep.cmake change. See below.
>
> > diff --git a/cmake/wsrep.cmake b/cmake/wsrep.cmake
> > index c37cf74..305ab27 100644
> > --- a/cmake/wsrep.cmake
> > +++ b/cmake/wsrep.cmake
> > @@ -28,29 +28,22 @@ OPTION(WITH_WSREP "WSREP replication API (to use,
> e.g. Galera Replication librar
> >  # Set the patch version
> >  SET(WSREP_PATCH_VERSION "10")
> >
> > -# MariaDB addition: Revision number of the last revision merged from
> > -# codership branch visible in @@version_comment.
> > -# Branch : codership-mysql/5.6
> > -SET(WSREP_PATCH_REVNO "4144")  # Should be updated on every merge.
> > -
> > -# MariaDB addition: Revision number of the last revision merged from
> > -# Branch : lp:maria/maria-10.0-galera
> > -SET(WSREP_PATCH_REVNO2 "3919")  # Should be updated on every merge.
> > -
> > -# MariaDB: Obtain patch revision number:
> > -# Update WSREP_PATCH_REVNO if WSREP_REV environment variable is set.
> > -IF (DEFINED ENV{WSREP_REV})
> > -  SET(WSREP_PATCH_REVNO $ENV{WSREP_REV})
> > -ENDIF()
> >
> > -SET(WSREP_INTERFACE_VERSION 25)
> > +# Obtain wsrep API version
> > +EXECUTE_PROCESS(
> > +  COMMAND sh -c "grep WSREP_INTERFACE_VERSION
> ${MySQL_SOURCE_DIR}/wsrep/wsrep_api.h | cut -d '\"' -f 2"
> > +  OUTPUT_VARIABLE WSREP_API_VERSION
> > +  RESULT_VARIABLE RESULT
> > +)
>
> I don't like calling grep|cut from cmake files. If you want to extract
> the version from wsrep_api.h, use cmake commands, e.g.
>
>   FILE(STRINGS "${MySQL_SOURCE_DIR}/wsrep/wsrep_api.h" WSREP_API_H
>        LIMIT_COUNT 1 REGEX "WSREP_INTERFACE_VERSION")
>   STRING(REGEX MATCH ....
>

Done.


>
> > +STRING(REGEX REPLACE "(\r?\n)+$" "" WSREP_API_VERSION
> "${WSREP_API_VERSION}")
> >
> > -SET(WSREP_VERSION
> > -
> "${WSREP_INTERFACE_VERSION}.${WSREP_PATCH_VERSION}.r${WSREP_PATCH_REVNO}")
> > +SET(WSREP_VERSION "${WSREP_API_VERSION}.${WSREP_PATCH_VERSION}"
> > +  CACHE STRING "WSREP version")
>
> make it INTERNAL, not STRING
>

Done.


>
> >  SET(WSREP_PROC_INFO ${WITH_WSREP})
> >
> >  IF(WITH_WSREP)
> > -  SET(COMPILATION_COMMENT "${COMPILATION_COMMENT},
> wsrep_${WSREP_VERSION}")
> > +  SET(WSREP_PATCH_VERSION "wsrep_${WSREP_VERSION}")
> >  ENDIF()
> >
> > diff --git a/mysql-test/suite/sys_vars/r/sysvars_wsrep.result
> b/mysql-test/suite/sys_vars/r/sysvars_wsrep.result
> > index 9c392b1..1763078 100644
> > --- a/mysql-test/suite/sys_vars/r/sysvars_wsrep.result
> > +++ b/mysql-test/suite/sys_vars/r/sysvars_wsrep.result
> > @@ -365,6 +365,20 @@ NUMERIC_BLOCK_SIZE       NULL
> >  ENUM_VALUE_LIST      TOI,RSU
> >  READ_ONLY    NO
> >  COMMAND_LINE_ARGUMENT        OPTIONAL
> > +VARIABLE_NAME        WSREP_PATCH_VERSION
> > +SESSION_VALUE        NULL
> > +GLOBAL_VALUE wsrep_25.10
> > +GLOBAL_VALUE_ORIGIN  COMPILE-TIME
> > +DEFAULT_VALUE        NULL
> > +VARIABLE_SCOPE       GLOBAL
> > +VARIABLE_TYPE        VARCHAR
> > +VARIABLE_COMMENT     wsrep patch version
> > +NUMERIC_MIN_VALUE    NULL
> > +NUMERIC_MAX_VALUE    NULL
> > +NUMERIC_BLOCK_SIZE   NULL
> > +ENUM_VALUE_LIST      NULL
> > +READ_ONLY    YES
> > +COMMAND_LINE_ARGUMENT        NULL
> >  VARIABLE_NAME        WSREP_PROVIDER
> >  SESSION_VALUE        NULL
> >  GLOBAL_VALUE none
> > diff --git
> a/mysql-test/suite/sys_vars/r/wsrep_patch_version_basic.result
> b/mysql-test/suite/sys_vars/r/wsrep_patch_version_basic.result
> > new file mode 100644
> > index 0000000..80f29e6
> > --- /dev/null
> > +++ b/mysql-test/suite/sys_vars/r/wsrep_patch_version_basic.result
>
> I've actually stopped creating sys_var tests for every new variable
> (even though I was the one who introduced sys_vars.all_vars test in the
> first place :).
>
> With the new I_S.SYSTEM_VARIABLES table we have all variables listed
> there anyway, with all properties. So there's no need to copy these
> boilerplate tests over and over.
>

Such tests can be useful too, for instance, sometime back I found quite a
number of
crashing issues (assigning 'default') while adding basic tests for wsrep
variables.
But, since its a RO variables, I have removed the basic test.


> > diff --git a/mysql-test/suite/wsrep/suite.pm b/mysql-test/suite/wsrep/
> suite.pm
> > index 02dff24..33744a6 100644
> > --- a/mysql-test/suite/wsrep/suite.pm
> > +++ b/mysql-test/suite/wsrep/suite.pm
> > @@ -27,6 +27,7 @@ push @::global_suppressions,
> >       qr(WSREP: Could not open saved state file for reading: ),
> >       qr(WSREP: option --wsrep-casual-reads is deprecated),
> >       qr(WSREP: --wsrep-casual-reads=ON takes precedence over
> --wsrep-sync-wait=0),
> > +     qr|WSREP: access file\(gvwstate.dat\) failed\(No such file or
> directory\)|,
>
> why?
>

Its an additional warning from newer versions of galera library, but I will
remove it in the
next commit as it has already been added.


> >     );
> >
> > diff --git a/sql/mysqld.cc b/sql/mysqld.cc
> > index 14d904b..49a639b 100644
> > --- a/sql/mysqld.cc
> > +++ b/sql/mysqld.cc
> > @@ -1902,13 +1902,15 @@ static void __cdecl kill_server(int sig_ptr)
> >    }
> >  #endif
> >
> > -  if (WSREP_ON)
> > +  /* Stop wsrep threads in case they are running. */
> >      wsrep_stop_replication(NULL);
>
> Does this print any messages?
>

Yes.

..snip..
void wsrep_stop_replication(THD *thd)
{
  WSREP_INFO("Stop replication");
  if (!wsrep)
  {
    WSREP_INFO("Provider was not loaded, in stop replication");
    return;
  }
..snip..

BTW, it actually fixes MDEV-7798. The fix has not been upmerged yet, so I
thought of
including it here.

Best,
Nirbhay


> Regards,
> Sergei
>

References