Class BrokerVersionFilter

java.lang.Object
org.apache.pulsar.broker.loadbalance.extensions.filter.BrokerVersionFilter
All Implemented Interfaces:
BrokerFilter

public class BrokerVersionFilter extends Object implements BrokerFilter
Filter by broker version.
  • Field Details

  • Constructor Details

    • BrokerVersionFilter

      public BrokerVersionFilter()
  • Method Details

    • filterAsync

      public CompletableFuture<Map<String,BrokerLookupData>> filterAsync(Map<String,BrokerLookupData> brokers, org.apache.pulsar.common.naming.ServiceUnitId serviceUnit, LoadManagerContext context)
      From the given set of available broker candidates, filter those old brokers using the version numbers.
      Specified by:
      filterAsync in interface BrokerFilter
      Parameters:
      brokers - The currently available brokers that have not already been filtered.
      context - The load manager context.
      serviceUnit - The current serviceUnit.
      Returns:
      Filtered broker list.
    • getLatestVersionNumber

      public com.github.zafarkhaja.semver.Version getLatestVersionNumber(Map<String,BrokerLookupData> brokerMap) throws BrokerFilterBadVersionException
      Get the most recent broker version number from the broker lookup data of all the running brokers. The version number is from the build artifact in the pom and got added to the package when it was built by Maven
      Parameters:
      brokerMap - The BrokerId -> BrokerLookupData Map.
      Returns:
      The most recent broker version
      Throws:
      BrokerFilterBadVersionException - If the most recent version is undefined (e.g., a bad broker version was encountered or a broker does not have a version string in its lookup data.
    • name

      public String name()
      Description copied from interface: BrokerFilter
      The broker filter name.
      Specified by:
      name in interface BrokerFilter