fix: 初验针对修改
This commit is contained in:
67
internal/runtimeinfo/storage.go
Normal file
67
internal/runtimeinfo/storage.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package runtimeinfo
|
||||
|
||||
import (
|
||||
"sync/atomic"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Activity struct {
|
||||
UploadSuccess uint64 `json:"upload_success"`
|
||||
UploadFailure uint64 `json:"upload_failure"`
|
||||
ReadFailure uint64 `json:"read_failure"`
|
||||
DeleteSuccess uint64 `json:"delete_success"`
|
||||
DeleteFailure uint64 `json:"delete_failure"`
|
||||
LastUploadAt time.Time `json:"last_upload_at,omitempty"`
|
||||
LastReadFailAt time.Time `json:"last_read_failure_at,omitempty"`
|
||||
LastDeleteAt time.Time `json:"last_delete_at,omitempty"`
|
||||
}
|
||||
|
||||
var counters struct {
|
||||
uploadSuccess atomic.Uint64
|
||||
uploadFailure atomic.Uint64
|
||||
readFailure atomic.Uint64
|
||||
deleteSuccess atomic.Uint64
|
||||
deleteFailure atomic.Uint64
|
||||
lastUpload atomic.Int64
|
||||
lastReadFail atomic.Int64
|
||||
lastDelete atomic.Int64
|
||||
}
|
||||
|
||||
func RecordUploadSuccess() {
|
||||
counters.uploadSuccess.Add(1)
|
||||
counters.lastUpload.Store(time.Now().UTC().UnixMilli())
|
||||
}
|
||||
|
||||
func RecordUploadFailure() { counters.uploadFailure.Add(1) }
|
||||
|
||||
func RecordReadFailure() {
|
||||
counters.readFailure.Add(1)
|
||||
counters.lastReadFail.Store(time.Now().UTC().UnixMilli())
|
||||
}
|
||||
|
||||
func RecordDeleteSuccess() {
|
||||
counters.deleteSuccess.Add(1)
|
||||
counters.lastDelete.Store(time.Now().UTC().UnixMilli())
|
||||
}
|
||||
|
||||
func RecordDeleteFailure() { counters.deleteFailure.Add(1) }
|
||||
|
||||
func Snapshot() Activity {
|
||||
return Activity{
|
||||
UploadSuccess: counters.uploadSuccess.Load(),
|
||||
UploadFailure: counters.uploadFailure.Load(),
|
||||
ReadFailure: counters.readFailure.Load(),
|
||||
DeleteSuccess: counters.deleteSuccess.Load(),
|
||||
DeleteFailure: counters.deleteFailure.Load(),
|
||||
LastUploadAt: timestamp(counters.lastUpload.Load()),
|
||||
LastReadFailAt: timestamp(counters.lastReadFail.Load()),
|
||||
LastDeleteAt: timestamp(counters.lastDelete.Load()),
|
||||
}
|
||||
}
|
||||
|
||||
func timestamp(milliseconds int64) time.Time {
|
||||
if milliseconds <= 0 {
|
||||
return time.Time{}
|
||||
}
|
||||
return time.UnixMilli(milliseconds).UTC()
|
||||
}
|
||||
Reference in New Issue
Block a user