Author: davsclaus
Date: Mon Jun 16 12:49:14 2008
New Revision: 668276

URL: http://svn.apache.org/viewvc?rev=668276&view=rev
Log:
CAMEL-605: Fixed the high concurrency issue with dataset. Must sleep during 
sending to have more even load on producer/consumer.

Modified:
    activemq/camel/trunk/camel-core/pom.xml
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java

Modified: activemq/camel/trunk/camel-core/pom.xml
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/pom.xml?rev=668276&r1=668275&r2=668276&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/pom.xml (original)
+++ activemq/camel/trunk/camel-core/pom.xml Mon Jun 16 12:49:14 2008
@@ -124,7 +124,6 @@
           <excludes>
             <!-- TODO FIXME ASAP -->
             <exclude>**/InterceptorLogTest.*</exclude>
-            <exclude>**/DataSetSedaTest.*</exclude>
           </excludes>
         </configuration>
       </plugin>

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java?rev=668276&r1=668275&r2=668276&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
 Mon Jun 16 12:49:14 2008
@@ -63,13 +63,18 @@
                 Exchange exchange = endpoint.createExchange(i);
                 getProcessor().process(exchange);
 
-                long delay = endpoint.getProduceDelay();
-                if (delay > 0) {
-                    try {
+                try {
+                    long delay = endpoint.getProduceDelay();
+                    if (delay > 0) {
                         Thread.sleep(delay);
-                    } catch (InterruptedException e) {
-                        LOG.debug(e);
+                    } else {
+                        // if no delay set then we must sleep at lest for 1 
nano to avoid concurrency
+                        // issues with extremly high throughtput
+                        Thread.sleep(0, 1);
                     }
+                } catch (InterruptedException e) {
+                    // ignore and just log to debug
+                    LOG.debug(e);
                 }
                 if (reporter != null) {
                     reporter.process(exchange);


Reply via email to