Hi, we are using
couchbase.client:3:0:10. We have noticed that when calling
bucket.reactive.defaultCollection() .get(id) .map [...] //more processing downstream
all operators downstream of
get() are executing on
cb-io-kv thread pool, which is a dedicated thread pool for netty event loop. Our processing pipeline after
get() is CPU intensive (it deserializes binary avro documents). My question is:
- Should we switch the scheduler using
publishOnoperator to avoid CPU intensive work on netty event loop thread pool? Even if, the work wasn’t CPU intensitve, wouldn’t it be a bad practice to allow business logic downstream to execute on a scheduler which was meant for couchbase client?
We have also noticed that one
cb-io-kv thread was being significantly more utilized than other threads under heavy load (~60k gets per second). The data which we were fetching was evenly distributed across nodes. When we used
get(), all threads started being utilized evenly. So the second question would be:
- What could be the reason of the uneven distribution of work between
cb-io-kvthreads? Have you heard about this problem before?