fabric.store.db
Class BdbDB

java.lang.Object
  extended by fabric.store.db.ObjectDB
      extended by fabric.store.db.BdbDB

public class BdbDB
extends ObjectDB

An ObjectDB backed by a Berkeley Database.


Nested Class Summary
 
Nested classes/interfaces inherited from class fabric.store.db.ObjectDB
ObjectDB.PendingTransaction
 
Field Summary
 
Fields inherited from class fabric.store.db.ObjectDB
name, pendingByTid, rwLocks
 
Constructor Summary
BdbDB(java.lang.String name)
          Creates a new BdbStore for the store specified.
 
Method Summary
 void close()
          Clean up and close database.
 void commit(long tid, RemoteWorker workerNode, NodePrincipal workerPrincipal, SubscriptionManager sm)
          Cause the objects prepared in transaction [tid] to be committed.
 boolean exists(long onum)
          Checks whether an object with the corresponding onum exists, in either prepared or committed form.
 void finishPrepare(long tid, NodePrincipal worker)
           Notifies the database that the given transaction is finished preparing.
 int getVersion(long onum)
          Returns the version number on the object stored at a particular onum.
 boolean isInitialized()
          Determines whether the object database has been initialized.
 long[] newOnums(int num)
           Return a set of onums that aren't currently occupied.
 SerializedObject read(long onum)
          Return the object stored at a particular onum.
 void rollback(long tid, NodePrincipal worker)
          Cause the objects prepared in transaction [tid] to be discarded.
 void setInitialized()
          Sets a flag to indicate that the object database has been initialized.
 
Methods inherited from class fabric.store.db.ObjectDB
abortPrepare, beginTransaction, cacheGroupContainer, ensureInit, getCachedGroupContainer, getName, isPrepared, isWritten, notifyCommittedUpdate, registerRead, registerUpdate, unpin
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BdbDB

public BdbDB(java.lang.String name)
Creates a new BdbStore for the store specified. A new database will be created if it does not exist.

Parameters:
name - name of store to create store for.
Method Detail

finishPrepare

public void finishPrepare(long tid,
                          NodePrincipal worker)
Description copied from class: ObjectDB

Notifies the database that the given transaction is finished preparing. The transaction is not considered to be prepared until this is called. After calling this method, there should not be any further calls to registerRead() or registerUpdate() for the given transaction. This method MUST be called before calling commit().

Upon receiving this call, the object database should save the prepared transaction to stable storage so that it can be recovered in case of failure.

Specified by:
finishPrepare in class ObjectDB

commit

public void commit(long tid,
                   RemoteWorker workerNode,
                   NodePrincipal workerPrincipal,
                   SubscriptionManager sm)
Description copied from class: ObjectDB
Cause the objects prepared in transaction [tid] to be committed. The changes will hereafter be visible to read.

Specified by:
commit in class ObjectDB
Parameters:
tid - the transaction id
workerNode - the remote worker that is performing the commit
workerPrincipal - the principal requesting the commit

rollback

public void rollback(long tid,
                     NodePrincipal worker)
Description copied from class: ObjectDB
Cause the objects prepared in transaction [tid] to be discarded.

Specified by:
rollback in class ObjectDB
Parameters:
tid - the transaction id
worker - the principal requesting the rollback

read

public SerializedObject read(long onum)
Description copied from class: ObjectDB
Return the object stored at a particular onum.

Specified by:
read in class ObjectDB
Parameters:
onum - the identifier
Returns:
the object or null if no object exists at the given onum

getVersion

public int getVersion(long onum)
               throws AccessException
Description copied from class: ObjectDB
Returns the version number on the object stored at a particular onum.

Overrides:
getVersion in class ObjectDB
Throws:
AccessException - if no object exists at the given onum.

exists

public boolean exists(long onum)
Description copied from class: ObjectDB
Checks whether an object with the corresponding onum exists, in either prepared or committed form.

Specified by:
exists in class ObjectDB
Parameters:
onum - the onum of to check
Returns:
true if an object exists for onum

newOnums

public long[] newOnums(int num)
Description copied from class: ObjectDB

Return a set of onums that aren't currently occupied. The ObjectDB may return the same onum more than once from this method, althogh doing so would encourage collisions. There is no assumption of unpredictability or randomness about the returned ids.

The returned onums should be packed in the lower 48 bits. We assume that the object database is never full, and can always provide new onums

Specified by:
newOnums in class ObjectDB
Parameters:
num - the number of onums to return
Returns:
num fresh onums

close

public void close()
Clean up and close database.

Specified by:
close in class ObjectDB

isInitialized

public boolean isInitialized()
Description copied from class: ObjectDB
Determines whether the object database has been initialized.

Specified by:
isInitialized in class ObjectDB

setInitialized

public void setInitialized()
Description copied from class: ObjectDB
Sets a flag to indicate that the object database has been initialized.

Specified by:
setInitialized in class ObjectDB