Merge branch '16217-ws-ping'
authorTom Clegg <tom@tomclegg.ca>
Thu, 12 Mar 2020 13:41:55 +0000 (09:41 -0400)
committerTom Clegg <tom@tomclegg.ca>
Thu, 12 Mar 2020 13:41:55 +0000 (09:41 -0400)
refs #16217

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@tomclegg.ca>

services/ws/event_source.go
services/ws/server.go

index 6ac8e013523d97cc45643a60d0a35deac809eb61..3a82bf62b3e9351a95d2abe4c56ae942fededa4c 100644 (file)
@@ -7,6 +7,8 @@ package main
 import (
        "context"
        "database/sql"
+       "errors"
+       "fmt"
        "strconv"
        "sync"
        "sync/atomic"
@@ -166,11 +168,15 @@ func (ps *pgEventSource) Run() {
 
                case <-ticker.C:
                        logger(nil).Debug("listener ping")
-                       ps.pqListener.Ping()
+                       err := ps.pqListener.Ping()
+                       if err != nil {
+                               ps.listenerProblem(-1, fmt.Errorf("pqListener ping failed: %s", err))
+                               continue
+                       }
 
                case pqEvent, ok := <-ps.pqListener.Notify:
                        if !ok {
-                               logger(nil).Debug("pqListener Notify chan closed")
+                               logger(nil).Error("pqListener Notify chan closed")
                                return
                        }
                        if pqEvent == nil {
@@ -178,7 +184,7 @@ func (ps *pgEventSource) Run() {
                                // itself in addition to sending us a
                                // nil event, so this might be
                                // superfluous:
-                               ps.listenerProblem(-1, nil)
+                               ps.listenerProblem(-1, errors.New("pqListener Notify chan received nil event"))
                                continue
                        }
                        if pqEvent.Channel != "logs" {
index 3fb59732ed9e5feb4e38f48685a970a7a5ab6425..9747ea1b857074f9ab4616cad0af9ad274232827 100644 (file)
@@ -25,6 +25,7 @@ type server struct {
 func (srv *server) Close() {
        srv.WaitReady()
        srv.eventSource.Close()
+       srv.httpServer.Close()
        srv.listener.Close()
 }