diff --git a/cmd/api/handlers/error.go b/cmd/api/handlers/error.go index d4aa24aec..3e4882624 100644 --- a/cmd/api/handlers/error.go +++ b/cmd/api/handlers/error.go @@ -7,6 +7,7 @@ import ( "github.com/baking-bad/bcdhub/internal/bcd/ast" "github.com/baking-bad/bcdhub/internal/logger" "github.com/baking-bad/bcdhub/internal/models" + "github.com/baking-bad/bcdhub/internal/noderpc" sentrygin "github.com/getsentry/sentry-go/gin" "github.com/gin-gonic/gin" jsoniter "github.com/json-iterator/go" @@ -14,6 +15,10 @@ import ( var json = jsoniter.ConfigCompatibleWithStandardLibrary +func skipError(err error) bool { + return errors.Is(err, noderpc.ErrNodeRPCError) +} + func handleError(c *gin.Context, repo models.GeneralRepository, err error, code int) bool { if err == nil { return false @@ -24,12 +29,13 @@ func handleError(c *gin.Context, repo models.GeneralRepository, err error, code err = errors.New("invalid authentication") case 0: code = getErrorCode(err, repo) - if code == http.StatusInternalServerError { + if code == http.StatusInternalServerError && !skipError(err) { if hub := sentrygin.GetHubFromContext(c); hub != nil { hub.CaptureMessage(err.Error()) } - logger.Err(err) } + + logger.Err(err) } c.AbortWithStatusJSON(code, getErrorMessage(err, repo)) diff --git a/cmd/api/handlers/views.go b/cmd/api/handlers/views.go index bb63702b3..21d5443ca 100644 --- a/cmd/api/handlers/views.go +++ b/cmd/api/handlers/views.go @@ -2,7 +2,6 @@ package handlers import ( "context" - "errors" "io" "net/http" "time" @@ -15,6 +14,7 @@ import ( "github.com/baking-bad/bcdhub/internal/models/contract" "github.com/baking-bad/bcdhub/internal/views" "github.com/gin-gonic/gin" + "github.com/pkg/errors" ) var ( diff --git a/configs/development.yml b/configs/development.yml index e10092414..25e1b021a 100644 --- a/configs/development.yml +++ b/configs/development.yml @@ -73,8 +73,8 @@ indexer: networks: mainnet: receiver_threads: 5 - # ghostnet: - # receiver_threads: 10 + ghostnet: + receiver_threads: 10 nairobinet: receiver_threads: 10 connections: diff --git a/docker-compose.yml b/docker-compose.yml index b6e75f6d5..53e1e43f9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,7 +13,7 @@ services: ports: - 127.0.0.1:${POSTGRES_PORT}:5432 healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres"] + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 10s timeout: 5s retries: 5 diff --git a/internal/noderpc/errors.go b/internal/noderpc/errors.go index 8bbb16116..65254a5b6 100644 --- a/internal/noderpc/errors.go +++ b/internal/noderpc/errors.go @@ -94,5 +94,5 @@ func (e InvalidNodeResponse) Is(target error) bool { // Errors var ( ErrInvalidStatusCode = errors.New("invalid status code") - ErrNodeRPCError = "Node RPC error" + ErrNodeRPCError = errors.New("Node RPC error") ) diff --git a/internal/noderpc/rpc.go b/internal/noderpc/rpc.go index bf40c80d4..0f8240b47 100644 --- a/internal/noderpc/rpc.go +++ b/internal/noderpc/rpc.go @@ -112,7 +112,7 @@ func (rpc *NodeRPC) checkStatusCode(resp *http.Response, checkStatusCode bool) e func (rpc *NodeRPC) parseResponse(resp *http.Response, checkStatusCode bool, uri string, response interface{}) error { if err := rpc.checkStatusCode(resp, checkStatusCode); err != nil { - return errors.Wrapf(err, "%s (%s)", ErrNodeRPCError, uri) + return fmt.Errorf("%w (%s): %w", ErrNodeRPCError, uri, err) } return json.NewDecoder(resp.Body).Decode(response) @@ -185,7 +185,7 @@ func (rpc *NodeRPC) getRaw(ctx context.Context, uri string) ([]byte, error) { defer resp.Body.Close() if err := rpc.checkStatusCode(resp, true); err != nil { - return nil, errors.Wrapf(err, "%s (%s)", ErrNodeRPCError, uri) + return nil, fmt.Errorf("%w (%s): %w", ErrNodeRPCError, uri, err) } return io.ReadAll(resp.Body) } @@ -198,7 +198,7 @@ func (rpc *NodeRPC) post(ctx context.Context, uri string, data interface{}, chec } defer resp.Body.Close() - return rpc.parseResponse(resp, checkStatusCode, "", response) + return rpc.parseResponse(resp, checkStatusCode, uri, response) } // Block - returns block