You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
NonBlockingInputStream has a busy loop in it, which consumes 100% CPU while it waits for data from server. Not only does it block the NonBlockingInputStream, but also it does it in a resource intensive way.
Describe the solution you'd like
Either add Thread.sleep(1) there or a more configurable wait strategy.
Describe the alternatives you've considered
One can also change queue implementation from AdaptiveQueue to some other queue which supports blocking waiting. But it contradicts the expected non blocking behavior of this class anyway.
Additional context
I am attaching a profile of my application collected by async profiler. One can see that about 86% of cpu time is spent in this place.
The text was updated successfully, but these errors were encountered:
Good day, @vad0 !
Thank you for reporting the issue!
I assume you are working with the V1 version of the client that we are going to deprecate. However thank you for pointing to the issue.
Regarding the problem would you please add more details:
Client version
Client configuration
Sample code showing how write is organized (do you pass and input stream or using a writer)
https://github.com/ClickHouse/clickhouse-java/blob/5758ec51f944dc1daaac4a85084346ee5f8e93bb/clickhouse-data/src/main/java/com/clickhouse/data/stream/NonBlockingInputStream.java
NonBlockingInputStream has a busy loop in it, which consumes 100% CPU while it waits for data from server. Not only does it block the NonBlockingInputStream, but also it does it in a resource intensive way.
Describe the solution you'd like
Either add Thread.sleep(1) there or a more configurable wait strategy.
Describe the alternatives you've considered
One can also change queue implementation from AdaptiveQueue to some other queue which supports blocking waiting. But it contradicts the expected non blocking behavior of this class anyway.
Additional context
I am attaching a profile of my application collected by async profiler. One can see that about 86% of cpu time is spent in this place.
The text was updated successfully, but these errors were encountered: