Background
Nacos 3.x still keeps compatibility migration logic for Config data upgraded from versions before 3.0. The main compatibility paths are:
- default namespace storage migration between legacy empty tenant (
tenant_id = '') and the 3.x default namespace id (public);
- legacy beta/tag gray release migration from
config_info_beta and config_info_tag to the current config_info_gray model;
- mixed-version runtime synchronization that keeps the legacy and current storage forms in sync during rolling upgrade.
For Nacos 3.3, we plan to remove this migration compatibility logic and keep only the current Config model.
After this removal, Nacos will no longer guarantee a fully smooth upgrade from versions before 3.0 when the old cluster has used the default namespace or beta gray release. If a pre-3.0 deployment has not used the default namespace and has not used beta gray release, the upgrade can still remain smooth for this compatibility area.
Target Behavior
- The current Config namespace behavior remains: blank or omitted namespace input is normalized to the default namespace id, currently
public.
- The current gray release model remains: beta and tag gray releases are represented by
config_info_gray and GrayRule.
- Nacos 3.3 no longer auto-migrates or double-writes data between
tenant_id = '' and tenant_id = 'public'.
- Nacos 3.3 no longer auto-migrates or double-writes legacy beta/tag rows in
config_info_beta and config_info_tag.
- Operators upgrading from pre-3.0 versions must handle legacy default-namespace and beta/tag data before upgrading to 3.3.
Landing Plan / TODO
Specs
Server Code
Persistence And Datasource Plugins
Tests
Documentation And Release Notes
Notes
This issue only tracks removal of Config migration compatibility logic. It does not remove the current default namespace semantics, current config_info_gray gray release capability, or current beta/tag gray API behavior that is backed by the gray model.
Background
Nacos 3.x still keeps compatibility migration logic for Config data upgraded from versions before 3.0. The main compatibility paths are:
tenant_id = '') and the 3.x default namespace id (public);config_info_betaandconfig_info_tagto the currentconfig_info_graymodel;For Nacos 3.3, we plan to remove this migration compatibility logic and keep only the current Config model.
After this removal, Nacos will no longer guarantee a fully smooth upgrade from versions before 3.0 when the old cluster has used the default namespace or beta gray release. If a pre-3.0 deployment has not used the default namespace and has not used beta gray release, the upgrade can still remain smooth for this compatibility area.
Target Behavior
public.config_info_grayandGrayRule.tenant_id = ''andtenant_id = 'public'.config_info_betaandconfig_info_tag.Landing Plan / TODO
Specs
specs/{en,zh-cn}/design/compatibility-deprecation-spec.mdto mark Config namespace storage migration and beta/tag gray migration as removed in 3.3.specs/{en,zh-cn}/config/config-gray-release-spec.mdto remove the beta/tag old-table migration description and state that current beta/tag gray variants are stored inconfig_info_gray.specs/{en,zh-cn}/config/config-consistency-dump-visibility-spec.mdto remove mixed-version beta/tag translation and namespace storage synchronization requirements.specs/{en,zh-cn}/config/config-resource-spec.mdto clarify that blank namespace request normalization topublicremains, but storage duplication between empty tenant andpublicis removed.specs/{en,zh-cn}/plugin/default-datasource-dialect-plugin-spec.mdanddatasource-dialect-plugin-spec.mdto remove Config migration mapper requirements and legacy beta/tag table requirements from the current model.specs/{en,zh-cn}/grpc-api/api-spec.mdifConfigChangeClusterSyncRequestcompatibility fields (isBeta,tag) are no longer used by server-side mixed-version migration.Server Code
ConfigMigrateServiceas a service-level migration entry point.ConfigCompatibleConfigand thenacos.config.namespace.compatible.modeconfiguration key if no other code path still needs it.nacos.config.gray.compatible.model,nacos.namespace.migrate.retry.times, andnacos.namespace.migrate.batch.size.ConfigOperationService.ConfigControllerV3, including theconfig_info_betaexistence check andConfigInfoBetaPersistServiceusage.ConfigMigrateServicedependency fromConfigChangeClusterSyncRequestHandler; keep only current config change dump handling.DumpChangeConfigWorkerandDumpChangeGrayConfigWorker.ConfigRequestInfo.namespaceTransferredif it remains write-only after migration removal.PropertyUtil.GRAY_MIGRATE_FLAGand related history-suppression branches if they are only used by the removed migration task.Persistence And Datasource Plugins
ConfigMigratePersistServiceand embedded/external implementations.ConfigMigrateMapperand all default datasource implementations: MySQL, PostgreSQL, Derby, and Oracle.ConfigInfoBetaPersistService/ConfigInfoTagPersistServiceand embedded/external implementations if no current beta/tag gray path still uses old tables.ConfigInfoBetaMapper/ConfigInfoTagMapperand default datasource implementations if old-table persistence is fully removed.config_info_betaandconfig_info_tagif the old tables are no longer part of the 3.3 schema.publicmigration in 3.3.Tests
ConfigMigrateServiceTest.ConfigMigratePersistServicetests.ConfigMigrateMappertests.ConfigInfoBetaPersistService/ConfigInfoTagPersistServicetests if the old persistence services are removed.ConfigOperationServiceTest,ConfigControllerV3Test,ConfigChangeClusterSyncRequestHandlerTest, dump worker tests, and datasource mapper coverage tests.config_info_gray.publicwithout creating an empty-tenant duplicate.test/openapi-test/*_API_TEST_SCENARIOS.md,API_TEST_COVERAGE.md, and maintainer SDK scenario docs if beta/tag compatibility wording changes.Documentation And Release Notes
public, and migrate beta/tag gray data toconfig_info_gray, before upgrading to 3.3.Notes
This issue only tracks removal of Config migration compatibility logic. It does not remove the current default namespace semantics, current
config_info_graygray release capability, or current beta/tag gray API behavior that is backed by the gray model.