The answer to the mysterious number differences is that the client region was a co-located region but not the region I was interested in processing.
Notwithstanding, why the difference in processing between “Server Connection” and “Function Processor” when one or multiple keys are passed in? Thanks, Wes > On Nov 27, 2015, at 11:36 PM, Real Wes Williams <[email protected]> > wrote: > > > 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); > >
