blocksyncer

package
v0.2.2-hf.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2023 License: GPL-3.0 Imports: 41 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MaxRetryCount defines getting the latest height from the RPC client max retry count
	MaxRetryCount = 50
	// DefaultBlockHeightDiff defines default block height diff of main and backup service
	DefaultBlockHeightDiff = 100
	// DefaultCheckDiffPeriod defines check interval of block height diff
	DefaultCheckDiffPeriod = 1
	// MaxHeightGapFactor defines the gap coefficient between the block height in the Map and the processed block height
	MaxHeightGapFactor = 4
)

Variables

View Source
var (
	BlockSyncerModularName        = strings.ToLower("BlockSyncer")
	BlockSyncerModularDescription = "Synchronize data on the chain to SP"
	BlockSyncerModularBackupName  = strings.ToLower("BlockSyncerBackup")
	// DsnBlockSyncer defines env variable name for block syncer dsn
	DsnBlockSyncer = "BLOCK_SYNCER_DSN"
	// DsnBlockSyncerSwitched defines env variable name for block syncer backup dsn
	DsnBlockSyncerSwitched = "BLOCK_SYNCER_DSN_SWITCHED"
	ErrDSNNotSet           = errors.New("dsn config is not set in environment")
	ErrBlockNotFound       = errors.New("failed to get block from map need retry")
)
View Source
var (
	MainService   *BlockSyncerModular
	BackupService *BlockSyncerModular

	FlagDB *db.DB

	NeedBackup bool

	CancelMain func()
	CtxMain    context.Context
)

Read concurrency required global variables

Functions

func CheckProgress

func CheckProgress()

func DeepCopyByGob

func DeepCopyByGob(src, dst interface{}) error

func NewBlockSyncerModular

func NewBlockSyncerModular(app *gfspapp.GfSpBaseApp, cfg *gfspconfig.GfSpConfig) (coremodule.Modular, error)

func NewIndexer

func NewIndexer(codec codec.Codec, proxy node.Node, db database.Database, modules []modules.Module, serviceName string) parser.Indexer

func StopMainService

func StopMainService() error

func SwitchMasterDBFlag

func SwitchMasterDBFlag() error

Types

type BlockSyncerModular

type BlockSyncerModular struct {
	// contains filtered or unexported fields
}

BlockSyncerModular synchronizes storage,payment,permission data to db by handling related events

func (*BlockSyncerModular) Name

func (b *BlockSyncerModular) Name() string

func (*BlockSyncerModular) ReleaseResource

func (b *BlockSyncerModular) ReleaseResource(ctx context.Context, span rcmgr.ResourceScopeSpan)

func (*BlockSyncerModular) ReserveResource

func (b *BlockSyncerModular) ReserveResource(ctx context.Context, state *rcmgr.ScopeStat) (rcmgr.ResourceScopeSpan, error)

func (*BlockSyncerModular) Start

func (b *BlockSyncerModular) Start(ctx context.Context) error

func (*BlockSyncerModular) Stop

func (b *BlockSyncerModular) Stop(ctx context.Context) error

type Impl

type Impl struct {
	Modules []modules.Module

	Node node.Node
	DB   database.Database

	LatestBlockHeight atomic.Value
	CatchUpFlag       atomic.Value
	ProcessedHeight   uint64

	ServiceName string
	// contains filtered or unexported fields
}

func Cast

func Cast(indexer parser.Indexer) *Impl

func (*Impl) CreateMasterTable

func (i *Impl) CreateMasterTable() error

func (*Impl) ExportAccounts

func (i *Impl) ExportAccounts(block *coretypes.ResultBlock, txs []*types.Tx) error

ExportAccounts accepts a slice of transactions and persists accounts inside the database. An error is returned if write fails.

func (*Impl) ExportBlock

func (i *Impl) ExportBlock(block *coretypes.ResultBlock, events *coretypes.ResultBlockResults, txs []*types.Tx, vals *coretypes.ResultValidators) error

ExportBlock accepts a finalized block and persists then inside the database. An error is returned if write fails.

func (*Impl) ExportCommit

func (i *Impl) ExportCommit(block *coretypes.ResultBlock, vals *coretypes.ResultValidators) error

ExportCommit accepts ResultValidators and persists validator commit signatures inside the database. An error is returned if write fails.

func (*Impl) ExportEpoch

func (i *Impl) ExportEpoch(block *coretypes.ResultBlock) error

ExportEpoch accept a block result data and persist basic info into db to record current sync progress

func (*Impl) ExportEvents

func (i *Impl) ExportEvents(ctx context.Context, block *coretypes.ResultBlock, events *coretypes.ResultBlockResults) error

ExportEvents accepts a slice of transactions and get events in order to save in database.

func (*Impl) ExportEventsInTxs

func (i *Impl) ExportEventsInTxs(ctx context.Context, block *coretypes.ResultBlock, txs []*types.Tx) error

ExportEventsInTxs accepts a slice of events in tx in order to save in database.

func (*Impl) ExportEventsWithoutTx

func (i *Impl) ExportEventsWithoutTx(ctx context.Context, block *coretypes.ResultBlock, events []abci.Event) error

ExportEventsWithoutTx accepts a slice of events not in tx in order to save in database. events here don't have txHash

func (*Impl) ExportTxs

func (i *Impl) ExportTxs(block *coretypes.ResultBlock, txs []*types.Tx) error

ExportTxs accepts a slice of transactions and persists then inside the database. An error is returned if write fails.

func (*Impl) ExportValidators

func (i *Impl) ExportValidators(block *coretypes.ResultBlock, vals *coretypes.ResultValidators) error

ExportValidators accepts ResultValidators and persists validators inside the database. An error is returned if write fails.

func (*Impl) GetBlockRecordNum

func (i *Impl) GetBlockRecordNum(_ context.Context) int64

GetBlockRecordNum returns total number of blocks stored in database.

func (*Impl) GetCatchUpFlag

func (i *Impl) GetCatchUpFlag() *atomic.Value

func (*Impl) GetLastBlockRecordHeight

func (i *Impl) GetLastBlockRecordHeight(ctx context.Context) (uint64, error)

GetLastBlockRecordHeight returns the last block height stored inside the database

func (*Impl) GetLatestBlockHeight

func (i *Impl) GetLatestBlockHeight() *atomic.Value

func (*Impl) GetServiceName

func (i *Impl) GetServiceName() string

func (*Impl) HandleBlock

func (i *Impl) HandleBlock(block *coretypes.ResultBlock, events *coretypes.ResultBlockResults, txs []*types.Tx, vals *coretypes.ResultValidators)

HandleBlock accepts block and calls the block handlers.

func (*Impl) HandleEvent

func (i *Impl) HandleEvent(ctx context.Context, block *coretypes.ResultBlock, txHash common.Hash, event sdk.Event) error

HandleEvent accepts the transaction and handles events contained inside the transaction.

func (*Impl) HandleGenesis

func (i *Impl) HandleGenesis(genesisDoc *tmtypes.GenesisDoc, appState map[string]json.RawMessage) error

HandleGenesis accepts a GenesisDoc and calls all the registered genesis handlers in the order in which they have been registered.

func (*Impl) HandleMessage

func (i *Impl) HandleMessage(block *coretypes.ResultBlock, index int, msg sdk.Msg, tx *types.Tx)

HandleMessage accepts the transaction and handles messages contained inside the transaction.

func (*Impl) HandleTx

func (i *Impl) HandleTx(tx *types.Tx)

HandleTx accepts the transaction and calls the tx handlers.

func (*Impl) Process

func (i *Impl) Process(height uint64) error

Process fetches a block for a given height and associated metadata and export it to a database. It returns an error if any export process fails.

func (*Impl) Processed

func (i *Impl) Processed(ctx context.Context, height uint64) (bool, error)

Processed tells whether the current Indexer has already processed the given height of Block An error is returned if the operation fails.

type MigrateDBKey

type MigrateDBKey struct{}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL