Darrel Schneider created GEODE-6657:
---------------------------------------

             Summary: BridgeServer.MAX_INCOMING_DATA and 
BridgeServer.MAX_INCOMING_MSGS do not work correctly together
                 Key: GEODE-6657
                 URL: https://issues.apache.org/jira/browse/GEODE-6657
             Project: Geode
          Issue Type: Bug
          Components: client/server
            Reporter: Darrel Schneider


Is you set both the following system properties: BridgeServer.MAX_INCOMING_DATA 
and BridgeServer.MAX_INCOMING_MSGS you will not get correct behavior.

What will happen is that every incoming message will be counted twice (instead 
of the correct once) and the data limit will not be ignored.

The bug is in: 
org.apache.geode.internal.cache.tier.sockets.Message.readHeaderAndBody(int)

in the code that handles a non-null dataLimiter. If timeToWait is not zero then 
this code should be acquiring the dataLimiter semaphore. But instead if 
acquires again the messageLimiter semaphore.

Note: we have another issue that mentions that neither of these system 
properties have any tests.

It also looks like MAX_INCOMING_DATA's implementation is broken even if 
MAX_INCOMING_MSGS is not set. In that case (if timeToWait is non-zero) no limit 
is enforced at all. I think the common case is that timeToWait is non-zero.

It looks like MAX_INCOMING_DATA is so broken that it could just be removed. It 
is possible that MAX_INCOMING_MSGS is being used by itself and its 
implementation is correct so someone may be using it.

Both these system properties are documented in: 

geode-core/src/main/java/org/apache/geode/internal/cache/properties.html

but that is an internal file. I did not see them mentioned at all (except for 
source code) when I did a google search.

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to