Details
-
Bug
-
Resolution: Fixed
-
Major
-
1.0.0-dp.12
-
None
-
None
-
1
-
SDK04: Scope Search
Description
I you have a cluster the uses multi-dimensional scaling (i.e. separate services on separate nodes) and the connection string only provides node(s) related to non-KV services, the client will timeout as unable to make a bucket-level connection.
We see the following in the logs in response to sending SELECT_BUCKET:
[2024-02-02 11:43:23.472] 0ms [trac] [73272,33262115] [85da90-10b9-b44e-d6e7-634a02fadca82f/26b663-ac25-4844-a088-c43762cec8f7c8/plain/default] <192.168.107.130/192.168.107.130:11210> MCBP recv {magic=0x18, opcode=0x89, fextlen=3, keylen=0, extlen=0, datatype=0, status=1, bodylen=3, opaque=111, cas=0}
|
[2024-02-02 11:43:23.472] 0ms [debu] [73272,33262115] [85da90-10b9-b44e-d6e7-634a02fadca82f/26b663-ac25-4844-a088-c43762cec8f7c8/plain/default] <192.168.107.130/192.168.107.130:11210> kv_engine node does not have configuration propagated yet (opcode=select_bucket (0x89), status=not_found (0x01), opaque=111)
|
Complete log attached ( cxxcbc447_unable_to_connect_cbs722.log ).
Example from Python (v4.1.11):
from datetime import timedelta
|
|
from couchbase.auth import PasswordAuthenticator
|
from couchbase.cluster import Cluster
|
from couchbase.diagnostics import ServiceType
|
from couchbase.options import (ClusterOptions,
|
WaitUntilReadyOptions)
|
|
auth = PasswordAuthenticator('Administrator', 'password')
|
opts = ClusterOptions(auth)
|
"""
|
Example yaml: https://github.com/couchbaselabs/cbdinocluster/blob/master/examples/1-kv-2-query.yaml
|
|
./cbdinocluster allocate --def-file cluster_defs/1-kv-2-query.yaml
|
./cbdinocluster buckets add 845 default --ram-quota-mb 150 --flush-enabled true
|
|
query/index nodes: 192.168.107.129/130
|
kv node: 192.168.107.128
|
"""
|
cluster = Cluster.connect('couchbase://192.168.107.130', opts)
|
|
# another potential solution
|
cluster.wait_until_ready(timedelta(seconds=3),
|
WaitUntilReadyOptions(service_types=[ServiceType.KeyValue, ServiceType.Query]))
|
|
collection = (cluster
|
.bucket('default')
|
.default_collection())
|
Attachments
Issue Links
- blocks
-
PYCBC-1555 select_bucket requests incorrectly mapped to Index/Query nodes
- Closed
- causes
-
CXXCBC-487 Check if alternate addressing is used when bootstrapping bucket
- Closed