• Yuchen Pei's avatar
    MDEV-33441 Do not deinit plugin variables when retry requested · 068a6819
    Yuchen Pei authored
    After MDEV-31400, plugins are allowed to ask for retries when failing
    initialisation. However, such failures also cause plugin system
    variables to be deleted (plugin_variables_deinit()) before retrying
    and are not re-added during retry.
    
    We fix this by checking that if the plugin has requested a retry the
    variables are not deleted. Because plugin_deinitialize() also calls
    plugin_variables_deinit(), if the retry fails, the variables will
    still be deleted.
    
    Alternatives considered:
    
    - remove the plugin_variables_deinit() from plugin_initialize() error
    handling altogether. We decide to take a more conservative approach
    here.
    
    - re-add the system variables during retry. It is more complicated
    than simply iterating over plugin->system_vars and call
    my_hash_insert(). For example we will need to assign values to
    the test_load field and extract more code from test_plugin_options(),
    if that is possible.
    068a6819
sql_plugin.cc 138 KB