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

Reply via email to