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"
|
"container/list"
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -40,6 +41,14 @@ func (s *Syncer) setupSchemas() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if _, err := tx.Exec(`
|
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
|
create table if not exists block_cids
|
||||||
(
|
(
|
||||||
cid text not null
|
cid text not null
|
||||||
@ -173,6 +182,10 @@ func (s *Syncer) Start(ctx context.Context) {
|
|||||||
log.Errorw("failed to gather unsynced blocks", "error", err)
|
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 {
|
if len(unsynced) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -264,6 +277,24 @@ func (s *Syncer) syncedBlocks(timestamp time.Time) (map[cid.Cid]struct{}, error)
|
|||||||
return out, nil
|
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 {
|
func (s *Syncer) storeHeaders(bhs map[cid.Cid]*types.BlockHeader, sync bool, timestamp time.Time) error {
|
||||||
s.headerLk.Lock()
|
s.headerLk.Lock()
|
||||||
defer s.headerLk.Unlock()
|
defer s.headerLk.Unlock()
|
||||||
|
Loading…
Reference in New Issue
Block a user