Why does my multithreaded server deadlock when I make an invocation from an event handler registered with the ORBs reactor?
(Expanded question): I am running a server with a few threads in a thread pool. I have also registered an event handler with the ORB’s Reactor from which I am making remote invocations. My server is deadlocking. Note: I am using the default configuration (i.e., default concurrency strategy, wait strategy, flushing strategy, etc.) (Answer): By default, the ORB uses a Leader Follower (LF) for receiving requests and processing replies from remote targets. It uses a simple protocol that keeps track of the server threads that are ready to process invocations and the client threads that are waiting to process replies. When you register your own event handlers with the reactor, the reactor makes an upcall directly into your application code. If your event handler code then makes a remote call and waits for a reply, the LF protocol breaks down since a thread marked as a server thread becomes a client thread without the LF’s knowledge. The signature of the problem is a blocked server with stack
(Expanded question): I am running a server with a few threads in a thread pool. I have also registered an event handler with the ORB’s Reactor from which I am making remote invocations. My server is deadlocking. Note: I am using the default configuration (i.e., default concurrency strategy, wait strategy, flushing strategy, etc.) (Answer): By default, the ORB uses a Leader Follower (LF) for receiving requests and processing replies from remote targets. It uses a simple protocol that keeps track of the server threads that are ready to process invocations and the client threads that are waiting to process replies. When you register your own event handlers with the reactor, the reactor makes an upcall directly into your application code. If your event handler code then makes a remote call and waits for a reply, the LF protocol breaks down since a thread marked as a server thread becomes a client thread without the LF’s knowledge. The signature of the problem is a blocked server with stack
Related Questions
- How can I find out what films and associated show times are Five Buck Clubâ„¢ eligible for the theatres that I registered for in the event I don receive or have misplaced my e-mail?
- Why does my multithreaded server deadlock when I make an invocation from an event handler registered with the ORBs reactor?
- What are server event triggers and what is a server script?