Back Log Emitter service keeps track of all the process which have missed an SLA for a particular time and calculates backlog. Once a notification comes that process has completed, it updates the backlog. This service keeps on sending data to Graphite for each process which is missing SLA.
The emission and calculation of backlog are controlled by the below properties in startup.properties :
*.falcon.backlog.metricservice.emit.interval.millisecs=60000 *.falcon.backlog.metricservice.recheck.interval.millisecs=60000
Back Log Emitter Service is a listener to :
EntitySLAListeners service notifies BacklogEmitter whenever a process misses its shouldEndIn sla.
WorkflowExecutionListener notifies BacklogEmitter service whenever a process get completed.
Back Log Calculation:
If two instances of hourly process p1 have missed SLA for 4th and 5th hour then in 6th hourbacklog for process p1 will be ((6-4) + (6-5))*60 = 180 mins. It is cumulative in nature.
Other Services :
Following services and listeners should be enabled for Backlog Emitter Service in startup.properties:
##Add if you want to enable BacklogMetricService # org.apache.falcon.service.FalconJPAService,\ # org.apache.falcon.metrics.MetricNotificationService,\ # org.apache.falcon.service.EntitySLAMonitoringService,\ # org.apache.falcon.service.EntitySLAAlertService,\ # org.apache.falcon.service.BacklogMetricEmitterService *.entityAlert.listeners=org.apache.falcon.service.BacklogMetricEmitterService *.workflow.execution.listeners=org.apache.falcon.handler.SLAMonitoringHandler
Falcon Database : Back Log Emitter Service maintains its state in the database. It needs one table BACKLOG_METRIC please have a look at FalconDatabase to know how to create it.