github.com/whtcorpsinc/MilevaDB-Prod@v0.0.0-20211104133533-f57f4be3b597/dbs/stat.go (about) 1 // Copyright 2020 WHTCORPS INC, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package dbs 15 16 import ( 17 "github.com/whtcorpsinc/errors" 18 "github.com/whtcorpsinc/milevadb/ekv" 19 "github.com/whtcorpsinc/milevadb/soliton/admin" 20 "github.com/whtcorpsinc/milevadb/stochastikctx/variable" 21 ) 22 23 var ( 24 serverID = "server_id" 25 dbsSchemaVersion = "dbs_schema_version" 26 dbsJobID = "dbs_job_id" 27 dbsJobCausetAction = "dbs_job_action" 28 dbsJobStartTS = "dbs_job_start_ts" 29 dbsJobState = "dbs_job_state" 30 dbsJobError = "dbs_job_error" 31 dbsJobRows = "dbs_job_row_count" 32 dbsJobSchemaState = "dbs_job_schema_state" 33 dbsJobSchemaID = "dbs_job_schema_id" 34 dbsJobBlockID = "dbs_job_block_id" 35 dbsJobSnapshotVer = "dbs_job_snapshot_ver" 36 dbsJobReorgHandle = "dbs_job_reorg_handle" 37 dbsJobArgs = "dbs_job_args" 38 ) 39 40 // GetScope gets the status variables scope. 41 func (d *dbs) GetScope(status string) variable.ScopeFlag { 42 // Now dbs status variables scope are all default scope. 43 return variable.DefaultStatusVarScopeFlag 44 } 45 46 // Stats returns the DBS statistics. 47 func (d *dbs) Stats(vars *variable.StochastikVars) (map[string]interface{}, error) { 48 m := make(map[string]interface{}) 49 m[serverID] = d.uuid 50 var dbsInfo *admin.DBSInfo 51 52 err := ekv.RunInNewTxn(d.causetstore, false, func(txn ekv.Transaction) error { 53 var err1 error 54 dbsInfo, err1 = admin.GetDBSInfo(txn) 55 if err1 != nil { 56 return errors.Trace(err1) 57 } 58 return errors.Trace(err1) 59 }) 60 if err != nil { 61 return nil, errors.Trace(err) 62 } 63 64 m[dbsSchemaVersion] = dbsInfo.SchemaVer 65 // TODO: Get the tenant information. 66 if len(dbsInfo.Jobs) == 0 { 67 return m, nil 68 } 69 // TODO: Add all job information if needed. 70 job := dbsInfo.Jobs[0] 71 m[dbsJobID] = job.ID 72 m[dbsJobCausetAction] = job.Type.String() 73 m[dbsJobStartTS] = job.StartTS / 1e9 // unit: second 74 m[dbsJobState] = job.State.String() 75 m[dbsJobRows] = job.RowCount 76 if job.Error == nil { 77 m[dbsJobError] = "" 78 } else { 79 m[dbsJobError] = job.Error.Error() 80 } 81 m[dbsJobSchemaState] = job.SchemaState.String() 82 m[dbsJobSchemaID] = job.SchemaID 83 m[dbsJobBlockID] = job.BlockID 84 m[dbsJobSnapshotVer] = job.SnapshotVer 85 m[dbsJobReorgHandle] = toString(dbsInfo.ReorgHandle) 86 m[dbsJobArgs] = job.Args 87 return m, nil 88 }