Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-3123

Support long running transactions that exceed log.mining.transaction.retention.hours



    • Enhancement
    • Resolution: Duplicate
    • Major
    • None
    • None
    • oracle-connector
    • None
    • False
    • False
    • Undefined


      Oracle LogMiner maintains an in-memory buffer of all transactions that have not yet been marked as committed or rollbacked in the transaction event stream. This is a normal process that every transaction undergoes due to the nature of how events are read from the LogMiner event stream. However, there are situations where users may have long-running transactions and each action taken by this transaction must be retained by the connector's transaction buffer. We a precaution to guard against out-of-memory concerns, the connector examines the buffer on each log switch and checks to see if any transaction has been retained for longer than the configured log.mining.transaction.retention.hours setting. If a transaction is older than the configured retention period, it's discarded and all actions as a part of that transaction are omitted from the change event stream.

      This has an ongoing impact if the connector crashes or is restarted because:

      • Starting SCN may no longer be available, forcing a re-snapshot
      • Older transactions that were committed and emitted by the connector will be re-sent because the connector started from a very old SCN offset.

      We should consider a data store such as Infinispan, likely defined by an SPI for users who may want to use other data store providers, to persistent this transaction buffer across restarts. This would allow the connector to avoid both of the above drawbacks while also reducing the memory overhead of the connector itself.


        Issue Links



              Unassigned Unassigned
              ccranfor@redhat.com Chris Cranford
              0 Vote for this issue
              2 Start watching this issue