For the collector issue, it seems to me that this is caused by conn.declare_topic_consumer() in CollectorService.start() after calling conn.consume_in_thread() in rpc.Service.start().
I've tried to unwrap all the start() functions in CollectorService's ancestors, and move conn.consume_in_thread() to the very last in start(), and the issue seems gone.
To fix this issue, we may either
1. modify the common.rpc.Service.start() to add a hook to declare additional consumer before calling consume_in_thread().
2. drop the rpc.Service dependency and unwrap ancestors' start() into CollectorService's own.
3. use a different RPC connection object for CollectorService's own consumers.
For the collector issue, it seems to me that this is caused by conn.declare_ topic_consumer( ) in CollectorServic e.start( ) after calling conn.consume_ in_thread( ) in rpc.Service. start() .
I've tried to unwrap all the start() functions in CollectorService's ancestors, and move conn.consume_ in_thread( ) to the very last in start(), and the issue seems gone.
To fix this issue, we may either rpc.Service. start() to add a hook to declare additional consumer before calling consume_ in_thread( ).
1. modify the common.
2. drop the rpc.Service dependency and unwrap ancestors' start() into CollectorService's own.
3. use a different RPC connection object for CollectorService's own consumers.
Any suggestions?