Class AbstractIpdMeterRegistry

java.lang.Object
com.atlassian.diagnostics.ipd.api.registry.AbstractIpdMeterRegistry
All Implemented Interfaces:
IpdRegistry
Direct Known Subclasses:
NoopIpdRegistry

public abstract class AbstractIpdMeterRegistry extends Object implements IpdRegistry
Abstract implementation of IpdRegistry that provides common functionality of managing IPD meters.
Since:
3.0.0
  • Field Details

  • Constructor Details

  • Method Details

    • register

      public <T extends IpdMeter> T register(MeterFactory<T> factory, String name, MeterTag... tags)
      Description copied from interface: IpdRegistry
      returns an `IpdMeter` of type 'T' with the given name and tags. If a meter with the given name and tags does not exist, a new one will be created using the provided factory.
      Specified by:
      register in interface IpdRegistry
      Type Parameters:
      T - the type of the meter
      Parameters:
      factory - the factory to use to create the meter instance
      name - the name of the meter
      tags - the tags of the meter
      Returns:
      existing or the newly registered `IpdMeter`
    • get

      @Nullable public IpdMeter get(MeterKey meterKey)
      Description copied from interface: IpdRegistry
      Retrieves an `IpdMeter` by its `MeterKey`.
      Specified by:
      get in interface IpdRegistry
      Parameters:
      meterKey - the key of the meter to retrieve
      Returns:
      the `IpdMeter` associated with the given key, or `null` if no such meter exists
    • remove

      public void remove(MeterKey meterKey)
      Description copied from interface: IpdRegistry
      Removes the `IpdMeter` associated with the given `MeterKey`. Does nothing if no such meter exists.

      The existing instance of IpdMeter will be closed. See IpdMeter.close().

      Specified by:
      remove in interface IpdRegistry
      Parameters:
      meterKey - the key of the meter to remove
    • removeAll

      public void removeAll()
      Description copied from interface: IpdRegistry
      Removes all registered `IpdMeter` instances.
      Specified by:
      removeAll in interface IpdRegistry
    • removeAll

      public void removeAll(String prefix, MeterTag... tags)
      Description copied from interface: IpdRegistry
      Removed all registered `IpdMeter` instances with the given prefix and tags.

      If any of the tags are not present in the meter, it will not be removed, but any additional tags in the meter will not prevent it from being removed.

      Specified by:
      removeAll in interface IpdRegistry
      Parameters:
      prefix - the prefix to filter by
      tags - the tags to filter by
    • removeAllWithAnyTag

      public void removeAllWithAnyTag(String prefix, Set<MeterTag> tags)
      Description copied from interface: IpdRegistry
      Removes all registered `IpdMeter` instances that match prefix and any of the given tags.

      If none of the tags are present in the meter, it will not be removed.

      Useful for removing a few meters with different tags, but the same prefix. For example, removing user directory metrics:

               removeAllWithAnyTag("user.directory",
                    Set.of(
                        MeterTag.of("name", "ldap"),
                        MeterTag.of("name", "crowd")));
           
      This will remove all meters with prefix "user.directory" and tags "name=ldap" or "name=crowd", but not "name=my_directory".
      Specified by:
      removeAllWithAnyTag in interface IpdRegistry
      Parameters:
      prefix - the prefix to filter by
      tags - the tags to filter by
    • removeIf

      public void removeIf(Predicate<IpdMeter> predicate)
      Description copied from interface: IpdRegistry
      Removes all registered `IpdMeter` instances that match the given predicate.
      Specified by:
      removeIf in interface IpdRegistry
      Parameters:
      predicate - the predicate to filter by
    • removeIf

      public void removeIf(String prefix, Predicate<IpdMeter> predicate)
      Description copied from interface: IpdRegistry
      Removes all registered `IpdMeter` instances with the given prefix that also match the given predicate.
      Specified by:
      removeIf in interface IpdRegistry
      Parameters:
      prefix - the prefix to filter by
      predicate - the predicate to filter by
    • retainIf

      public void retainIf(String prefix, Predicate<IpdMeter> predicate)
      Description copied from interface: IpdRegistry
      Iterates through all registered metrics matching prefix and removes those that do not match the predicate. For example, removing user directory metrics:
           retainIf("user.directory",
               meter -> "ldap".equals(meter.getKey().getTag("name")));
       
      After this call, meters that match "user.directory" but don't have tag "name=ldap" will be removed.
      Specified by:
      retainIf in interface IpdRegistry
      Parameters:
      prefix - the prefix to filter by
      predicate - the predicate to filter by
    • getMeters

      public Collection<IpdMeter> getMeters()
      Description copied from interface: IpdRegistry
      Retrieves all registered `IpdMeter` instances as an immutable set.
      Specified by:
      getMeters in interface IpdRegistry
      Returns:
      an immutable set of all registered `IpdMeter` instances
    • getMeters

      public Collection<IpdMeter> getMeters(String prefix)
      Description copied from interface: IpdRegistry
      Retrieves all registered `IpdMeter` instances with the given prefix as an immutable set.
      Specified by:
      getMeters in interface IpdRegistry
      Parameters:
      prefix - the prefix to filter by
      Returns:
      an immutable set of all registered `IpdMeter` instances with the given prefix
    • getMeterKeys

      public Set<MeterKey> getMeterKeys()
      Description copied from interface: IpdRegistry
      Retrieves all keys of registered `IpdMeter` instances as an immutable set.
      Specified by:
      getMeterKeys in interface IpdRegistry
      Returns:
      an immutable set of all registered meter keys
    • getMeterKeys

      public Set<MeterKey> getMeterKeys(String prefix)
      Description copied from interface: IpdRegistry
      Retrieves all keys of registered `IpdMeter` instances with the given prefix as an immutable set.
      Specified by:
      getMeterKeys in interface IpdRegistry
      Parameters:
      prefix - the prefix to filter by
      Returns:
      an immutable set of all registered meter keys with the given prefix
    • unregisterAllDisabledMetrics

      public void unregisterAllDisabledMetrics()
      Description copied from interface: IpdRegistry
      Unregisters all disabled metrics.

      This method iterates through all registered `IpdMeter` instances and unregisters from JMX those that are disabled. Meters are considered disabled if their `IpdMeter#isEnabled` method returns `false`.

      Specified by:
      unregisterAllDisabledMetrics in interface IpdRegistry
    • shutdown

      public void shutdown()
      Description copied from interface: IpdRegistry
      Shuts down the registry and unregisters all meters.
      Specified by:
      shutdown in interface IpdRegistry