-
-
Notifications
You must be signed in to change notification settings - Fork 133
Open
Description
I'm running this code here:
(ns memento.redis.listener3-test
(:require [clojure.test :refer :all]
[taoensso.carmine :as car]))
(deftest listener-subscription-test
(testing "messages work"
(let [p (promise)]
(with-open [l (car/with-new-listener {}
(fn [[typ :as x] state]
(println x)
(when (= "message" typ)
(deliver p x))) {}
(car/subscribe "test-chan"))]
(car/wcar {}
(car/publish "test-chan" [1]))
(is (= ["message" "test-chan" [1]] @p))))))
So this posts a message and closes listener and it awaits for the message to get back from redis.
First thing is that this always produces an error message to the listener:
[subscribe test-chan 1]
[message test-chan [1]]
[carmine carmine:listener:error {:error :conn-closed, :throwable , :listener{:type :end-test-var, :ns "memento.redis.listener3-test", :name "listener-subscription-test", :file "/Users/roklenarcic/clojure-projects/memento-redis/test/memento/redis/listener3_test.clj", :line 5, :column 1} #taoensso.carmine.Listener{:connection #taoensso.carmine.connections.Connection{:socket #object[java.net.Socket 0x7b641dbe Socket[addr=/127.0.0.1,port=6379,localport=64296]], :spec {:host 127.0.0.1, :port 6379, :listener? true}, :in #object[java.io.DataInputStream 0x3dca26c0 java.io.DataInputStream@3dca26c0], :out #object[java.io.BufferedOutputStream 0x10bf2d5d java.io.BufferedOutputStream@10bf2d5d]}, :handler #object[clojure.lang.Atom 0x53bfef3e {:status :ready, :val Ran 1 test containing 1 assertion.
... etc
But if I run this test in REPL a couple of times in a row I get runs that look like this:
[subscribe test-chan 1]
[message test-chan [1]]
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{...
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{...
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{...
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{....
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{....
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{...
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{....
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{....
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{....
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{....
[carmine carmine:listener:error {:error :conn-closed, :throwable nil, :listener #taoensso.carmine.Listener{....
It instantly calls the listener handler fn with 11 instances of same error message.
Metadata
Metadata
Assignees
Labels
No labels