Class AbstractIpdMeterRegistry
java.lang.Object
com.atlassian.diagnostics.ipd.api.registry.AbstractIpdMeterRegistry
- All Implemented Interfaces:
IpdRegistry
- Direct Known Subclasses:
NoopIpdRegistry
Abstract implementation of
IpdRegistry that provides common functionality of managing IPD meters.- Since:
- 3.0.0
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionAbstractIpdMeterRegistry(MeterConfigurations meterConfigurations) AbstractIpdMeterRegistry(MeterConfigurations meterConfigurations, Map<MeterKey, IpdMeter> meters) -
Method Summary
Modifier and TypeMethodDescriptionRetrieves an `IpdMeter` by its `MeterKey`.Retrieves all keys of registered `IpdMeter` instances as an immutable set.getMeterKeys(String prefix) Retrieves all keys of registered `IpdMeter` instances with the given prefix as an immutable set.Retrieves all registered `IpdMeter` instances as an immutable set.Retrieves all registered `IpdMeter` instances with the given prefix as an immutable set.<T extends IpdMeter>
Tregister(MeterFactory<T> factory, String name, MeterTag... tags) returns an `IpdMeter` of type 'T' with the given name and tags.voidRemoves the `IpdMeter` associated with the given `MeterKey`.voidRemoves all registered `IpdMeter` instances.voidRemoved all registered `IpdMeter` instances with the given prefix and tags.voidremoveAllWithAnyTag(String prefix, Set<MeterTag> tags) Removes all registered `IpdMeter` instances that match prefix and any of the given tags.voidRemoves all registered `IpdMeter` instances with the given prefix that also match the given predicate.voidRemoves all registered `IpdMeter` instances that match the given predicate.voidIterates through all registered metrics matching prefix and removes those that do not match the predicate.voidshutdown()Shuts down the registry and unregisters all meters.voidUnregisters all disabled metrics.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.atlassian.diagnostics.ipd.api.registry.IpdRegistry
addStats, addStats, counter, custom, custom, incrementCounter, setValue, stats, statsCopy, value, valueAndStats
-
Field Details
-
meterConfigurations
-
meters
-
-
Constructor Details
-
AbstractIpdMeterRegistry
-
AbstractIpdMeterRegistry
public AbstractIpdMeterRegistry(MeterConfigurations meterConfigurations, Map<MeterKey, IpdMeter> meters)
-
-
Method Details
-
register
Description copied from interface:IpdRegistryreturns 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:
registerin interfaceIpdRegistry- Type Parameters:
T- the type of the meter- Parameters:
factory- the factory to use to create the meter instancename- the name of the metertags- the tags of the meter- Returns:
- existing or the newly registered `IpdMeter`
-
get
Description copied from interface:IpdRegistryRetrieves an `IpdMeter` by its `MeterKey`.- Specified by:
getin interfaceIpdRegistry- 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
Description copied from interface:IpdRegistryRemoves 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:
removein interfaceIpdRegistry- Parameters:
meterKey- the key of the meter to remove
-
removeAll
public void removeAll()Description copied from interface:IpdRegistryRemoves all registered `IpdMeter` instances.- Specified by:
removeAllin interfaceIpdRegistry
-
removeAll
Description copied from interface:IpdRegistryRemoved 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:
removeAllin interfaceIpdRegistry- Parameters:
prefix- the prefix to filter bytags- the tags to filter by
-
removeAllWithAnyTag
Description copied from interface:IpdRegistryRemoves 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:
removeAllWithAnyTagin interfaceIpdRegistry- Parameters:
prefix- the prefix to filter bytags- the tags to filter by
-
removeIf
Description copied from interface:IpdRegistryRemoves all registered `IpdMeter` instances that match the given predicate.- Specified by:
removeIfin interfaceIpdRegistry- Parameters:
predicate- the predicate to filter by
-
removeIf
Description copied from interface:IpdRegistryRemoves all registered `IpdMeter` instances with the given prefix that also match the given predicate.- Specified by:
removeIfin interfaceIpdRegistry- Parameters:
prefix- the prefix to filter bypredicate- the predicate to filter by
-
retainIf
Description copied from interface:IpdRegistryIterates 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:
retainIfin interfaceIpdRegistry- Parameters:
prefix- the prefix to filter bypredicate- the predicate to filter by
-
getMeters
Description copied from interface:IpdRegistryRetrieves all registered `IpdMeter` instances as an immutable set.- Specified by:
getMetersin interfaceIpdRegistry- Returns:
- an immutable set of all registered `IpdMeter` instances
-
getMeters
Description copied from interface:IpdRegistryRetrieves all registered `IpdMeter` instances with the given prefix as an immutable set.- Specified by:
getMetersin interfaceIpdRegistry- Parameters:
prefix- the prefix to filter by- Returns:
- an immutable set of all registered `IpdMeter` instances with the given prefix
-
getMeterKeys
Description copied from interface:IpdRegistryRetrieves all keys of registered `IpdMeter` instances as an immutable set.- Specified by:
getMeterKeysin interfaceIpdRegistry- Returns:
- an immutable set of all registered meter keys
-
getMeterKeys
Description copied from interface:IpdRegistryRetrieves all keys of registered `IpdMeter` instances with the given prefix as an immutable set.- Specified by:
getMeterKeysin interfaceIpdRegistry- 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:IpdRegistryUnregisters 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:
unregisterAllDisabledMetricsin interfaceIpdRegistry
-
shutdown
public void shutdown()Description copied from interface:IpdRegistryShuts down the registry and unregisters all meters.- Specified by:
shutdownin interfaceIpdRegistry
-