We should probably have three main categories with a thread group for each. Generally, the second and third can probably be very small:
Bit <> Bit (Data) Data Client, DataServer Bit <> Bit (Control) ControlServer, ControlClient Bit <> User User Client, User Server For the question with regards to control client/server, I believe we still use a peer to peer approach for the control channel (unless we deprecated this). As such, whomever creates the connection first is a ControlClient but messages can be sent either direction. So no, I don't think you can remove the handle method. This is different than the data channel where I believe our behavior is to establish different sockets for each direction of communication. -- Jacques Nadeau CTO and Co-Founder, Dremio On Wed, Mar 9, 2016 at 11:55 AM, Sudheesh Katkam <[email protected]> wrote: > Slightly unrelated question: ControlClient does not handle requests; it is > the requestor. So shouldn't the handle method < > https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlClient.java#L92> > throw an UnsupportedOperationException (just like DataClient)? > > > On Mar 9, 2016, at 11:44 AM, Sudheesh Katkam <[email protected]> > wrote: > > > > There are two event loop groups to handle bit-to-bit communication (“bit > server” and “bit client”). > > > > (1) The “bit server” loop is used by DataServer, ControlServer and > ControlClient, and “bit client” loop is used by DataClient. Is there a > reason why ControlClient does not use the “bit client” loop? > > > > (2) The event loop groups are shutdown only when *Server are shutdown. > So the “bit server” loop is shutdown twice, and the “bit client” loop is > not shutdown. > > > > To avoid confusion, I propose these loops to be shutdown in (close > methods of) classes that create them. Thoughts? > > > > Thank you, > > Sudheesh > >
