Comments (1)
Hi @kunal-saini,
Sorry for my delayed answer but i'm so busy lately and thanks for use Atreugo in your project, i'm so glad about that 😃.
I reviewed your middleware and you could change this line with:
r := new(http.Request)
if err := fasthttpadaptor.ConvertRequest(ctx.RequestCtx, r, true); err != nil {
// handle the error as you want
}
and remove this function.
About the HandleTracer middleware, a better option it's create a wapper that implements a io.Closer
and save the tracer into the wrapper, that's saved on RequestCtx
, because all user values that implements io.Closer
will automatically close, and remove the unnecessary HandleTracer middleware in declaration on the global server after middlewares.
For example:
type tracerCloser struct {
ctx *fasthttp.RequestCtx // you must use here the inherit fasthttp.RequestCtx
span *sentry.Span
}
func newTracerCloser(ctx *atreugo.RequestCtx, span *sentry.Span) *tracerCloser {
return &tracerCloser{
ctx: ctx.RequestCtx, // you must use here the inherit fasthttp.RequestCtx
span: span,
}
}
func (tc *tracerCloser) Close() error {
if tracerSpan := getTracerFromContext(tc.ctx); tracerSpan != nil {
tracerSpan.Finish()
}
return nil
}
func getTracerFromContext(ctx *fasthttp.RequestCtx) *sentry.Span {
tracer := ctx.UserValue(tracerKey)
if tracer, ok := tracer.(*tracerCloser); ok {
return tracer.span
}
return nil
}
// func (h *Handler) Handle(ctx *atreugo.RequestCtx) error {
// ...
if h.tracer {
// ....
ctx.SetUserValue(tracerKey, newTracerCloser(ctx, span))
//....
from atreugo.
Related Issues (20)
- Possible breaking change in patch version? "path must begin with '/' in path ''" HOT 2
- AttachContext overrides previous AttachContext HOT 2
- Hi, Savsgio, how to add CORS middleware? HOT 30
- Is it possible to run "after" middleware even when "before" middleware exits error? HOT 5
- Unable to match URL with "/" ending HOT 1
- Unsupported path parameters with root / prefix HOT 1
- Problem with trailing "/" when optional url param is empty (11 version) - 308 redirect HOT 3
- I can not install HOT 1
- Error! installing with go get github.com/savsgio/atreugo HOT 5
- Cannot update/download deps HOT 1
- any sort of html template kind of real life example code to go with? router with html hello world at least HOT 1
- Instrumenting servers / paths to add metrics doesn't work when view returns an error HOT 1
- Use atreugo and autocert HOT 2
- Support custom logger HOT 4
- Possible race condition in context propagation HOT 3
- rate limit middleware request HOT 3
- Race condition when calling RequestCtx.Value() HOT 4
- Occasional panic HOT 1
- Configurable JSON Marshaller HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from atreugo.