Class FunctionRuntimeManager

java.lang.Object
org.apache.pulsar.functions.worker.FunctionRuntimeManager
All Implemented Interfaces:
AutoCloseable

public class FunctionRuntimeManager extends Object implements AutoCloseable
This class managers all aspects of functions assignments and running of function assignments for this worker.
  • Constructor Details

    • FunctionRuntimeManager

      public FunctionRuntimeManager(org.apache.pulsar.functions.worker.WorkerConfig workerConfig, PulsarWorkerService workerService, org.apache.distributedlog.api.namespace.Namespace dlogNamespace, MembershipManager membershipManager, org.apache.pulsar.functions.worker.ConnectorsManager connectorsManager, org.apache.pulsar.functions.worker.FunctionsManager functionsManager, FunctionMetaDataManager functionMetaDataManager, WorkerStatsManager workerStatsManager, ErrorNotifier errorNotifier) throws Exception
      Throws:
      Exception
  • Method Details

    • initialize

      public org.apache.pulsar.client.api.MessageId initialize()
      Initializes the FunctionRuntimeManager. Does the following: 1. Consume all existing assignments to establish existing/latest set of assignments 2. After current assignments are read, assignments belonging to this worker will be processed
      Returns:
      the message id of the message processed during init phase
    • getCurrentAssignments

      public Map<String,Map<String,org.apache.pulsar.functions.proto.Function.Assignment>> getCurrentAssignments()
      Get current assignments.
      Returns:
      a map of current assignments in the following format {workerId : {FullyQualifiedInstanceId : Assignment}}
    • findFunctionAssignment

      public org.apache.pulsar.functions.proto.Function.Assignment findFunctionAssignment(String tenant, String namespace, String functionName, int instanceId)
      Find a assignment of a function.
      Parameters:
      tenant - the tenant the function belongs to
      namespace - the namespace the function belongs to
      functionName - the function name
      Returns:
      the assignment of the function
    • findFunctionAssignments

      public Collection<org.apache.pulsar.functions.proto.Function.Assignment> findFunctionAssignments(String tenant, String namespace, String functionName)
      Find all instance assignments of function.
      Parameters:
      tenant -
      namespace -
      functionName -
      Returns:
    • findFunctionAssignments

      public static Collection<org.apache.pulsar.functions.proto.Function.Assignment> findFunctionAssignments(String tenant, String namespace, String functionName, Map<String,Map<String,org.apache.pulsar.functions.proto.Function.Assignment>> workerIdToAssignments)
    • removeAssignments

      public void removeAssignments(Collection<org.apache.pulsar.functions.proto.Function.Assignment> assignments)
      Removes a collection of assignments.
      Parameters:
      assignments - assignments to remove
    • restartFunctionInstance

      public void restartFunctionInstance(String tenant, String namespace, String functionName, int instanceId, URI uri) throws Exception
      Throws:
      Exception
    • restartFunctionInstances

      public void restartFunctionInstances(String tenant, String namespace, String functionName) throws Exception
      Throws:
      Exception
    • stopAllOwnedFunctions

      public void stopAllOwnedFunctions()
      It stops all functions instances owned by current worker.
      Throws:
      Exception
    • getFunctionInstanceStats

      public org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl getFunctionInstanceStats(String tenant, String namespace, String functionName, int instanceId, URI uri)
      Get stats of a function instance. If this worker is not running the function instance.
      Parameters:
      tenant - the tenant the function belongs to
      namespace - the namespace the function belongs to
      functionName - the function name
      instanceId - the function instance id
      Returns:
      jsonObject containing stats for instance
    • getFunctionStats

      public org.apache.pulsar.common.policies.data.FunctionStatsImpl getFunctionStats(String tenant, String namespace, String functionName, URI uri) throws org.apache.pulsar.client.admin.PulsarAdminException
      Get stats of all function instances.
      Parameters:
      tenant - the tenant the function belongs to
      namespace - the namespace the function belongs to
      functionName - the function name
      Returns:
      a list of function statuses
      Throws:
      org.apache.pulsar.client.admin.PulsarAdminException
    • processAssignmentMessage

      public void processAssignmentMessage(org.apache.pulsar.client.api.Message<byte[]> msg)
    • processAssignment

      public void processAssignment(org.apache.pulsar.functions.proto.Function.Assignment newAssignment)
      Process an assignment update from the assignment topic.
      Parameters:
      newAssignment - the assignment
    • deleteAssignment

      public void deleteAssignment(String fullyQualifiedInstanceId)
    • getFunctionRuntimeInfos

      public Map<String,FunctionRuntimeInfo> getFunctionRuntimeInfos()
    • close

      public void close() throws Exception
      Specified by:
      close in interface AutoCloseable
      Throws:
      Exception
    • getFunctionRuntimeInfo

      public FunctionRuntimeInfo getFunctionRuntimeInfo(String fullyQualifiedInstanceId)
    • getMyInstances

      public int getMyInstances()
      Methods for metrics.