alibaba/nacos · warning · NacosApiException
PARAMETER_VALIDATE_ERROR
PARAMETER_VALIDATE_ERROR
Error message
AI resource import plugin is disabled: {} What it means
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.
Source
Thrown at ai/src/main/java/com/alibaba/nacos/ai/importer/manager/AiResourceImportPluginManager.java:135
/**
* Resolve an enabled managed builder.
*
* @param pluginName managed plugin name and source id
* @param resourceType expected resource type
* @return resolved builder
* @throws NacosException if routing fails
*/
public AiResourceImportServiceBuilder resolveBuilder(String pluginName, String resourceType)
throws NacosException {
requireModuleEnabled();
AiResourceImportServiceBuilder result = getLoadedPlugins().get(pluginName);
if (result == null) {
throw new NacosApiException(NacosException.NOT_FOUND,
ErrorCode.RESOURCE_NOT_FOUND,
"AI resource import plugin not found: " + pluginName);
}
if (!isPluginEnabled(pluginName)) {
throw new NacosApiException(NacosException.INVALID_PARAM,
ErrorCode.PARAMETER_VALIDATE_ERROR,
"AI resource import plugin is disabled: " + pluginName);
}
if (!supportsResourceType(result, resourceType)) {
throw new NacosApiException(NacosException.INVALID_PARAM,
ErrorCode.PARAMETER_VALIDATE_ERROR,
"AI resource import plugin does not support resource type: " + resourceType);
}
return result;
}
private Map<String, AiResourceImportServiceBuilder> getLoadedPlugins() {
Map<String, AiResourceImportServiceBuilder> result = builders;
return result == null ? Collections.emptyMap() : result;
}
private void requireModuleEnabled() throws NacosException {
if (!propertiesSupplier.get().isEnabled()) {View on GitHub (pinned to 9b989acdf1)
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.
Defensive patterns
Strategy: try-catch
Try / catch
try {
pluginManager.resolveBuilder(sourceId, resourceType);
} catch (NacosApiException e) {
if (ErrorCode.PARAMETER_VALIDATE_ERROR.getCode() == e.getDetailErrCode()
&& e.getErrMsg().contains("is disabled")) {
// surface to operator / fall back to another enabled source
notifyOpsPluginDisabled(sourceId);
}
throw e;
} Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- API_FUNCTION_DISABLED
- DATA_ACCESS_ERROR
- RESOURCE_NOT_FOUND
- AiResourceStorage plugin is disabled: + storageKey.getProvi
- RESOURCE_NOT_FOUND
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/8ed34f1395b0bb1a.
Report an issue: GitHub.