Class RecoveryService
java.lang.Object
org.bonitasoft.engine.tenant.restart.RecoveryService
Responsible to recover from incidents like database or network outage.
It scans the database (on-demand) and reschedules the elements to recover.
It will recover these elements using multiple transaction using a batch size configured by the property
`bonita.tenant.work.batch_restart_size`
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionRecoveryService(FlowNodeInstanceService flowNodeInstanceService, ProcessInstanceService processInstanceService, UserTransactionService userTransactionService, FlowNodesRecover flowNodesRecover, ProcessesRecover processesRecover, org.springframework.beans.factory.ObjectFactory<org.bonitasoft.engine.tenant.restart.RecoveryMonitor> recoveryMonitorProvider, io.micrometer.core.instrument.MeterRegistry meterRegistry) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidexecuteInBatch(org.bonitasoft.engine.tenant.restart.RecoveryMonitor recoveryMonitor, List<ElementToRecover> elements, org.bonitasoft.engine.tenant.restart.RecoveryService.BatchExecution execution) getAllElementsToRecover(Duration considerElementsOlderThan) Retrieve elements ( ProcessInstance and Flow Nodes ) that needs to be recovered and that are older than the given duration.protected voidvoidrecover(List<ElementToRecover> elementsToRecover) Trigger works to execute elements ( ProcessInstance and Flow Nodes ) that needs to be recoveredvoidRecover all elements considered as "stuck".voidsetBatchRestartSize(int batchRestartSize) voidsetConsiderElementsOlderThan(String considerElementsOlderThan) voidsetReadBatchSize(int readBatchSize)
-
Field Details
-
DURATION_OF_RECOVERY_TASK
- See Also:
-
NUMBER_OF_RECOVERY
- See Also:
-
NUMBER_OF_ELEMENTS_RECOVERED_LAST_RECOVERY
- See Also:
-
NUMBER_OF_ELEMENTS_RECOVERED_TOTAL
- See Also:
-
-
Constructor Details
-
RecoveryService
public RecoveryService(FlowNodeInstanceService flowNodeInstanceService, ProcessInstanceService processInstanceService, UserTransactionService userTransactionService, FlowNodesRecover flowNodesRecover, ProcessesRecover processesRecover, org.springframework.beans.factory.ObjectFactory<org.bonitasoft.engine.tenant.restart.RecoveryMonitor> recoveryMonitorProvider, io.micrometer.core.instrument.MeterRegistry meterRegistry)
-
-
Method Details
-
initMetrics
@PostConstruct protected void initMetrics() -
setReadBatchSize
@Value("${bonita.tenant.recover.read_batch_size:5000}") public void setReadBatchSize(int readBatchSize) -
setConsiderElementsOlderThan
@Value("${bonita.tenant.recover.consider_elements_older_than:PT1H}") public void setConsiderElementsOlderThan(String considerElementsOlderThan) -
setBatchRestartSize
@Value("${bonita.tenant.work.batch_restart_size:1000}") public void setBatchRestartSize(int batchRestartSize) -
getAllElementsToRecover
Retrieve elements ( ProcessInstance and Flow Nodes ) that needs to be recovered and that are older than the given duration.- Parameters:
considerElementsOlderThan- consider elements older than that duration- Returns:
- elements to be recovered
-
recover
Trigger works to execute elements ( ProcessInstance and Flow Nodes ) that needs to be recovered- Parameters:
elementsToRecover- elements needs to be recovered
-
executeInBatch
protected void executeInBatch(org.bonitasoft.engine.tenant.restart.RecoveryMonitor recoveryMonitor, List<ElementToRecover> elements, org.bonitasoft.engine.tenant.restart.RecoveryService.BatchExecution execution) -
recoverAllElements
public void recoverAllElements()Recover all elements considered as "stuck". Only recover elements older than a duration configured withsetConsiderElementsOlderThan(String).
-