You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2023/02/14 05:32:45 UTC
[iotdb] branch master updated: [IOTDB-5393] Show Region creation time when execute show regions (#8958)
This is an automated email from the ASF dual-hosted git repository.
xingtanzjr 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 d0d89a1ed7 [IOTDB-5393] Show Region creation time when execute show regions (#8958)
d0d89a1ed7 is described below
commit d0d89a1ed712b6cff0d5f8d0ad269573839be714
Author: YongzaoDan <33...@users.noreply.github.com>
AuthorDate: Tue Feb 14 13:32:39 2023 +0800
[IOTDB-5393] Show Region creation time when execute show regions (#8958)
---
.../manager/partition/PartitionManager.java | 2 +-
.../persistence/partition/DatabasePartitionTable.java | 5 ++++-
.../persistence/partition/PartitionInfo.java | 2 +-
.../confignode/persistence/partition/RegionGroup.java | 19 +++++++++++++------
.../db/mpp/common/header/ColumnHeaderConstant.java | 3 ++-
.../execution/config/metadata/ShowRegionTask.java | 8 +++++---
thrift-confignode/src/main/thrift/confignode.thrift | 1 +
7 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
index b8fa5732e1..1529a8d594 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
@@ -667,9 +667,9 @@ public class PartitionManager {
// Get static result
RegionInfoListResp regionInfoListResp =
(RegionInfoListResp) getConsensusManager().read(req).getDataset();
- Map<TConsensusGroupId, Integer> allLeadership = getLoadManager().getLatestRegionLeaderMap();
// Get cached result
+ Map<TConsensusGroupId, Integer> allLeadership = getLoadManager().getLatestRegionLeaderMap();
regionInfoListResp
.getRegionInfoList()
.forEach(
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
index 10842fc1e1..c432edad3b 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
@@ -94,7 +94,9 @@ public class DatabasePartitionTable {
*/
public void createRegionGroups(List<TRegionReplicaSet> replicaSets) {
replicaSets.forEach(
- replicaSet -> regionGroupMap.put(replicaSet.getRegionId(), new RegionGroup(replicaSet)));
+ replicaSet ->
+ regionGroupMap.put(
+ replicaSet.getRegionId(), new RegionGroup(System.currentTimeMillis(), replicaSet)));
}
/**
@@ -348,6 +350,7 @@ public class DatabasePartitionTable {
regionInfo.setDataNodeId(dataNodeLocation.getDataNodeId());
regionInfo.setClientRpcIp(dataNodeLocation.getClientRpcEndPoint().getIp());
regionInfo.setClientRpcPort(dataNodeLocation.getClientRpcEndPoint().getPort());
+ regionInfo.setCreateTime(regionGroup.getCreateTime());
regionInfoList.add(regionInfo);
});
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
index 38849fc6af..5e9ef561e1 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
@@ -441,7 +441,7 @@ public class PartitionInfo implements SnapshotProcessor {
return schemaNodeManagementResp;
}
- /** Get region information */
+ /** Get Region information */
public DataSet getRegionInfoList(GetRegionInfoListPlan regionsInfoPlan) {
RegionInfoListResp regionResp = new RegionInfoListResp();
List<TRegionInfo> regionInfoList = new Vector<>();
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/RegionGroup.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/RegionGroup.java
index c844411911..4c4c7ffbc9 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/RegionGroup.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/RegionGroup.java
@@ -21,7 +21,6 @@ package org.apache.iotdb.confignode.persistence.partition;
import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
-import org.apache.iotdb.confignode.manager.partition.heartbeat.RegionGroupStatistics;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import org.apache.thrift.TException;
@@ -37,6 +36,7 @@ import java.util.concurrent.atomic.AtomicLong;
public class RegionGroup {
+ private long createTime;
private final TRegionReplicaSet replicaSet;
// Map<TSeriesPartitionSlot, TTimePartitionSlot Count>
@@ -48,20 +48,24 @@ public class RegionGroup {
private final AtomicLong totalTimeSlotCount;
- private volatile RegionGroupStatistics statistics;
-
public RegionGroup() {
+ this.createTime = 0;
this.replicaSet = new TRegionReplicaSet();
this.slotCountMap = new ConcurrentHashMap<>();
this.totalTimeSlotCount = new AtomicLong();
}
- public RegionGroup(TRegionReplicaSet replicaSet) {
+ public RegionGroup(long createTime, TRegionReplicaSet replicaSet) {
+ this.createTime = createTime;
this.replicaSet = replicaSet;
this.slotCountMap = new ConcurrentHashMap<>();
this.totalTimeSlotCount = new AtomicLong(0);
}
+ public long getCreateTime() {
+ return createTime;
+ }
+
public TConsensusGroupId getId() {
return replicaSet.getRegionId();
}
@@ -91,6 +95,7 @@ public class RegionGroup {
public void serialize(OutputStream outputStream, TProtocol protocol)
throws IOException, TException {
+ ReadWriteIOUtils.write(createTime, outputStream);
replicaSet.write(protocol);
ReadWriteIOUtils.write(slotCountMap.size(), outputStream);
@@ -104,6 +109,7 @@ public class RegionGroup {
public void deserialize(InputStream inputStream, TProtocol protocol)
throws IOException, TException {
+ this.createTime = ReadWriteIOUtils.readLong(inputStream);
replicaSet.read(protocol);
int size = ReadWriteIOUtils.readInt(inputStream);
@@ -130,12 +136,13 @@ public class RegionGroup {
return false;
}
}
- return replicaSet.equals(that.replicaSet)
+ return createTime == that.createTime
+ && replicaSet.equals(that.replicaSet)
&& totalTimeSlotCount.get() == that.totalTimeSlotCount.get();
}
@Override
public int hashCode() {
- return Objects.hash(replicaSet, slotCountMap, totalTimeSlotCount);
+ return Objects.hash(createTime, replicaSet, slotCountMap, totalTimeSlotCount);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
index 8bb9f7f3fb..baaf9a773c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
@@ -263,7 +263,8 @@ public class ColumnHeaderConstant {
new ColumnHeader(DATA_NODE_ID, TSDataType.INT32),
new ColumnHeader(RPC_ADDRESS, TSDataType.TEXT),
new ColumnHeader(RPC_PORT, TSDataType.INT32),
- new ColumnHeader(ROLE, TSDataType.TEXT));
+ new ColumnHeader(ROLE, TSDataType.TEXT),
+ new ColumnHeader(CREATE_TIME, TSDataType.TEXT));
public static final List<ColumnHeader> showDataNodesColumnHeaders =
ImmutableList.of(
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowRegionTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowRegionTask.java
index 4cee887fa4..5b14e7f48c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowRegionTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowRegionTask.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowRegionStatement;
+import org.apache.iotdb.db.utils.DateTimeUtils;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
@@ -43,9 +44,7 @@ import java.util.stream.Collectors;
public class ShowRegionTask implements IConfigTask {
- private ShowRegionStatement showRegionStatement;
-
- public ShowRegionTask() {}
+ private final ShowRegionStatement showRegionStatement;
public ShowRegionTask(ShowRegionStatement showRegionStatement) {
this.showRegionStatement = showRegionStatement;
@@ -90,6 +89,9 @@ public class ShowRegionTask implements IConfigTask {
builder.getColumnBuilder(7).writeBinary(Binary.valueOf(regionInfo.getClientRpcIp()));
builder.getColumnBuilder(8).writeInt(regionInfo.getClientRpcPort());
builder.getColumnBuilder(9).writeBinary(Binary.valueOf(regionInfo.getRoleType()));
+ builder
+ .getColumnBuilder(10)
+ .writeBinary(new Binary(DateTimeUtils.convertLongToDate(regionInfo.getCreateTime())));
builder.declarePosition();
}
}
diff --git a/thrift-confignode/src/main/thrift/confignode.thrift b/thrift-confignode/src/main/thrift/confignode.thrift
index 654617349a..d7890ec803 100644
--- a/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/thrift-confignode/src/main/thrift/confignode.thrift
@@ -519,6 +519,7 @@ struct TRegionInfo {
7: required i64 timeSlots
8: optional string status
9: optional string roleType
+ 10: optional i64 createTime
}
struct TShowRegionResp {