apache/rocketmq · error · AuthorizationException

lite subscription is empty.

Error message

lite subscription is empty.

What it means

Error "lite subscription is empty." thrown in apache/rocketmq.

Source

Thrown at auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java:443

                    group = Resource.ofGroup(requireResource(
                        unlockBatchRequestBody.getConsumerGroup(), "consumer group"));
                    result.add(DefaultAuthorizationContext.of(subject, group, Action.SUB, sourceIp));
                    if (CollectionUtils.isNotEmpty(unlockBatchRequestBody.getMqSet())) {
                        for (MessageQueue messageQueue : unlockBatchRequestBody.getMqSet()) {
                            String unlockTopic = requireResource(messageQueue.getTopic(), "topic");
                            if (NamespaceUtil.isRetryTopic(unlockTopic)) {
                                continue;
                            }
                            topic = Resource.ofTopic(unlockTopic);
                            result.add(DefaultAuthorizationContext.of(subject, topic, Action.SUB, sourceIp));
                        }
                    }
                    break;
                case RequestCode.LITE_SUBSCRIPTION_CTL:
                    LiteSubscriptionCtlRequestBody liteSubscriptionBody = decodeRequiredBody(
                        command, LiteSubscriptionCtlRequestBody.class, "lite subscription");
                    if (CollectionUtils.isEmpty(liteSubscriptionBody.getSubscriptionSet())) {
                        throw new AuthorizationException("lite subscription is empty.");
                    }
                    Set<String> liteSubscriptionResources = new LinkedHashSet<>();
                    for (LiteSubscriptionDTO subscription : liteSubscriptionBody.getSubscriptionSet()) {
                        if (subscription == null) {
                            throw new AuthorizationException("lite subscription is null.");
                        }
                        addUniqueContext(result, liteSubscriptionResources, subject,
                            Resource.ofGroup(requireResource(subscription.getGroup(), "consumer group")),
                            Action.SUB, sourceIp);
                        addUniqueContext(result, liteSubscriptionResources, subject,
                            Resource.ofTopic(requireResource(subscription.getTopic(), "topic")),
                            Action.SUB, sourceIp);
                    }
                    break;
                case RequestCode.UPDATE_BROKER_CONFIG:
                    result.add(DefaultAuthorizationContext.of(subject,
                        Resource.ofCluster(authConfig.getClusterName()), Action.UPDATE, sourceIp));
                    break;

View on GitHub (pinned to 293f588571)

Solutions

  1. Provide at least one lite subscription entry (topic/expression) in the request.
  2. Check the client's lite subscription API usage so an empty subscription set is never submitted.
  3. Validate application configuration that supplies the lite subscription list.

When it happens

Trigger: Occurs when a lite subscription request contains an empty subscription set.

Common situations: Client sends a lite subscribe/unsubscribe request with no topics or an empty subscription list.


AI-assisted analysis of apache/rocketmq@293f588571 (2026-08-14). Data as JSON: /api/errors/34f61206d97025d1. Report an issue: GitHub.