<p>MySQL raises error 1620 WARN_PLUGIN_BUSY when an UNINSTALL PLUGIN or shutdown request finds the plugin still in active use.</p>
<p>MySQL Error 1620: WARN_PLUGIN_BUSY occurs when you try to uninstall a plugin that still has active threads. Wait for, or manually stop, the plugin processes, then run UNINSTALL PLUGIN again or restart MySQL to clear the lock.</p>
Plugin is busy and will be uninstalled on shutdown
MySQL error 1620, condition name WARN_PLUGIN_BUSY, is emitted when a plugin cannot be uninstalled immediately because its internal thread or resource is still active. The server logs Plugin is busy and will be uninstalled on shutdown and keeps the plugin registered until it is safe to release.
The warning surfaces during UNINSTALL PLUGIN, VERSION upgrades, or server shutdowns. Although tagged as a warning, it blocks the requested operation and can extend maintenance windows, so resolving it promptly is important.
MySQL returns WARN_PLUGIN_BUSY when a plugin thread, lock, or background job remains active while an administrator calls UNINSTALL PLUGIN or executes shutdown. The busy state prevents the dynamic loader from freeing shared libraries.
Long-running audit, authentication, memcached, or custom plugins frequently hold open resources. If a plugin starts background workers or listens on sockets, those threads must finish before removal is allowed.
First, identify which plugin is busy with SHOW PLUGINS or queries against PERFORMANCE_SCHEMA. Next, disable or stop the plugin’s workload, then retry UNINSTALL PLUGIN. If the plugin will not release, restart MySQL to force unload at shutdown.
In production, place the server into read-only mode before stopping plugins to reduce new connections and jobs that could prolong the busy state.
Administrators often see WARN_PLUGIN_BUSY when removing an auditing plugin after enabling general log capture. Flushing logs and closing sessions frees the plugin so UNINSTALL succeeds.
In replication setups, the semi-sync plugin can show as busy because it waits for acknowledgments. Temporarily disable semisync settings, wait for seconds_behind_master to reach zero, then uninstall.
Always stop plugin activity gracefully before uninstalling. Provide a short maintenance window, set super_read_only, and kill idle sessions using the plugin.
Monitor INFORMATION_SCHEMA.PLUGINS and PERFORMANCE_SCHEMA.EVENTS_WAITS_HISTORY to detect plugins that keep long-running locks. Automate shutdown scripts to check busy status before attempting removal.
Error 1125 HY000 Operation cannot be performed - appears when a plugin lacks privileges. Grant required permissions or install with --skip-grant-tables.
Error 1126 HY000 Can’t open shared library - occurs when a plugin binary is missing. Verify plugin_dir path and file permissions.
Background workers spawned by the plugin are still running when UNINSTALL PLUGIN is issued.
Client sessions continue to call plugin functions, keeping the plugin locked in memory.
Transactions started through audit or auth plugins delay plugin unload until commit or rollback.
Replication plugins wait for ACKs from slaves, marking themselves busy until the handshake finishes.
The server cannot locate the plugin binary. Confirm plugin_dir and file permissions.
The current user lacks privileges to install or uninstall plugins. Grant INSERT, DELETE, and UPDATE on mysql.plugin.
UNINSTALL PLUGIN specifies a name not present in mysql.plugin. Verify the spelling and case sensitivity.
No. It is a warning but blocks plugin removal until the plugin becomes idle or the server restarts.
Yes, but the plugin will stay loaded. For upgrades or clean rollbacks, clear the busy state first.
If draining connections takes more than a few minutes in maintenance windows, restart to unload safely.
Galaxy’s editor lets you run SHOW PLUGINS and PERFORMANCE_SCHEMA queries quickly, share results, and endorse fix scripts for repeatable maintenance.