{"record":{"id":"5827726651e48e65","repo":"apolloconfig/apollo","slug":"namespace-s-role-does-not-exist-please-check-whet","errorCode":null,"errorMessage":"Namespace's role does not exist. Please check whether namespace has created.","messagePattern":"Namespace's role does not exist\\. Please check whether namespace has created\\.","errorType":"validation","errorClass":"BadRequestException","httpStatus":400,"severity":"error","filePath":"apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/service/ConsumerService.java","lineNumber":178,"sourceCode":"    return assignNamespaceRoleToConsumer(token, appId, namespaceName, null, operator);\n  }\n\n  @Transactional\n  public List<ConsumerRole> assignNamespaceRoleToConsumer(String token, String appId,\n      String namespaceName, String env, String operator) {\n    validateOperator(operator);\n    Long consumerId = getConsumerIdByToken(token);\n    if (consumerId == null) {\n      throw new BadRequestException(\"Token is Illegal\");\n    }\n\n    Role namespaceModifyRole = rolePermissionService\n        .findRoleByRoleName(RoleUtils.buildModifyNamespaceRoleName(appId, namespaceName, env));\n    Role namespaceReleaseRole = rolePermissionService\n        .findRoleByRoleName(RoleUtils.buildReleaseNamespaceRoleName(appId, namespaceName, env));\n\n    if (namespaceModifyRole == null || namespaceReleaseRole == null) {\n      throw new BadRequestException(\n          \"Namespace's role does not exist. Please check whether namespace has created.\");\n    }\n\n    long namespaceModifyRoleId = namespaceModifyRole.getId();\n    long namespaceReleaseRoleId = namespaceReleaseRole.getId();\n\n    ConsumerRole managedModifyRole =\n        consumerRoleRepository.findByConsumerIdAndRoleId(consumerId, namespaceModifyRoleId);\n    ConsumerRole managedReleaseRole =\n        consumerRoleRepository.findByConsumerIdAndRoleId(consumerId, namespaceReleaseRoleId);\n    if (managedModifyRole != null && managedReleaseRole != null) {\n      return Arrays.asList(managedModifyRole, managedReleaseRole);\n    }\n\n    ConsumerRole namespaceModifyConsumerRole =\n        createConsumerRole(consumerId, namespaceModifyRoleId, operator);\n    ConsumerRole namespaceReleaseConsumerRole =\n        createConsumerRole(consumerId, namespaceReleaseRoleId, operator);","sourceCodeStart":160,"sourceCodeEnd":196,"githubUrl":"https://github.com/apolloconfig/apollo/blob/d95fc18d112589efc09ddcbe1507047584d55251/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/service/ConsumerService.java#L160-L196","documentation":"Thrown as BadRequestException (HTTP 400) by ConsumerService.assignNamespaceRoleToConsumer when the namespace's Modify or Release Role does not exist (rolePermissionService.findRoleByRoleName returns null for either). Roles are created when a namespace is created, so a missing role means the namespace was not fully/properly created.","triggerScenarios":"Assigning a consumer to a namespace whose modify/release roles are absent — typically because the namespace was never created, creation was incomplete, or env-specific roles (RoleUtils.buildModifyNamespaceRoleName / buildReleaseNamespaceRoleName with env) don't exist for that env.","commonSituations":"Calling role assignment before namespace creation finishes; assigning an env-scoped role for an env where the namespace roles weren't seeded; namespace created in some envs but not the target env.","solutions":["Ensure the namespace exists (and its roles are seeded) in the target env before assigning the consumer role.","Verify the appId, namespaceName, and env exactly match the role-name builder expectations.","Re-trigger namespace creation if roles are missing, then retry the assignment."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"Role modify = rolePermissionService.findRoleByRoleName(\n    RoleUtils.buildModifyNamespaceRoleName(appId, namespaceName, env));\nRole release = rolePermissionService.findRoleByRoleName(\n    RoleUtils.buildReleaseNamespaceRoleName(appId, namespaceName, env));\nif (modify == null || release == null) {\n  // ensure the namespace (and its roles) exist in this env first\n}","typeGuard":null,"tryCatchPattern":"try {\n  consumerService.assignNamespaceRoleToConsumer(token, appId, namespaceName, env, operator);\n} catch (BadRequestException e) {\n  if (e.getMessage().contains(\"role does not exist\")) {\n    // (re)create namespace to seed roles, then retry\n  } else throw e;\n}","preventionTips":["Always create the namespace (which seeds roles) before assigning consumer roles.","Verify role names for the exact appId/namespaceName/env before assignment.","Treat missing roles as a signal of incomplete namespace creation."],"tags":["consumer","role","namespace","openapi","bad-request","apollo-portal"],"backgroundTag":null,"analyzedSha":"d95fc18d112589efc09ddcbe1507047584d55251","analyzedAt":"2026-08-14T04:00:05.477Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}