Skip to content

redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported #2539

Closed
@cuipeiyu

Description

@cuipeiyu

When I try to subscribe messages using ssh, an error occurred. The messages has been confirmed to be able to be pushed correctly. How do i fix it?

Version:
v9.0.3

Demo:

package main

import (
	"context"
	"log"
	"net"
	"time"

	"github.com/melbahja/goph"
	"github.com/redis/go-redis/v9"
	"golang.org/x/crypto/ssh"
)

func main() {
	var err error

	cfg := &goph.Config{
		User:     "root",
		Addr:     "<IP>",
		Port:     22,
		Timeout:  10 * time.Second,
		Callback: ssh.InsecureIgnoreHostKey(),
	}
	cfg.Auth, err = goph.Key("<key file>", "")
	if err != nil {
		panic(err)
	}

	tunnel, err := goph.NewConn(cfg)
	if err != nil {
		panic(err)
	}
	defer tunnel.Close()

	// test
	out, err := tunnel.Run("ls -al")
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("ssh test output:\n%s\n", string(out))

	rcfg := &redis.Options{
		Addr:         "127.0.0.1:6379",
		Password:     "", // no password set
		DB:           0,  // use default DB
		ReadTimeout:  -2,
		WriteTimeout: -2,
		Dialer: func(ctx context.Context, network, addr string) (net.Conn, error) {
			return tunnel.Dial(network, addr)
		},
	}

	client := redis.NewClient(rcfg)
	defer client.Close()

	// test
	if err := client.Set(context.Background(), "abc", "123", time.Minute).Err(); err != nil {
		log.Fatalln("set \"abc\" failed", err.Error())
	}
	log.Println("set \"abc\" succeeded")
 
	go func() {
		channel := client.Subscribe(context.Background(), "test")
		c := channel.Channel()

		for {
			msg := <-c
			log.Println("new message: ", msg.Payload)
		}
	}()

	go func() {
		for {
			log.Println("publish message: ", "hello world")
			if err := client.Publish(context.Background(), "test", "hello world").Err(); err != nil {
				log.Fatalln("publish message error:", err.Error())
			}
			time.Sleep(time.Second)
		}
	}()

	select {}
}

Output:

2023/04/05 13:49:58 ssh test output:
total 40
drwx------  5 root root 4096 Apr  5 09:19 .
drwxr-xr-x 18 root root 4096 Apr  5 09:12 ..
-rw-r--r--  1 root root  571 Apr 11  2021 .bashrc
drwx------  3 root root 4096 Feb  8 13:34 .config
drwxr-xr-x  2 root root 4096 Feb  8 13:30 .pip
-rw-r--r--  1 root root  161 Jul  9  2019 .profile
-rw-r--r--  1 root root  206 Apr  5 09:12 .pydistutils.cfg
drwx------  2 root root 4096 Feb  8 21:31 .ssh
-rw-------  1 root root  815 Apr  5 09:19 .viminfo
-rw-r--r--  1 root root  215 Apr  5 09:13 .wget-hsts

2023/04/05 13:49:59 set "abc" succeeded
2023/04/05 13:49:59 publish message:  hello world
redis: 2023/04/05 13:49:59 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
redis: 2023/04/05 13:50:00 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
redis: 2023/04/05 13:50:00 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
2023/04/05 13:50:01 publish message:  hello world
redis: 2023/04/05 13:50:01 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
redis: 2023/04/05 13:50:01 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
2023/04/05 13:50:02 publish message:  hello world
redis: 2023/04/05 13:50:02 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
2023/04/05 13:50:03 publish message:  hello world
redis: 2023/04/05 13:50:03 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
redis: 2023/04/05 13:50:04 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
2023/04/05 13:50:04 publish message:  hello world
redis: 2023/04/05 13:50:05 pubsub.go:168: redis: discarding bad PubSub connection: ssh: tcpChan: deadline not supported
........

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions