{"record":{"id":"e9fa8d5208aa8401","repo":"apache/incubator-seata","slug":"not-support-removeconfig","errorCode":null,"errorMessage":"not support removeConfig","messagePattern":"not support removeConfig","errorType":"exception","errorClass":"NotSupportYetException","httpStatus":null,"severity":"warning","filePath":"config/seata-config-apollo/src/main/java/org/apache/seata/config/apollo/ApolloConfiguration.java","lineNumber":147,"sourceCode":"            String result = config.getProperty(dataId, defaultValue);\n            configFuture.setResult(result);\n        });\n        return (String) configFuture.get();\n    }\n\n    @Override\n    public boolean putConfig(String dataId, String content, long timeoutMills) {\n        throw new NotSupportYetException(\"not support putConfig\");\n    }\n\n    @Override\n    public boolean putConfigIfAbsent(String dataId, String content, long timeoutMills) {\n        throw new NotSupportYetException(\"not support atomic operation putConfigIfAbsent\");\n    }\n\n    @Override\n    public boolean removeConfig(String dataId, long timeoutMills) {\n        throw new NotSupportYetException(\"not support removeConfig\");\n    }\n\n    @Override\n    public void addConfigListener(String dataId, ConfigurationChangeListener listener) {\n        if (StringUtils.isBlank(dataId) || listener == null) {\n            return;\n        }\n        LISTENER_SERVICE_MAP\n                .computeIfAbsent(dataId, key -> ConcurrentHashMap.newKeySet())\n                .add(listener);\n    }\n\n    @Override\n    public void removeConfigListener(String dataId, ConfigurationChangeListener listener) {\n        if (StringUtils.isBlank(dataId) || listener == null) {\n            return;\n        }\n        Set<ConfigurationChangeListener> configListeners = getConfigListeners(dataId);","sourceCodeStart":129,"sourceCodeEnd":165,"githubUrl":"https://github.com/apache/incubator-seata/blob/e01f97c6db397165050caa6764020410c2c8199a/config/seata-config-apollo/src/main/java/org/apache/seata/config/apollo/ApolloConfiguration.java#L129-L165","documentation":"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.","triggerScenarios":"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.","commonSituations":"Environment-cleanup scripts written against Nacos being reused on Apollo; lifecycle code removing temporary config keys on shutdown.","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."],"exampleFix":"// before\nconfiguration.removeConfig(dataId, 5000);\n\n// after\ntry {\n    configuration.removeConfig(dataId, 5000);\n} catch (NotSupportYetException e) {\n    LOGGER.info(\"removeConfig unsupported on apollo; delete {} via Apollo portal\", dataId);\n}","handlingStrategy":"try-catch","validationCode":"\"apollo\".equals(configuration.getTypeName()) // skip removeConfig when true","typeGuard":null,"tryCatchPattern":"try {\n    configuration.removeConfig(dataId, timeoutMills);\n} catch (NotSupportYetException e) {\n    LOGGER.info(\"removeConfig unsupported on {}; delete via the backend's own console\", configuration.getTypeName());\n}","preventionTips":["Keep cleanup scripts aware of per-backend capabilities","Use Apollo OpenAPI for namespace/key deletion instead of seata Configuration"],"tags":["apollo","config","unsupported-operation","seata"],"backgroundTag":null,"analyzedSha":"e01f97c6db397165050caa6764020410c2c8199a","analyzedAt":"2026-08-14T10:23:53.097Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}