Skip to content

Commit

Permalink
feat(relayer): run in http only mode, so we can scale up if necessary…
Browse files Browse the repository at this point in the history
… for requests and only have one indexer
  • Loading branch information
cyberhorsey committed Nov 29, 2022
1 parent 272fa17 commit 6500234
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 19 deletions.
38 changes: 20 additions & 18 deletions packages/relayer/cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ var (
defaultConfirmations = 15
)

func Run(mode relayer.Mode, watchMode relayer.WatchMode, layer relayer.Layer) {
func Run(mode relayer.Mode, watchMode relayer.WatchMode, layer relayer.Layer, httpOnly relayer.HTTPOnly) {
if err := loadAndValidateEnv(); err != nil {
log.Fatal(err)
}
Expand Down Expand Up @@ -86,31 +86,33 @@ func Run(mode relayer.Mode, watchMode relayer.WatchMode, layer relayer.Layer) {
log.Fatal(err)
}

indexers, closeFunc, err := makeIndexers(layer, db)
if err != nil {
sqlDB.Close()
log.Fatal(err)
}

defer sqlDB.Close()
defer closeFunc()

forever := make(chan struct{})

for _, i := range indexers {
go func(i *indexer.Service) {
if err := i.FilterThenSubscribe(context.Background(), mode, watchMode); err != nil {
log.Fatal(err)
}
}(i)
}

go func() {
if err := srv.Start(fmt.Sprintf(":%v", os.Getenv("HTTP_PORT"))); err != nil {
log.Fatal(err)
}
}()

if !httpOnly {
indexers, closeFunc, err := makeIndexers(layer, db)
if err != nil {
sqlDB.Close()
log.Fatal(err)
}

defer sqlDB.Close()
defer closeFunc()

for _, i := range indexers {
go func(i *indexer.Service) {
if err := i.FilterThenSubscribe(context.Background(), mode, watchMode); err != nil {
log.Fatal(err)
}
}(i)
}
}

<-forever
}

Expand Down
13 changes: 12 additions & 1 deletion packages/relayer/cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ func main() {
filter-and-subscribe: catch up on all previous messages, then subscribe to new messages
`)

httpOnlyPtr := flag.Bool("http-only", false, `only run an http server and don't index blocks.
options:
true: only run an http server, dont index blocks
false: run an http server and index blocks
`)

flag.Parse()

if !relayer.IsInSlice(relayer.Mode(*modePtr), relayer.Modes) {
Expand All @@ -40,5 +46,10 @@ func main() {
log.Fatal("mode not valid")
}

cli.Run(relayer.Mode(*modePtr), relayer.WatchMode(*watchModePtr), relayer.Layer(*layersPtr))
cli.Run(
relayer.Mode(*modePtr),
relayer.WatchMode(*watchModePtr),
relayer.Layer(*layersPtr),
relayer.HTTPOnly(*httpOnlyPtr),
)
}
2 changes: 2 additions & 0 deletions packages/relayer/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,5 @@ var (
FilterAndSubscribeWatchMode WatchMode = "filter-and-subscribe"
WatchModes = []WatchMode{FilterWatchMode, SubscribeWatchMode}
)

type HTTPOnly bool

0 comments on commit 6500234

Please sign in to comment.