Hi Andrew, On my receiving end this is what I get (PN_LOG had no effect but PN_TRACE_FRM spew something)
253998 140157087659776 static void* CAAMQPAgent::run(void*) 253998 140157087659776 virtual void CAAMQPAgent::CAQPID::on_container_start(proton::container&): 0x7f78d0000b60 253998 140157087659776 listen on amqp://127.0.0.1:5672 ... [0x7f78d0004110]: <- AMQP [0x7f78d0004110]:0 <- @open(16) [container-id="bb53b030-f349-4476-8ecf-be0757438931", hostname="127.0.0.1", channel-max=32767] [0x7f78d0004110]: -> AMQP 253998 140157087659776 virtual void CAAMQPAgent::CAQPID::on_transport_open(proton::transport&) 253998 140157087659776 virtual void CAAMQPAgent::CAQPID::on_connection_open(proton::connection&) 253998 140157087659776 make receiver [example] (i've mixed the frame output from the lib with my own debug output which might be helpful) on the send side 254008 139716829640448 static void* CAAMQPAgent::run(void*) 254008 139716829640448 virtual void CAAMQPAgent::CAQPID::on_container_start(proton::container&): 0x7f1254000b60 254008 139716829640448 connect to amqp://127.0.0.1:5672 ... [0x7f1254003260]: -> AMQP [0x7f1254003260]:0 -> @open(16) [container-id="bb53b030-f349-4476-8ecf-be0757438931", hostname="127.0.0.1", channel-max=32767] [0x7f1254003260]: <- AMQP And that's where things stall Both processes have a thread waiting on epoll #0 0x00007f78e144746e in epoll_wait (epfd=8, events=0x7f78dd6c299c, maxevents=1, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30 #1 0x00007f78e0cdf888 in ?? () from /lib/x86_64-linux-gnu/libqpid-proton-proactor.so.1 #2 0x00007f78e16b6a95 in proton::container::impl::thread() () from /lib/x86_64-linux-gnu/libqpid-proton-cpp.so.12 #3 0x00007f78e16b6dae in proton::container::impl::run(int) () from /lib/x86_64-linux-gnu/libqpid-proton-cpp.so.12 #4 0x000055e3c4ac5f48 in CAAMQPAgent::run (p=0x55e3c66b37f0) at amqpagent.cpp:907 #5 0x00007f78e18d4609 in start_thread (arg=<optimised out>) at pthread_create.c:477 #6 0x00007f78e1447133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 I've verified that override gives no errors on compile Thanks On Wed, 8 Mar 2023 at 13:54, Andrew Stitcher <astitc...@redhat.com> wrote: > I'm afraid that it's going to be very difficult to diagnose the issue here > without a solid reproducer. > > One approach might be to turn frame level logging on at one end of the > connection or other using the PN_LOG environment variable. Set if to > "frame" (PN_LOG=frame) to get an output on stderr of the AMQP frames being > sent/received. If you post that here (or maybe link to pastebin/git gist) > then we can see a bit more clearly what's going on at a protocol level. > > Are you sure that you are correctly overloading the messaging_adapter > class? If you are using a different signature for on_connection_open then > the overload won't work. To get the compiler to alert you use the > 'override' keyword. > > Andrew > > On Tue, Mar 7, 2023 at 5:46 PM Tiaan Wessels <tiaanwess...@gmail.com> > wrote: > > > Hi, > > I am trying a direct send between two programs, one listening and upon > > accepting, starts a receiver and the other connecting and should start a > > sender upon connecting but the on_connection_open never gets called in > the > > sending program. I can see with netstat the connection is established and > > my listening program gets on_accept, on_transport_open and then > > on_connection_open upon which a do open_receiver whereafter i get > > on_session_open and then on_receiver_open upon which i add 100 credits > but > > that's where the action stops. The sender only ever gets > on_container_start > > upon which i connect and the source code would have opened a sender in > the > > on_connection_open but this never gets called even though the other end > and > > netstat shows the connection is in fact established. A pstack on the > sender > > shows the run thread in epoll and select most of the time. > > I removed the rpm's and downloaded 0.38.0 sources and started adding > debug > > prints to understand what's going on. My first venture in qpid proton > > sources and all i could see that is suspect is > > > > void on_connection_bound(messaging_handler& handler, pn_event_t* event) { > > connection c(make_wrapper(pn_event_connection(event))); > > } > > > > which makes a connection object but does nothing with it. Call's now > > handler. This is the only case in proton::messaging_adapter::dispatch > which > > does not fall through to default in my sending app. > > It's difficult to provide a working example as the code is integrated > into > > a bigger app which comes with a lot of libraries and other sources. My > > on_* is modeled quite closely to the examples so i suspect something in > my > > integration code is breaking it but i have no clue what. > > My question here is, is there any suggestions how to debug this with the > > qpid proton source code at hand ? Why would my on_connection_open not be > > called or is it not called ? Should it have been called ? > > Thanks > > >