Mercurial > hg > blitz_stable
diff src/org/dancres/blitz/remote/BlitzAdmin.java @ 0:3dc0c5604566
Initial checkin of blitz 2.0 fcs - no installer yet.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Sat, 21 Mar 2009 11:00:06 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/dancres/blitz/remote/BlitzAdmin.java Sat Mar 21 11:00:06 2009 +0000 @@ -0,0 +1,81 @@ +package org.dancres.blitz.remote; + +import java.io.IOException; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +import net.jini.core.transaction.TransactionException; + +/** + Blitz specific admin operations are available on this interface + */ +public interface BlitzAdmin extends Remote { + /** + <p>Run a hot backup - whilst <code>requestSnapshot</code> requires one + to suspend access to the Blitz instance and simply checkpoints to the + database directory, this method can be used to produce a separate + snapshot (in another directory) whilst activity continues. The output + is suitable for restoration under circumstances of failure.</p> + + <p>Note, an Entry's lease may expire before the backup is restored + in which case it is deemed to have been remove from the space thus + archives created with this method will only restore state that is + not yet expired.</p> + + <p>Note also that transactions active during the backup will + <em>not</em> be reflected in the backup. This is a necessity as + otherwise it would be impossible to finish the backup under some + circumstances.</p> + + <p>This method may supercede <code>requestSnapshot</code> some time + in the future.</p> + + <p><b>WARNING: Experimental at this stage</b></p> + + @param aBackupDir is the directory in which to deposit the backup. + Ensure that the directory is empty before invoking this method. + Note that the directory will be created if it doesn't already exist. + */ + public void backup(String aBackupDir) throws RemoteException, IOException; + + /** + <p>Blocks the caller, issues a checkpoint and returns on completion. + Note, the caller should ensure that there's no current activity within + the Blitz instance such as active transactions. If Blitz is active, + the checkpoint will not contain *any* of the actions of these + transactions. Prepared (but not commited or aborted) transactions are + also problematic as they will be saved in the checkpoint but cannot, + for example, be restored to another Blitz instance and commited there + (unless you've used Activatable references in a suitable failover + configuration).</p> + + @throws IOException if the checkpoint failed. + @throws TransactionException if there are active/prepared transactions + which cannot be guarenteed to be recovered from the saved snapshot at + restore time. + */ + public void requestSnapshot() throws RemoteException, + TransactionException, IOException; + + /** + Causes Blitz to shutdown cleanly whilst retaining state. This can + also be achieved by calling DestroyAdmin::destroy() so long as the + configuration variable <code>compatDestroy</code> is set to <code> + false</code>. + */ + public void shutdown() throws RemoteException, IOException; + + /** + Clean up all Entry's, abort outstanding matches etc so the JavaSpace + is good as new. + */ + public void clean() throws RemoteException, IOException; + + /** + Request a manual reap of lease expired Entry's. Note, + <code>LeaseReaper.MANUAL_REAP</code> must be set for the relevant + lease reap time variable in the configuration file. + */ + public void reap() throws RemoteException; +}