Class BootstrapEngineCommand

    • Constructor Detail

      • BootstrapEngineCommand

        public BootstrapEngineCommand()
    • Method Detail

      • 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)
      • 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).