Browse Source

Prevent panic during wrappedConn close at hammertime (#11219)

* Prevent panic during wrappedConn close at hammertime

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Update modules/graceful/server.go

* Fix extraneous debug in goldmark.go

Signed-off-by: Andrew Thornton <art27@cantab.net>
tags/v1.13.0-dev
zeripath GitHub 5 years ago
parent
commit
bd2a47bc17
2 changed files with 11 additions and 1 deletions
  1. +11
    -0
      modules/graceful/server.go
  2. +0
    -1
      modules/markup/markdown/goldmark.go

+ 11
- 0
modules/graceful/server.go View File

@@ -250,6 +250,17 @@ type wrappedConn struct {

func (w wrappedConn) Close() error {
if atomic.CompareAndSwapInt32(w.closed, 0, 1) {
defer func() {
if err := recover(); err != nil {
select {
case <-GetManager().IsHammer():
// Likely deadlocked request released at hammertime
log.Warn("Panic during connection close! %v. Likely there has been a deadlocked request which has been released by forced shutdown.", err)
default:
log.Error("Panic during connection close! %v", err)
}
}
}()
w.server.wg.Done()
}
return w.Conn.Close()


+ 0
- 1
modules/markup/markdown/goldmark.go View File

@@ -328,7 +328,6 @@ func (r *HTMLRenderer) renderIcon(w util.BufWriter, source []byte, node ast.Node
func (r *HTMLRenderer) renderTaskCheckBoxListItem(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) {
n := node.(*TaskCheckBoxListItem)
if entering {
n.Dump(source, 0)
if n.Attributes() != nil {
_, _ = w.WriteString("<li")
html.RenderAttributes(w, n, html.ListItemAttributeFilter)


Loading…
Cancel
Save