When running an N1QL query with the node SDK I get a timeout when the query doesn’t find a matching document. If I run the same query in the web GUI it returns an empty array as expected. If I change the query so that it find a document it also works. The same query used to work in CB 7.0-beta and SDK 3.2.0-beta but stopped working after I updated it. Any idea what might be causing this?
Some example code (although I don’t believe this will mean much since it seem to happen to all queries):
let cluser = await couchbase.Cluster.connect(...);
let bucket = cluster.bucket(...);
let scope = bucket.scope(...);
let query = "SELECT META(`users`).id, email, firstName, lastName FROM `users` WHERE tenantId = '<Some ID>' AND email = 'does-not-exist@example.com'" // <-- If I change this to example@example.com it doesn't time out since it find a document
let result = await db.scope.query(query, {readOnly: true}); // <--- timout
After some troubleshooting it seems the cause of this is passing readOnly: true to the query. If set to false the query works as expected. I’ve replicated the issue in a clean repo here: GitHub - traed/couchbase-test
Thanks @AV25242 and @brett19 . We can of course work around this issue by just omitting the read only flag. However, I just encountered another similar issue. When upserting binary files during an import we need to specify the option durabilityLevel: 2 in order to not risk running out of memory. This used to work fine but now we get an error like this:
[Error: LCB_ERR_KVENGINE_INVALID_PACKET (1031): A badly formatted packet was sent to the server. Please report this in a bug] {
code: 1031,
ctxtype: 'kv',
status_code: 4,
opaque: 107,
cas: CbCas { '0': <Buffer 00 00 00 00 00 00 00 00> },
key: '<document key>',
bucket: '<bucket name>',
collection: '<collection name>',
scope: '<scope name>',
context: 'Invalid encoding in FrameExtras',
ref: ''
}
Removing the options object from the call to upsert (and in this case importing a smaller batch of files) works, which makes me think there is a larger problem with these query options. It’s rather concerning that all these issues arise when updating to 7.0 when they worked fine in the beta…