|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectfabric.store.db.ObjectDB
fabric.store.db.MemoryDB
public class MemoryDB
An in-memory implementation of the ObjectDB. This class assumes there will be no failures and hopefully will provide very high performance at the cost of no fault tolerance whatsoever. This class does have a simple facility for loading and saving the database to a file.
This class is not thread-safe. Only the TransactionManager
should directly interact with this class. The TransactionManager
's thread safety ensures safe usage of this class.
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 | |
---|---|
MemoryDB(java.lang.String name)
Opens the store contained in file "var/storeName" if it exists, or an empty store otherwise. |
Method Summary | |
---|---|
void |
close()
Gracefully shutdown the object 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. |
protected 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. |
protected 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, getVersion, 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 |
---|
public MemoryDB(java.lang.String name)
name
- name of store to create database for.Method Detail |
---|
public void finishPrepare(long tid, NodePrincipal worker)
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.
finishPrepare
in class ObjectDB
public void commit(long tid, RemoteWorker workerNode, NodePrincipal workerPrincipal, SubscriptionManager sm) throws AccessException
ObjectDB
commit
in class ObjectDB
tid
- the transaction idworkerNode
- the remote worker that is performing the commitworkerPrincipal
- the principal requesting the commit
AccessException
- if the principal differs from the caller of prepare()public void rollback(long tid, NodePrincipal worker) throws AccessException
ObjectDB
rollback
in class ObjectDB
tid
- the transaction idworker
- the principal requesting the rollback
AccessException
- if the principal differs from the caller of prepare()public SerializedObject read(long onum)
ObjectDB
read
in class ObjectDB
onum
- the identifier
public boolean exists(long onum)
ObjectDB
exists
in class ObjectDB
onum
- the onum of to check
public long[] newOnums(int num)
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
newOnums
in class ObjectDB
num
- the number of onums to return
public void close() throws java.io.IOException
ObjectDB
close
in class ObjectDB
java.io.IOException
protected boolean isInitialized()
ObjectDB
isInitialized
in class ObjectDB
protected void setInitialized()
ObjectDB
setInitialized
in class ObjectDB
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |