{"record":{"id":"8ed34f1395b0bb1a","repo":"alibaba/nacos","slug":"parameter-validate-error-8ed34f","errorCode":"PARAMETER_VALIDATE_ERROR","errorMessage":"AI resource import plugin is disabled: {}","messagePattern":"AI resource import plugin is disabled: (.+?)","errorType":"exception","errorClass":"NacosApiException","httpStatus":400,"severity":"warning","filePath":"ai/src/main/java/com/alibaba/nacos/ai/importer/manager/AiResourceImportPluginManager.java","lineNumber":135,"sourceCode":"    /**\n     * Resolve an enabled managed builder.\n     *\n     * @param pluginName managed plugin name and source id\n     * @param resourceType expected resource type\n     * @return resolved builder\n     * @throws NacosException if routing fails\n     */\n    public AiResourceImportServiceBuilder resolveBuilder(String pluginName, String resourceType)\n        throws NacosException {\n        requireModuleEnabled();\n        AiResourceImportServiceBuilder result = getLoadedPlugins().get(pluginName);\n        if (result == null) {\n            throw new NacosApiException(NacosException.NOT_FOUND,\n                ErrorCode.RESOURCE_NOT_FOUND,\n                \"AI resource import plugin not found: \" + pluginName);\n        }\n        if (!isPluginEnabled(pluginName)) {\n            throw new NacosApiException(NacosException.INVALID_PARAM,\n                ErrorCode.PARAMETER_VALIDATE_ERROR,\n                \"AI resource import plugin is disabled: \" + pluginName);\n        }\n        if (!supportsResourceType(result, resourceType)) {\n            throw new NacosApiException(NacosException.INVALID_PARAM,\n                ErrorCode.PARAMETER_VALIDATE_ERROR,\n                \"AI resource import plugin does not support resource type: \" + resourceType);\n        }\n        return result;\n    }\n    \n    private Map<String, AiResourceImportServiceBuilder> getLoadedPlugins() {\n        Map<String, AiResourceImportServiceBuilder> result = builders;\n        return result == null ? Collections.emptyMap() : result;\n    }\n    \n    private void requireModuleEnabled() throws NacosException {\n        if (!propertiesSupplier.get().isEnabled()) {","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/ai/src/main/java/com/alibaba/nacos/ai/importer/manager/AiResourceImportPluginManager.java#L117-L153","documentation":"Thrown by AiResourceImportPluginManager.resolveBuilder() when the requested plugin IS loaded but the PluginStateCheckerHolder reports it as disabled. This is the per-plugin enable/disable gate that runs after the existence check and before the resource-type capability check. Mapped to PARAMETER_VALIDATE_ERROR with an INVALID_PARAM top-level code, signaling the request is valid in shape but the targeted plugin is administratively off.","triggerScenarios":"resolveBuilder finds the builder in getLoadedPlugins(), then isPluginEnabled(pluginName) returns false via PluginStateCheckerHolder.isPluginEnabled for PluginType.AI_RESOURCE_IMPORT. Any import search/validate/execute against that pluginName then fails.","commonSituations":"An operator disabled the plugin through the plugin state checker configuration (e.g. maintenance, security review); a plugin failed its health/state check and was auto-disabled; environment-specific config turns specific importers off.","solutions":["Re-enable the plugin through the plugin state checker configuration/admin API for PluginType.AI_RESOURCE_IMPORT.","If the plugin should stay disabled, pick a different enabled sourceId from the list sources endpoint.","Confirm with the cluster operator that the disable was intentional and the plugin is healthy before re-enabling."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    pluginManager.resolveBuilder(sourceId, resourceType);\n} catch (NacosApiException e) {\n    if (ErrorCode.PARAMETER_VALIDATE_ERROR.getCode() == e.getDetailErrCode()\n        && e.getErrMsg().contains(\"is disabled\")) {\n        // surface to operator / fall back to another enabled source\n        notifyOpsPluginDisabled(sourceId);\n    }\n    throw e;\n}","preventionTips":["Monitor plugin enabled-state via the plugin state checker admin surface.","Keep an alternate enabled sourceId configured so clients can fail over.","Document which plugins are intentionally disabled in each environment."],"tags":["ai","importer","plugin","disabled","configuration"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}