{"record":{"id":"0a59be2b1a0ec924","repo":"alibaba/nacos","slug":"500-0a59be","errorCode":"500","errorMessage":"Namespace creation failed","messagePattern":"Namespace creation failed","errorType":"exception","errorClass":"NacosRuntimeException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/alibaba/nacos/core/namespace/repository/EmbeddedNamespacePersistServiceImpl.java","lineNumber":93,"sourceCode":"    public void insertTenantInfoAtomic(String kp, String tenantId, String tenantName,\n        String tenantDesc,\n        String createResource, final long time) {\n        \n        TenantInfoMapper tenantInfoMapper = mapperManager\n            .findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_INFO);\n        final String sql = tenantInfoMapper.insert(Arrays\n            .asList(\"kp\", \"tenant_id\", \"tenant_name\", \"tenant_desc\", \"create_source\", \"gmt_create\",\n                \"gmt_modified\"));\n        final Object[] args =\n            new Object[] {kp, tenantId, tenantName, tenantDesc, createResource, time, time};\n        \n        EmbeddedStorageContextHolder.addSqlContext(sql, args);\n        \n        try {\n            boolean result =\n                databaseOperate.update(EmbeddedStorageContextHolder.getCurrentSqlContext());\n            if (!result) {\n                throw new NacosRuntimeException(NacosException.SERVER_ERROR,\n                    \"Namespace creation failed\");\n            }\n        } finally {\n            EmbeddedStorageContextHolder.cleanAllContext();\n        }\n    }\n    \n    @Override\n    public void removeTenantInfoAtomic(final String kp, final String tenantId) {\n        TenantInfoMapper tenantInfoMapper = mapperManager\n            .findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_INFO);\n        \n        EmbeddedStorageContextHolder\n            .addSqlContext(tenantInfoMapper.delete(Arrays.asList(\"kp\", \"tenant_id\")), kp, tenantId);\n        try {\n            databaseOperate.update(EmbeddedStorageContextHolder.getCurrentSqlContext());\n        } finally {\n            EmbeddedStorageContextHolder.cleanAllContext();","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/core/src/main/java/com/alibaba/nacos/core/namespace/repository/EmbeddedNamespacePersistServiceImpl.java#L75-L111","documentation":"EmbeddedNamespacePersistServiceImpl.insertTenantInfoAtomic throws NacosRuntimeException(SERVER_ERROR 500) when databaseOperate.update(...) returns false — i.e. the INSERT into tenant_info affected zero rows in embedded (Derby) storage. This is a server-side persistence failure, not a client validation problem: the request was well-formed but the DB rejected/ignored the write.","triggerScenarios":"Creating a namespace while the embedded Derby database is locked, read-only, full, or being concurrently written by another process. Also after a partial/failed schema upgrade where the tenant_info table is inconsistent.","commonSituations":"Two Nacos server processes pointed at the same Derby data directory (Derby is single-writer and locks exclusively); the data dir lives on read-only or full storage; a half-applied migration left the table in a bad state; derby.log shows a lock timeout.","solutions":["Ensure only ONE writer process owns the Derby data directory (use MySQL for clustered/multi-node setups).","Check disk space and write permissions on the nacos data dir (conf derby.log + data/derby).","Inspect the server log for the underlying SQL/lock error around the failing insert.","If corrupt, stop the server, back up and repair/remove the derby DB, then restart."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    namespaceService.createNamespace(customId, name, desc);\n} catch (NacosException e) {\n    if (e.getErrCode() == 500 && e.getMessage().contains(\"Namespace creation failed\")) {\n        // server-side DB failure: check derby.log / disk, then retry once after a short delay\n        log.error(\"Namespace persist failed; DB locked or unwritable\", e);\n    } else { throw e; }\n}","preventionTips":["Run only ONE Nacos writer against a Derby data dir (use MySQL for clusters).","Keep the data dir on writable storage with free disk.","Watch derby.log for lock timeouts before retrying."],"tags":["namespace","persistence","derby","server-error","embedded-db"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}