My function returns a different partitioned region depending on if I pass a 
_single_ key into the .withFilter() set or I pass _multiple_ keys into 
.withFilter().  What’s going on?

When I pass in a single key into .onRegion(r).withFilter(one key), the region 
in the local context. In this condition, keySet returns 10,500 keys.

Function:
    Region<String, Trade> tradesRegion = 
PartitionRegionHelper.getLocalDataForContext(context);
    Object object = tradesRegion.get(aKey);
    log.info("keySet returns " + tradesRegion.keySet().size());


But when I pass in MULTIPLE keys, the region.get returns a null and there are 
only 53 keys in the region.  When I list all 53 keys, they are the partition 
keys and not the actual keys of the region.

Can someone explain what’s going on and what is the optimal way to process 
scatter-gather keys when a partition-resolver is in play? The partition 
resolver is in the classpath on both client and server.

SINGLE KEY: [info 2015/11/27 23:09:48.299 EST server1 <ServerConnection on port 
50920 Thread 6> tid=0x6b] keySet returns 10614

MULTIPLE KEYS: [info 2015/11/27 22:52:46.969 EST server1 <Function Execution 
Processor1> tid=0x45] keySet returns 53

Thanks,
Wes

Client:
     Set<String> filter = new HashSet<String>();
     filter.add("161231XYZ|AAB3H 01");
 
     /*
      * calls the function across the nodes
      */
     ResultCollector<?, ?> rc = FunctionService
         .onRegion(region)
         .withFilter(filter)
         .execute(CalculateDurationFunction.ID);


Reply via email to