Class MonitorActivity
java.lang.Object
org.apache.nifi.components.AbstractConfigurableComponent
org.apache.nifi.processor.AbstractSessionFactoryProcessor
org.apache.nifi.processor.AbstractProcessor
org.apache.nifi.processors.standard.MonitorActivity
- All Implemented Interfaces:
org.apache.nifi.components.ConfigurableComponent,org.apache.nifi.processor.Processor
@SideEffectFree
@TriggerSerially
@TriggerWhenEmpty
@InputRequirement(INPUT_REQUIRED)
@Tags({"monitor","flow","active","inactive","activity","detection"})
@CapabilityDescription("Monitors the flow for activity and sends out an indicator when the flow has not had any data for some specified amount of time and again when the flow\'s activity is restored")
@WritesAttribute(attribute="inactivityStartMillis",description="The time at which Inactivity began, in the form of milliseconds since Epoch") @WritesAttribute(attribute="inactivityDurationMillis",description="The number of milliseconds that the inactivity has spanned")
@Stateful(scopes={CLUSTER,LOCAL},
description="MonitorActivity stores the last timestamp at each node as state, so that it can examine activity at cluster wide. If \'Copy Attribute\' is set to true, then flow file attributes are also persisted. In local scope, it stores last known activity timestamp if the flow is inactive.")
public class MonitorActivity
extends org.apache.nifi.processor.AbstractProcessor
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classprivate classprivate static class -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final org.apache.nifi.components.PropertyDescriptorprivate final AtomicBooleanstatic final org.apache.nifi.components.PropertyDescriptorstatic final org.apache.nifi.components.PropertyDescriptorstatic final org.apache.nifi.components.PropertyDescriptorprivate final AtomicLongprivate final AtomicLongstatic final org.apache.nifi.components.PropertyDescriptorprivate static final List<org.apache.nifi.components.PropertyDescriptor> static final org.apache.nifi.processor.Relationshipstatic final org.apache.nifi.processor.Relationshipstatic final org.apache.nifi.processor.Relationshipprivate static final Set<org.apache.nifi.processor.Relationship> static final org.apache.nifi.components.AllowableValuestatic final org.apache.nifi.components.AllowableValuestatic final org.apache.nifi.components.PropertyDescriptorstatic final org.apache.nifi.components.PropertyDescriptorstatic final org.apache.nifi.components.AllowableValuestatic final org.apache.nifi.components.AllowableValuestatic final Stringstatic final Stringstatic final org.apache.nifi.components.PropertyDescriptorstatic final org.apache.nifi.components.PropertyDescriptorprivate final AtomicBoolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidclearInactivityFlag(org.apache.nifi.components.state.StateManager stateManager) protected final longSet<org.apache.nifi.processor.Relationship> protected longprotected List<org.apache.nifi.components.PropertyDescriptor> private booleanisClusterScope(org.apache.nifi.processor.ProcessContext context, boolean logInvalidConfig) private booleanisReconnectedToCluster(boolean isConnectedToCluster) Will return true when the last known state is "not connected" and the current state is "connected".protected longvoidonScheduled(org.apache.nifi.processor.ProcessContext context) voidonStopped(org.apache.nifi.processor.ProcessContext context) voidonTrigger(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session) private voidonTriggerActiveFlow(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session, boolean wasActive, boolean isClusterScope, long inactivityStartMillis) private voidonTriggerInactiveFlow(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session, boolean isClusterScope, long lastActivity) private voidsendActivationMarker(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session, Map<String, String> attributes, long inactivityStartMillis, org.apache.nifi.logging.ComponentLog logger) private voidsendInactivityMarker(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session, long inactivityStartMillis, org.apache.nifi.logging.ComponentLog logger) private voidsetInactivityFlag(org.apache.nifi.components.state.StateManager stateManager) private booleanshouldReportOnlyOnPrimary(boolean isClusterScope, org.apache.nifi.processor.ProcessContext context) private booleanshouldThisNodeReport(boolean isClusterScope, org.apache.nifi.processor.ProcessContext context) private voidsynchronizeState(org.apache.nifi.processor.ProcessContext context) private StringtryLoadLastSuccessfulTransfer(org.apache.nifi.processor.ProcessContext context) Methods inherited from class org.apache.nifi.processor.AbstractProcessor
onTriggerMethods inherited from class org.apache.nifi.processor.AbstractSessionFactoryProcessor
getControllerServiceLookup, getIdentifier, getLogger, getNodeTypeProvider, init, initialize, isConfigurationRestored, isScheduled, toString, updateConfiguredRestoredTrue, updateScheduledFalse, updateScheduledTrueMethods inherited from class org.apache.nifi.components.AbstractConfigurableComponent
customValidate, equals, getPropertyDescriptor, getPropertyDescriptors, getSupportedDynamicPropertyDescriptor, hashCode, onPropertyModified, validateMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.nifi.components.ConfigurableComponent
getPropertyDescriptor, getPropertyDescriptors, onPropertyModified, validateMethods inherited from interface org.apache.nifi.processor.Processor
isStateful, migrateProperties, migrateRelationships
-
Field Details
-
STATE_KEY_COMMON_FLOW_ACTIVITY_INFO
- See Also:
-
STATE_KEY_LOCAL_FLOW_ACTIVITY_INFO
- See Also:
-
SCOPE_NODE
public static final org.apache.nifi.components.AllowableValue SCOPE_NODE -
SCOPE_CLUSTER
public static final org.apache.nifi.components.AllowableValue SCOPE_CLUSTER -
REPORT_NODE_ALL
public static final org.apache.nifi.components.AllowableValue REPORT_NODE_ALL -
REPORT_NODE_PRIMARY
public static final org.apache.nifi.components.AllowableValue REPORT_NODE_PRIMARY -
THRESHOLD
public static final org.apache.nifi.components.PropertyDescriptor THRESHOLD -
CONTINUALLY_SEND_MESSAGES
public static final org.apache.nifi.components.PropertyDescriptor CONTINUALLY_SEND_MESSAGES -
ACTIVITY_RESTORED_MESSAGE
public static final org.apache.nifi.components.PropertyDescriptor ACTIVITY_RESTORED_MESSAGE -
WAIT_FOR_ACTIVITY
public static final org.apache.nifi.components.PropertyDescriptor WAIT_FOR_ACTIVITY -
RESET_STATE_ON_RESTART
public static final org.apache.nifi.components.PropertyDescriptor RESET_STATE_ON_RESTART -
INACTIVITY_MESSAGE
public static final org.apache.nifi.components.PropertyDescriptor INACTIVITY_MESSAGE -
COPY_ATTRIBUTES
public static final org.apache.nifi.components.PropertyDescriptor COPY_ATTRIBUTES -
MONITORING_SCOPE
public static final org.apache.nifi.components.PropertyDescriptor MONITORING_SCOPE -
REPORTING_NODE
public static final org.apache.nifi.components.PropertyDescriptor REPORTING_NODE -
PROPERTY_DESCRIPTORS
-
REL_SUCCESS
public static final org.apache.nifi.processor.Relationship REL_SUCCESS -
REL_INACTIVE
public static final org.apache.nifi.processor.Relationship REL_INACTIVE -
REL_ACTIVITY_RESTORED
public static final org.apache.nifi.processor.Relationship REL_ACTIVITY_RESTORED -
RELATIONSHIPS
-
connectedWhenLastTriggered
-
lastInactiveMessage
-
inactivityStartMillis
-
wasActive
-
localFlowActivityInfo
-
-
Constructor Details
-
MonitorActivity
public MonitorActivity()
-
-
Method Details
-
getRelationships
- Specified by:
getRelationshipsin interfaceorg.apache.nifi.processor.Processor- Overrides:
getRelationshipsin classorg.apache.nifi.processor.AbstractSessionFactoryProcessor
-
getSupportedPropertyDescriptors
- Overrides:
getSupportedPropertyDescriptorsin classorg.apache.nifi.components.AbstractConfigurableComponent
-
onScheduled
@OnScheduled public void onScheduled(org.apache.nifi.processor.ProcessContext context) -
onStopped
@OnStopped public void onStopped(org.apache.nifi.processor.ProcessContext context) -
onTrigger
public void onTrigger(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session) - Specified by:
onTriggerin classorg.apache.nifi.processor.AbstractProcessor
-
nowMillis
protected long nowMillis() -
getStartupTime
protected long getStartupTime() -
getLastSuccessfulTransfer
protected final long getLastSuccessfulTransfer() -
tryLoadLastSuccessfulTransfer
-
synchronizeState
private void synchronizeState(org.apache.nifi.processor.ProcessContext context) -
onTriggerInactiveFlow
private void onTriggerInactiveFlow(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session, boolean isClusterScope, long lastActivity) -
onTriggerActiveFlow
private void onTriggerActiveFlow(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session, boolean wasActive, boolean isClusterScope, long inactivityStartMillis) -
setInactivityFlag
private void setInactivityFlag(org.apache.nifi.components.state.StateManager stateManager) -
clearInactivityFlag
private void clearInactivityFlag(org.apache.nifi.components.state.StateManager stateManager) -
isClusterScope
private boolean isClusterScope(org.apache.nifi.processor.ProcessContext context, boolean logInvalidConfig) -
shouldReportOnlyOnPrimary
private boolean shouldReportOnlyOnPrimary(boolean isClusterScope, org.apache.nifi.processor.ProcessContext context) -
isReconnectedToCluster
private boolean isReconnectedToCluster(boolean isConnectedToCluster) Will return true when the last known state is "not connected" and the current state is "connected". This might happen when during last @OnTrigger the node was not connected, but currently it is (reconnection); or when the processor is triggered first time (initial connection).
This second case is due to safety reasons: it is possible that during the first trigger the node is not connected to the cluster thus the default value of the #connected attribute is false and stays as false until it's proven otherwise.- Parameters:
isConnectedToCluster- Current state of the connection.- Returns:
- The node connected between the last trigger and the current one.
-
shouldThisNodeReport
private boolean shouldThisNodeReport(boolean isClusterScope, org.apache.nifi.processor.ProcessContext context) -
sendInactivityMarker
private void sendInactivityMarker(org.apache.nifi.processor.ProcessContext context, org.apache.nifi.processor.ProcessSession session, long inactivityStartMillis, org.apache.nifi.logging.ComponentLog logger) -
sendActivationMarker
-