Skip to content

Commit

Permalink
[Enhancement] add metric for running txn number of per db (backport #…
Browse files Browse the repository at this point in the history
…51395) (#51454)

Signed-off-by: Dan Jing <jingdan@starrocks.com>
  • Loading branch information
DanJing-coder authored Sep 27, 2024
1 parent e00436f commit 342d68d
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
21 changes: 21 additions & 0 deletions fe/fe-core/src/main/java/com/starrocks/metric/MetricRepo.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
import com.starrocks.system.Backend;
import com.starrocks.system.SystemInfoService;
import com.starrocks.task.AgentTaskQueue;
import com.starrocks.transaction.DatabaseTransactionMgr;
import com.starrocks.transaction.TransactionState;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand Down Expand Up @@ -929,6 +930,9 @@ public static synchronized String getMetric(MetricVisitor visitor, MetricsAction
//collect connections for per user
collectUserConnMetrics(visitor);

// collect runnning txns of per db
collectDbRunningTxnMetrics(visitor);

// collect starmgr related metrics as well
StarMgrServer.getCurrentState().visitMetrics(visitor);

Expand Down Expand Up @@ -1014,6 +1018,23 @@ private static void collectUserConnMetrics(MetricVisitor visitor) {
});
}

// collect runnning txns of per db
private static void collectDbRunningTxnMetrics(MetricVisitor visitor) {
Map<Long, DatabaseTransactionMgr> dbIdToDatabaseTransactionMgrs =
GlobalStateMgr.getCurrentState().getGlobalTransactionMgr().getAllDatabaseTransactionMgrs();
for (DatabaseTransactionMgr mgr : dbIdToDatabaseTransactionMgrs.values()) {
Database db = GlobalStateMgr.getCurrentState().getLocalMetastore().getDb(mgr.getDbId());
if (null == db) {
continue;
}
GaugeMetricImpl<Integer> txnNum = new GaugeMetricImpl<>("txn_running", MetricUnit.NOUNIT,
"number of running transactions");
txnNum.addLabel(new MetricLabel("db", db.getFullName()));
txnNum.setValue(mgr.getRunningTxnNums());
visitor.visit(txnNum);
}
}

public static synchronized List<Metric> getMetricsByName(String name) {
return STARROCKS_METRIC_REGISTER.getMetricsByName(name);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,7 @@ protected Set<Long> unprotectedGetTxnIdsByLabel(String label) {
return labelToTxnIds.get(label);
}

@VisibleForTesting
protected int getRunningTxnNums() {
public int getRunningTxnNums() {
return runningTxnNums;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,10 @@ public DatabaseTransactionMgr getDatabaseTransactionMgr(long dbId) throws Analys
return dbTransactionMgr;
}

public Map<Long, DatabaseTransactionMgr> getAllDatabaseTransactionMgrs() {
return dbIdToDatabaseTransactionMgrs;
}

public void addDatabaseTransactionMgr(Long dbId) {
if (dbIdToDatabaseTransactionMgrs.putIfAbsent(dbId, new DatabaseTransactionMgr(dbId, globalStateMgr)) == null) {
LOG.debug("add database transaction manager for db {}", dbId);
Expand Down

0 comments on commit 342d68d

Please sign in to comment.