Skip to content

Commit

Permalink
feat: split the coordinator cron to single process
Browse files Browse the repository at this point in the history
  • Loading branch information
georgehao committed Oct 19, 2023
1 parent 1059f9d commit c4591fa
Show file tree
Hide file tree
Showing 12 changed files with 176 additions and 19 deletions.
14 changes: 4 additions & 10 deletions coordinator/cmd/app/app.go → coordinator/cmd/api/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (

"scroll-tech/coordinator/internal/config"
"scroll-tech/coordinator/internal/controller/api"
"scroll-tech/coordinator/internal/controller/cron"
"scroll-tech/coordinator/internal/route"
)

Expand Down Expand Up @@ -51,28 +50,23 @@ func action(ctx *cli.Context) error {
log.Crit("failed to load config file", "config file", cfgFile, "error", err)
}

subCtx, cancel := context.WithCancel(ctx.Context)
db, err := database.InitDB(cfg.DB)
if err != nil {
log.Crit("failed to init db connection", "err", err)
}

registry := prometheus.DefaultRegisterer
observability.Server(ctx, db)

proofCollector := cron.NewCollector(subCtx, db, cfg, registry)
defer func() {
proofCollector.Stop()
cancel()
if err = database.CloseDB(db); err != nil {
log.Error("can not close db connection", "error", err)
}
}()

registry := prometheus.DefaultRegisterer
observability.Server(ctx, db)

apiSrv := apiServer(ctx, cfg, db, registry)

log.Info(
"coordinator start successfully",
"Start coordinator successfully.",
"version", version.Version,
)

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
7 changes: 7 additions & 0 deletions coordinator/cmd/api/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package main

import "scroll-tech/coordinator/cmd/api/app"

func main() {
app.Run()
}
88 changes: 88 additions & 0 deletions coordinator/cmd/cron/app/app.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package app

import (
"context"
"fmt"
"os"
"os/signal"

"github.com/prometheus/client_golang/prometheus"
"github.com/scroll-tech/go-ethereum/log"
"github.com/urfave/cli/v2"

"scroll-tech/common/database"
"scroll-tech/common/observability"
"scroll-tech/common/utils"
"scroll-tech/common/version"

"scroll-tech/coordinator/internal/config"
"scroll-tech/coordinator/internal/controller/cron"
)

var app *cli.App

func init() {
// Set up coordinator app info.
app = cli.NewApp()
app.Action = action
app.Name = "coordinator cron"
app.Usage = "The Scroll L2 Coordinator cron"
app.Version = version.Version
app.Flags = append(app.Flags, utils.CommonFlags...)
app.Flags = append(app.Flags, apiFlags...)
app.Before = func(ctx *cli.Context) error {
return utils.LogSetup(ctx)
}
// Register `coordinator-cron-test` app for integration-cron-test.
utils.RegisterSimulation(app, utils.CoordinatorCron)
}

func action(ctx *cli.Context) error {
cfgFile := ctx.String(utils.ConfigFileFlag.Name)
cfg, err := config.NewConfig(cfgFile)
if err != nil {
log.Crit("failed to load config file", "config file", cfgFile, "error", err)
}

subCtx, cancel := context.WithCancel(ctx.Context)
db, err := database.InitDB(cfg.DB)
if err != nil {
log.Crit("failed to init db connection", "err", err)
}

registry := prometheus.DefaultRegisterer
observability.Server(ctx, db)

proofCollector := cron.NewCollector(subCtx, db, cfg, registry)
defer func() {
proofCollector.Stop()
cancel()
if err = database.CloseDB(db); err != nil {
log.Error("can not close db connection", "error", err)
}
}()

log.Info(
"coordinator cron start successfully",
"version", version.Version,
)

// Catch CTRL-C to ensure a graceful shutdown.
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)

// Wait until the interrupt signal is received from an OS signal.
<-interrupt

log.Info("coordinator cron exiting success")
return nil
}

// Run coordinator.
func Run() {
// RunApp the coordinator.
if err := app.Run(os.Args); err != nil {
_, _ = fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
19 changes: 19 additions & 0 deletions coordinator/cmd/cron/app/app_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package app

import (
"fmt"
"testing"
"time"

"scroll-tech/common/cmd"
"scroll-tech/common/version"
)

func TestRunCoordinatorCron(t *testing.T) {
coordinator := cmd.NewCmd("coordinator-cron-test", "--version")
defer coordinator.WaitExit()

// wait result
coordinator.ExpectWithTimeout(t, true, time.Second*3, fmt.Sprintf("coordinator version %s", version.Version))
coordinator.RunApp(nil)
}
49 changes: 49 additions & 0 deletions coordinator/cmd/cron/app/flags.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package app

import "github.com/urfave/cli/v2"

var (
apiFlags = []cli.Flag{
// http flags
&httpEnabledFlag,
&httpListenAddrFlag,
&httpPortFlag,
// ws flags
&wsEnabledFlag,
&wsListenAddrFlag,
&wsPortFlag,
}
// httpEnabledFlag enable rpc server.
httpEnabledFlag = cli.BoolFlag{
Name: "http",
Usage: "Enable the HTTP-RPC server",
Value: false,
}
// httpListenAddrFlag set the http address.
httpListenAddrFlag = cli.StringFlag{
Name: "http.addr",
Usage: "HTTP-RPC server listening interface",
Value: "localhost",
}
// httpPortFlag set http.port.
httpPortFlag = cli.IntFlag{
Name: "http.port",
Usage: "HTTP-RPC server listening port",
Value: 8390,
}
wsEnabledFlag = cli.BoolFlag{
Name: "ws",
Usage: "Enable the WS-RPC server",
}
wsListenAddrFlag = cli.StringFlag{
Name: "ws.addr",
Usage: "WS-RPC server listening interface",
Value: "localhost",
}
// websocket port
wsPortFlag = cli.IntFlag{
Name: "ws.port",
Usage: "WS-RPC server listening port",
Value: 8391,
}
)
7 changes: 7 additions & 0 deletions coordinator/cmd/cron/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package main

import "scroll-tech/coordinator/cmd/cron/app"

func main() {
app.Run()
}
7 changes: 0 additions & 7 deletions coordinator/cmd/main.go

This file was deleted.

2 changes: 1 addition & 1 deletion coordinator/internal/controller/cron/collect_proof.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func NewCollector(ctx context.Context, db *gorm.DB, cfg *config.Config, reg prom
go c.checkBatchAllChunkReady()
go c.cleanupChallenge()

log.Info("Start coordinator successfully.")
log.Info("Start coordinator cron successfully.")

return c
}
Expand Down
2 changes: 1 addition & 1 deletion tests/integration-test/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (

"scroll-tech/database/migrate"

capp "scroll-tech/coordinator/cmd/app"
capp "scroll-tech/coordinator/cmd/api/app"

"scroll-tech/common/database"
"scroll-tech/common/docker"
Expand Down

0 comments on commit c4591fa

Please sign in to comment.