Skip to content

Commit 922ea95

Browse files
authored
fix(stats):fixed panicking issue on loadAllocReadmarkersStat for #644 (#655)
1 parent 132f070 commit 922ea95

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

code/go/0chain.net/blobbercore/stats/blobberstats.go

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package stats
33
import (
44
"context"
55
"database/sql"
6+
"errors"
67
"runtime"
78
"time"
89

@@ -541,34 +542,39 @@ type ReadMarkerEntity struct {
541542
LatestRedeemedRC int64 `gorm:"column:latest_redeemed_rc"`
542543
}
543544

544-
func loadAllocReadMarkersStat(ctx context.Context, allocationID string) (rms *ReadMarkersStat, err error) {
545+
func loadAllocReadMarkersStat(ctx context.Context, allocationID string) (*ReadMarkersStat, error) {
545546
var (
546-
db = datastore.GetStore().GetTransaction(ctx)
547+
db = datastore.GetStore().GetDB()
547548
rme ReadMarkerEntity
548549
)
549550

550-
err = db.Table("read_markers").
551+
row := db.Table("read_markers").
551552
Select("counter, latest_redeemed_rc").
552553
Where("allocation_id = ?", allocationID).
553-
Limit(1).
554-
Row().
555-
Scan(&rme.ReadCounter, &rme.LatestRedeemedRC)
554+
Limit(1).Row()
556555

557-
if err != nil && err != sql.ErrNoRows {
558-
return
556+
err := row.Err()
557+
if err != nil {
558+
return nil, err
559559
}
560560

561-
if err == sql.ErrNoRows {
562-
return &ReadMarkersStat{}, nil // empty
561+
err = row.Scan(&rme.ReadCounter, &rme.LatestRedeemedRC)
562+
563+
rms := &ReadMarkersStat{}
564+
565+
if err != nil {
566+
if errors.Is(err, sql.ErrNoRows) {
567+
return rms, nil // empty
568+
}
569+
return nil, err
563570
}
564571

565-
rms = new(ReadMarkersStat)
566572
if rme.ReadCounter > rme.LatestRedeemedRC {
567573
rms.Pending = rme.ReadCounter - rme.LatestRedeemedRC // pending
568574
}
569575

570576
rms.Redeemed = rme.LatestRedeemedRC // already redeemed
571-
return
577+
return rms, nil
572578
}
573579

574580
// copy pasted from writemarker package because of import cycle

0 commit comments

Comments
 (0)