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);