-
Sub-task
-
Resolution: Done
-
L3 - Default
-
None
-
None
AC
- Add CockroachDB to the list of Supported Environments
- Add list of supported CockroachDB version(s) in Supported Environments page
- Document limitations and differences in behavior when using CockroachDB
Differences in behavior that should be documented
- OptimisticLockingException will be throw in different circumstances
- If CRDB detects any concurrency conflicts that CRDB detects and aborts the transaction for (=> link to CRDB transaction docs)
- Needs more investigation: Concurrent modification of separate data in the same table can lead to a concurrency conflict when CRDB enforces foreign key constraints (e.g. execution of two unrelated jobs)
- Cannot use engine property jdbcStatementTimeout: CRDB doesn't implement query cancellation yet (see https://github.com/cockroachdb/cockroach/issues/41335)
- There will be more failures with OptimisticLockingException due to stricter requirements for isolation Serializable
- Historic {{OptimisticLockingException}}s are not silently ignored with CRDB
- Job acquisition and external task fetch&lock failures are not silently ignored. => CRDB retry interceptor can be used
- Needs more investigation: check if tx timeout on CRDB is configurable; if not, then document this
- Pessimistic locks are useless for the purpose we are using them for; due to Serializable isolation, a parallel transaction will not observe changed data immediately after the pessimistic lock is granted
- Pessimistic locks are disabled with CRDB
- The retry interceptor can be enabled to avoid e.g. engine startup failures
- Exclusive message correlation is not supported