Skip to content

Subscription: split client and example modules#17306

Open
VGalaxies wants to merge 3 commits intoapache:masterfrom
VGalaxies:codex/subscription-split-modules
Open

Subscription: split client and example modules#17306
VGalaxies wants to merge 3 commits intoapache:masterfrom
VGalaxies:codex/subscription-split-modules

Conversation

@VGalaxies
Copy link
Contributor

Summary

  • split subscription client and RPC code into a dedicated iotdb-subscription module
  • move subscription examples into a dedicated example/subscription module
  • update downstream modules to depend explicitly on iotdb-subscription where subscription imports remain

Verification

  • mvn -pl iotdb-core/node-commons,iotdb-core/confignode,iotdb-core/datanode,iotdb-client/cli,example/subscription -am -DskipTests -DskipITs compile

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.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/subscription module 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants