Subscription: split client and example modules#17306
Open
VGalaxies wants to merge 3 commits intoapache:masterfrom
Open
Subscription: split client and example modules#17306VGalaxies wants to merge 3 commits intoapache:masterfrom
VGalaxies wants to merge 3 commits intoapache:masterfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors IoTDB’s subscription functionality by extracting subscription client/RPC code into a dedicated iotdb-subscription module and moving subscription examples into example/subscription, then updates downstream modules to depend on the new artifact.
Changes:
- Introduce new Maven module
iotdb-client/subscription(iotdb-subscription) containing subscription sessions, consumers, RPC request/response payloads, and supporting utilities. - Update core/client/IT/example modules to add an explicit dependency on
org.apache.iotdb:iotdb-subscription. - Add a dedicated
example/subscriptionmodule with a table-model subscription example.
Reviewed changes
Copilot reviewed 10 out of 111 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| iotdb-core/node-commons/pom.xml | Add dependency on iotdb-subscription. |
| iotdb-core/datanode/pom.xml | Add dependency on iotdb-subscription. |
| iotdb-core/confignode/pom.xml | Add dependency on iotdb-subscription. |
| iotdb-client/pom.xml | Register new subscription Maven module. |
| iotdb-client/subscription/pom.xml | New module POM for iotdb-subscription artifact. |
| iotdb-client/service-rpc/pom.xml | Remove pipe-api dependency (subscription now owns it). |
| iotdb-client/cli/pom.xml | Add dependency on iotdb-subscription. |
| integration-test/pom.xml | Add dependency on iotdb-subscription. |
| example/pom.xml | Register new example/subscription module. |
| example/subscription/pom.xml | New example module POM depending on iotdb-subscription. |
| example/subscription/src/main/java/org/apache/iotdb/TableModelSubscriptionSessionExample.java | Add table-model subscription client example. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/SetPartitioner.java | New set partitioning utility. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/RandomStringGenerator.java | New random string utility. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/PollTimer.java | New polling timer helper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/IdentifierUtils.java | New identifier validation/parsing utility. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/CollectionUtils.java | New collection-to-string helper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionFileHandler.java | New base file handler for subscription payloads. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionTsFileHandler.java | New TsFile payload handler (tree/table model). |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageType.java | New message type enum for subscription messages. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageHandler.java | New marker interface for message handlers. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessage.java | New subscription message wrapper with typed accessors. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/model/Topic.java | New topic model. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/model/Subscription.java | New subscription model. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/tree/SubscriptionTreePushConsumerBuilder.java | New tree push consumer builder. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/tree/SubscriptionTreePullConsumerBuilder.java | New tree pull consumer builder. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/tree/SubscriptionTreeProvider.java | New tree provider implementation. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/table/SubscriptionTablePushConsumerBuilder.java | New table push consumer builder. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/table/SubscriptionTablePushConsumer.java | New table push consumer implementation. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/table/SubscriptionTablePullConsumerBuilder.java | New table pull consumer builder. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/table/SubscriptionTablePullConsumer.java | New table pull consumer implementation. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/table/SubscriptionTableProvider.java | New table provider implementation. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionConsumerBuilder.java | New common consumer builder base. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionPullConsumerBuilder.java | New pull-consumer builder base. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionPushConsumerBuilder.java | New push-consumer builder base. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/ISubscriptionTreePushConsumer.java | New tree push consumer API. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/ISubscriptionTablePushConsumer.java | New table push consumer API. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeResult.java | New consume result enum. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeListener.java | New callback interface for push consumers. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/AsyncCommitCallback.java | New async commit callback interface. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/AckStrategy.java | New ack strategy enum. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionTreeSessionBuilder.java | New tree subscription session builder. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionTreeSession.java | New tree subscription session implementation. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionTableSessionBuilder.java | New table subscription session builder. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionTableSession.java | New table subscription session implementation. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionWrapper.java | New session wrapper to construct subscription connections. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java | New session connection with pipeSubscribe RPC. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeUnsubscribeResp.java | New unsubscribe response wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeSubscribeResp.java | New subscribe response wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseVersion.java | New response version enum. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseType.java | New response type enum. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java | New poll response wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHeartbeatResp.java | New heartbeat response wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java | New handshake response wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCommitResp.java | New commit response wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCloseResp.java | New close response wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java | New unsubscribe request wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java | New subscribe request wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestVersion.java | New request version enum. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestType.java | New request type enum. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java | New poll request wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHeartbeatReq.java | New heartbeat request wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java | New handshake request wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java | New commit request wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCloseReq.java | New close request wrapper. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollPayload.java | New poll payload interface. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionCommitContext.java | New commit context model + ser/de. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequestType.java | New poll request type enum. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequest.java | New poll request model + ser/de. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponseType.java | New poll response type enum. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponse.java | New poll response model + ser/de. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollPayload.java | New poll payload (topic set). |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollFilePayload.java | New poll-file payload. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollTabletsPayload.java | New poll-tablets payload. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TabletsPayload.java | New tablets payload + ser/de. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileInitPayload.java | New file-init payload + ser/de. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FilePiecePayload.java | New file-piece payload + ser/de. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileSealPayload.java | New file-seal payload + ser/de. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/ErrorPayload.java | New error payload + ser/de. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TerminationPayload.java | New termination payload. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConstant.java | New topic config constants. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConstant.java | New consumer config constants. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java | New consumer config container + ser/de helpers. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/annotation/TableModel.java | New annotation for table-model-only APIs. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionException.java | New subscription exception hierarchy base. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java | New runtime exception type. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java | New critical runtime exception type. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java | New non-critical runtime exception type. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionTimeoutException.java | New timeout exception base. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPollTimeoutException.java | New poll timeout exception. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPipeTimeoutException.java | New pipe timeout exception. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPayloadExceedException.java | New payload-size exception. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java | New connection exception. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java | New invalid-parameter exception. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java | New incompatible-handler exception. |
| iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java | New identifier semantic exception. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Verification
This PR was primarily authored with Codex using gpt-5.4 xhigh and then hand-reviewed by me. I AM responsible for every change made in this PR. I aimed to keep it aligned with our goals, though I may have missed minor issues. Please flag anything that feels off, I'll fix it quickly.