ruvnet/ruflo · error · PluginError

SHUTDOWN_FAILED

SHUTDOWN_FAILED

Error message

Failed to shutdown plugin '${plugin.name}': ${error}

What it means

PluginLoader.shutdownPlugin caught a failure (or timeout) from the plugin's own shutdown() hook, marked the plugin 'error', and rethrew as PluginError. The plugin's teardown logic failed during unload; the loader names the plugin and preserves the underlying error.

Source

Thrown at v3/@claude-flow/shared/src/plugin-loader.ts:364

  }

  /**
   * Shutdown a single plugin
   */
  private async shutdownPlugin(plugin: ClaudeFlowPlugin): Promise<void> {
    this.registry.updatePluginState(plugin.name, 'shutting-down');

    try {
      await this.withTimeout(
        plugin.shutdown(),
        this.config.shutdownTimeout,
        `Plugin '${plugin.name}' shutdown timed out`
      );

      this.registry.updatePluginState(plugin.name, 'shutdown');
    } catch (error) {
      this.registry.updatePluginState(plugin.name, 'error', error instanceof Error ? error : new Error(String(error)));
      throw new PluginError(
        `Failed to shutdown plugin '${plugin.name}': ${error}`,
        plugin.name,
        'SHUTDOWN_FAILED',
        error instanceof Error ? error : undefined
      );
    }
  }

  /**
   * Initialize plugins sequentially
   */
  private async initializePluginsSequential(
    plugins: ClaudeFlowPlugin[],
    context: PluginContext,
    results: LoadPluginsResult
  ): Promise<void> {
    for (const plugin of plugins) {
      try {

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Inspect the wrapped error from the plugin's shutdown hook and fix the resource cleanup.
  2. Ensure shutdown is idempotent so repeated calls do not fail.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at v3/@claude-flow/shared/src/plugin-loader.ts:364 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/6083571e54bd21b2. Report an issue: GitHub.