if (serverDataSet.getFilter().size() > 0 && serverDataSet.getArguments() != null && serverDataSet.getResultCollector() instanceof ArrayListResultCollector) { scenario = "onRegion function execution by passing filter and arguments and also using Custom ResultCollector (ArrayListResultCollector) \n"; validateRegWithFilterWithArgsWithRC(dataSet, rc, scenario); else if (serverDataSet.getFilter().size() == 0 && serverDataSet.getArguments() != null && serverDataSet.getResultCollector() instanceof ArrayListResultCollector) { scenario = "onRegion function execution without passing filter, but using Custom ResultCollector (ArrayListResultCollector) and args \n"; validateRegNoFilterWithArgsWithRC(dataSet, rc, scenario); else if (serverDataSet.getFilter().size() == 0 && serverDataSet.getArguments() == null && serverDataSet.getResultCollector() instanceof ArrayListResultCollector) { scenario = "onRegion function execution without passing filter and any arguments, but using Custom ResultCollector (ArrayListResultCollector) \n"; else if (serverDataSet.getFilter().size() == 0 && serverDataSet.getArguments() != null && !(serverDataSet.getResultCollector() instanceof ArrayListResultCollector)) { scenario = "onRegion function execution without passing filter but passing arguments and using default result collector. \n"; validateRegNoFilterWithArgsNoRC(dataSet, rc, scenario); else if (serverDataSet.getFilter().size() == 0 && serverDataSet.getArguments() == null && !(serverDataSet.getResultCollector() instanceof ArrayListResultCollector)) { scenario = "onRegion function execution without passing filter & arguments and using default result collector. \n"; else if (serverDataSet.getFilter().size() > 0
public Execution withArgs(Object params) { if (params == null) { throw new FunctionException( LocalizedStrings.ExecuteRegionFunction_THE_INPUT_0_FOR_THE_EXECUTE_FUNCTION_REQUEST_IS_NULL .toLocalizedString("args")); } return new ServerRegionFunctionExecutor(this, params); }
@Override public ResultCollector execute(final String functionName) { if (functionName == null) { throw new FunctionException( LocalizedStrings.ExecuteFunction_THE_INPUT_FUNCTION_FOR_THE_EXECUTE_FUNCTION_REQUEST_IS_NULL .toLocalizedString()); } this.isFnSerializationReqd = false; Function functionObject = FunctionService.getFunction(functionName); if (functionObject == null) { byte[] functionAttributes = getFunctionAttributes(functionName); if (functionAttributes == null) { ServerRegionProxy srp = getServerRegionProxy(); Object obj = srp.getFunctionAttributes(functionName); functionAttributes = (byte[])obj; addFunctionAttributes(functionName, functionAttributes); } boolean hasResult = ((functionAttributes[0] == 1) ? true : false); boolean isHA = ((functionAttributes[1] == 1) ? true : false); boolean optimizeForWrite = ((functionAttributes[2] == 1) ? true : false); return executeFunction(functionName, hasResult, isHA, optimizeForWrite); } else { return executeFunction(functionObject); } }
@Override protected ResultCollector executeFunction(final Function function) { byte hasResult = 0; try { if (proxyCache != null) { if (this.proxyCache.isClosed()) { throw new CacheClosedException("Cache is closed for this user."); } UserAttributes.userAttributes.set(this.proxyCache.getUserAttributes()); } if (function.hasResult()) { // have Results hasResult = 1; if (this.rc == null) { // Default Result Collector ResultCollector defaultCollector = new DefaultResultCollector(); return executeOnServer(function, defaultCollector, hasResult); } else { // Custome Result COllector return executeOnServer(function, this.rc, hasResult); } } else { // No results executeOnServerNoAck(function, hasResult); return new NoResult(); } } finally { UserAttributes.userAttributes.set(null); } }
public ExecuteRegionFunctionNoAckOpImpl(String region, String functionId, ServerRegionFunctionExecutor serverRegionExecutor, byte hasResult, boolean isHA, boolean optimizeForWrite) { super(MessageType.EXECUTE_REGION_FUNCTION, 8 + serverRegionExecutor .getFilter().size()); byte isReExecute = 0; int removedNodesSize = 0; hasResult==(byte)1?true:false, optimizeForWrite); Set routingObjects = serverRegionExecutor.getFilter(); Object args = serverRegionExecutor.getArguments(); MemberMappedArgument memberMappedArg = serverRegionExecutor.getMemberMappedArgument(); getMessage().addBytesPart(new byte[]{functionState}); getMessage().addStringPart(region); getMessage().addObjPart(args); getMessage().addObjPart(memberMappedArg); this.executeOnBucketSet = serverRegionExecutor.getExecuteOnBucketSetFlag();
public ExecuteRegionFunctionNoAckOpImpl(LogWriterI18n lw, String region, String functionId, ServerRegionFunctionExecutor serverRegionExecutor, byte hasResult, boolean isHA, boolean optimizeForWrite) { super(lw, MessageType.EXECUTE_REGION_FUNCTION, 8 + serverRegionExecutor .getFilter().size()); logger = lw; byte isReExecute = 0; int removedNodesSize = 0; byte functionState = AbstractExecution.getFunctionState(isHA, hasResult==(byte)1?true:false, optimizeForWrite); Set routingObjects = serverRegionExecutor.getFilter(); Object args = serverRegionExecutor.getArguments(); MemberMappedArgument memberMappedArg = serverRegionExecutor.getMemberMappedArgument(); getMessage().addBytesPart(new byte[]{functionState}); getMessage().addStringPart(region); getMessage().addStringOrObjPart(functionId); getMessage().addObjPart(args); getMessage().addObjPart(memberMappedArg); getMessage().addBytesPart(new byte[]{isReExecute}); getMessage().addIntPart(routingObjects.size()); for (Object key : routingObjects) { getMessage().addStringOrObjPart(key); } getMessage().addIntPart(removedNodesSize); }
keySet = serverDataSet.getFilter();
.getClientMetadataService(); if (cms.isMetadataStable()) { if (serverRegionExecutor.getFilter().isEmpty()) { HashMap<ServerLocation, HashSet<Integer>> serverToBuckets = cms .groupByServerToAllBuckets(this.region, optimizeForWrite); boolean isBucketsAsFilter = serverRegionExecutor.getExecuteOnBucketSetFlag(); Map<ServerLocation, HashSet> serverToFilterMap = cms .getServerToFilterMap(serverRegionExecutor.getFilter(), region, optimizeForWrite, isBucketsAsFilter); if (serverToFilterMap == null || serverToFilterMap.isEmpty()) {
@Override public ResultCollector execute(String functionName, boolean hasResult) throws FunctionException { if (functionName == null) { throw new FunctionException( LocalizedStrings.ExecuteFunction_THE_INPUT_FUNCTION_FOR_THE_EXECUTE_FUNCTION_REQUEST_IS_NULL .toLocalizedString()); } this.isFnSerializationReqd = false; Function functionObject = FunctionService.getFunction(functionName); if (functionObject == null) { return executeFunction(functionName,hasResult, hasResult, false); } else { byte registeredFunctionState = AbstractExecution.getFunctionState( functionObject.isHA(), functionObject.hasResult(), functionObject .optimizeForWrite()); byte functionState = AbstractExecution.getFunctionState(hasResult, hasResult, false); if (registeredFunctionState != functionState) { throw new FunctionException( LocalizedStrings.FunctionService_FUNCTION_ATTRIBUTE_MISMATCH_CLIENT_SERVER .toLocalizedString(functionName)); } return executeFunction(functionObject); } } @Override
byte hasResult, Set<String> removedNodes, boolean isHA, boolean optimizeForWrite, boolean calculateFnState ) { super(MessageType.EXECUTE_REGION_FUNCTION, 8 + serverRegionExecutor.getFilter().size() + removedNodes.size()); Set routingObjects = serverRegionExecutor.getFilter(); byte functionState = hasResult; if(calculateFnState){ hasResult == (byte)1 ? true : false, optimizeForWrite); Object args = serverRegionExecutor.getArguments(); MemberMappedArgument memberMappedArg = serverRegionExecutor .getMemberMappedArgument(); addBytes(functionState); getMessage().addStringPart(region); getMessage().addObjPart(memberMappedArg); this.executeOnBucketSet = serverRegionExecutor.getExecuteOnBucketSetFlag();
ResultCollector rc, byte hasResult, Set<String> removedNodes, boolean isHA, boolean optimizeForWrite, boolean calculateFnState ) { super(lw, MessageType.EXECUTE_REGION_FUNCTION, 8 + serverRegionExecutor.getFilter().size() + removedNodes.size()); logger = lw; Set routingObjects = serverRegionExecutor.getFilter(); byte functionState = hasResult; if(calculateFnState){ hasResult == (byte)1 ? true : false, optimizeForWrite); Object args = serverRegionExecutor.getArguments(); MemberMappedArgument memberMappedArg = serverRegionExecutor .getMemberMappedArgument(); getMessage().addBytesPart(new byte[] { /*hasResult*/ functionState}); getMessage().addStringPart(region);
keySet = serverDataSet.getFilter();
protected ResultCollector executeFunction(final String functionId, boolean resultReq, boolean isHA, boolean optimizeForWrite) { try { if (proxyCache != null) { if (this.proxyCache.isClosed()) { throw new CacheClosedException("Cache is closed for this user."); } UserAttributes.userAttributes.set(this.proxyCache.getUserAttributes()); } byte hasResult = 0; if (resultReq) { // have Results hasResult = 1; if (this.rc == null) { // Default Result Collector ResultCollector defaultCollector = new DefaultResultCollector(); return executeOnServer(functionId, defaultCollector, hasResult, isHA, optimizeForWrite); } else { // Custome Result COllector return executeOnServer(functionId, this.rc, hasResult, isHA, optimizeForWrite); } } else { // No results executeOnServerNoAck(functionId, hasResult, isHA, optimizeForWrite); return new NoResult(); } } finally { UserAttributes.userAttributes.set(null); } }
ClientMetadataService cms = region.getCache().getClientMetadataService(); if (cms.isMetadataStable()) { if (serverRegionExecutor.getFilter().isEmpty()) { HashMap<ServerLocation, HashSet<Integer>> serverToBuckets = cms .groupByServerToAllBuckets(this.region, boolean isBucketFilter = serverRegionExecutor.getExecuteOnBucketSetFlag(); Map<ServerLocation, HashSet> serverToFilterMap = cms .getServerToFilterMap(serverRegionExecutor.getFilter(), region, function.optimizeForWrite(), isBucketFilter); if (serverToFilterMap == null || serverToFilterMap.isEmpty()) {
@Override public ResultCollector execute(String functionName, boolean hasResult) throws FunctionException { if (functionName == null) { throw new FunctionException( LocalizedStrings.ExecuteFunction_THE_INPUT_FUNCTION_FOR_THE_EXECUTE_FUNCTION_REQUEST_IS_NULL .toLocalizedString()); } this.isFnSerializationReqd = false; Function functionObject = FunctionService.getFunction(functionName); if (functionObject == null) { return executeFunction(functionName,hasResult, hasResult, false); } else { byte registeredFunctionState = AbstractExecution.getFunctionState( functionObject.isHA(), functionObject.hasResult(), functionObject .optimizeForWrite()); byte functionState = AbstractExecution.getFunctionState(hasResult, hasResult, false); if (registeredFunctionState != functionState) { throw new FunctionException( LocalizedStrings.FunctionService_FUNCTION_ATTRIBUTE_MISMATCH_CLIENT_SERVER .toLocalizedString(functionName)); } return executeFunction(functionObject); } }
.addResult(memberID, cause); FunctionStats.getFunctionStats(this.functionId, this.executor.getRegion().getSystem()) .incResultsReceived(); continue; this.resultCollector.addResult(memberID, result); FunctionStats.getFunctionStats(this.functionId, this.executor.getRegion().getSystem()).incResultsReceived();
ServerRegionFunctionExecutor serverRegionExecutor, byte hasResult) { super(MessageType.EXECUTE_REGION_FUNCTION, 8 + serverRegionExecutor .getFilter().size()); byte isReExecute = 0; int removedNodesSize = 0; byte functionState = AbstractExecution.getFunctionState(function.isHA(), function.hasResult(), function.optimizeForWrite()); Set routingObjects = serverRegionExecutor.getFilter(); Object args = serverRegionExecutor.getArguments(); MemberMappedArgument memberMappedArg = serverRegionExecutor.getMemberMappedArgument(); getMessage().addBytesPart(new byte[]{functionState}); getMessage().addStringPart(region); if(serverRegionExecutor.isFnSerializationReqd()){ getMessage().addStringOrObjPart(function); getMessage().addObjPart(memberMappedArg); this.executeOnBucketSet = serverRegionExecutor.getExecuteOnBucketSetFlag();
+ serverRegionExecutor.getFilter().size() + removedNodes.size()); this.logger = lw; this.isHA = isHA; this.optimizeForWrite = optimizeForWrite; Set routingObjects = serverRegionExecutor.getFilter(); Object args = serverRegionExecutor.getArguments(); byte functionState = AbstractExecution.getFunctionState(isHA, hasResult == (byte)1 ? true : false, optimizeForWrite); MemberMappedArgument memberMappedArg = serverRegionExecutor .getMemberMappedArgument(); getMessage().addBytesPart(new byte[] { functionState }); getMessage().addStringPart(region);
@Override public ResultCollector execute(final String functionName) { if (functionName == null) { throw new FunctionException( LocalizedStrings.ExecuteFunction_THE_INPUT_FUNCTION_FOR_THE_EXECUTE_FUNCTION_REQUEST_IS_NULL .toLocalizedString()); } this.isFnSerializationReqd = false; Function functionObject = FunctionService.getFunction(functionName); if (functionObject == null) { byte[] functionAttributes = getFunctionAttributes(functionName); if (functionAttributes == null) { ServerRegionProxy srp = getServerRegionProxy(); Object obj = srp.getFunctionAttributes(functionName); functionAttributes = (byte[])obj; addFunctionAttributes(functionName, functionAttributes); } boolean hasResult = ((functionAttributes[0] == 1) ? true : false); boolean isHA = ((functionAttributes[1] == 1) ? true : false); boolean optimizeForWrite = ((functionAttributes[2] == 1) ? true : false); return executeFunction(functionName, hasResult, isHA, optimizeForWrite); } else { return executeFunction(functionObject); } }