diff --git a/indexer/constructor.go b/indexer/constructor.go index 721e694..46dc52c 100644 --- a/indexer/constructor.go +++ b/indexer/constructor.go @@ -33,16 +33,19 @@ import ( ) // NewStateDiffIndexer creates and returns an implementation of the StateDiffIndexer interface. +// The returned indexer is used to process state diffs and write them to a database. +// The returned SQL database, if non-nil, is the indexer's backing database. +// `ctx` is used to cancel an underlying DB connection. // `chainConfig` is used when processing chain state. // `nodeInfo` contains metadata on the Ethereum node, which is inserted with the indexed state. // `config` contains configuration specific to the indexer. -// `diff` tells us to mark state nodes as belonging to an incremental diff, as opposed to a full snapshot. +// `isDiff` means to mark state nodes as belonging to an incremental diff, as opposed to a full snapshot. func NewStateDiffIndexer( ctx context.Context, chainConfig *params.ChainConfig, nodeInfo node.Info, config interfaces.Config, - diff bool, + isDiff bool, ) ( sql.Database, interfaces.StateDiffIndexer, @@ -55,7 +58,7 @@ func NewStateDiffIndexer( if !ok { return nil, nil, fmt.Errorf("file config is not the correct type: got %T, expected %T", config, file.Config{}) } - ind, err := file.NewStateDiffIndexer(chainConfig, fc, nodeInfo, diff) + ind, err := file.NewStateDiffIndexer(chainConfig, fc, nodeInfo, isDiff) return nil, ind, err case shared.POSTGRES: log.Info("Starting statediff service in Postgres writing mode") @@ -80,7 +83,7 @@ func NewStateDiffIndexer( return nil, nil, fmt.Errorf("unrecognized Postgres driver type: %s", pgc.Driver) } db := postgres.NewPostgresDB(driver, pgc.Upsert) - ind, err := sql.NewStateDiffIndexer(ctx, chainConfig, db, diff) + ind, err := sql.NewStateDiffIndexer(ctx, chainConfig, db, isDiff) return db, ind, err case shared.DUMP: log.Info("Starting statediff service in data dump mode") diff --git a/indexer/database/file/indexer.go b/indexer/database/file/indexer.go index 7dfc666..d47042d 100644 --- a/indexer/database/file/indexer.go +++ b/indexer/database/file/indexer.go @@ -63,7 +63,11 @@ type StateDiffIndexer struct { } // NewStateDiffIndexer creates a void implementation of interfaces.StateDiffIndexer -func NewStateDiffIndexer(chainConfig *params.ChainConfig, config Config, nodeInfo node.Info, diff bool) (*StateDiffIndexer, error) { +// `chainConfig` is used when processing chain state. +// `config` contains configuration specific to the indexer. +// `nodeInfo` contains metadata on the Ethereum node, which is inserted with the indexed state. +// `isDiff` means to mark state nodes as belonging to an incremental diff, as opposed to a full snapshot. +func NewStateDiffIndexer(chainConfig *params.ChainConfig, config Config, nodeInfo node.Info, isDiff bool) (*StateDiffIndexer, error) { var err error var writer FileWriter @@ -86,7 +90,7 @@ func NewStateDiffIndexer(chainConfig *params.ChainConfig, config Config, nodeInf } log.Info("Writing watched addresses to file", "file", watchedAddressesFilePath) - writer, err = NewCSVWriter(outputDir, watchedAddressesFilePath, diff) + writer, err = NewCSVWriter(outputDir, watchedAddressesFilePath, isDiff) if err != nil { return nil, err } @@ -109,7 +113,7 @@ func NewStateDiffIndexer(chainConfig *params.ChainConfig, config Config, nodeInf } log.Info("Writing watched addresses to file", "file", watchedAddressesFilePath) - writer = NewSQLWriter(file, watchedAddressesFilePath, diff) + writer = NewSQLWriter(file, watchedAddressesFilePath, isDiff) default: return nil, fmt.Errorf("unrecognized file mode: %s", config.Mode) } diff --git a/indexer/database/file/sql_writer.go b/indexer/database/file/sql_writer.go index c9c7810..5326b6f 100644 --- a/indexer/database/file/sql_writer.go +++ b/indexer/database/file/sql_writer.go @@ -56,12 +56,15 @@ type SQLWriter struct { watchedAddressesFilePath string } -// NewSQLWriter creates a new pointer to a Writer -func NewSQLWriter(wc io.WriteCloser, watchedAddressesFilePath string, diff bool) *SQLWriter { +// NewSQLWriter creates a new Writer. +// `wc` is the underlying io.WriteCloser to write to. +// `watchedAddressesFilePath` is the path to the file containing watched addresses. +// `isDiff` means to mark state nodes as belonging to an incremental diff, as opposed to a full snapshot. +func NewSQLWriter(wc io.WriteCloser, watchedAddressesFilePath string, isDiff bool) *SQLWriter { return &SQLWriter{ wc: wc, stmts: make(chan []byte), - isDiff: diff, + isDiff: isDiff, collatedStmt: make([]byte, writeBufferSize), flushChan: make(chan struct{}), flushFinished: make(chan struct{}), diff --git a/indexer/database/sql/indexer.go b/indexer/database/sql/indexer.go index 754b7a4..8db9d73 100644 --- a/indexer/database/sql/indexer.go +++ b/indexer/database/sql/indexer.go @@ -51,13 +51,17 @@ type StateDiffIndexer struct { } // NewStateDiffIndexer creates a sql implementation of interfaces.StateDiffIndexer +// `ctx` is used to cancel the underlying DB connection. +// `chainConfig` is used when processing chain state. +// `db` is the backing database to use. +// `isDiff` means to mark state nodes as belonging to an incremental diff, as opposed to a full snapshot. func NewStateDiffIndexer( - ctx context.Context, chainConfig *params.ChainConfig, db Database, diff bool, + ctx context.Context, chainConfig *params.ChainConfig, db Database, isDiff bool, ) (*StateDiffIndexer, error) { return &StateDiffIndexer{ ctx: ctx, chainConfig: chainConfig, - dbWriter: NewWriter(db, diff), + dbWriter: NewWriter(db, isDiff), }, nil }