Skip to content
Snippets Groups Projects
Commit f5ddbc76 authored by Axel Prel's avatar Axel Prel
Browse files

WIP nestif

parent 2f2261ad
No related tags found
No related merge requests found
......@@ -83,7 +83,7 @@
# - mnd # An analyzer to detect magic numbers. style v1.22.0
- musttag # ⚙️ Enforce field tags in (un)marshaled structs. style, bugs v1.51.0
- nakedret # Finds naked returns in functions greater than a specified function length style v1.19.0
# - nestif # Reports deeply nested if statements complexity v1.25.0
- nestif # Reports deeply nested if statements complexity v1.25.0
- nilnesserr # Reports constructs that checks for err != nil, but returns a different nil value error.
- nilerr # Finds the code that returns nil even if it checks that the error is not nil. bugs v1.38.0
- nilnil # Checks that there is no simultaneous return of nil error and an invalid value. style v1.43.0
......
......@@ -25,12 +25,7 @@
}
return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
if strings.HasPrefix(r.URL.Path, path) {
if strings.HasSuffix(r.URL.Path, "/engines") {
if err := engineListDocPageTmpl.Execute(rw, map[string]interface{}{
"Engines": registry.Engines,
"TemplateEngines": templateRegistry.TemplateEngines,
}); err != nil {
log.Err(err).Msg("failed to render the engines documentation page")
rw.WriteHeader(http.StatusInternalServerError)
if !strings.HasPrefix(r.URL.Path, path) ||
!strings.HasSuffix(r.URL.Path, "/engines") {
next.ServeHTTP(rw, r)
......@@ -36,10 +31,4 @@
if _, err := rw.Write([]byte(err.Error())); err != nil {
log.Err(err).Msg("failed to write the error response")
}
}
return
}
return
}
......@@ -44,6 +33,18 @@
}
next.ServeHTTP(rw, r)
if err := engineListDocPageTmpl.Execute(rw, map[string]interface{}{
"Engines": registry.Engines,
"TemplateEngines": templateRegistry.TemplateEngines,
}); err != nil {
log.Err(err).Msg("failed to render the engines documentation page")
rw.WriteHeader(http.StatusInternalServerError)
if _, err := rw.Write([]byte(err.Error())); err != nil {
log.Err(err).Msg("failed to write the error response")
}
next.ServeHTTP(rw, r)
}
})
}
}
......@@ -68,6 +69,6 @@
<h2>Template engines</h2>
{{ range $name, $engine := .TemplateEngines }}
<h3>{{ $name }} ({{ $engine.Info.Type }})</h3>
<h4>language</h4>
<h4>language</h4>
{{ $engine.Info.Language }}
......@@ -72,6 +73,6 @@
{{ $engine.Info.Language }}
<h4>Description</h4>
{{ goldmark $engine.Info.Description }}
<h4>Description</h4>
{{ goldmark $engine.Info.Description }}
{{ if $engine.Info.Metadata }}
......@@ -76,6 +77,6 @@
{{ if $engine.Info.Metadata }}
<h4>Metadata</h4>
<h4>Metadata</h4>
{{ range $engine.Info.Metadata }}
<dl>
<dt>{{ .Name }}</dt>
......@@ -97,7 +98,7 @@
<h4>Description</h4>
{{ goldmark $engine.Info.Description }}
{{ if $engine.Info.Metadata }}
<h4>Metadata</h4>
<h4>Metadata</h4>
{{ range $engine.Info.Metadata }}
<dl>
<dt>{{ .Name }}</dt>
......
......@@ -18,6 +18,8 @@
return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
ctx := req.Context()
defer func(ctx context.Context) {
if r := recover(); r != nil {
log := zerolog.Ctx(ctx)
r := recover()
if r == nil {
return
}
......@@ -23,5 +25,3 @@
if err, ok := r.(error); ok {
if errors.Is(err, os.ErrDeadlineExceeded) {
log.Warn().Err(err).Msg("Deadline exceeded, handler probably too slow")
log := zerolog.Ctx(ctx)
......@@ -27,5 +27,5 @@
return
}
}
if err, ok := r.(error); ok {
if errors.Is(err, os.ErrDeadlineExceeded) {
log.Warn().Err(err).Msg("Deadline exceeded, handler probably too slow")
......@@ -31,5 +31,5 @@
exc := zerolog.Dict().
Str("value", fmt.Sprintf("%#v", r)).
Str("type", fmt.Sprintf("%T", r))
return
}
}
......@@ -35,4 +35,5 @@
stack := sentry.NewStacktrace()
stack.Frames = stack.Frames[:len(stack.Frames)-1]
exc := zerolog.Dict().
Str("value", fmt.Sprintf("%#v", r)).
Str("type", fmt.Sprintf("%T", r))
......@@ -38,5 +39,4 @@
b, err := jsoniter.Marshal(stack)
if err != nil {
log.Err(err).Msg("Could not marshal stacktrace, fallback to plain debug.Stack()")
stack := sentry.NewStacktrace()
stack.Frames = stack.Frames[:len(stack.Frames)-1]
......@@ -42,7 +42,5 @@
b = debug.Stack()
exc = exc.Str("plainstack", string(b))
} else {
exc = exc.RawJSON("stacktrace", b)
}
b, err := jsoniter.Marshal(stack)
if err != nil {
log.Err(err).Msg("Could not marshal stacktrace, fallback to plain debug.Stack()")
......@@ -48,3 +46,7 @@
log.Error().Dict("exception", exc).Msg("Caught a panic")
b = debug.Stack()
exc = exc.Str("plainstack", string(b))
} else {
exc = exc.RawJSON("stacktrace", b)
}
......@@ -50,6 +52,7 @@
rw.WriteHeader(http.StatusInternalServerError)
}
log.Error().Dict("exception", exc).Msg("Caught a panic")
rw.WriteHeader(http.StatusInternalServerError)
}(ctx)
next.ServeHTTP(rw, req)
})
......
......@@ -467,11 +467,5 @@
func consoleDefaultFormatExcFieldValue(noColor bool) Formatter {
return func(i interface{}) string {
if b, ok := i.([]byte); ok {
var e sentry.Exception
if err := json.Unmarshal(b, &e); err == nil {
s := ""
if e.Value != "" {
s += e.Value
}
defaultFormatter := colorize(fmt.Sprintf("%s", i), colorRed, noColor)
......@@ -477,7 +471,6 @@
if e.Type != "" {
s += "(" + e.Type + ")"
}
s += "\n"
b, ok := i.([]byte)
if !ok {
return defaultFormatter
}
......@@ -483,11 +476,6 @@
if e.Stacktrace != nil {
for _, frame := range e.Stacktrace.Frames {
s += PrintFrame(frame)
}
return s
}
}
var e sentry.Exception
if err := json.Unmarshal(b, &e); err != nil {
return defaultFormatter
}
......@@ -492,6 +480,25 @@
}
return colorize(fmt.Sprintf("%s", i), colorRed, noColor)
s := ""
if e.Value != "" {
s += e.Value
}
if e.Type != "" {
s += "(" + e.Type + ")"
}
s += "\n"
if e.Stacktrace == nil {
return defaultFormatter
}
for _, frame := range e.Stacktrace.Frames {
s += PrintFrame(frame)
}
return s
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment