Class FunctionService

  • java.lang.Object
    • org.apache.geode.cache.execute.FunctionService

  • public class FunctionService
    extends java.lang.Object
    Provides the entry point into execution of user defined Functions.

    Function execution provides a means to route application behaviour to data or more generically to peers in a DistributedSystem or servers in a Pool.

    Since:
    GemFire 6.0
    • Constructor Detail

      • FunctionService

        protected FunctionService​(org.apache.geode.internal.cache.execute.FunctionExecutionService functionExecutionService)
    • Method Detail

      • onRegion

        public static Execution onRegion​(Region region)
        Returns an Execution object that can be used to execute a data dependent function on the specified Region.
        When invoked from a GemFire client, the method returns an Execution instance that sends a message to one of the connected servers as specified by the Pool for the region.
        Depending on the filters setup on the Execution, the function is executed on all GemFire members that define the data region, or a subset of members. Execution.withFilter(Set)). For DistributedRegions with DataPolicy.NORMAL, it throws UnsupportedOperationException. For DistributedRegions with DataPolicy.EMPTY, execute the function on any random member which has DataPolicy.REPLICATE
        . For DistributedRegions with DataPolicy.REPLICATE, execute the function locally. For Regions with DataPolicy.PARTITION, it executes on members where the data resides as specified by the filter.
        Parameters:
        region - the Region on which the returned Execution will execute functions
        Returns:
        an Execution object that can be used to execute a data dependent function on the specified Region
        Throws:
        FunctionException - if the region passed in is null
        Since:
        GemFire 6.0
      • onServer

        public static Execution onServer​(Pool pool)
        Returns an Execution object that can be used to execute a data independent function on a server in the provided Pool.

        If the server goes down while dispatching or executing the function, an Exception will be thrown.

        Parameters:
        pool - from which to chose a server for execution
        Returns:
        an Execution object that can be used to execute a data independent function on a server in the provided Pool
        Throws:
        FunctionException - if Pool instance passed in is null
        Since:
        GemFire 6.0
      • onServers

        public static Execution onServers​(Pool pool)
        Returns an Execution object that can be used to execute a data independent function on all the servers in the provided Pool. If one of the servers goes down while dispatching or executing the function on the server, an Exception will be thrown.
        Parameters:
        pool - the set of servers to execute the function
        Returns:
        an Execution object that can be used to execute a data independent function on all the servers in the provided Pool
        Throws:
        FunctionException - if Pool instance passed in is null
        Since:
        GemFire 6.0
      • onServer

        public static Execution onServer​(RegionService regionService)
        Returns an Execution object that can be used to execute a data independent function on a server that the given cache is connected to.

        If the server goes down while dispatching or executing the function, an Exception will be thrown.

        Parameters:
        regionService - obtained from ClientCacheFactory.create() or ClientCache.createAuthenticatedView(Properties).
        Returns:
        an Execution object that can be used to execute a data independent function on a server that the given cache is connected to
        Throws:
        FunctionException - if cache is null, is not on a client, or it does not have a default pool
        Since:
        GemFire 6.5
      • onServers

        public static Execution onServers​(RegionService regionService)
        Returns an Execution object that can be used to execute a data independent function on all the servers that the given cache is connected to. If one of the servers goes down while dispatching or executing the function on the server, an Exception will be thrown.
        Parameters:
        regionService - obtained from ClientCacheFactory.create() or ClientCache.createAuthenticatedView(Properties).
        Returns:
        an Execution object that can be used to execute a data independent function on all the servers that the given cache is connected to
        Throws:
        FunctionException - if cache is null, is not on a client, or it does not have a default pool
        Since:
        GemFire 6.5
      • onMember

        public static Execution onMember​(DistributedMember distributedMember)
        Returns an Execution object that can be used to execute a data independent function on a DistributedMember. If the member is not found, executing the function will throw an Exception. If the member goes down while dispatching or executing the function on the member, an Exception will be thrown.
        Parameters:
        distributedMember - defines a member in the distributed system
        Returns:
        an Execution object that can be used to execute a data independent function on a DistributedMember
        Throws:
        FunctionException - if distributedMember is null
        Since:
        GemFire 7.0
      • onMembers

        public static Execution onMembers​(java.lang.String... groups)
        Returns an Execution object that can be used to execute a data independent function on all peer members. If the optional groups parameter is provided, function is executed on all members that belong to the provided groups.

        If one of the members goes down while dispatching or executing the function on the member, an Exception will be thrown.

        Parameters:
        groups - optional list of GemFire configuration property "groups" (see groups) on which to execute the function. Function will be executed on all members of each group
        Returns:
        an Execution object that can be used to execute a data independent function on all peer members
        Throws:
        FunctionException - if no members are found belonging to the provided groups
        Since:
        GemFire 7.0
      • onMembers

        public static Execution onMembers​(java.util.Set<DistributedMember> distributedMembers)
        Returns an Execution object that can be used to execute a data independent function on the set of DistributedMembers. If one of the members goes down while dispatching or executing the function, an Exception will be thrown.
        Parameters:
        distributedMembers - set of distributed members on which Function to be executed
        Returns:
        an Execution object that can be used to execute a data independent function on the set of DistributedMembers provided
        Throws:
        FunctionException - if distributedMembers is null
        Since:
        GemFire 7.0
      • onMember

        public static Execution onMember​(java.lang.String... groups)
        Returns an Execution object that can be used to execute a data independent function on one member of each group provided.
        Parameters:
        groups - list of GemFire configuration property "groups" (see groups) on which to execute the function. Function will be executed on one member of each group
        Returns:
        an Execution object that can be used to execute a data independent function on one member of each group provided
        Throws:
        FunctionException - if no members are found belonging to the provided groups
        Since:
        GemFire 7.0
      • getFunction

        public static Function getFunction​(java.lang.String functionId)
        Returns the Function defined by the functionId, returns null if no function is found for the specified functionId
        Parameters:
        functionId - a functionId
        Returns:
        the Function defined by the functionId or null if no function is found for the specified functionId
        Throws:
        FunctionException - if functionID passed is null
        Since:
        GemFire 6.0
      • unregisterFunction

        public static void unregisterFunction​(java.lang.String functionId)
        Unregisters the given Function with the FunctionService using Function.getId().

        Parameters:
        functionId - the ID of the function
        Throws:
        FunctionException - if function instance passed is null or Function.getId() returns null
        Since:
        GemFire 6.0
      • isRegistered

        public static boolean isRegistered​(java.lang.String functionId)
        Returns true if the function is registered to FunctionService
        Parameters:
        functionId - the ID of the function
        Returns:
        whether the function is registered to FunctionService
        Throws:
        FunctionException - if function instance passed is null or Function.getId() returns null
        Since:
        GemFire 6.0
      • getRegisteredFunctions

        public static java.util.Map<java.lang.String,​Function> getRegisteredFunctions()
        Returns all locally registered functions
        Returns:
        A view of registered functions as a Map of Function.getId() to Function
        Since:
        GemFire 6.0