|
- package ticktock
-
- import (
- "gitlink.org.cn/cloudream/common/pkgs/logger"
- "gitlink.org.cn/cloudream/common/utils/reflect2"
- stgtypes "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/types"
- jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types"
- "gitlink.org.cn/cloudream/jcs-pub/common/types/datamap"
- )
-
- type StatsLog struct {
- }
-
- func (j *StatsLog) Name() string {
- return reflect2.TypeNameOf[StatsLog]()
- }
-
- func (j *StatsLog) Execute(t *TickTock) {
- j.logGlobalObjectStats(t)
- }
-
- func (j *StatsLog) logGlobalObjectStats(t *TickTock) {
- log := logger.WithType[StatsLog]("Event")
-
- cnt, size, err := t.db.Object().Summary(t.db.DefCtx())
- if err != nil {
- log.Warnf("get object summary: %v", err)
- return
- }
-
- usIDs, err := t.db.UserSpace().GetAllIDs(t.db.DefCtx())
- if err != nil {
- log.Warnf("get user space ids: %v", err)
- return
- }
-
- var logUsIDs []jcstypes.UserSpaceID
- var usStats []stgtypes.ShardStoreStats
-
- details := t.spaceMeta.GetMany(usIDs)
- for _, d := range details {
- if d.UserSpace.ShardStore == nil {
- continue
- }
-
- store, err := t.stgPool.GetShardStore(d)
- if err != nil {
- log.Warnf("get shard store %v: %v", d, err)
- continue
- }
-
- logUsIDs = append(logUsIDs, d.UserSpace.UserSpaceID)
- usStats = append(usStats, store.Stats())
- }
-
- t.evtPub.Publish(&datamap.BodyGlobalObjectStats{
- TotalObjectCount: cnt,
- TotalDataSize: size,
- UserSpaceIDs: logUsIDs,
- UserSpaceStats: usStats,
- })
- }
|