Add index to parsedVaa collection (#616)

* Improve log to get latency for all endpoints except ready and health

Co-authored-by: walker-16 <agpazos85@gmail.com>

* Add index to parsedVaa collection

Co-authored-by: walker-16 <agpazos85@gmail.com>

---------

Co-authored-by: walker-16 <agpazos85@gmail.com>
This commit is contained in:
ftocal 2023-08-09 11:55:51 -03:00 committed by GitHub
parent 88d6f64bf4
commit 0d2b5bdfd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 56 additions and 3 deletions

View File

@ -167,7 +167,14 @@ func main() {
app.Use(requestid.New())
app.Use(logger.New(logger.Config{
Format: "level=info timestamp=${time} method=${method} path=${path} status${status} request_id=${locals:requestid}\n",
Format: "level=info timestamp=${time} method=${method} path=${path} latency=${latency} status${status} request_id=${locals:requestid}\n",
Next: func(c *fiber.Ctx) bool {
path := c.Path()
if path == "/api/v1/health" || path == "/api/v1/ready" {
return true
}
return false
},
}))
if cfg.PprofEnabled {
app.Use(pprof.New())

View File

@ -2,7 +2,7 @@ ENVIRONMENT=production-mainnet
NAMESPACE=wormscan
NAME=wormscan-api
PORT=8000
REPLICAS=2
REPLICAS=4
IMAGE_NAME=
RESOURCES_LIMITS_MEMORY=256Mi
RESOURCES_LIMITS_CPU=500m

View File

@ -21,6 +21,7 @@ import (
parserAlert "github.com/wormhole-foundation/wormhole-explorer/parser/internal/alert"
"github.com/wormhole-foundation/wormhole-explorer/parser/internal/metrics"
"github.com/wormhole-foundation/wormhole-explorer/parser/internal/sqs"
"github.com/wormhole-foundation/wormhole-explorer/parser/migration"
"github.com/wormhole-foundation/wormhole-explorer/parser/parser"
"github.com/wormhole-foundation/wormhole-explorer/parser/processor"
"github.com/wormhole-foundation/wormhole-explorer/parser/queue"
@ -58,6 +59,12 @@ func Run() {
logger.Fatal("failed to connect MongoDB", zap.Error(err))
}
// run the database migration.
err = migration.Run(db.Database)
if err != nil {
logger.Fatal("error running migration", zap.Error(err))
}
// get alert client.
alertClient, err := newAlertClient(config)
if err != nil {

View File

@ -0,0 +1,37 @@
package migration
import (
"context"
"errors"
"github.com/wormhole-foundation/wormhole-explorer/parser/parser"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
)
// TODO: move this to migration tool that support mongodb.
func Run(db *mongo.Database) error {
// Created parsedVaa collection.
err := db.CreateCollection(context.TODO(), parser.ParsedVAACollection)
if err != nil && isNotAlreadyExistsError(err) {
return err
}
// create index in observations collection by indexedAt.
indexToAddress := mongo.IndexModel{Keys: bson.D{{Key: "standardizedProperties.toAddress", Value: 1}}}
_, err = db.Collection(parser.ParsedVAACollection).Indexes().CreateOne(context.TODO(), indexToAddress)
if err != nil && isNotAlreadyExistsError(err) {
return err
}
return nil
}
func isNotAlreadyExistsError(err error) bool {
target := &mongo.CommandError{}
isCommandError := errors.As(err, target)
if !isCommandError || err.(mongo.CommandError).Code != 48 {
return true
}
return false
}

View File

@ -14,6 +14,8 @@ import (
// repository errors
var ErrDocNotFound = errors.New("NOT FOUND")
const ParsedVAACollection = "parsedVaa"
// Repository definitions.
type Repository struct {
db *mongo.Database
@ -28,7 +30,7 @@ func NewRepository(db *mongo.Database, log *zap.Logger) *Repository {
return &Repository{db, log, struct {
parsedVaa *mongo.Collection
}{
parsedVaa: db.Collection("parsedVaa"),
parsedVaa: db.Collection(ParsedVAACollection),
}}
}