Class RecoveryService

java.lang.Object
org.bonitasoft.engine.tenant.restart.RecoveryService

@Component public class RecoveryService extends Object
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 Details

  • Constructor Details

  • 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

      public List<ElementToRecover> getAllElementsToRecover(Duration considerElementsOlderThan)
      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

      public void recover(List<ElementToRecover> elementsToRecover)
      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 with setConsiderElementsOlderThan(String).