+
+ go func() {
+ ticker := time.NewTicker(listenerPingInterval)
+ defer ticker.Stop()
+ for {
+ select {
+ case <-ctx.Done():
+ ps.Logger.Debug("ctx done")
+ return
+
+ case <-ticker.C:
+ ps.Logger.Debug("listener ping")
+ if testSlowPing {
+ time.Sleep(time.Second / 2)
+ }
+ err := ps.pqListener.Ping()
+ if err != nil {
+ ps.listenerProblem(-1, fmt.Errorf("pqListener ping failed: %s", err))
+ continue
+ }
+ }
+ }
+ }()
+