Any non-Exception Throwable thrown during process execution can lead to inconsistent database state

XMLWordPrintable

    • Type: Bug Report
    • Resolution: Fixed
    • Priority: L3 - Default
    • 7.8.0, 7.7.1, 7.6.7, 7.8.0-alpha2
    • Affects Version/s: 7.8.0-alpha1
    • Component/s: engine
    • None

      If an instance of a Throwable that is not an Exception is thrown (e.g. StackOverflowError during deletion of a huge process instance - deleteCascade is recursive), then when the command context is closed

      • the engine will not properly catch this error, cf. [1]
      • the engine will close the command context, cf. [2]
      • the engine will flush all sessions, including the db entity manager, cf. [3]
      • the db entity manager will make SQL statements
      • the transaction will be committed, not rolled back

      As a result, the database is in an inconsistent state.

      [1] https://github.com/camunda/camunda-bpm-platform/blob/7.7.0/engine/src/main/java/org/camunda/bpm/engine/impl/interceptor/CommandContextInterceptor.java#L107
      [2] https://github.com/camunda/camunda-bpm-platform/blob/7.7.0/engine/src/main/java/org/camunda/bpm/engine/impl/interceptor/CommandContextInterceptor.java#L113
      [3] https://github.com/camunda/camunda-bpm-platform/blob/7.7.0/engine/src/main/java/org/camunda/bpm/engine/impl/interceptor/CommandContext.java#L132

            Assignee:
            Svetlana Dorokhova
            Reporter:
            Thorben Lindhauer
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: