[improvement](show backends) show backends print trash used (#23792)

This commit is contained in:
yujun
2023-09-03 20:30:58 +08:00
committed by GitHub
parent 8c213f8498
commit acbd8ca185
17 changed files with 85 additions and 18 deletions

View File

@ -47,6 +47,8 @@ public class DiskInfo implements Writable {
private long totalCapacityB;
@SerializedName("dataUsedCapacityB")
private long dataUsedCapacityB;
@SerializedName("trashUsedCapacityB")
private long trashUsedCapacityB;
@SerializedName("remoteUsedCapacity")
private long remoteUsedCapacity = 0;
@SerializedName("diskAvailableCapacityB")
@ -65,6 +67,7 @@ public class DiskInfo implements Writable {
this.rootPath = rootPath;
this.totalCapacityB = DEFAULT_CAPACITY_B;
this.dataUsedCapacityB = 0;
this.trashUsedCapacityB = 0;
this.diskAvailableCapacityB = DEFAULT_CAPACITY_B;
this.state = DiskState.ONLINE;
this.pathHash = 0;
@ -99,6 +102,14 @@ public class DiskInfo implements Writable {
this.remoteUsedCapacity = remoteUsedCapacity;
}
public long getTrashUsedCapacityB() {
return trashUsedCapacityB;
}
public void setTrashUsedCapacityB(long trashUsedCapacityB) {
this.trashUsedCapacityB = trashUsedCapacityB;
}
public long getDiskUsedCapacityB() {
return totalCapacityB - diskAvailableCapacityB;
}
@ -172,8 +183,9 @@ public class DiskInfo implements Writable {
@Override
public String toString() {
return "DiskInfo [rootPath=" + rootPath + "(" + pathHash + "), totalCapacityB=" + totalCapacityB
+ ", dataUsedCapacityB=" + dataUsedCapacityB + ", diskAvailableCapacityB="
+ diskAvailableCapacityB + ", state=" + state + ", medium: " + storageMedium + "]";
+ ", dataUsedCapacityB=" + dataUsedCapacityB + ", trashUsedCapacityB=" + trashUsedCapacityB
+ ", diskAvailableCapacityB=" + diskAvailableCapacityB + ", state=" + state
+ ", medium: " + storageMedium + "]";
}
@Override

View File

@ -46,8 +46,9 @@ public class BackendsProcDir implements ProcDirInterface {
public static final ImmutableList<String> TITLE_NAMES = new ImmutableList.Builder<String>().add("BackendId")
.add("Host").add("HeartbeatPort").add("BePort").add("HttpPort").add("BrpcPort").add("LastStartTime")
.add("LastHeartbeat").add("Alive").add("SystemDecommissioned").add("TabletNum").add("DataUsedCapacity")
.add("AvailCapacity").add("TotalCapacity").add("UsedPct").add("MaxDiskUsedPct").add("RemoteUsedCapacity")
.add("Tag").add("ErrMsg").add("Version").add("Status").add("HeartbeatFailureCounter").add("NodeRole")
.add("TrashUsedCapcacity").add("AvailCapacity").add("TotalCapacity").add("UsedPct").add("MaxDiskUsedPct")
.add("RemoteUsedCapacity").add("Tag").add("ErrMsg").add("Version").add("Status")
.add("HeartbeatFailureCounter").add("NodeRole")
.build();
public static final int HOSTNAME_INDEX = 3;
@ -117,6 +118,11 @@ public class BackendsProcDir implements ProcDirInterface {
long dataUsedB = backend.getDataUsedCapacityB();
Pair<Double, String> usedCapacity = DebugUtil.getByteUint(dataUsedB);
backendInfo.add(DebugUtil.DECIMAL_FORMAT_SCALE_3.format(usedCapacity.first) + " " + usedCapacity.second);
// trash used
long trashUsedB = backend.getTrashUsedCapacityB();
Pair<Double, String> trashUsedCapacity = DebugUtil.getByteUint(trashUsedB);
backendInfo.add(DebugUtil.DECIMAL_FORMAT_SCALE_3.format(
trashUsedCapacity.first) + " " + trashUsedCapacity.second);
// available
long availB = backend.getAvailableCapacityB();
Pair<Double, String> availCapacity = DebugUtil.getByteUint(availB);

View File

@ -399,6 +399,17 @@ public class Backend implements Writable {
return dataUsedCapacityB;
}
public long getTrashUsedCapacityB() {
ImmutableMap<String, DiskInfo> disks = disksRef;
long trashUsedCapacityB = 0L;
for (DiskInfo diskInfo : disks.values()) {
if (diskInfo.getState() == DiskState.ONLINE) {
trashUsedCapacityB += diskInfo.getTrashUsedCapacityB();
}
}
return trashUsedCapacityB;
}
public long getRemoteUsedCapacityB() {
ImmutableMap<String, DiskInfo> disks = disksRef;
long totalRemoteUsedCapacityB = 0L;
@ -485,6 +496,7 @@ public class Backend implements Writable {
String rootPath = tDisk.getRootPath();
long totalCapacityB = tDisk.getDiskTotalCapacity();
long dataUsedCapacityB = tDisk.getDataUsedCapacity();
long trashUsedCapacityB = tDisk.getTrashUsedCapacity();
long diskAvailableCapacityB = tDisk.getDiskAvailableCapacity();
boolean isUsed = tDisk.isUsed();
DiskInfo diskInfo = disks.get(rootPath);
@ -498,6 +510,7 @@ public class Backend implements Writable {
diskInfo.setTotalCapacityB(totalCapacityB);
diskInfo.setDataUsedCapacityB(dataUsedCapacityB);
diskInfo.setTrashUsedCapacityB(trashUsedCapacityB);
diskInfo.setAvailableCapacityB(diskAvailableCapacityB);
if (tDisk.isSetRemoteUsedCapacity()) {
diskInfo.setRemoteUsedCapacity(tDisk.getRemoteUsedCapacity());

View File

@ -51,6 +51,7 @@ public class BackendsTableValuedFunction extends MetadataTableValuedFunction {
new Column("SystemDecommissioned", ScalarType.createType(PrimitiveType.BOOLEAN)),
new Column("TabletNum", ScalarType.createType(PrimitiveType.BIGINT)),
new Column("DataUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
new Column("TrashUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
new Column("AvailCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
new Column("TotalCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
new Column("UsedPct", ScalarType.createType(PrimitiveType.DOUBLE)),

View File

@ -199,6 +199,9 @@ public class MetadataGenerator {
// data used
trow.addToColumnValue(new TCell().setLongVal(backend.getDataUsedCapacityB()));
// trash used
trow.addToColumnValue(new TCell().setLongVal(backend.getTrashUsedCapacityB()));
// available
long availB = backend.getAvailableCapacityB();
trow.addToColumnValue(new TCell().setLongVal(availB));

View File

@ -198,7 +198,7 @@ public class DemoMultiBackendsTest {
BackendsProcDir dir = new BackendsProcDir(Env.getCurrentSystemInfo());
ProcResult result = dir.fetchResult();
Assert.assertEquals(BackendsProcDir.TITLE_NAMES.size(), result.getColumnNames().size());
Assert.assertEquals("{\"location\" : \"default\"}", result.getRows().get(0).get(17));
Assert.assertEquals("{\"location\" : \"default\"}", result.getRows().get(0).get(18));
Assert.assertEquals(
"{\"lastSuccessReportTabletsTime\":\"N/A\",\"lastStreamLoadTime\":-1,\"isQueryDisabled\":false,\"isLoadDisabled\":false}",
result.getRows().get(0).get(BackendsProcDir.TITLE_NAMES.size() - 3));