Closed Swoorup closed 3 years ago
Despite updating to simply ignore the event from the stream as mentioned here: https://github.com/typelevel/fs2/issues/2568#issuecomment-903274824, I still run into OOM issues.
Tried both circular (drop earliest) and bounded (backpressure) without any success. Maybe it is sttp related?
(for {
_ <- Stream.eval(Logger[F].debug("ws connecting to: " + uri.toString()))
queue <- Stream.eval(Queue.circularBuffer[F, Option[DataFrame]](10))
_ <- Stream.resource(
F.background(
basicRequest
.get(uri)
.response(asWebSocketStreamAlways(Fs2Streams[F])(webSocketFramePipe(queue)))
.send(client)
.flatMap { response =>
Logger[F].debug("response: " + response)
}
.void
)
)
} yield queue).flatMap(Stream.fromQueueNoneTerminated(_))
I don't think the problem is in sttp, because if you change the pipe to not use the queue, and just consume directly the elements in it, then you won't see the leak.
Yep, you are right, something to do with fs2.Stream.map
.
Can confirm no further issues, fixed in https://github.com/paoloboni/binance-scala-client/pull/136
Fixed in v1.3.4
I am running a simple code like below on version 1.3.3
After running for a while around 3 hours I get OOM.
I can't pinpoint where this is coming from though. But visualVM clearly indicates the growing lowest baseline memory usage pattern.
A quick heapdump yields
The heapdump is available at: https://drive.google.com/file/d/1qXVp1qeBrsYHcub7b-2AwO__PMGa1KNl/view?usp=sharing