apolloconfig/apollo · error · BadRequestException

Env: %s is not supported emergency publish now

Error message

Env: %s is not supported emergency publish now

What it means

Thrown when a portal user or user token attempts an emergency publish in an environment where emergency publish is disabled by portal configuration. Consumer tokens are exempt from this check.

Source

Thrown at apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java:250

    releaseModel.setNamespaceName(namespaceName);
    releaseModel.setReleaseTitle(releaseDTO.getReleaseTitle());
    releaseModel.setReleaseComment(releaseDTO.getReleaseComment());
    releaseModel.setReleasedBy(releasedBy);
    releaseModel.setEmergencyPublish(Boolean.TRUE.equals(releaseDTO.getIsEmergencyPublish()));
    return releaseModel;
  }

  private String payloadReleasedBy(NamespaceReleaseDTO releaseDTO) {
    return releaseDTO == null ? null : releaseDTO.getReleasedBy();
  }

  private void checkEmergencyPublishAllowedForUser(String env, boolean emergencyPublish) {
    String authType = UserIdentityContextHolder.getAuthType();
    if (emergencyPublish
        && (UserIdentityConstants.USER.equals(authType)
            || UserIdentityConstants.USER_TOKEN.equals(authType))
        && !portalConfig.isEmergencyPublishAllowed(Env.valueOf(env))) {
      throw new BadRequestException("Env: %s is not supported emergency publish now", env);
    }
  }

  private String resolveOperator(String queryOperator, String payloadOperator) {
    String authType = UserIdentityContextHolder.getAuthType();
    if (UserIdentityConstants.USER.equals(authType)
        || UserIdentityConstants.USER_TOKEN.equals(authType)) {
      UserInfo loginUser = userInfoHolder.getUser();
      if (loginUser == null || StringUtils.isBlank(loginUser.getUserId())) {
        throw new BadRequestException("Current user not found");
      }
      return loginUser.getUserId();
    }

    if (UserIdentityConstants.CONSUMER.equals(authType)) {
      String operator = StringUtils.isBlank(queryOperator) ? payloadOperator : queryOperator;
      RequestPrecondition.checkArguments(!StringUtils.isContainEmpty(operator),
          "operator should not be null or empty");

View on GitHub (pinned to d95fc18d11)

Solutions

  1. Do not set isEmergencyPublish=true for this environment; publish a normal release instead.
  2. Have an Apollo administrator enable emergency publish for the environment via the portal config (apollo.portal.emergencyPublish.allowed or equivalent per-env setting).
  3. Retry the release without the emergencyPublish flag.

When it happens

Trigger: Thrown when an emergency publish is requested via the OpenAPI release endpoint for an environment whose portaldb ServerConfig does not enable emergency publish.

Common situations: The env (e.g. PROD) has emergency publish disabled in config; the caller passes an env name that is not configured for emergency publish.


AI-assisted analysis of apolloconfig/apollo@d95fc18d11 (2026-08-14). Data as JSON: /api/errors/12809e7443a145e3. Report an issue: GitHub.