[
https://issues.apache.org/activemq/browse/SM-1937?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Freeman Fang reassigned SM-1937:
--------------------------------
Assignee: Freeman Fang
> Incorrect logic in throttle method of DeliveryChannelImpl.java
> ---------------------------------------------------------------
>
> Key: SM-1937
> URL: https://issues.apache.org/activemq/browse/SM-1937
> Project: ServiceMix
> Issue Type: Improvement
> Components: servicemix-core
> Affects Versions: 3.3
> Reporter: Alexander Zobkov
> Assignee: Freeman Fang
> Priority: Minor
>
> It seems something wrong with logic of the following method in
> DeliveryChannelImpl.java file:
> {code}
> protected void throttle() {
> if (component.isExchangeThrottling()) {
> if (component.getThrottlingInterval() > intervalCount) {
> intervalCount = 0;
> try {
> Thread.sleep(component.getThrottlingTimeout());
> } catch (InterruptedException e) {
> LOG.warn("throttling failed", e);
> }
> }
> intervalCount++;
> }
> }
> {code}
> if user specifies positive values (default value is 1) of throttlingInterval
> then "if" statement is always true. So user need to specify negative values
> of throttlingInterval in order to not force thread sleep on each doSend
> method. Also it would be good to add a little bit logging here. So I propose
> the following modification:
> {code}
> protected void throttle() {
> if (component.isExchangeThrottling()) {
> if (component.getThrottlingInterval() < intervalCount) {
> intervalCount = 0;
> try {
> long timeout = component.getThrottlingTimeout()
> LOG.debug("throttling, sleep for: "+timeout);
> Thread.sleep(timeout);
> } catch (InterruptedException e) {
> LOG.warn("throttling failed", e);
> }
> }
> intervalCount++;
> }
> }
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.