### Berkeley DB Reference Guide: XA Resource Manager |

# Frequently Asked Questions

1. Does converting an application to run within XA change any of the already existing C/C++ API calls it does?

   When converting an application to run under XA, the application's Berkeley DB calls are unchanged, with two exceptions:

   1. The application must use specify the DB_XA_CREATE flag to the db_create interface.

   2. The application should never explicitly call txn_commit, txn_abort or txn_begin, as those calls are replaced by calls into the Tuxedo transaction manager. For the same reason, the application will always specify a transaction argument of NULL to the Berkeley DB functions that take transaction arguments (e.g., DB->put or DB->cursor).

   Otherwise, your application should be unchanged.

2. Is it possible to mix XA and non-XA transactions?

   Yes. It is also possible for XA and non-XA transactions to co-exist in the same Berkeley DB environment. To do this, specify the same environment to the non-XA DBENV->open calls as was specified in the Tuxedo configuration file.

3. How does Berkeley DB recovery interact with recovery by the transaction manager?

   When the Tuxedo recovery calls the Berkeley DB recovery functions, the standard Berkeley DB recovery procedures occur, for all operations that are represented in the Berkeley DB log files. This includes any non-XA transactions that were performed in the environment. Of course, this means that you can't use the standard Berkeley DB utilities (e.g., db_recover) to perform recovery.

   Also, standard log file archival and catastrophic recovery procedures should occur independently of XA operation.

Copyright Sleepycat Software