Force all plugins

Registered by Laurynas Biveinis

MIGRATED TO https://jira.percona.com/browse/PS-301

Add a new boolean server command line option
    --force-all-plugins=TRUE|FALSE. FALSE corresponds to the legacy
    MySQL behavior and TRUE is the new default. If TRUE, the server
    will abort its startup if any of the plugins in the mysql.plugin
    fail to load.

Add a new value to the --plugin-name variable, OPTIONAL. It will allow for the specified plugin to be loaded but any load error will not be fatal.

    Interaction with other plugin load-controlling options (http://dev.mysql.com/doc/refman/5.6/en/server-plugin-loading.html)

    --plugin-load, --plugin-load-add: failure to load any of these
    plugins will result in server startup abort too.

    --skip-grant-tables: straightforward as this will cause no plugins
    in mysql.plugin table to be loaded, thus no forcing. If both
    --skip-grant-tables and --plugin-load[-add] are specified, the
    mysql.plugin plugins will be skipped and plugin-load ones forced.

    --plugin-name=OFF, --disable-plugin-name, --skip-plugin-name: a
    forced plugin load is skipped for this plugin.

    --plugin-name=ON|FORCE, --enable-plugin-name: no-ops.

    --plugin-name=FORCE_PLUS_PERMANENT: prevents the plugin from being
    unloaded at runtime, otherwise a no-op.

    The motivation for this option is 3rd party storage engine plugins
    such as TokuDB. Their failure to load results in reduced server
    functionality, for example, existing tables in that storage engine
    become inaccessible. Moreover, if, for example, crash recovery is
    needed, it will run partially, may choose the wrong transaction
    log coordinator, resulting in crash recovery failure, server
    abort, and the need to perform heuristic or manual crash
    recovery. However mysql.plugin schema does not differentiate
    between the plugin types, thus we cannot tell whether any plugin
    is a storage engine without attempting to load it first. That's
    why we force initialization for all installed plugins.

Blueprint information

Status:
Started
Approver:
None
Priority:
Not
Drafter:
Laurynas Biveinis
Direction:
Approved
Assignee:
None
Definition:
Approved
Series goal:
Accepted for 5.6
Implementation:
Started
Milestone target:
None
Started by
Laurynas Biveinis

Related branches

Sprints

Whiteboard

Roel: This is a great blueprint. When for example RocksDB fails to load, but TokuDB and InnoDB load, then data inconsistency (without proper app checking) is quite likely if multiple engines are used in which data may refer to each other, etc.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.