Merge pull request #2910 from filecoin-project/feat/chainwatch/capture-circulating-fil
feat(chainwatch): capture circulating fil per tipset metric
This commit is contained in:
commit
40ac52a862
@ -4,6 +4,7 @@ import (
|
||||
"container/list"
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@ -40,6 +41,14 @@ func (s *Syncer) setupSchemas() error {
|
||||
}
|
||||
|
||||
if _, err := tx.Exec(`
|
||||
/* tracks circulating fil available on the network at each tipset */
|
||||
create table if not exists chain_economics
|
||||
(
|
||||
parent_state_root text not null
|
||||
constraint chain_economics_pk primary key,
|
||||
circulating_fil text not null
|
||||
);
|
||||
|
||||
create table if not exists block_cids
|
||||
(
|
||||
cid text not null
|
||||
@ -173,6 +182,10 @@ func (s *Syncer) Start(ctx context.Context) {
|
||||
log.Errorw("failed to gather unsynced blocks", "error", err)
|
||||
}
|
||||
|
||||
if err := s.storeCirculatingSupply(ctx, change.Val); err != nil {
|
||||
log.Errorw("failed to store circulating supply", "error", err)
|
||||
}
|
||||
|
||||
if len(unsynced) == 0 {
|
||||
continue
|
||||
}
|
||||
@ -264,6 +277,24 @@ func (s *Syncer) syncedBlocks(timestamp time.Time) (map[cid.Cid]struct{}, error)
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (s *Syncer) storeCirculatingSupply(ctx context.Context, tipset *types.TipSet) error {
|
||||
supply, err := s.node.StateCirculatingSupply(ctx, tipset.Key())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ceInsert := `insert into chain_economics (parent_state_root, circulating_fil) values ('%s', '%s');`
|
||||
|
||||
if _, err := s.db.Exec(fmt.Sprintf(ceInsert,
|
||||
tipset.ParentState().String(),
|
||||
supply.String(),
|
||||
)); err != nil {
|
||||
return xerrors.Errorf("insert circulating supply for tipset (%s): %w", tipset.Key().String(), err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Syncer) storeHeaders(bhs map[cid.Cid]*types.BlockHeader, sync bool, timestamp time.Time) error {
|
||||
s.headerLk.Lock()
|
||||
defer s.headerLk.Unlock()
|
||||
|
Loading…
Reference in New Issue
Block a user