Commit 07d22c8f authored by Hamdi Allam's avatar Hamdi Allam Committed by GitHub

Merge pull request #7985 from epociask/indexer.risk_mitigations

fix(indexer) Add API Timeouts & Closures
parents 2add4a5a 77817d9d
......@@ -9,6 +9,7 @@ import (
"runtime/debug"
"strconv"
"sync"
"time"
"github.com/ethereum-optimism/optimism/indexer/api/routes"
"github.com/ethereum-optimism/optimism/indexer/config"
......@@ -63,6 +64,7 @@ func NewApi(logger log.Logger, bv database.BridgeTransfersView, serverConfig con
// (2) Inject routing middleware
apiRouter.Use(chiMetricsMiddleware(promRecorder))
apiRouter.Use(middleware.Timeout(time.Duration(serverConfig.WriteTimeout) * time.Second))
apiRouter.Use(middleware.Recoverer)
apiRouter.Use(middleware.Heartbeat(HealthPath))
......
......@@ -43,7 +43,12 @@ func runIndexer(ctx *cli.Context) error {
log.Error("failed to connect to database", "err", err)
return err
}
defer db.Close()
defer func() {
err := db.Close()
if err != nil {
log.Error("failed to close database", "err", err)
}
}()
indexer, err := indexer.NewIndexer(log, db, cfg.Chain, cfg.RPCs, cfg.HTTPServer, cfg.MetricsServer)
if err != nil {
......@@ -70,7 +75,12 @@ func runApi(ctx *cli.Context) error {
log.Error("failed to connect to database", "err", err)
return err
}
defer db.Close()
defer func() {
err := db.Close()
if err != nil {
log.Error("failed to close database", "err", err)
}
}()
api := api.NewApi(log, db.BridgeTransfers, cfg.HTTPServer, cfg.MetricsServer)
return api.Run(ctx.Context)
......
......@@ -134,10 +134,11 @@ type DBConfig struct {
Password string `toml:"password"`
}
// Configures the a server
// Configures the server
type ServerConfig struct {
Host string `toml:"host"`
Port int `toml:"port"`
WriteTimeout int `toml:"timeout"`
}
// LoadConfig loads the `indexer.toml` config file from a given path
......
......@@ -29,6 +29,7 @@ name = "$INDEXER_DB_NAME"
[http]
host = "127.0.0.1"
port = 8080
timeout = 10
[metrics]
host = "127.0.0.1"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment