This is an automated email from the ASF dual-hosted git repository. hxd pushed a commit to branch cluster- in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 4246406fab87631394c5e96003187d6f1ef13e96 Author: xiangdong huang <[email protected]> AuthorDate: Tue Aug 10 09:51:04 2021 +0800 almost pass --- .../org/apache/iotdb/cluster/ClusterIoTDB.java | 14 ++-- .../cluster/client/async/AsyncClientPool.java | 5 +- .../iotdb/cluster/client/sync/SyncClientPool.java | 10 ++- .../cluster/log/snapshot/MetaSimpleSnapshot.java | 2 +- .../org/apache/iotdb/cluster/server/Response.java | 3 + .../server/clusterinfo/ClusterInfoServer.java | 1 + .../server/heartbeat/MetaHeartbeatThread.java | 4 +- .../cluster/server/member/MetaGroupMember.java | 79 ++++++++++++++++------ .../cluster/server/service/MetaSyncService.java | 32 +++++++-- .../cluster/log/applier/DataLogApplierTest.java | 3 +- .../log/snapshot/MetaSimpleSnapshotTest.java | 2 +- .../cluster/query/reader/DatasourceInfoTest.java | 1 + .../reader/RemoteSeriesReaderByTimestampTest.java | 1 + .../query/reader/RemoteSimpleSeriesReaderTest.java | 1 + .../mult/AssignPathManagedMergeReaderTest.java | 5 +- .../reader/mult/RemoteMultSeriesReaderTest.java | 5 +- .../iotdb/cluster/server/member/BaseMember.java | 1 + .../cluster/server/member/MetaGroupMemberTest.java | 1 + .../resources/node1conf/iotdb-engine.properties | 12 ++-- .../resources/node2conf/iotdb-engine.properties | 12 ++-- .../resources/node3conf/iotdb-engine.properties | 12 ++-- 21 files changed, 148 insertions(+), 58 deletions(-) diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java index 07aee1e..e72b5f0 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java @@ -238,6 +238,8 @@ public class ClusterIoTDB implements ClusterIoTDBMBean { public void activeStartNodeMode() { try { + stopRaftInfoReport(); + startServerCheck(); preStartCustomize(); @@ -249,8 +251,6 @@ public class ClusterIoTDB implements ClusterIoTDBMBean { registerManager.register(metaGroupEngine); - metaGroupEngine.buildCluster(); - // rpc service initialize if (ClusterDescriptor.getInstance().getConfig().isUseAsyncServer()) { MetaAsyncService metaAsyncService = new MetaAsyncService(metaGroupEngine); @@ -265,11 +265,16 @@ public class ClusterIoTDB implements ClusterIoTDBMBean { DataRaftService.getInstance().initSyncedServiceImpl(dataGroupEngine); DataRaftHeartBeatService.getInstance().initSyncedServiceImpl(dataGroupEngine); } - // start RPC service + logger.info("start Meta Heartbeat RPC service... "); registerManager.register(MetaRaftHeartBeatService.getInstance()); + logger.info("start Meta RPC service... "); registerManager.register(MetaRaftService.getInstance()); + + metaGroupEngine.buildCluster(); + logger.info("start Data Heartbeat RPC service... "); registerManager.register(DataRaftHeartBeatService.getInstance()); + logger.info("start Data RPC service... "); registerManager.register(DataRaftService.getInstance()); // RPC based DBA API registerManager.register(ClusterInfoServer.getInstance()); @@ -279,8 +284,8 @@ public class ClusterIoTDB implements ClusterIoTDBMBean { // So that the ClusterRPCService can work. registerManager.register(ClusterRPCService.getInstance()); } catch (StartupException | StartUpCheckFailureException | ConfigInconsistentException e) { + logger.error("Fail to start server", e); stop(); - logger.error("Fail to start meta server", e); } } @@ -291,6 +296,7 @@ public class ClusterIoTDB implements ClusterIoTDBMBean { // preStartCustomize(); // metaServer.start(); // metaServer.joinCluster(); + // dataEngine.pullSnapshots(); // // Currently, we do not register ClusterInfoService as a JMX Bean, // // so we use startService() rather than start() // ClusterInfoServer.getInstance().startService(); diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/client/async/AsyncClientPool.java b/cluster/src/main/java/org/apache/iotdb/cluster/client/async/AsyncClientPool.java index bf0370f..719ab8d 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/client/async/AsyncClientPool.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/client/async/AsyncClientPool.java @@ -25,7 +25,6 @@ import org.apache.iotdb.cluster.rpc.thrift.RaftService.AsyncClient; import org.apache.iotdb.cluster.server.monitor.NodeStatusManager; import org.apache.iotdb.cluster.utils.ClusterNode; import org.apache.iotdb.db.utils.TestOnly; - import org.apache.thrift.async.TAsyncMethodCall; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +44,10 @@ public class AsyncClientPool { private Map<ClusterNode, Integer> nodeClientNumMap = new ConcurrentHashMap<>(); private AsyncClientFactory asyncClientFactory; + // TODO fix me: better to throw exception if the client can not be get. Then we can remove this + // field. + public static boolean printStack; + public AsyncClientPool(AsyncClientFactory asyncClientFactory) { this.asyncClientFactory = asyncClientFactory; this.waitClientTimeutMS = ClusterDescriptor.getInstance().getConfig().getWaitClientTimeoutMS(); diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/client/sync/SyncClientPool.java b/cluster/src/main/java/org/apache/iotdb/cluster/client/sync/SyncClientPool.java index 2c279c0..c6466f4 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/client/sync/SyncClientPool.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/client/sync/SyncClientPool.java @@ -25,7 +25,6 @@ import org.apache.iotdb.cluster.rpc.thrift.RaftService.Client; import org.apache.iotdb.cluster.server.monitor.NodeStatusManager; import org.apache.iotdb.cluster.utils.ClusterNode; import org.apache.iotdb.db.utils.TestOnly; - import org.apache.thrift.transport.TTransportException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,6 +43,10 @@ public class SyncClientPool { private Map<ClusterNode, Integer> nodeClientNumMap = new ConcurrentHashMap<>(); private SyncClientFactory syncClientFactory; + // TODO fix me: better to throw exception if the client can not be get. Then we can remove this + // field. + public static boolean printStack = false; + public SyncClientPool(SyncClientFactory syncClientFactory) { this.syncClientFactory = syncClientFactory; this.waitClientTimeoutMS = ClusterDescriptor.getInstance().getConfig().getWaitClientTimeoutMS(); @@ -90,7 +93,10 @@ public class SyncClientPool { try { client = syncClientFactory.getSyncClient(clusterNode, this); } catch (TTransportException e) { - logger.error("Cannot open transport for client {}", node, e); + // TODO throw me is better. + if (printStack) { + logger.error("Cannot open transport for client {}", node, e); + } return null; } nodeClientNumMap.compute( diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshot.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshot.java index 1713426..e982d74 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshot.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshot.java @@ -232,7 +232,7 @@ public class MetaSimpleSnapshot extends Snapshot { } // 4. accept partition table - metaGroupMember.acceptPartitionTable(snapshot.getPartitionTableBuffer(), true); + metaGroupMember.acceptVerifiedPartitionTable(snapshot.getPartitionTableBuffer(), true); synchronized (metaGroupMember.getLogManager()) { metaGroupMember.getLogManager().applySnapshot(snapshot); diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/Response.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/Response.java index 006eec1..387549d 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/server/Response.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/Response.java @@ -53,6 +53,9 @@ public class Response { // the request is not executed locally anc should be forwarded public static final long RESPONSE_NULL = Long.MIN_VALUE; + // the meta engine is not ready (except for the partitionTable is ready) + public static final long RESPONSE_META_NOT_READY = -12; + private Response() { // enum-like class } diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/clusterinfo/ClusterInfoServer.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/clusterinfo/ClusterInfoServer.java index bf08e7d..39619b6 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/server/clusterinfo/ClusterInfoServer.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/clusterinfo/ClusterInfoServer.java @@ -49,6 +49,7 @@ public class ClusterInfoServer extends ThriftService implements ClusterInfoServe @Override public void initTProcessor() { + initSyncedServiceImpl(null); serviceImpl = new ClusterInfoServiceImpl(); processor = new Processor<>(serviceImpl); } diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/MetaHeartbeatThread.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/MetaHeartbeatThread.java index 4036244..137330a 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/MetaHeartbeatThread.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/MetaHeartbeatThread.java @@ -22,7 +22,6 @@ package org.apache.iotdb.cluster.server.heartbeat; import org.apache.iotdb.cluster.rpc.thrift.Node; import org.apache.iotdb.cluster.server.NodeCharacter; import org.apache.iotdb.cluster.server.member.MetaGroupMember; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,6 +84,9 @@ public class MetaHeartbeatThread extends HeartbeatThread { localMetaMember .getAppendLogThreadPool() .submit(() -> localMetaMember.processEmptyContentLog()); + // this is a risk that (1) put a task into a pool + // and (2) the task puts more sub-tasks into the same pool, especially the task can only + // terminal when all sub-tasks finish. } } } diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java index 7b66e4d..53fbfc8 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java @@ -95,7 +95,6 @@ import org.apache.iotdb.db.utils.TimeValuePairUtils.Intervals; import org.apache.iotdb.service.rpc.thrift.EndPoint; import org.apache.iotdb.service.rpc.thrift.TSStatus; import org.apache.iotdb.tsfile.read.filter.basic.Filter; - import org.apache.thrift.TException; import org.apache.thrift.protocol.TProtocolFactory; import org.apache.thrift.transport.TTransportException; @@ -211,6 +210,17 @@ public class MetaGroupMember extends RaftMember implements IService { return router; } + public boolean isReady() { + return ready; + } + + public void setReady(boolean ready) { + this.ready = ready; + } + + // whether the MetaEngine has been ready. + boolean ready = false; + @TestOnly public MetaGroupMember() {} @@ -397,8 +407,12 @@ public class MetaGroupMember extends RaftMember implements IService { initIdNodeMap(); router = new ClusterPlanRouter(partitionTable); this.coordinator.setRouter(router); - startSubServers(); + rebuildDataGroups(); + ready = true; } + // else, we have to wait the meta group elects the Leader, and let the leader confirm the + // correct PartitionTable. + // then we can set the meta group Engine ready. } private void threadTaskInit() { @@ -502,8 +516,9 @@ public class MetaGroupMember extends RaftMember implements IService { } else if (resp.getRespNum() == Response.RESPONSE_AGREE) { logger.info("Node {} admitted this node into the cluster", node); ByteBuffer partitionTableBuffer = resp.partitionTableBytes; - acceptPartitionTable(partitionTableBuffer, true); - getDataGroupEngine().pullSnapshots(); + acceptVerifiedPartitionTable(partitionTableBuffer, true); + // this should be called in ClusterIoTDB TODO + // getDataGroupEngine().pullSnapshots(); return true; } else if (resp.getRespNum() == Response.RESPONSE_IDENTIFIER_CONFLICT) { logger.info( @@ -552,9 +567,11 @@ public class MetaGroupMember extends RaftMember implements IService { } /** - * Process the heartbeat request from a valid leader. Generate and tell the leader the identifier - * of the node if necessary. If the partition table is missing, use the one from the request or - * require it in the response. + * This is the behavior of a follower: + * + * <p>Process the heartbeat request from a valid leader. Generate and tell the leader the + * identifier of the node if necessary. If the partition table is missing, use the one from the + * request or require it in the response. TODO should go to RPC Service */ @Override void processValidHeartbeatReq(HeartBeatRequest request, HeartBeatResponse response) { @@ -575,7 +592,7 @@ public class MetaGroupMember extends RaftMember implements IService { // if the leader has sent the partition table then accept it if (partitionTable == null) { ByteBuffer byteBuffer = request.partitionTableBytes; - acceptPartitionTable(byteBuffer, true); + acceptVerifiedPartitionTable(byteBuffer, true); } } } else { @@ -590,10 +607,11 @@ public class MetaGroupMember extends RaftMember implements IService { * Deserialize a partition table from the buffer, save it locally, add nodes from the partition * table and start DataClusterServer and ClusterTSServiceImpl. */ - public synchronized void acceptPartitionTable( + protected synchronized void acceptPartitionTable( ByteBuffer partitionTableBuffer, boolean needSerialization) { SlotPartitionTable newTable = new SlotPartitionTable(thisNode); newTable.deserialize(partitionTableBuffer); + // avoid overwriting current partition table with a previous one if (partitionTable != null) { long currIndex = partitionTable.getLastMetaLogIndex(); @@ -618,7 +636,20 @@ public class MetaGroupMember extends RaftMember implements IService { updateNodeList(newTable.getAllNodes()); - startSubServers(); + // we can not start the data group engine here, + // because the partitionTable is not verified. + // TODO + // restartSubServers(); + } + + // this is the behavior of the follower + public synchronized void acceptVerifiedPartitionTable( + ByteBuffer partitionTableBuffer, boolean needSerialization) { + logger.info("new Partition Table is received."); + acceptPartitionTable(partitionTableBuffer, needSerialization); + rebuildDataGroups(); + logger.info("The Meta Engine is ready"); + ready = true; } private void updateNodeList(Collection<Node> nodes) { @@ -632,11 +663,13 @@ public class MetaGroupMember extends RaftMember implements IService { } /** - * Process a HeartBeatResponse from a follower. If the follower has provided its identifier, try - * registering for it and if all nodes have registered and there is no available partition table, - * initialize a new one and start the ClusterTSServiceImpl and DataClusterServer. If the follower - * requires a partition table, add it to the blind node list so that at the next heartbeat this - * node will send it a partition table + * This is the behavior of the Leader: + * + * <p>Process a HeartBeatResponse from a follower. If the follower has provided its identifier, + * try registering for it and if all nodes have registered and there is no available partition + * table, initialize a new one and start the ClusterTSServiceImpl and DataClusterServer. If the + * follower requires a partition table, add it to the blind node list so that at the next + * heartbeat this node will send it a partition table */ @Override public void processValidHeartbeatResp(HeartBeatResponse response, Node receiver) { @@ -647,6 +680,8 @@ public class MetaGroupMember extends RaftMember implements IService { registerNodeIdentifier(response.getFollower(), response.getFollowerIdentifier()); // if all nodes' ids are known, we can build the partition table if (allNodesIdKnown()) { + // Notice that this should only be called once. + // When the meta raft group is established, the follower reports its node information to the // leader through the first heartbeat. After the leader knows the node information of all // nodes, it can replace the incomplete node information previously saved locally, and build @@ -658,7 +693,9 @@ public class MetaGroupMember extends RaftMember implements IService { } router = new ClusterPlanRouter(partitionTable); this.coordinator.setRouter(router); - startSubServers(); + rebuildDataGroups(); + logger.info("The Meta Engine is ready"); + this.ready = true; } } // record the requirement of partition table of the follower @@ -672,7 +709,7 @@ public class MetaGroupMember extends RaftMember implements IService { * the next heartbeat the partition table will be sent to the node. */ private void addBlindNode(Node node) { - logger.debug("Node {} requires the node list", node); + logger.debug("Node {} requires the node list (partition table)", node); blindNodes.add(node); } @@ -722,7 +759,7 @@ public class MetaGroupMember extends RaftMember implements IService { * Start the DataClusterServer and ClusterTSServiceImpl` so this node can serve other nodes and * clients. Also build DataGroupMembers using the partition table. */ - protected synchronized void startSubServers() { + protected synchronized void rebuildDataGroups() { logger.info("Starting sub-servers..."); synchronized (partitionTable) { try { @@ -739,7 +776,7 @@ public class MetaGroupMember extends RaftMember implements IService { } /** When the node restarts, it sends handshakes to all other nodes so they may know it is back. */ - private void sendHandshake() { + public void sendHandshake() { for (Node node : allNodes) { if (ClusterUtils.nodeEqual(node, thisNode)) { // no need to shake hands with yourself @@ -1058,7 +1095,7 @@ public class MetaGroupMember extends RaftMember implements IService { inconsistentNum.set(0); checkSeedNodesStatusOnce(consistentNum, inconsistentNum); logger.debug( - "Status check result: {}-{}/{}", + "Status check result: consistent nodes: {}, inconsistent nodes: {}, total nodes: {}", consistentNum.get(), inconsistentNum.get(), getAllNodes().size()); @@ -1078,6 +1115,7 @@ public class MetaGroupMember extends RaftMember implements IService { } } } + // after checking, we enable print the error stack in 'SyncClientPool.getClient' } // TODO rewrite this method. @@ -1194,6 +1232,7 @@ public class MetaGroupMember extends RaftMember implements IService { } ByteBuffer wrap = ByteBuffer.wrap(tableBuffer); + logger.info("Load Partition Table locally."); acceptPartitionTable(wrap, false); logger.info("Load {} nodes: {}", allNodes.size(), allNodes); diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/service/MetaSyncService.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/service/MetaSyncService.java index d0fe5d1..065b663 100644 --- a/cluster/src/main/java/org/apache/iotdb/cluster/server/service/MetaSyncService.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/service/MetaSyncService.java @@ -40,7 +40,6 @@ import org.apache.iotdb.cluster.server.Response; import org.apache.iotdb.cluster.server.member.MetaGroupMember; import org.apache.iotdb.cluster.utils.ClientUtils; import org.apache.iotdb.cluster.utils.ClusterUtils; - import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,18 +59,33 @@ public class MetaSyncService extends BaseSyncService implements TSMetaService.If @Override public long appendEntry(AppendEntryRequest request) throws TException { - if (metaGroupMember.getPartitionTable() == null) { - // this node lacks information of the cluster and refuse to work - logger.debug("This node is blind to the cluster and cannot accept logs"); - return Response.RESPONSE_PARTITION_TABLE_UNAVAILABLE; + // if the metaGroupMember is not ready (e.g., as a follower the PartitionTable is loaded + // locally, but the partition table is not verified), we do not handle the RPC requests. + if (!metaGroupMember.isReady()) { + // the only special case is that the leader will send an empty entry for letting followers + // submit previous log + // at this time, the partitionTable has been loaded but is not verified. So the PRC is not + // ready. + if (metaGroupMember.getPartitionTable() == null) { + // this node lacks information of the cluster and refuse to work + logger.debug("This node is blind to the cluster and cannot accept logs, {}", request); + return Response.RESPONSE_PARTITION_TABLE_UNAVAILABLE; + } } return super.appendEntry(request); } + private static final String ERROR_MSG_META_NOT_READY = "The metadata not is not ready."; + @Override public AddNodeResponse addNode(Node node, StartUpStatus startUpStatus) throws TException { AddNodeResponse addNodeResponse; + if (!metaGroupMember.isReady()) { + logger.debug(ERROR_MSG_META_NOT_READY); + throw new TException(ERROR_MSG_META_NOT_READY); + } + try { addNodeResponse = metaGroupMember.addNode(node, startUpStatus); } catch (AddSelfException | LogExecutionException | CheckConsistencyException e) { @@ -98,6 +112,7 @@ public class MetaSyncService extends BaseSyncService implements TSMetaService.If @Override public void sendSnapshot(SendSnapshotRequest request) throws TException { + // even the meta engine is not ready, we still need to catch up. try { metaGroupMember.receiveSnapshot(request); } catch (Exception e) { @@ -107,6 +122,7 @@ public class MetaSyncService extends BaseSyncService implements TSMetaService.If @Override public CheckStatusResponse checkStatus(StartUpStatus startUpStatus) { + // this method is called before the meta engine is ready. return ClusterUtils.checkStatus(startUpStatus, metaGroupMember.getStartUpStatus()); } @@ -149,11 +165,17 @@ public class MetaSyncService extends BaseSyncService implements TSMetaService.If @Override public ByteBuffer collectMigrationStatus() { + // TODO not sure whether it can happen before the meta engine is ready return ClusterUtils.serializeMigrationStatus(metaGroupMember.collectMigrationStatus()); } @Override public long removeNode(Node node) throws TException { + if (!metaGroupMember.isReady()) { + logger.debug(ERROR_MSG_META_NOT_READY); + throw new TException(ERROR_MSG_META_NOT_READY); + } + long result; try { result = metaGroupMember.removeNode(node); diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java index 55b24da..122b7c5 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java @@ -19,7 +19,6 @@ package org.apache.iotdb.cluster.log.applier; -import junit.framework.TestCase; import org.apache.iotdb.cluster.ClusterIoTDB; import org.apache.iotdb.cluster.client.DataClientProvider; import org.apache.iotdb.cluster.client.async.AsyncDataClient; @@ -74,6 +73,8 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; import org.apache.iotdb.tsfile.read.common.RowRecord; import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet; import org.apache.iotdb.tsfile.write.schema.TimeseriesSchema; + +import junit.framework.TestCase; import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TBinaryProtocol.Factory; import org.junit.After; diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshotTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshotTest.java index 789f968..470bbc3 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshotTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshotTest.java @@ -62,7 +62,7 @@ public class MetaSimpleSnapshotTest extends IoTDBTest { metaGroupMember = new TestMetaGroupMember() { @Override - protected void startSubServers() { + protected void rebuildDataGroups() { subServerInitialized = true; } }; diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/DatasourceInfoTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/DatasourceInfoTest.java index 09a3354..451e78b 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/DatasourceInfoTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/DatasourceInfoTest.java @@ -32,6 +32,7 @@ import org.apache.iotdb.cluster.server.member.MetaGroupMember; import org.apache.iotdb.db.exception.StorageEngineException; import org.apache.iotdb.db.query.control.QueryResourceManager; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; + import org.apache.thrift.TException; import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TBinaryProtocol.Factory; diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/RemoteSeriesReaderByTimestampTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/RemoteSeriesReaderByTimestampTest.java index 1af7d57..de4d588 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/RemoteSeriesReaderByTimestampTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/RemoteSeriesReaderByTimestampTest.java @@ -35,6 +35,7 @@ import org.apache.iotdb.db.query.control.QueryResourceManager; import org.apache.iotdb.db.utils.SerializeUtils; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.read.common.BatchData; + import org.apache.thrift.TException; import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TBinaryProtocol.Factory; diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/RemoteSimpleSeriesReaderTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/RemoteSimpleSeriesReaderTest.java index bf07b21..d3e6eca 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/RemoteSimpleSeriesReaderTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/RemoteSimpleSeriesReaderTest.java @@ -37,6 +37,7 @@ import org.apache.iotdb.db.utils.SerializeUtils; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.read.TimeValuePair; import org.apache.iotdb.tsfile.read.common.BatchData; + import org.apache.thrift.TException; import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TBinaryProtocol.Factory; diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/mult/AssignPathManagedMergeReaderTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/mult/AssignPathManagedMergeReaderTest.java index 6c08e3d..31a846f 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/mult/AssignPathManagedMergeReaderTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/mult/AssignPathManagedMergeReaderTest.java @@ -18,8 +18,6 @@ */ package org.apache.iotdb.cluster.query.reader.mult; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import org.apache.iotdb.cluster.ClusterIoTDB; import org.apache.iotdb.cluster.client.DataClientProvider; import org.apache.iotdb.cluster.client.async.AsyncDataClient; @@ -40,6 +38,9 @@ import org.apache.iotdb.db.utils.SerializeUtils; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.read.TimeValuePair; import org.apache.iotdb.tsfile.read.common.BatchData; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import org.apache.thrift.TException; import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TBinaryProtocol.Factory; diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/mult/RemoteMultSeriesReaderTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/mult/RemoteMultSeriesReaderTest.java index a28a810..784e203 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/mult/RemoteMultSeriesReaderTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/mult/RemoteMultSeriesReaderTest.java @@ -18,8 +18,6 @@ */ package org.apache.iotdb.cluster.query.reader.mult; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import org.apache.iotdb.cluster.ClusterIoTDB; import org.apache.iotdb.cluster.client.DataClientProvider; import org.apache.iotdb.cluster.client.async.AsyncDataClient; @@ -41,6 +39,9 @@ import org.apache.iotdb.db.utils.SerializeUtils; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.read.TimeValuePair; import org.apache.iotdb.tsfile.read.common.BatchData; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import org.apache.thrift.TException; import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TBinaryProtocol.Factory; diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/BaseMember.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/BaseMember.java index 60fbe31..44c58fb 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/BaseMember.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/BaseMember.java @@ -57,6 +57,7 @@ import org.apache.iotdb.db.service.IoTDB; import org.apache.iotdb.db.service.RegisterManager; import org.apache.iotdb.db.utils.EnvironmentUtils; import org.apache.iotdb.db.utils.SchemaUtils; + import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TBinaryProtocol.Factory; import org.junit.After; diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java index c31d891..90884f2 100644 --- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java +++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java @@ -108,6 +108,7 @@ import org.apache.iotdb.tsfile.read.filter.TimeFilter; import org.apache.iotdb.tsfile.read.filter.ValueFilter; import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema; import org.apache.iotdb.tsfile.write.schema.TimeseriesSchema; + import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TCompactProtocol.Factory; diff --git a/cluster/src/test/resources/node1conf/iotdb-engine.properties b/cluster/src/test/resources/node1conf/iotdb-engine.properties index a386335..afd8911 100644 --- a/cluster/src/test/resources/node1conf/iotdb-engine.properties +++ b/cluster/src/test/resources/node1conf/iotdb-engine.properties @@ -16,12 +16,12 @@ #under the License. -base_dir=node1/tmp -data_dirs=node1/data -wal_dir=node1/wal -index_root_dir=node1/index -udf_root_dir=node1/ext -tracing_dir=node1/data/tracing +base_dir=target/node1/tmp +data_dirs=target/node1/data +wal_dir=target/node1/wal +index_root_dir=target/node1/index +udf_root_dir=target/node1/ext +tracing_dir=target/node1/data/tracing rpc_port=6667 metrics_port=8181 diff --git a/cluster/src/test/resources/node2conf/iotdb-engine.properties b/cluster/src/test/resources/node2conf/iotdb-engine.properties index c9276c0..ec3b39b 100644 --- a/cluster/src/test/resources/node2conf/iotdb-engine.properties +++ b/cluster/src/test/resources/node2conf/iotdb-engine.properties @@ -16,12 +16,12 @@ #under the License. -base_dir=node2/tmp -data_dirs=node2/data -wal_dir=node2/wal -index_root_dir=node2/index -udf_root_dir=node2/ext -tracing_dir=node2/data/tracing +base_dir=target/node2/tmp +data_dirs=target/node2/data +wal_dir=target/node2/wal +index_root_dir=target/node2/index +udf_root_dir=target/node2/ext +tracing_dir=target/node2/data/tracing rpc_port=6669 metrics_port=8182 diff --git a/cluster/src/test/resources/node3conf/iotdb-engine.properties b/cluster/src/test/resources/node3conf/iotdb-engine.properties index 04b1512..6eeb6af 100644 --- a/cluster/src/test/resources/node3conf/iotdb-engine.properties +++ b/cluster/src/test/resources/node3conf/iotdb-engine.properties @@ -16,12 +16,12 @@ #under the License. -base_dir=node3/tmp -data_dirs=node3/data -wal_dir=node3/wal -index_root_dir=node3/index -udf_root_dir=node3/ext -tracing_dir=node3/data/tracing +base_dir=target/node3/tmp +data_dirs=target/node3/data +wal_dir=target/node3/wal +index_root_dir=target/node3/index +udf_root_dir=target/node3/ext +tracing_dir=target/node3/data/tracing rpc_port=6671 metrics_port=8183
