← Back to team overview

maria-developers team mailing list archive

Re: MDEV-12179: Per-engine mysql.gtid_slave_pos: auto-configuring/packaging

 

Sergey Petrunia <sergey@xxxxxxxxxxx> writes:

> Suppose there is a transactional storage engine that is shipped as a loadable 
> module. The examples are MyRocks and TokuDB.
>
> I think it the default behavior for such engine after MDEV-12179 should be that 
> the engine is listed in @@gtid_pos_auto_engines. 

The consensus, in the decisions of the design on the mailing list, was that
initially the default should be empty, and that the default could later be
changed once we have experience with using the new feature. Personally, I do
not have any strong opinion one way or the other.

Of course, whether done immediately or later, the issue will need to be
addressed eventually.

> Possible solutions:

> == Let gtid_pos_auto_engines include unknown engine ==
>
> - Allow @@gtid_pos_auto_engines to list unknown engines
> - set the default to include all known transactional storage engines, that is
> it should be :
>
>   gtid_pos_auto_engines='InnoDB,TokuDB,RocksDB'  // (*)
>
> and the server should allow this even if it is built without TokuDB or RocksDB

That is how the patch is currently made. From sql/mysqld.cc:

  /*
    For the command-line option --gtid_pos_auto_engines, we allow (and ignore)
    engines that are unknown. This is convenient, since it allows to set
    default auto-create engines that might not be used by particular users.
    The option sets a list of storage engines that will have gtid position
    table auto-created for them if needed. And if the engine is not available,
    then it will certainly not be needed.
  */

> Any thoughts ? 

Another option could be to allow to specify --gtid-pos-auto-engines multiple
times, each use appending to the list. But then, there is no easy way to
remove an engine from the list.

I think the current solution (allow unknown engine in the list) is an
acceptable compromise. Normally, silently ignoring an invalid setting can be
bad, because it can lead to surprising behaviour for the user. However, in
this case, if an unknown engine is listed in --gtid-pos-auto-engines and is
attempted to be used to replicate a transaction, the error will in any case
be flagged at that point (it is not possible to access a table using a not
loaded engine).

 - Kristian.


References