Class BootstrapEngineCommand

java.lang.Object
org.camunda.bpm.engine.impl.BootstrapEngineCommand
All Implemented Interfaces:
Command<Void>, ProcessEngineBootstrapCommand

public class BootstrapEngineCommand extends Object implements ProcessEngineBootstrapCommand
Author:
Nikola Koevski
  • Field Details

  • Constructor Details

    • BootstrapEngineCommand

      public BootstrapEngineCommand()
  • Method Details

    • execute

      public Void execute(CommandContext commandContext)
      Specified by:
      execute in interface Command<Void>
    • createHistoryCleanupJob

      protected void createHistoryCleanupJob(CommandContext commandContext)
    • checkDeploymentLockExists

      public void checkDeploymentLockExists(CommandContext commandContext)
    • checkHistoryCleanupLockExists

      public void checkHistoryCleanupLockExists(CommandContext commandContext)
    • isHistoryCleanupEnabled

      protected boolean isHistoryCleanupEnabled(CommandContext commandContext)
    • initializeTelemetryProperty

      public void initializeTelemetryProperty(CommandContext commandContext)
    • checkTelemetryLockExists

      protected void checkTelemetryLockExists(CommandContext commandContext)
    • databaseTelemetryConfiguration

      protected PropertyEntity databaseTelemetryConfiguration(CommandContext commandContext)
    • createTelemetryProperty

      protected void createTelemetryProperty(CommandContext commandContext)
    • initializeInstallationId

      public void initializeInstallationId(CommandContext commandContext)
    • createInstallationProperty

      protected void createInstallationProperty(CommandContext commandContext)
    • databaseInstallationId

      protected String databaseInstallationId(CommandContext commandContext)
    • checkInstallationIdLockExists

      protected void checkInstallationIdLockExists(CommandContext commandContext)
    • updateTelemetryData

      protected void updateTelemetryData(CommandContext commandContext)
    • startTelemetryReporter

      protected void startTelemetryReporter(CommandContext commandContext)
    • acquireExclusiveTelemetryLock

      protected void acquireExclusiveTelemetryLock(CommandContext commandContext)
    • acquireExclusiveInstallationIdLock

      protected void acquireExclusiveInstallationIdLock(CommandContext commandContext)
    • isRetryable

      public boolean isRetryable()
      When CockroachDB is used, this command may be retried multiple times until it is successful, or the retries are exhausted. CockroachDB uses a stricter, SERIALIZABLE transaction isolation which ensures a serialized manner of transaction execution. A concurrent transaction that attempts to modify the same data as another transaction is required to abort, rollback and retry. This also makes our use-case of pessimistic locks redundant since we only use them as synchronization barriers, and not to lock actual data which would protect it from concurrent modifications. The BootstrapEngine command only executes internal code, so we are certain that a retry of a failed engine bootstrap will not impact user data, and may be performed multiple times.
      Specified by:
      isRetryable in interface Command<Void>
      Returns:
      true if the CrdbTransactionRetryInterceptor can make a transparent retry of this command upon failure with a CrdbTransactionRetryException (only used when running on CockroachDB).