apache/incubator-seata · warning · NotSupportYetException
not support removeConfig
Error message
not support removeConfig
What it means
ApolloConfiguration.removeConfig throws NotSupportYetException('not support removeConfig'). Deleting configuration is not implemented for Apollo because seata's Apollo integration is read-only; namespace changes must go through Apollo's own portal or OpenAPI with its audit/rollback semantics.
Source
Thrown at config/seata-config-apollo/src/main/java/org/apache/seata/config/apollo/ApolloConfiguration.java:147
String result = config.getProperty(dataId, defaultValue);
configFuture.setResult(result);
});
return (String) configFuture.get();
}
@Override
public boolean putConfig(String dataId, String content, long timeoutMills) {
throw new NotSupportYetException("not support putConfig");
}
@Override
public boolean putConfigIfAbsent(String dataId, String content, long timeoutMills) {
throw new NotSupportYetException("not support atomic operation putConfigIfAbsent");
}
@Override
public boolean removeConfig(String dataId, long timeoutMills) {
throw new NotSupportYetException("not support removeConfig");
}
@Override
public void addConfigListener(String dataId, ConfigurationChangeListener listener) {
if (StringUtils.isBlank(dataId) || listener == null) {
return;
}
LISTENER_SERVICE_MAP
.computeIfAbsent(dataId, key -> ConcurrentHashMap.newKeySet())
.add(listener);
}
@Override
public void removeConfigListener(String dataId, ConfigurationChangeListener listener) {
if (StringUtils.isBlank(dataId) || listener == null) {
return;
}
Set<ConfigurationChangeListener> configListeners = getConfigListeners(dataId);View on GitHub (pinned to e01f97c6db)
Solutions
- Move the deletion to Apollo's portal or Admin Service API.
- Remove the delete path from your code when running against Apollo (feature-flag by config type).
- Use a writable backend if programmatic removal is required.
- Catch NotSupportYetException for optional cleanup steps.
Example fix
// before
configuration.removeConfig(dataId, 5000);
// after
try {
configuration.removeConfig(dataId, 5000);
} catch (NotSupportYetException e) {
LOGGER.info("removeConfig unsupported on apollo; delete {} via Apollo portal", dataId);
} Defensive patterns
Strategy: try-catch
Validate before calling
"apollo".equals(configuration.getTypeName()) // skip removeConfig when true
Try / catch
try {
configuration.removeConfig(dataId, timeoutMills);
} catch (NotSupportYetException e) {
LOGGER.info("removeConfig unsupported on {}; delete via the backend's own console", configuration.getTypeName());
} Prevention
- Keep cleanup scripts aware of per-backend capabilities
- Use Apollo OpenAPI for namespace/key deletion instead of seata Configuration
When it happens
Trigger: Calling removeConfig(dataId, timeoutMills) while config.type=apollo — e.g. cleanup routines, dynamic config-unregistration code, or admin tooling that deletes keys across all config centers.
Common situations: Environment-cleanup scripts written against Nacos being reused on Apollo; lifecycle code removing temporary config keys on shutdown.
Related errors
- not support putConfig
- not support atomic operation putConfigIfAbsent
- Apollo configuration initialized failed,please check the val
- not support method:%s
- ERR_CONFIG
AI-assisted analysis of apache/incubator-seata@e01f97c6db (2026-08-14).
Data as JSON: /api/errors/e9fa8d5208aa8401.
Report an issue: GitHub.