BootstrappingFunction (Apache Geode 1.15.4)

org.apache.geode.modules.util

## Class BootstrappingFunction

- java.lang.Object
- - org.apache.geode.modules.util.BootstrappingFunction

- All Implemented Interfaces:
    Serializable, Function, DataSerializable, org.apache.geode.distributed.internal.MembershipListener, Identifiable

      public class BootstrappingFunction
      extends Object
      implements Function, org.apache.geode.distributed.internal.MembershipListener, DataSerializable

  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.geode.DataSerializable

      `DataSerializable.Replaceable`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `ID`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BootstrappingFunction()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object obj)`
    `void` | `execute(FunctionContext context)` The method which contains the logic to be executed.
    `void` | `fromData(DataInput in)` Reads the state of this object as primitive data from the given `DataInput`.
    `String` | `getId()` Return a unique function identifier, used to register the function with `FunctionService`
    `Collection<ResourcePermission>` | `getRequiredPermissions(String regionName)` Returns the list of ResourcePermission this function requires.
    `int` | `hashCode()`
    `boolean` | `hasResult()` Specifies whether the function sends results while executing.
    `boolean` | `isHA()` Specifies whether the function is eligible for re-execution (in case of failure).
    `protected boolean` | `isLocator(Cache cache)`
    `void` | `memberDeparted(org.apache.geode.distributed.internal.DistributionManager distributionManager, org.apache.geode.distributed.internal.membership.InternalDistributedMember id, boolean crashed)`
    `void` | `memberJoined(org.apache.geode.distributed.internal.DistributionManager distributionManager, org.apache.geode.distributed.internal.membership.InternalDistributedMember id)`
    `void` | `memberSuspect(org.apache.geode.distributed.internal.DistributionManager distributionManager, org.apache.geode.distributed.internal.membership.InternalDistributedMember id, org.apache.geode.distributed.internal.membership.InternalDistributedMember whoSuspected, String reason)`
    `boolean` | `optimizeForWrite()` Return true to indicate to GemFire the method requires optimization for writing the targeted `FunctionService.onRegion(org.apache.geode.cache.Region)` and any associated routing objects.
    `void` | `quorumLost(org.apache.geode.distributed.internal.DistributionManager distributionManager, Set<org.apache.geode.distributed.internal.membership.InternalDistributedMember> internalDistributedMembers, List<org.apache.geode.distributed.internal.membership.InternalDistributedMember> internalDistributedMembers2)`
    `protected void` | `registerFunctions()`
    `void` | `toData(DataOutput out)` Writes the state of this object as primitive data to the given `DataOutput`.
    `protected Cache` | `verifyCacheExists()`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.geode.cache.execute.Function

      `getRequiredPermissions`

    - ### Methods inherited from interface org.apache.geode.lang.Identifiable

      `exists, find, remove`

- - ### Field Detail

    - #### ID

          public static final String ID

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### BootstrappingFunction

          public BootstrappingFunction()

  - ### Method Detail

    - #### execute

          public void execute(FunctionContext context)

      Description copied from interface: `Function`
      The method which contains the logic to be executed. This method should be thread safe and may be invoked more than once on a given member for a single `Execution`. The context provided to this function is the one which was built using Execution. The contexts can be data dependent or data-independent so user should check to see if the context provided in parameter is instance of `RegionFunctionContext`.
      Specified by:
        `execute` in interface `Function`
      Parameters:
        `context` - as created by `Execution`

    - #### isLocator

          protected boolean isLocator(Cache cache)

    - #### verifyCacheExists

          protected Cache verifyCacheExists()

    - #### getRequiredPermissions

          public Collection<ResourcePermission> getRequiredPermissions(String regionName)

      Description copied from interface: `Function`
      Returns the list of ResourcePermission this function requires.

      By default, functions require DATA:WRITE permission. If your function requires other permissions, you will need to override this method.

      Please be as specific as possible when you set the required permissions for your function e.g. if your function reads from a region, it would be good to include the region name in your permission. It's better to return "DATA:READ:regionName" as the required permission other than "DATA:READ", because the latter means only users with read permission on ALL regions can execute your function.

      All the permissions returned from this method will be ANDed together.

      Specified by:
        `getRequiredPermissions` in interface `Function`
      Parameters:
        `regionName` - the region this function will be executed on. The regionName is optional and will only be present when the function is executed by an onRegion() executor. In other cases, it will be null. This method returns permissions appropriate to the context, independent of the presence of the regionName parameter.
      Returns:
        a collection of `ResourcePermission`s indicating the permissions required to execute the function.

    - #### registerFunctions

          protected void registerFunctions()

    - #### getId

          public String getId()

      Description copied from interface: `Function`
      Return a unique function identifier, used to register the function with `FunctionService`
      Specified by:
        `getId` in interface `Function`
      Specified by:
        `getId` in interface `Identifiable`
      Returns:
        string identifying this function

    - #### hasResult

          public boolean hasResult()

      Description copied from interface: `Function`
      Specifies whether the function sends results while executing. The method returns false if no result is expected.

      If this method returns false, `ResultCollector.getResult()` throws `FunctionException`.

      If this method returns true, `ResultCollector.getResult()` blocks and waits for the result of function execution

      Specified by:
        `hasResult` in interface `Function`
      Returns:
        whether this function returns a Result back to the caller.

    - #### isHA

          public boolean isHA()

      Description copied from interface: `Function`
      Specifies whether the function is eligible for re-execution (in case of failure).
      Specified by:
        `isHA` in interface `Function`
      Returns:
        whether the function is eligible for re-execution.
      See Also:
        `FunctionContext.isPossibleDuplicate()`

    - #### optimizeForWrite

          public boolean optimizeForWrite()

      Description copied from interface: `Function`

      Return true to indicate to GemFire the method requires optimization for writing the targeted `FunctionService.onRegion(org.apache.geode.cache.Region)` and any associated routing objects.

      Returning false will optimize for read behavior on the targeted `FunctionService.onRegion(org.apache.geode.cache.Region)` and any associated routing objects.

      This method is only consulted when Region passed to FunctionService#onRegion(org.apache.geode.cache.Region) is a partitioned region

      Specified by:
        `optimizeForWrite` in interface `Function`
      Returns:
        false if the function is read only, otherwise returns true
      See Also:
        `FunctionService`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### equals

          public boolean equals(Object obj)

      Overrides:
        `equals` in class `Object`

    - #### memberDeparted

          public void memberDeparted(org.apache.geode.distributed.internal.DistributionManager distributionManager,
                                     org.apache.geode.distributed.internal.membership.InternalDistributedMember id,
                                     boolean crashed)

      Specified by:
        `memberDeparted` in interface `org.apache.geode.distributed.internal.MembershipListener`

    - #### memberJoined

          public void memberJoined(org.apache.geode.distributed.internal.DistributionManager distributionManager,
                                   org.apache.geode.distributed.internal.membership.InternalDistributedMember id)

      Specified by:
        `memberJoined` in interface `org.apache.geode.distributed.internal.MembershipListener`

    - #### memberSuspect

          public void memberSuspect(org.apache.geode.distributed.internal.DistributionManager distributionManager,
                                    org.apache.geode.distributed.internal.membership.InternalDistributedMember id,
                                    org.apache.geode.distributed.internal.membership.InternalDistributedMember whoSuspected,
                                    String reason)

      Specified by:
        `memberSuspect` in interface `org.apache.geode.distributed.internal.MembershipListener`

    - #### quorumLost

          public void quorumLost(org.apache.geode.distributed.internal.DistributionManager distributionManager,
                                 Set<org.apache.geode.distributed.internal.membership.InternalDistributedMember> internalDistributedMembers,
                                 List<org.apache.geode.distributed.internal.membership.InternalDistributedMember> internalDistributedMembers2)

      Specified by:
        `quorumLost` in interface `org.apache.geode.distributed.internal.MembershipListener`

    - #### toData

          public void toData(DataOutput out)
                      throws IOException

      Description copied from interface: `DataSerializable`
      Writes the state of this object as primitive data to the given `DataOutput`.

      Since 5.7 it is possible for any method call to the specified `DataOutput` to throw `GemFireRethrowable`. It should not be caught by user code. If it is it must be rethrown.

      Specified by:
        `toData` in interface `DataSerializable`
      Parameters:
        `out` - the `DataOutput` to write to
      Throws:
        `IOException` - A problem occurs while writing to `out`

    - #### fromData

          public void fromData(DataInput in)
                        throws IOException,
                               ClassNotFoundException

      Description copied from interface: `DataSerializable`
      Reads the state of this object as primitive data from the given `DataInput`.
      Specified by:
        `fromData` in interface `DataSerializable`
      Parameters:
        `in` - the `DataInput` to read from
      Throws:
        `IOException` - A problem occurs while reading from `in`
        `ClassNotFoundException` - A class could not be loaded while reading from `in`