Details
Description
Start server with one node.
Create many buckets, that uses all allowed memory -> Server have to chnage status on Pending (In my situation server stay in Pending for all time and can't change it to Up)
After that try to connect to one of the bucket by calling lcb_connect.
Call lcb_wait to wait for connection is done.
As a result lcb_wait work infinitly and timeout doesn't happen
Below I share call stack in Red Hat Linux:
#0 0x00000034350d4473 in __epoll_wait_nocancel () from /lib64/libc.so.6
#1 0x00002ad81b1dccc9 in ?? () from ./lib/libevent-2.0.so.5
#2 0x00002ad81b1c9cdc in event_base_loop () from ./lib/libevent-2.0.so.5
#3 0x00002ad8174c1dc6 in lcb_wait () from ./lib/libcouchbase.so.2
#4 0x000000000043c0e1 in Couchbase::connect (this=0x60df508) at couchbase_loader_source/couchbase.cpp:152
#5 0x000000000043c8b7 in connect_to_bucket (cbase=..., config=..., bucket_name=...) at couchbase_loader_source/couchbase.cpp:478
#6 0x0000000000440924 in couchbase_loader::writer_thread::writer_thread (this=0x60df480, config=..., bucket_name=..., dbh=...) at couchbase_loader_source/writer_thread.cpp:25
#7 0x000000000042168c in main (argc=1, argv=0x7fff22162028) at couchbase_loader_source/couchbase_loader.cpp:175
Create many buckets, that uses all allowed memory -> Server have to chnage status on Pending (In my situation server stay in Pending for all time and can't change it to Up)
After that try to connect to one of the bucket by calling lcb_connect.
Call lcb_wait to wait for connection is done.
As a result lcb_wait work infinitly and timeout doesn't happen
Below I share call stack in Red Hat Linux:
#0 0x00000034350d4473 in __epoll_wait_nocancel () from /lib64/libc.so.6
#1 0x00002ad81b1dccc9 in ?? () from ./lib/libevent-2.0.so.5
#2 0x00002ad81b1c9cdc in event_base_loop () from ./lib/libevent-2.0.so.5
#3 0x00002ad8174c1dc6 in lcb_wait () from ./lib/libcouchbase.so.2
#4 0x000000000043c0e1 in Couchbase::connect (this=0x60df508) at couchbase_loader_source/couchbase.cpp:152
#5 0x000000000043c8b7 in connect_to_bucket (cbase=..., config=..., bucket_name=...) at couchbase_loader_source/couchbase.cpp:478
#6 0x0000000000440924 in couchbase_loader::writer_thread::writer_thread (this=0x60df480, config=..., bucket_name=..., dbh=...) at couchbase_loader_source/writer_thread.cpp:25
#7 0x000000000042168c in main (argc=1, argv=0x7fff22162028) at couchbase_loader_source/couchbase_loader.cpp:175
Issue Links
- is duplicated by
-
CCBC-167
lcb_wait() waits infinitely
-
My error happened scenario:
First of all I try to connect to some bucket (Primary for example) which is absent
lcb_connect
lcb_wait
here I get error. Then I create bucket, destroy instance by calling lcb_destroy and try connect to bucket again:
func_create_bucket()
sleep(some_time)
lcb_destroy()
lcb_create()
lcb_connect()
lcb_wait()
After that I receive 3 messages from my error_callback function, where errinfo is “Number of vBuckets must be a power of two > 0 and <= 65536”
And deadlock happened in lcb_wait.