Skip to content

Commit 06f3ba8

Browse files
authored
feat(fxcore): Updated panic recovery to prevent observability middlewares interruption (#214)
1 parent e13711a commit 06f3ba8

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

fxcore/go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ require (
1212
github.com/ankorstore/yokai/fxtrace v1.2.0
1313
github.com/ankorstore/yokai/generate v1.1.0
1414
github.com/ankorstore/yokai/healthcheck v1.1.0
15-
github.com/ankorstore/yokai/httpserver v1.4.1
15+
github.com/ankorstore/yokai/httpserver v1.5.0
1616
github.com/ankorstore/yokai/log v1.2.0
17-
github.com/ankorstore/yokai/trace v1.2.0
17+
github.com/ankorstore/yokai/trace v1.3.0
1818
github.com/arl/statsviz v0.6.0
1919
github.com/labstack/echo/v4 v4.11.4
20+
github.com/labstack/gommon v0.4.2
2021
github.com/prometheus/client_golang v1.19.0
2122
github.com/rs/zerolog v1.32.0
2223
github.com/stretchr/testify v1.9.0
@@ -40,7 +41,6 @@ require (
4041
github.com/gorilla/websocket v1.5.1 // indirect
4142
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 // indirect
4243
github.com/hashicorp/hcl v1.0.0 // indirect
43-
github.com/labstack/gommon v0.4.2 // indirect
4444
github.com/magiconair/properties v1.8.7 // indirect
4545
github.com/mattn/go-colorable v0.1.13 // indirect
4646
github.com/mattn/go-isatty v0.0.20 // indirect

fxcore/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ github.com/ankorstore/yokai/generate v1.1.0 h1:tu3S+uEYh+2qNo8Rf/WxWneDjh49YgDPz
1616
github.com/ankorstore/yokai/generate v1.1.0/go.mod h1:gqS/i20wnvCOhcXydYdiGcASzBaeuW7GK6YYg/kkuY4=
1717
github.com/ankorstore/yokai/healthcheck v1.1.0 h1:PXkEccym7iaVnQltpM5UFi0Xl0n+5rZDzlQju6HmGms=
1818
github.com/ankorstore/yokai/healthcheck v1.1.0/go.mod h1:IiYgjRa4G3OLZMwAuacuryZZAfDHsBH8PQoK4PgRdZ4=
19-
github.com/ankorstore/yokai/httpserver v1.4.1 h1:Zz25h6fYvRsJ+1TtnbJP2fO4Dt/tD3+Kgqs2QkpCJzw=
20-
github.com/ankorstore/yokai/httpserver v1.4.1/go.mod h1:AOCL4cK2bPKrtGFULvOvc8mKHAOw2bLW30CKJra2BB0=
19+
github.com/ankorstore/yokai/httpserver v1.5.0 h1:42nfCFCGWuBKbwU8Jhlf1/ofrezDes8HlCa0mhiVoI8=
20+
github.com/ankorstore/yokai/httpserver v1.5.0/go.mod h1:AOCL4cK2bPKrtGFULvOvc8mKHAOw2bLW30CKJra2BB0=
2121
github.com/ankorstore/yokai/log v1.2.0 h1:jiuDiC0dtqIGIOsFQslUHYoFJ1qjI+rOMa6dI1LBf2Y=
2222
github.com/ankorstore/yokai/log v1.2.0/go.mod h1:MVvUcms1AYGo0BT6l88B9KJdvtK6/qGKdgyKVXfbmyc=
23-
github.com/ankorstore/yokai/trace v1.2.0 h1:Jnl++IGNpDYumsZJXP3qjhMdvyHbejiajQwIlU604w0=
24-
github.com/ankorstore/yokai/trace v1.2.0/go.mod h1:m7EL2MRBilgCtrly5gA4F0jkGSXR2EbG6LsotbTJ4nA=
23+
github.com/ankorstore/yokai/trace v1.3.0 h1:0ji32oymIcxTmH5h6GRWLo5ypwBbWrZkXRf9rWF9070=
24+
github.com/ankorstore/yokai/trace v1.3.0/go.mod h1:m7EL2MRBilgCtrly5gA4F0jkGSXR2EbG6LsotbTJ4nA=
2525
github.com/arl/statsviz v0.6.0 h1:jbW1QJkEYQkufd//4NDYRSNBpwJNrdzPahF7ZmoGdyE=
2626
github.com/arl/statsviz v0.6.0/go.mod h1:0toboo+YGSUXDaS4g1D5TVS4dXs7S7YYT5J/qnW2h8s=
2727
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=

fxcore/module.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77
"net/http"
88
"strconv"
99

10-
"github.com/labstack/echo/v4"
11-
1210
"github.com/ankorstore/yokai/config"
1311
"github.com/ankorstore/yokai/fxconfig"
1412
"github.com/ankorstore/yokai/fxgenerate"
@@ -23,7 +21,9 @@ import (
2321
httpservermiddleware "github.com/ankorstore/yokai/httpserver/middleware"
2422
"github.com/ankorstore/yokai/log"
2523
"github.com/arl/statsviz"
24+
"github.com/labstack/echo/v4"
2625
"github.com/labstack/echo/v4/middleware"
26+
gommonlog "github.com/labstack/gommon/log"
2727
"github.com/prometheus/client_golang/prometheus"
2828
"github.com/prometheus/client_golang/prometheus/promhttp"
2929
oteltrace "go.opentelemetry.io/otel/trace"
@@ -109,7 +109,6 @@ func NewFxCore(p FxCoreParam) (*Core, error) {
109109
coreServer, err := httpserver.NewDefaultHttpServerFactory().Create(
110110
httpserver.WithDebug(appDebug),
111111
httpserver.WithBanner(false),
112-
httpserver.WithRecovery(true),
113112
httpserver.WithLogger(coreLogger),
114113
httpserver.WithRenderer(NewDashboardRenderer(templatesFS, "templates/dashboard.html")),
115114
httpserver.WithHttpErrorHandler(
@@ -216,6 +215,12 @@ func withMiddlewares(coreServer *echo.Echo, p FxCoreParam) *echo.Echo {
216215
coreServer.Use(httpservermiddleware.RequestMetricsMiddlewareWithConfig(metricsMiddlewareConfig))
217216
}
218217

218+
// recovery middleware
219+
coreServer.Use(middleware.RecoverWithConfig(middleware.RecoverConfig{
220+
DisableErrorHandler: true,
221+
LogLevel: gommonlog.ERROR,
222+
}))
223+
219224
return coreServer
220225
}
221226

0 commit comments

Comments
 (0)