Некорректное поведение паблишера
a14e opened this issue · 3 comments
a14e commented
Добрый день! простая подписка на паблишер приводит к некорректному поведению
Код для воспроизведения
val token = ???
val client: OpenApi = {
val factory = new OkHttpOpenApiFactory(token, Logger.getLogger(this.getClass.getName))
val api = factory.createSandboxOpenApiClient(Executors.newSingleThreadExecutor)
api.asInstanceOf[SandboxOpenApi].getSandboxContext.performRegistration(null).join()
api
}
client.getStreamingContext.getEventPublisher.subscribe(new Subscriber[StreamingEvent] {
override def onSubscribe(s: Subscription): Unit = {
println("onSubscribe")
s.request(1)
}
override def onNext(t: StreamingEvent): Unit = {
println("onNext")
}
override def onError(t: Throwable): Unit = {
println("onError")
}
override def onComplete(): Unit = {
println("onError")
}
})
в результате получаем бесконечный вовод в консоль строки "onSubscribe"
но по правилам стримов https://github.com/reactive-streams/reactive-streams-jvm нельзя делать больше 1 раза onSubscribe
12. Subscriber.onSubscribe MUST be called at most once for a given Subscriber (based on object equality).
Это очень мешает использовать библиотеку в интеграции с fs2, так как она ломается от такого =(
NikitaMelnikov commented
a14e commented
я проверял на версии 0.4.1 (последняя в мавене)
Вижу, что коммит с фиксом уже есть в репозитории. Если собрать последнего мастера, то все работает
Но 0.5 версия клиента еще не запаблишена
zlumyo commented
Новую версию опубликуем в феврале.