Darrel Schneider created GEODE-9575:
---------------------------------------

             Summary: redis publish sends an extra message to each server
                 Key: GEODE-9575
                 URL: https://issues.apache.org/jira/browse/GEODE-9575
             Project: Geode
          Issue Type: Improvement
          Components: redis
            Reporter: Darrel Schneider


The redis publish command uses a geode function to distribute the publish to 
each server that may have subscriptions. When it does this it calls 

PartitionRegionHelper.getPartitionRegionInfo. It turns out the implementation 
of this method sends a message to each data store: FetchPartitionDetailsMessage.

Since all redis publish wanted to do was execute the function on each server 
that has the redis data region, it could have instead done it like so in 
RegionProvider.getRegionMembers:
{code:java}
    Set<InternalDistributedMember> otherMembers =
     partitionedRegion.getRegionAdvisor().adviseDataStore();
     Set<DistributedMember> result = new HashSet<>(otherMembers.size()+1);
     result.addAll(otherMembers);
     
result.add(partitionedRegion.getDistributionManager().getDistributionManagerId());
     return result;
{code}

When I did this I started seeing one of the tests fail. It looked like it might 
had to do with something left around from one test method interfering with 
another. It is possible that the older slow code works in this test because the 
extra messaging slows publish down. It was a dunit test that did some ha 
(starting and stopping servers). I verified that this code does produce the 
same set of members as the old code but I did not figure out what was wrong 
with the test that started failing.



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

Reply via email to