/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 1997, 2015 Oracle and/or its affiliates. All rights reserved.
*
* $Id$
*/
package com.sleepycat.db;
import com.sleepycat.db.internal.DbConstants;
import com.sleepycat.db.internal.DbEnv;
import com.sleepycat.db.internal.DbLock;
/**
A LockNotGrantedException is thrown when a lock requested using the
{@link com.sleepycat.db.Environment#getLock Environment.getLock} or {@link com.sleepycat.db.Environment#lockVector Environment.lockVector}
methods, where the noWait flag or lock timers were configured, could not
be granted before the wait-time expired.
<p>
Additionally, LockNotGrantedException is thrown when a Concurrent Data
Store database environment configured for lock timeouts was unable to
grant a lock in the allowed time.
<p>
Additionally, LockNotGrantedException is thrown when lock or transaction
timeouts have been configured and a database operation has timed out.
*/
public class LockNotGrantedException extends DeadlockException {
private int index;
private Lock lock;
private int mode;
private DatabaseEntry obj;
private int op;
/* package */ LockNotGrantedException(final String message,
final int op,
final int mode,
final DatabaseEntry obj,
final DbLock lock,
final int index,
final DbEnv dbenv) {
super(message, DbConstants.DB_LOCK_NOTGRANTED, dbenv);
this.op = op;
this.mode = mode;
this.obj = obj;
this.lock = (lock == null) ? null : lock.wrapper;
this.index = index;
}
/**
Returns -1 when {@link com.sleepycat.db.Environment#getLock Environment.getLock} was called, and
returns the index of the failed LockRequest when {@link com.sleepycat.db.Environment#lockVector Environment.lockVector} was called.
*/
public int getIndex() {
return index;
}
/**
Returns null when {@link com.sleepycat.db.Environment#getLock Environment.getLock} was called, and
returns the lock in the failed LockRequest when {@link com.sleepycat.db.Environment#lockVector Environment.lockVector} was called.
*/
public Lock getLock() {
return lock;
}
/**
Returns the mode parameter when {@link com.sleepycat.db.Environment#getLock Environment.getLock} was
called, and returns the mode for the failed LockRequest when
{@link com.sleepycat.db.Environment#lockVector Environment.lockVector} was called.
*/
public int getMode() {
return mode;
}
/**
Returns the object parameter when {@link com.sleepycat.db.Environment#getLock Environment.getLock} was
called, and returns the object for the failed LockRequest when
{@link com.sleepycat.db.Environment#lockVector Environment.lockVector} was called.
*/
public DatabaseEntry getObj() {
return obj;
}
/**
Returns 0 when {@link com.sleepycat.db.Environment#getLock Environment.getLock} was called, and returns
the op parameter for the failed LockRequest when {@link com.sleepycat.db.Environment#lockVector Environment.lockVector} was called.
*/
public int getOp() {
return op;
}
}