Package org.apache.cassandra.diag
Class DiagnosticEventService
- java.lang.Object
-
- org.apache.cassandra.diag.DiagnosticEventService
-
- All Implemented Interfaces:
DiagnosticEventServiceMBean
public final class DiagnosticEventService extends java.lang.Object implements DiagnosticEventServiceMBean
Service for publishing and consumingDiagnosticEvent
s.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cleanup()
Removes all active subscribers.void
disableDiagnostics()
Kill switch for disabling all events immediately, without restarting the node.void
disableEventPersistence(java.lang.String eventClazz)
Stop storing events.void
enableEventPersistence(java.lang.String eventClazz)
Start storing events to make them available viaDiagnosticEventServiceMBean.readEvents(String, Long, int)
.<E extends DiagnosticEvent>
booleanhasSubscribers(java.lang.Class<E> event)
Indicates if anyConsumer
has been registered for the specified class of events.<E extends DiagnosticEvent,T extends java.lang.Enum<T>>
booleanhasSubscribers(java.lang.Class<E> event, T eventType)
Indicates if anyConsumer
has been registered for the specified class of events.static DiagnosticEventService
instance()
boolean
isDiagnosticsEnabled()
<E extends DiagnosticEvent>
booleanisEnabled(java.lang.Class<E> event)
Indicates if events are enabled for specified event class based onDatabaseDescriptor.diagnosticEventsEnabled()
andhasSubscribers(Class)
.<E extends DiagnosticEvent,T extends java.lang.Enum<T>>
booleanisEnabled(java.lang.Class<E> event, T eventType)
Indicates if events are enabled for specified event class based onDatabaseDescriptor.diagnosticEventsEnabled()
andhasSubscribers(Class, Enum)
.void
publish(DiagnosticEvent event)
Makes provided event available to all subscribers.java.util.SortedMap<java.lang.Long,java.util.Map<java.lang.String,java.io.Serializable>>
readEvents(java.lang.String eventClazz, java.lang.Long lastKey, int limit)
Retrieved all events of specified type starting with provided key.<E extends DiagnosticEvent>
voidsubscribe(java.lang.Class<E> event, java.util.function.Consumer<E> consumer)
Registers event handler for specified class of events.<E extends DiagnosticEvent,T extends java.lang.Enum<T>>
voidsubscribe(java.lang.Class<E> event, T eventType, java.util.function.Consumer<E> consumer)
Registers event handler for specified class of events.void
subscribeAll(java.util.function.Consumer<DiagnosticEvent> consumer)
Registers event handler for all DiagnosticEvents published from this point.<E extends DiagnosticEvent>
voidunsubscribe(java.lang.Class<E> event, java.util.function.Consumer<E> consumer)
De-registers event handler from receiving any further events.<E extends DiagnosticEvent>
voidunsubscribe(java.util.function.Consumer<E> consumer)
De-registers event handler from receiving any further events.
-
-
-
Method Detail
-
publish
public void publish(DiagnosticEvent event)
Makes provided event available to all subscribers.
-
subscribe
public <E extends DiagnosticEvent> void subscribe(java.lang.Class<E> event, java.util.function.Consumer<E> consumer)
Registers event handler for specified class of events.- Parameters:
event
- DiagnosticEvent class implementationconsumer
- Consumer for received events
-
subscribe
public <E extends DiagnosticEvent,T extends java.lang.Enum<T>> void subscribe(java.lang.Class<E> event, T eventType, java.util.function.Consumer<E> consumer)
Registers event handler for specified class of events.- Parameters:
event
- DiagnosticEvent class implementationconsumer
- Consumer for received events
-
subscribeAll
public void subscribeAll(java.util.function.Consumer<DiagnosticEvent> consumer)
Registers event handler for all DiagnosticEvents published from this point.- Parameters:
consumer
- Consumer for received events
-
unsubscribe
public <E extends DiagnosticEvent> void unsubscribe(java.util.function.Consumer<E> consumer)
De-registers event handler from receiving any further events.- Parameters:
consumer
- Consumer registered for receiving events
-
unsubscribe
public <E extends DiagnosticEvent> void unsubscribe(@Nullable java.lang.Class<E> event, java.util.function.Consumer<E> consumer)
De-registers event handler from receiving any further events.- Parameters:
event
- DiagnosticEvent class to unsubscribe fromconsumer
- Consumer registered for receiving events
-
hasSubscribers
public <E extends DiagnosticEvent> boolean hasSubscribers(java.lang.Class<E> event)
Indicates if anyConsumer
has been registered for the specified class of events.- Parameters:
event
- DiagnosticEvent class implementation
-
hasSubscribers
public <E extends DiagnosticEvent,T extends java.lang.Enum<T>> boolean hasSubscribers(java.lang.Class<E> event, T eventType)
Indicates if anyConsumer
has been registered for the specified class of events.- Parameters:
event
- DiagnosticEvent class implementationeventType
- Subscribed event type matched againstDiagnosticEvent.getType()
-
isEnabled
public <E extends DiagnosticEvent> boolean isEnabled(java.lang.Class<E> event)
Indicates if events are enabled for specified event class based onDatabaseDescriptor.diagnosticEventsEnabled()
andhasSubscribers(Class)
.- Parameters:
event
- DiagnosticEvent class implementation
-
isEnabled
public <E extends DiagnosticEvent,T extends java.lang.Enum<T>> boolean isEnabled(java.lang.Class<E> event, T eventType)
Indicates if events are enabled for specified event class based onDatabaseDescriptor.diagnosticEventsEnabled()
andhasSubscribers(Class, Enum)
.- Parameters:
event
- DiagnosticEvent class implementationeventType
- Subscribed event type matched againstDiagnosticEvent.getType()
-
instance
public static DiagnosticEventService instance()
-
cleanup
public void cleanup()
Removes all active subscribers. Should only be called from testing.
-
isDiagnosticsEnabled
public boolean isDiagnosticsEnabled()
- Specified by:
isDiagnosticsEnabled
in interfaceDiagnosticEventServiceMBean
-
disableDiagnostics
public void disableDiagnostics()
Description copied from interface:DiagnosticEventServiceMBean
Kill switch for disabling all events immediately, without restarting the node. Please edit cassandra.yaml for making this permanent.- Specified by:
disableDiagnostics
in interfaceDiagnosticEventServiceMBean
-
readEvents
public java.util.SortedMap<java.lang.Long,java.util.Map<java.lang.String,java.io.Serializable>> readEvents(java.lang.String eventClazz, java.lang.Long lastKey, int limit)
Description copied from interface:DiagnosticEventServiceMBean
Retrieved all events of specified type starting with provided key. Result will be sorted chronologically.- Specified by:
readEvents
in interfaceDiagnosticEventServiceMBean
- Parameters:
eventClazz
- fqn of event classlastKey
- ID of first event to retrievelimit
- number of results to return
-
enableEventPersistence
public void enableEventPersistence(java.lang.String eventClazz)
Description copied from interface:DiagnosticEventServiceMBean
Start storing events to make them available viaDiagnosticEventServiceMBean.readEvents(String, Long, int)
.- Specified by:
enableEventPersistence
in interfaceDiagnosticEventServiceMBean
-
disableEventPersistence
public void disableEventPersistence(java.lang.String eventClazz)
Description copied from interface:DiagnosticEventServiceMBean
Stop storing events.- Specified by:
disableEventPersistence
in interfaceDiagnosticEventServiceMBean
-
-