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>
This commit is contained in:
		
							parent
							
								
									9f959ac064
								
							
						
					
					
						commit
						0e799c26ba
					
				
					 2 changed files with 11 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue