[ 
https://issues.apache.org/jira/browse/QPID-8534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marek Laca updated QPID-8534:
-----------------------------
    Description: 
The network connection scheduler (NetworkConnectionScheduler class) contains a 
thread pool. IO-threads are polling jobs from the scheduler work queue and 
executing them. The connection job works in the loop. The loop is interrupted 
when there is not any data to process or all IO-threads are occupied.

If the loop is interrupted then the IO-thread pushes the connection job back 
into the queue and picks the next job from the queue. It should ensure that any 
job is not abandoned and it is not waiting in the queue for ever.
 But when the number of jobs equals to the thread pool size then IO-thread 
stops processing the connection job, pushes it back into the queue and polls 
the same job again, again and again.

The connection job could check whether is there any job in the scheduler queue. 
If the queue was not empty then the connection working loop would be 
interrupted and the thread could pick up another job. It would simplified the 
broker code significantly.

  was:
The network connection scheduler (NetworkConnectionScheduler class) contains a 
thread pool. IO-threads are polling jobs from the scheduler work queue and 
executing them. The connection job works in the loop. The loop is interrupted 
when there is not any data to process or all IO-threads are occupied.

If the loop is interrupted then the IO-thread pushes the connection job back 
into the queue and picks the next job from the queue. It should ensure that any 
job is not abandoned and it is not waiting in the queue for ever.
 But when the number of jobs equals to the thread pool size then IO-thread 
stops processing the connection job, pushes it back into the queue and polls 
the same job again, again and again.

The connection job could check whether is there any job in the scheduler queue. 
If the queue was not empty then the connection working loop would be 
interrupted and the thread could pick up another job. It would simplified the 
broker code significantly.

*Notes:*

The change should not have any impact on the broker functionality. The general 
test is needed that broker messaging is working properly and GUI is accessible. 


> [Broker-J] Improper interruption of connection processing loop
> --------------------------------------------------------------
>
>                 Key: QPID-8534
>                 URL: https://issues.apache.org/jira/browse/QPID-8534
>             Project: Qpid
>          Issue Type: Improvement
>          Components: Broker-J
>            Reporter: Marek Laca
>            Priority: Minor
>              Labels: Broker, Connection, Java
>
> The network connection scheduler (NetworkConnectionScheduler class) contains 
> a thread pool. IO-threads are polling jobs from the scheduler work queue and 
> executing them. The connection job works in the loop. The loop is interrupted 
> when there is not any data to process or all IO-threads are occupied.
> If the loop is interrupted then the IO-thread pushes the connection job back 
> into the queue and picks the next job from the queue. It should ensure that 
> any job is not abandoned and it is not waiting in the queue for ever.
>  But when the number of jobs equals to the thread pool size then IO-thread 
> stops processing the connection job, pushes it back into the queue and polls 
> the same job again, again and again.
> The connection job could check whether is there any job in the scheduler 
> queue. If the queue was not empty then the connection working loop would be 
> interrupted and the thread could pick up another job. It would simplified the 
> broker code significantly.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to