Java Client 2.3.1 : N1QL queries throwing TimeoutException [upgraded to Couchbase 4.5]

Let’s be careful here everyone :slight_smile: so we don’t get into the weeds … we fixed an issue in the 2.2.x series in the streaming parser, I think thats what @gerdklingler is running into.

Any issues seen on 2.3.x are different ones! And a timeout is a general symptom of an unknown cause, not the actual issue - so any underlying parsing, network, or server issue can result in a timeout.

Blocking.blockForSingle throwing a RuntimeException with a TimeoutException can be due to many things, so I wouldn’t automatically say it is the same issue…
(edit: @daschl beat me to it)

@mlblount45 I would recommend trying with 2.2.8, yes. Can you confirm whether or not your issue happens in 2.2.8, but also check with 2.3.1?

@parasdiwan @mlblount45 it would be very interesting to try and capture a N1QL request + response from the SDK logs (assuming the timeout is triggered by a delay inside the SDK, not in the actual N1QL service responding too late).

By enabling TRACE level logs, the SDK will dump content of packets it sends and receives, so we might be able to find the last N1QL request that timed out and check if there is a response afterward. Having the packet dump, I’d be able to reconstruct the response and debug its parsing locally, see if anything problematic pops up.

Do you think you’d be able to get that?

@simonbasle @daschl sorry for jumping the gun and making assumptions. I’ll try to test out 2.2.8 later on today and I will let you know how it goes. I’ve already tested with 2.3.1 this is where i first discovered the issue: N1QL queries timing out when run in java sdk

@siriousje did you test out 2.2.8 perhaps?

nope, I didn’t check http://mvnrepository.com/artifact/com.couchbase.client/java-client … I went with the comments here, but I see now that keepalive doesn’t work at all with that build so that’s why I’m not seeing that error blush

@parasdiwan @mlblount45 @siriousje we found a bug in the query response parser that affects 2.3.0 and 2.3.1 but it doesn’t seem related, as it would manifest as a transcoding exception when trying to get a N1qlQueryRow.value():

com.couchbase.client.java.error.TranscodingException: Error deserializing row value from bytes to JsonObject

You don’t see anything like that in your logs do you?

Has any of you been able to capture the issue with TRACE level logs enabled?

@simonbasle the logs that I captured here do not show that exception and unfortunately I didn’t have trace level logs set.

We are seeing exact same issue with Java Client SDK 2.3.2

is there any update on this issue?

Our query looks like this:

SELECT *, META() as meta FROM identity WHERE type = “User” AND userName = “####PII-EXPOSURE####” LIMIT 1 with timeout: 5000

Not even doing a query, just bucket.upsert.

@simonbasle this issue appears to be effecting multiple people can you take a look at this more detailed post I have made. There may be more posted there to help you properly debug. N1QL Query times out using parametrized values in IN clause

Hi…
we are getting concurrent timeout exception while running our application process.
Though we have increased the thread pool configuration default to 5 and the query endpoint to 20 , we are getting the below error

Error log:
2017-11-15 06:45:56,134 ERROR [checklist-library-Executor-4] LoggingAspect: Exception in com.pwc.adc.assurance.checklistLibrary.service.ChecklistLibraryService.createChecklistFromTags() with cause = ‘java.lang.RuntimeException: java.util.concurrent.TimeoutException’ and exception = 'java.util.concurrent.TimeoutException; nested exception is java.lang.RuntimeException: java.util.concurrent.TimeoutException’
org.springframework.dao.QueryTimeoutException: java.util.concurrent.TimeoutException; nested exception is java.lang.RuntimeException: java.util.concurrent.TimeoutException
at org.springframework.data.couchbase.core.CouchbaseExceptionTranslator.translateExceptionIfPossible(CouchbaseExceptionTranslator.java:122)
at org.springframework.data.couchbase.core.CouchbaseTemplate.execute(CouchbaseTemplate.java:539)
at org.springframework.data.couchbase.core.CouchbaseTemplate.queryN1QL(CouchbaseTemplate.java:493)
at org.springframework.data.couchbase.core.CouchbaseTemplate.findByN1QL(CouchbaseTemplate.java:428)
at org.springframework.data.couchbase.repository.query.AbstractN1qlBasedQuery.executeCollection(AbstractN1qlBasedQuery.java:155)
at org.springframework.data.couchbase.repository.query.AbstractN1qlBasedQuery.executeEntity(AbstractN1qlBasedQuery.java:161)
at org.springframework.data.couchbase.repository.query.AbstractN1qlBasedQuery.executeDependingOnType(AbstractN1qlBasedQuery.java:134)
at org.springframework.data.couchbase.repository.query.AbstractN1qlBasedQuery.execute(AbstractN1qlBasedQuery.java:105)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:483)

Please have a look at the issue …