Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
typeflat

Overview

Implementation of Transaction Rollback began in AGRIS 10.3.1 with the Microsoft SQL (MS/SQLMSSQL) database only.

Transaction Rollback allows a partially updated transaction to rollback previous updates when the transaction does not complete.  This prevents out-of-balance conditions and other partial updates of transactions during errors, timeouts, loss of power, and other abrupt endings to an AGRIS session.  With Transaction Rollback, inserts and updates are not committed to the database until all related inserts and updates are successful.

Transaction Rollback is enabled in the following areas in AGRIS 10.3.1 on MS/SQLMSSQL:

  • Accounts Payable Enter Disbursements
  • Accounts Receivable Apply Payments
  • Commodity Ticket Import
  • Commodity Produce A Settlement
  • Commodity Automatic Settlements
  • Inventory Stock Additions (Add and Adjust)
  • Inventory Invoice Entry (for each split invoice, not all split invoices as a whole)
  • Inventory Automatic Invoices

 

Configuration

Transaction Rollback is enabled by default for all MS/SQL MSSQL datasets

The Transaction (record-in-use) timeout length is configurable in Customize > System Configuration.  The default is 5 minutes.  Set the value to 0 to disable Transaction Rollback in all datasets.


Business Rules

Please note the following additional business rules regarding AGRIS record locks encountered during a Transaction:

  • SQL Transaction Timeout is the amount of time the process will wait for the record lock to clear during a Transaction.  If not cleared, the transaction is rolled back.
  • F4 on a record-in-use is disabled with the Transaction Rollback feature.  In order to continue, either remove the record lock or wait for it to timeout.
  • The ability to set the record-in-use timeout length is crucial.  Committing an entire transaction at once potentially creates record locks at the database level on those rows not yet committed.  This is different than AGRIS record locks.  Database locks have the potential to block another user's queries.  Because of this the record-in-use timeout should be relatively short - enough time to potentially find the user that can undo the record lock, but not long enough to cause problems for other users trying to access the same data.

 

Transaction Rollback Example

User is producing a sales settlement.  The settlement contains 5 delivery sheets.  The settlement will create an A/R Invoice.

...