No Wait on Blocks
Prev | Chapter 4. Concurrency | Next

## No Wait on Blocks

Normally when a JE transaction is blocked on a lock request, it must wait until the requested lock becomes available before its thread-of-control can proceed. However, it is possible to configure a transaction handle such that it will report a deadlock rather than wait for the block to clear.

You do this on a transaction by transaction basis by specifying `DB_TXN_NOWAIT` to the `DB_ENV->txn_begin()` method.

For example:

        /* Get the transaction */
        DB_TXN *txn = NULL;
        ret = envp->txn_begin(envp, NULL, &txn, DB_TXN_NOWAIT);
        if (ret != 0) {
                envp->err(envp, ret, "txn_begin failed");
                return (EXIT_FAILURE);
        }
            ....
        /* Deadlock detection and exception handling omitted for brevity. */

Prev | Up | Next
Read/Modify/Write | Home | Reverse BTree Splits