Commit 1a237256 authored by Ethen Pociask's avatar Ethen Pociask

[indexer.risk_mitigations] [indexer] Added Write Timeouts & Closure Handling

parent bc602c07
......@@ -6,6 +6,7 @@ import (
"net/http"
"runtime/debug"
"sync"
"time"
"github.com/ethereum-optimism/optimism/indexer/api/routes"
"github.com/ethereum-optimism/optimism/indexer/config"
......@@ -46,6 +47,7 @@ func NewApi(logger log.Logger, bv database.BridgeTransfersView, serverConfig con
promRecorder := metrics.NewPromHTTPRecorder(mr, MetricsNamespace)
apiRouter.Use(chiMetricsMiddleware(promRecorder))
apiRouter.Use(middleware.Timeout(time.Duration(serverConfig.WriteTimeout) * time.Second))
apiRouter.Use(middleware.Recoverer)
apiRouter.Use(middleware.Heartbeat("/healthz"))
......
......@@ -36,7 +36,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 {
......@@ -60,7 +65,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.Start(ctx.Context)
......
......@@ -96,10 +96,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
......
......@@ -35,6 +35,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