OneSizeFitsQuorum commented on code in PR #12355: URL: https://github.com/apache/iotdb/pull/12355#discussion_r1615148198
########## iotdb-protocol/thrift-consensus/src/main/thrift/pipeconsensus.thrift: ########## @@ -0,0 +1,111 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +include "common.thrift" +namespace java org.apache.iotdb.consensus.pipe.thrift + +struct TCommitId { + 1:required i64 commitIndex + 2:required i32 rebootTimes +} + +struct TPipeConsensusTransferReq { + 1:required i8 version + 2:required i16 type + 3:required TCommitId commitId + 4:required common.TConsensusGroupId consensusGroupId + 5:required i32 dataNodeId + 6:required binary body + 7:optional binary progressIndex +} + +struct TPipeConsensusTransferResp { + 1:required common.TSStatus status + 2:optional binary body +} + +struct TPipeConsensusBatchTransferReq { + 1:required list<TPipeConsensusTransferReq> batchReqs +} + +struct TPipeConsensusBatchTransferResp { + 1:required list<TPipeConsensusTransferResp> batchResps +} + +struct TSetActiveReq { + 1: required common.TConsensusGroupId consensusGroupId + 2: required bool isActive +} + +struct TSetActiveResp { + 1: required common.TSStatus status +} + +struct TNotifyPeerToCreateConsensusPipeReq { + 1: required common.TConsensusGroupId consensusGroupId + 2: required common.TConsensusGroupId targetPeerConsensusGroupId Review Comment: targetPeerConsensusGroupId and consensusGroupId always seems to be same? What's the difference with TBuildSyncLogChannelReq? ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java: ########## @@ -226,6 +226,9 @@ public class CommonConfig { private long pipeMemoryExpanderIntervalSeconds = (long) 3 * 60; // 3Min private float pipeLeaderCacheMemoryUsagePercentage = 0.1F; private long pipeListeningQueueTransferSnapshotThreshold = 1000; + private int pipeConsensusEventBufferSize = 5; + private long pipeConsensusEventEnqueueTimeoutInMs = 5000; + private long pipeConsensusReceiverMaxWaitingTimeForEventsInMs = 10000; Review Comment: not equal in conf file ########## iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2.java: ########## @@ -137,31 +145,52 @@ public void executeFromCalculateInfoForTask(ConfigNodeProcedureEnv env) { final ConcurrentMap<Integer, PipeTaskMeta> consensusGroupIdToTaskMetaMap = new ConcurrentHashMap<>(); - // data regions & schema regions - env.getConfigManager() - .getLoadManager() - .getRegionLeaderMap() - .forEach( - (regionGroupId, regionLeaderNodeId) -> { - final String databaseName = - env.getConfigManager().getPartitionManager().getRegionStorageGroup(regionGroupId); - if (databaseName != null && !databaseName.equals(SchemaConstant.SYSTEM_DATABASE)) { - // Pipe only collect user's data, filter out metric database here. - consensusGroupIdToTaskMetaMap.put( - regionGroupId.getId(), - new PipeTaskMeta(MinimumProgressIndex.INSTANCE, regionLeaderNodeId)); - } - }); - - // config region - consensusGroupIdToTaskMetaMap.put( - // 0 is the consensus group id of the config region, but data region id and schema region id - // also start from 0, so we use Integer.MIN_VALUE to represent the config region - Integer.MIN_VALUE, - new PipeTaskMeta( - MinimumProgressIndex.INSTANCE, - // The leader of the config region is the config node itself - ConfigNodeDescriptor.getInstance().getConf().getConfigNodeId())); + if (PipeType.CONSENSUS.equals(pipeStaticMeta.getPipeType())) { + final TConsensusGroupId groupId = + ConsensusGroupId.Factory.createFromString( + createPipeRequest.getExtractorAttributes().get(EXTRACTOR_CONSENSUS_GROUP_ID_KEY)) + .convertToTConsensusGroupId(); + + final int leaderDataNodeId = + Integer.parseInt( + createPipeRequest + .getExtractorAttributes() + .get(EXTRACTOR_CONSENSUS_SENDER_DATANODE_ID_KEY)); + consensusGroupIdToTaskMetaMap.put( + groupId.getId(), + new PipeTaskMeta( + new RecoverProgressIndex(leaderDataNodeId, new SimpleProgressIndex(0, 0)), + leaderDataNodeId)); + } else { + // data regions & schema regions + env.getConfigManager() + .getLoadManager() + .getRegionLeaderMap() + .forEach( + (regionGroupId, regionLeaderNodeId) -> { + final String databaseName = + env.getConfigManager() + .getPartitionManager() + .getRegionStorageGroup(regionGroupId); + if (databaseName != null && !databaseName.equals(SchemaConstant.SYSTEM_DATABASE)) { + // Pipe only collect user's data, filter out metric database here. + consensusGroupIdToTaskMetaMap.put( + regionGroupId.getId(), + new PipeTaskMeta(MinimumProgressIndex.INSTANCE, regionLeaderNodeId)); + } + }); + + // config region + consensusGroupIdToTaskMetaMap.put( Review Comment: when dataregion is pipeconsensus, we do not need to consider configRegion here? ########## iotdb-core/node-commons/pom.xml: ########## @@ -75,6 +75,11 @@ <artifactId>iotdb-thrift-commons</artifactId> <version>1.3.2-SNAPSHOT</version> </dependency> + <dependency> Review Comment: Thus we can remove iotdb-thrift-consensus for the pom in iotdb-consensus module? ########## iotdb-protocol/thrift-consensus/src/main/thrift/pipeconsensus.thrift: ########## @@ -0,0 +1,111 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +include "common.thrift" +namespace java org.apache.iotdb.consensus.pipe.thrift + +struct TCommitId { + 1:required i64 commitIndex + 2:required i32 rebootTimes +} + +struct TPipeConsensusTransferReq { + 1:required i8 version + 2:required i16 type + 3:required TCommitId commitId + 4:required common.TConsensusGroupId consensusGroupId + 5:required i32 dataNodeId + 6:required binary body + 7:optional binary progressIndex +} + +struct TPipeConsensusTransferResp { + 1:required common.TSStatus status + 2:optional binary body +} + +struct TPipeConsensusBatchTransferReq { + 1:required list<TPipeConsensusTransferReq> batchReqs +} + +struct TPipeConsensusBatchTransferResp { + 1:required list<TPipeConsensusTransferResp> batchResps +} + +struct TSetActiveReq { + 1: required common.TConsensusGroupId consensusGroupId + 2: required bool isActive +} + +struct TSetActiveResp { + 1: required common.TSStatus status +} + +struct TNotifyPeerToCreateConsensusPipeReq { + 1: required common.TConsensusGroupId consensusGroupId + 2: required common.TConsensusGroupId targetPeerConsensusGroupId + 3: required common.TEndPoint targetPeerEndPoint + 4: required i32 targetPeerNodeId +} + +struct TNotifyPeerToCreateConsensusPipeResp { + 1: required common.TSStatus status +} + +struct TNotifyPeerToDropConsensusPipeReq { + 1: required common.TConsensusGroupId consensusGroupId + 2: required common.TConsensusGroupId targetPeerConsensusGroupId Review Comment: targetPeerConsensusGroupId and consensusGroupId always seems to be same? What's the difference with TBuildSyncLogChannelReq? ########## iotdb-core/node-commons/src/assembly/resources/sbin/destroy-datanode.sh: ########## @@ -40,6 +40,7 @@ dn_wal_dirs=$(echo $(grep '^dn_wal_dirs=' ${IOTDB_DATANODE_CONFIG} || echo "data dn_tracing_dir=$(echo $(grep '^dn_tracing_dir=' ${IOTDB_DATANODE_CONFIG} || echo "datanode/tracing") | sed 's/.*=//') dn_sync_dir=$(echo $(grep '^dn_sync_dir=' ${IOTDB_DATANODE_CONFIG} || echo "data/datanode/sync") | sed 's/.*=//') pipe_receiver_file_dirs=$(echo $(grep '^pipe_receiver_file_dirs=' ${IOTDB_DATANODE_CONFIG} || echo "data/datanode/system/pipe/receiver") | sed 's/.*=//') +pipe_consensus_receiver_file_dirs=$(echo $(grep '^pipe_consensus_receiver_file_dirs=' ${IOTDB_DATANODE_CONFIG} || echo "data/datanode/system/pipe/consensus/receiver") | sed 's/.*=//') Review Comment: clearPath $dn_system_dir will not delete entire system dir? ########## iotdb-core/node-commons/src/assembly/resources/conf/iotdb-common.properties: ########## @@ -1046,6 +1046,21 @@ data_replication_factor=1 # schema_region_ratis_periodic_snapshot_interval=86400 # data_region_ratis_periodic_snapshot_interval=86400 +#################### +### PipeConsensus Configuration +#################### +# Default event buffer size for connector and receiver in pipe consensus Review Comment: Is this parameter also tied to parallelism? If so, maybe we should rename it to something related to performance (such as pipeline or sliding window size or parallelism). ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadName.java: ########## @@ -127,6 +131,7 @@ public enum ThreadName { PIPE_EXTRACTOR_DISRUPTOR("Pipe-Extractor-Disruptor"), PIPE_PROCESSOR_EXECUTOR_POOL("Pipe-Processor-Executor-Pool"), PIPE_CONNECTOR_EXECUTOR_POOL("Pipe-Connector-Executor-Pool"), + PIPE_CONSENSUS_EXECUTOR_POOL("Pipe-Connector-Executor-Pool"), Review Comment: Use an extra name, or the metric will get mixed up? maybe PIPE_CONSENSUS_EXECUTOR_POOL("Pipe-Consensus-Executor-Pool") ########## iotdb-core/node-commons/src/assembly/resources/conf/iotdb-common.properties: ########## @@ -1046,6 +1046,21 @@ data_replication_factor=1 # schema_region_ratis_periodic_snapshot_interval=86400 # data_region_ratis_periodic_snapshot_interval=86400 +#################### +### PipeConsensus Configuration +#################### +# Default event buffer size for connector and receiver in pipe consensus +# DataType: int +# pipe_consensus_event_buffer_size=5 + +# Default max wait time for event enqueue in pipe consensus +# DataType: long +# pipe_consensus_event_enqueue_timeout_in_ms=5000 Review Comment: Is it OK to expose one of the two parameters? Currently exposed two feelings seem to also do not know how to tune? In addition, they can even bind RPC timeouts, such as 1/6 RPC timeouts, so that no parameters are exposed ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java: ########## @@ -202,6 +202,7 @@ public void loadCommonProps(Properties properties) { properties.getProperty("datanode_token_timeout", String.valueOf(3 * 60 * 1000)))); loadPipeProps(properties); + loadPipeConsensusProps(properties); Review Comment: Maybe near the loadIoTConsensusProps block? ########## iotdb-core/node-commons/src/assembly/resources/sbin/destroy-datanode.bat: ########## @@ -158,16 +158,36 @@ for %%i in (%dn_sync_dir%) do ( ) ) -for /f "eol=# tokens=2 delims==" %%i in ('findstr /i "^pipe_receiver_file_dir" +for /f "eol=# tokens=2 delims==" %%i in ('findstr /i "^pipe_receiver_file_dirs" %IOTDB_DATANODE_CONFIG%') do ( - set pipe_receiver_file_dir=%%i + set pipe_receiver_file_dirs=%%i ) -if "%pipe_receiver_file_dir%"=="" ( - set "pipe_receiver_file_dir=data\\datanode\\system\\pipe\\receiver" +if "%pipe_receiver_file_dirs%"=="" ( + set "pipe_receiver_file_dirs=data\\datanode\\system\\pipe\\receiver" ) -set "pipe_receiver_file_dir=!pipe_receiver_file_dir:%delimiter%= !" -for %%i in (%pipe_receiver_file_dir%) do ( +set "pipe_receiver_file_dirs=!pipe_receiver_file_dirs:%delimiter%= !" +for %%i in (%pipe_receiver_file_dirs%) do ( + set "var=%%i" + if "!var:~0,2!"=="\\" ( + rmdir /s /q "%%i" 2>nul + ) else if "!var:~1,3!"==":\\" ( + rmdir /s /q "%%i" 2>nul + ) else ( + rmdir /s /q "%IOTDB_HOME%\%%i" 2>nul + ) +) + +for /f "eol=# tokens=2 delims==" %%i in ('findstr /i "^pipe_consensus_receiver_file_dirs" + %IOTDB_DATANODE_CONFIG%') do ( + set pipe_consensus_receiver_file_dirs=%%i +) +if "%pipe_consensus_receiver_file_dirs%"=="" ( + set "pipe_consensus_receiver_file_dirs=data\\datanode\\system\\pipe\\consensus\\receiver" +) + +set "pipe_consensus_receiver_file_dirs=!pipe_consensus_receiver_file_dirs:%delimiter%= !" Review Comment: clearPath $dn_system_dir will not delete entire system dir? ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/pipeconsensus/request/PipeConsensusTransferFilePieceReq.java: ########## @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.commons.pipe.connector.payload.pipeconsensus.request; + +import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId; +import org.apache.iotdb.consensus.pipe.thrift.TCommitId; +import org.apache.iotdb.consensus.pipe.thrift.TPipeConsensusTransferReq; + +import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PublicBAOS; +import org.apache.tsfile.utils.ReadWriteIOUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.Objects; + +public abstract class PipeConsensusTransferFilePieceReq extends TPipeConsensusTransferReq { Review Comment: Why not make it a thrift struct so that the serialized and nonserialized parts can take advantage of the Thrift IDL backwards and forwards compatibility ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/pipeconsensus/request/PipeConsensusRequestType.java: ########## @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.commons.pipe.connector.payload.pipeconsensus.request; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +public enum PipeConsensusRequestType { + + // Data region + TRANSFER_TABLET_INSERT_NODE((short) 100), + TRANSFER_TABLET_RAW((short) 101), + TRANSFER_TS_FILE_PIECE((short) 102), + TRANSFER_TS_FILE_SEAL((short) 103), + TRANSFER_TABLET_BATCH((short) 104), + TRANSFER_TABLET_BINARY((short) 105), + TRANSFER_TS_FILE_PIECE_WITH_MOD((short) 106), + TRANSFER_TS_FILE_SEAL_WITH_MOD((short) 107), + +// Note: temporarily PipeConsensus only support data region. But we put this class in `node-common` +// to reserve the scalability +; + + private final short type; + + PipeConsensusRequestType(short type) { + this.type = type; + } + + public short getType() { + return type; + } + + private static final Map<Short, PipeConsensusRequestType> TYPE_MAP = Review Comment: may use EnumMap ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/pipeconsensus/request/PipeConsensusTransferFileSealWithModReq.java: ########## @@ -0,0 +1,177 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.commons.pipe.connector.payload.pipeconsensus.request; + +import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId; +import org.apache.iotdb.commons.consensus.index.ProgressIndex; +import org.apache.iotdb.consensus.pipe.thrift.TCommitId; +import org.apache.iotdb.consensus.pipe.thrift.TPipeConsensusTransferReq; + +import org.apache.tsfile.utils.PublicBAOS; +import org.apache.tsfile.utils.ReadWriteIOUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +public abstract class PipeConsensusTransferFileSealWithModReq extends TPipeConsensusTransferReq { Review Comment: same as above ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/builtin/connector/iotdb/consensus/PipeConsensusAsyncConnector.java: ########## @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.commons.pipe.plugin.builtin.connector.iotdb.consensus; + +import org.apache.iotdb.commons.pipe.plugin.builtin.connector.PlaceholderConnector; + +/** + * This class is a placeholder and should not be initialized. It represents the + * PipeConsensusAsyncConnector. There is a real implementation in the server module but cannot be + * imported here. The pipe agent in the server module will replace this class with the real + * implementation when initializing the PipeConsensusAsyncConnector. + */ +public class PipeConsensusAsyncConnector extends PlaceholderConnector {} Review Comment: then give it a private constructor? ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/pipeconsensus/response/PipeConsensusTransferFilePieceResp.java: ########## @@ -0,0 +1,110 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.commons.pipe.connector.payload.pipeconsensus.response; + +import org.apache.iotdb.common.rpc.thrift.TSStatus; +import org.apache.iotdb.consensus.pipe.thrift.TPipeConsensusTransferResp; + +import org.apache.tsfile.utils.PublicBAOS; +import org.apache.tsfile.utils.ReadWriteIOUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Objects; + +public class PipeConsensusTransferFilePieceResp extends TPipeConsensusTransferResp { Review Comment: same as above ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/pipeconsensus/request/PipeConsensusTransferFileSealReq.java: ########## @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.commons.pipe.connector.payload.pipeconsensus.request; + +import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId; +import org.apache.iotdb.commons.consensus.index.ProgressIndex; +import org.apache.iotdb.consensus.pipe.thrift.TCommitId; +import org.apache.iotdb.consensus.pipe.thrift.TPipeConsensusTransferReq; + +import org.apache.tsfile.utils.PublicBAOS; +import org.apache.tsfile.utils.ReadWriteIOUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Objects; + +public abstract class PipeConsensusTransferFileSealReq Review Comment: same as above ########## iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/builtin/processor/pipeconsensus/PipeConsensusProcessor.java: ########## @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.commons.pipe.plugin.builtin.processor.pipeconsensus; + +import org.apache.iotdb.commons.pipe.plugin.builtin.processor.PlaceHolderProcessor; + +/** + * This class is a placeholder and should not be initialized. It represents the + * PipeConsensusProcessor. There is a real implementation in the server module but cannot be + * imported here. The pipe agent in the server module will replace this class with the real + * implementation when initializing the PipeConsensusProcessor. + */ +public class PipeConsensusProcessor extends PlaceHolderProcessor {} Review Comment: then give it a private constructor? ########## iotdb-core/consensus/pom.xml: ########## @@ -61,6 +61,11 @@ <artifactId>service-rpc</artifactId> <version>1.3.2-SNAPSHOT</version> </dependency> + <dependency> Review Comment: then the pom for datanode do not need this? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
