This is an automated email from the ASF dual-hosted git repository.
neuyilan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new e9bd562 [IOTDB-1186] Remove redundant sync meta leader in query
process for cluster module
e9bd562 is described below
commit e9bd5626a5b296693f42e7f94fc2f05db5fc9f1c
Author: Potato <[email protected]>
AuthorDate: Tue Mar 9 09:40:34 2021 +0800
[IOTDB-1186] Remove redundant sync meta leader in query process for cluster
module
---
.../src/main/java/org/apache/iotdb/cluster/ClusterMain.java | 4 ++--
.../apache/iotdb/cluster/query/ClusterDataQueryExecutor.java | 8 ++++++++
.../iotdb/cluster/query/reader/ClusterReaderFactory.java | 10 ++++------
.../iotdb/cluster/query/reader/ClusterTimeGenerator.java | 4 +++-
4 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java
b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java
index 993a632..db84a86 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java
@@ -260,7 +260,7 @@ public class ClusterMain {
@Override
public int calculateSlotByTime(String storageGroupName, long
timestamp, int maxSlotNum) {
int sgSerialNum = extractSerialNumInSGName(storageGroupName) % k;
- if (sgSerialNum > 0) {
+ if (sgSerialNum >= 0) {
return maxSlotNum / k * sgSerialNum;
} else {
return defaultStrategy.calculateSlotByTime(storageGroupName,
timestamp, maxSlotNum);
@@ -271,7 +271,7 @@ public class ClusterMain {
public int calculateSlotByPartitionNum(
String storageGroupName, long partitionId, int maxSlotNum) {
int sgSerialNum = extractSerialNumInSGName(storageGroupName) % k;
- if (sgSerialNum > 0) {
+ if (sgSerialNum >= 0) {
return maxSlotNum / k * sgSerialNum;
} else {
return defaultStrategy.calculateSlotByPartitionNum(
diff --git
a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterDataQueryExecutor.java
b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterDataQueryExecutor.java
index 621acf5..fbf8963 100644
---
a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterDataQueryExecutor.java
+++
b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterDataQueryExecutor.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.cluster.query;
+import org.apache.iotdb.cluster.exception.CheckConsistencyException;
import org.apache.iotdb.cluster.exception.EmptyIntervalException;
import org.apache.iotdb.cluster.query.reader.ClusterReaderFactory;
import org.apache.iotdb.cluster.query.reader.ClusterTimeGenerator;
@@ -65,6 +66,13 @@ public class ClusterDataQueryExecutor extends
RawDataQueryExecutor {
timeFilter = ((GlobalTimeExpression)
queryPlan.getExpression()).getFilter();
}
+ // make sure the partition table is new
+ try {
+ metaGroupMember.syncLeaderWithConsistencyCheck(false);
+ } catch (CheckConsistencyException e) {
+ throw new StorageEngineException(e);
+ }
+
List<ManagedSeriesReader> readersOfSelectedSeries = new ArrayList<>();
for (int i = 0; i < queryPlan.getDeduplicatedPaths().size(); i++) {
PartialPath path = queryPlan.getDeduplicatedPaths().get(i);
diff --git
a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java
b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java
index 9b78175..562e8d3 100644
---
a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java
+++
b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java
@@ -85,6 +85,10 @@ public class ClusterReaderFactory {
this.metaGroupMember = metaGroupMember;
}
+ public void syncMetaGroup() throws CheckConsistencyException {
+ metaGroupMember.syncLeaderWithConsistencyCheck(false);
+ }
+
/**
* Create an IReaderByTimestamp that can read the data of "path" by
timestamp in the whole
* cluster. This will query every group and merge the result from them.
@@ -216,12 +220,6 @@ public class ClusterReaderFactory {
QueryContext context,
boolean ascending)
throws StorageEngineException, EmptyIntervalException {
- // make sure the partition table is new
- try {
- metaGroupMember.syncLeaderWithConsistencyCheck(false);
- } catch (CheckConsistencyException e) {
- throw new StorageEngineException(e);
- }
// find the groups that should be queried using the timeFilter
List<PartitionGroup> partitionGroups =
metaGroupMember.routeFilter(timeFilter, path);
logger.debug(
diff --git
a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
index eaa1a2d..b7b5f51 100644
---
a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
+++
b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.cluster.query.reader;
+import org.apache.iotdb.cluster.exception.CheckConsistencyException;
import org.apache.iotdb.cluster.metadata.CMManager;
import org.apache.iotdb.cluster.server.member.MetaGroupMember;
import org.apache.iotdb.db.exception.StorageEngineException;
@@ -51,8 +52,9 @@ public class ClusterTimeGenerator extends ServerTimeGenerator
{
this.queryPlan = rawDataQueryPlan;
this.readerFactory = new ClusterReaderFactory(metaGroupMember);
try {
+ readerFactory.syncMetaGroup();
constructNode(expression);
- } catch (IOException e) {
+ } catch (IOException | CheckConsistencyException e) {
throw new StorageEngineException(e);
}
}