Skip to content

Jetstream publish without stream stalls on core listener #8038

@plank-p

Description

@plank-p

Observed behavior

Clients stall forever when attempting to do a jetstream publish to a non existent stream with a core listener.

Expected behavior

A stream does not exist error, or a successful publish

Server and client version

Server Version: 2.12.2

Host environment

No response

Steps to reproduce

package main

import (
	"fmt"
	"log"
	"time"

	"github.com/nats-io/nats.go"
	"github.com/nats-io/nats.go/jetstream"
)
func main() {
	nc, err := nats.Connect(nats.DefaultURL)
	if err != nil {
		log.Fatal(err)
	}
	defer nc.Close()
	js, err := jetstream.New(nc)
	if err != nil {
		log.Fatal(err)
	}
	nc.Subscribe("test2.hello", func(m *nats.Msg) {})

	fmt.Println("About to publish")
	fut, err := js.PublishAsync( "test2.hello", []byte("world"))
	if err != nil {
		log.Fatal("publish (matching subject):", err)
	}
	fmt.Println("publish (matching subject) sent")
	select {
	case <-fut.Ok():
		fmt.Println("publish (matching subject) succeeded")
	case err:=<-fut.Err():
		fmt.Printf("publish (matching subject) failed: %v\n", err)
	case <-time.After(5 * time.Second):
		fmt.Println("publish (matching subject) timed out")
	}
}

Prints

About to publish
publish (matching subject) sent
publish (matching subject) timed out

Metadata

Metadata

Assignees

No one assigned

    Labels

    defectSuspected defect such as a bug or regression

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions