[
https://issues.apache.org/jira/browse/GEODE-393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16059545#comment-16059545
]
ASF GitHub Bot commented on GEODE-393:
--------------------------------------
Github user jinmeiliao commented on a diff in the pull request:
https://github.com/apache/geode/pull/589#discussion_r123544587
--- Diff:
geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionContextImpl.java
---
@@ -37,20 +38,25 @@
private String functionId = null;
+ private Cache cache = null;
+
private ResultSender resultSender = null;
private final boolean isPossDup;
public FunctionContextImpl(final String functionId, final Object args,
ResultSender resultSender) {
- this.functionId = functionId;
- this.args = args;
- this.resultSender = resultSender;
- this.isPossDup = false;
+ this(null, functionId, args, resultSender, false);
+ }
+
+ public FunctionContextImpl(final Cache cache, final String functionId,
final Object args,
+ ResultSender resultSender) {
+ this(cache, functionId, args, resultSender, false);
}
- public FunctionContextImpl(final String functionId, final Object args,
ResultSender resultSender,
- boolean isPossibleDuplicate) {
+ public FunctionContextImpl(final Cache cache, final String functionId,
final Object args,
+ ResultSender resultSender, boolean isPossibleDuplicate) {
--- End diff --
Looking at the places where it's grabbing the cache to create the
FunctionContext, it's all using GemfireCacheImpl.getInstance(). I am wondering
we should just have the implementation of getCache() in FunctionContextImpl to
be simply GemfireCacheImpl.getInstance(), then we don't need to change all the
constructor signatures and keep a member variable of the cache in the context.
> FunctionContext should provide a Cache
> --------------------------------------
>
> Key: GEODE-393
> URL: https://issues.apache.org/jira/browse/GEODE-393
> Project: Geode
> Issue Type: Improvement
> Components: functions
> Reporter: Dan Smith
> Assignee: David Anuta
> Labels: starter
>
> FunctionContext has methods to get the arguments to the function and the
> result sender, but there is no way to get the Cache or DistributedSystem.
> This means pretty much any function will need to statically look up the cache
> using CacheFactory.getAnyInstance(). While that works, it makes it impossible
> to write unit tests for functions by passing in a mock cache.
> Note that onRegion functions are provided a RegionFunctionContext, which does
> provide these functions with a means to look up the cache, but not all
> functions are applied to a region.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)