geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dan Smith (JIRA)" <j...@apache.org>
Subject [jira] [Assigned] (GEODE-726) Add a getLocalDataSet to RegionFunctionContext and deprecate PartitionRegionHelper.getLocalData(RegionFunctionContext)
Date Mon, 04 Jan 2016 21:15:39 GMT

     [ https://issues.apache.org/jira/browse/GEODE-726?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Dan Smith reassigned GEODE-726:
-------------------------------

    Assignee: Dan Smith

> Add a getLocalDataSet to RegionFunctionContext and deprecate PartitionRegionHelper.getLocalData(RegionFunctionContext)
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-726
>                 URL: https://issues.apache.org/jira/browse/GEODE-726
>             Project: Geode
>          Issue Type: Bug
>            Reporter: Dan Smith
>            Assignee: Dan Smith
>
> From https://cwiki.apache.org/confluence/display/GEODE/Function+Service+Usability+Improvments#FunctionServiceUsabilityImprovments-RegionFunctionContextshouldprovidethelocaldataset
:
> If you want to operate on the local data set for a function, you have to do this
> {code}
> public void execute(FunctionContext context) {
>    RegionFunctionContext ctx = (RegionFunctionContext) context;
>    //This actually doesn't give you the local data set
>    Region wholePartitionedRegion = ctx.getDataSet();
>  
>    //This does, using a static function call
>    Region localData = PartitionRegionHelper.getLocalDataForContext(ctx);
>  
>    //This is a bad idea, because it may include some buckets that are also being processed
on other nodes
>    Region localDataDontDoThis = PartitionRegionHelper.getLocalData(ctx.getDataSet());
> {code}
>  
> There are several problems with this approach.
>  * It's not clear that ctx.getDataSet does not return the local data.
>  * The local data set is not mockable for unit tests, because this static function call
extracts it using internal APIs on concrete classes. This prevents this sort of function from
being tested in a pure unit test.
>  * The user has to know that PartitionRegionHelper exists; the API is not obvious
>  * The various methods on PartitionRegionHelper are confusing, specifically it's unclear
to a user why they should use getLocalDataForContext instead of getLocalData
>  
> RegionFunctionContext should just provide a getLocalDataSet method. We should add this
new method to the RegionFunctionContext interface. We should deprecate the PartitionRegionHelper.getLocalDataForContext.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message