LATEST VERSION: 8.2.7 - CHANGELOG
Pivotal GemFire® v8.2

POST /gemfire-api/v1/functions/{functionId}

POST /gemfire-api/v1/functions/{functionId}

Execute GemFire function on entire cluster or on a specified region, members and member groups.

Resource URL

/gemfire-api/v1/functions/{functionId}?[&onRegion=regionname|&onMembers=member1,member2,...,memberN|&onGroups=group1,group2,...,groupN]

Parameters

  • {functionId} This required parameter is the name of the function to execute. Place it in the Resource URL, as in the example request: AddFreeItemToOrders.
  • onRegion This optional parameter specifies the target region for the function. You can only invoke a function on a single region. Substitute the region's name for regionname within the sample syntax onRegion=regionname.
  • onMembers This optional parameter specifies the target members of the function. For multiple members, specify a comma-delimited list of member names, as in the sample onMembers=member1,member2.
  • onGroups This optional parameter specifies the target groups of the function. For multiple groups, specify a comma-delimited list of group names, as in the sample onGroups=membergroup1,membergroup2.
  • filter This optional parameter can only be used with the onRegion parameter, where the region has a data-policy of PARTITION. The parameter specifies a list of applicable keys that the function needs to filter on. There are 3 keys in the example Resource URL:
    http://serverURL/functions/SampleFunction?onRegion=TestPartitionRegion&filter=key1,key2,key3
  • Any function arguments are passed in the request body in JSON format. The content of the arguments can depend on how the function is defined. Use @type to declare argument types and @value for specifying a scalar value. An example set of arguments:
    [
            {
                 "@type":  "double",
                 "@value": 210
            },
            {
                 "@type":  "com.gemstone.gemfire.web.rest.domain.Item",
                 "itemNo":  "599",
                 "description":  "Part X Free on Bumper Offer",
                 "quantity":  "2",
                 "unitprice":  "5",
                 "totalprice":  "10.00"
            }
    ]

Example Requests

Request Payload: application/json
POST /gemfire-api/v1/functions/AddFreeItemToOrders
Accept: application/json
Content-Type: application/json

[
        {
             "@type":  "double",
             "@value": 210
        },
        {
             "@type":  "com.gemstone.gemfire.web.rest.domain.Item",
             "itemNo":  "599",
             "description":  "Part X Free on Bumper Offer",
             "quantity":  "2",
             "unitprice":  "5",
             "totalprice":  "10.00"
        }
]
Another example:
Request Payload: null

POST /gemfire-api/v1/functions/getDeliveredOrders
Accept: application/json

Example Success Responses

Response Payload: null
200 OK
Location:http: //localhost:8080/gemfire-api/v1/functions/AddFreeItemToOrders
Another example response:
Response Payload: application/json

200 OK
Content-Length: 316
Content-Type: application/json
Location: http://localhost:8080/gemfire-api/v1/functions/getDeliveredOrders
[
    {
         "purchaseOrderNo":  "1121",
         "deliveryDate":  "Thu Feb 20 00:00:00 IST 2014"
    },
    {
         "purchaseOrderNo":  "777",
         "deliveryDate":  "Thu Feb 20 00:00:00 IST 2014"
    },
    {
        ...
    }
]

Error Codes

Status code 500 INTERNAL SERVER ERROR is an error encountered in a server. Check the HTTP response body for a stack trace of the exception. Causes:
  • The Region identified by name (%1$s) could not found!
  • Could not found the specified members in disributed system!
  • no member(s) are found belonging to the provided group(s)!
  • Disributed system does not contain any valid data node to run the specified function!
  • Key is of an inappropriate type for this region!
  • Specified key is null and this region does not permit null keys!
  • Server has encountered low memory condition!
  • Input parameter is null!
  • Could not convert function results into Restful (JSON) format!
  • Function has returned results that could not be converted into Restful (JSON) format!
  • Server has encountered an error while processing function execution!