org.objectweb.cjdbc.controller.scheduler.raidb0
Class RAIDb0PessimisticTransactionLevelScheduler

java.lang.Object
  extended byorg.objectweb.cjdbc.controller.scheduler.AbstractScheduler
      extended byorg.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler
All Implemented Interfaces:
XmlComponent

public class RAIDb0PessimisticTransactionLevelScheduler
extends AbstractScheduler

This scheduler provides transaction level scheduling for RAIDb-0 controllers. Each write takes a lock on the whole database. All following writes are blocked until the transaction of the first write completes.

Version:
1.0
Author:
Emmanuel Cecchet

Field Summary
private  TransactionExclusiveLock lock
           
private  long requestId
           
 
Fields inherited from class org.objectweb.cjdbc.controller.scheduler.AbstractScheduler
logger, parsingGranularity, raidbLevel
 
Fields inherited from interface org.objectweb.cjdbc.common.xml.XmlComponent
DOCTYPE_DB, XML_VERSION
 
Constructor Summary
RAIDb0PessimisticTransactionLevelScheduler()
          Creates a new Pessimistic Transaction Level Scheduler
 
Method Summary
protected  void commitTransaction(long transactionId)
          Commit a transaction given its id.
 java.lang.String getXmlImpl()
           
 void notifyWriteCompleted(AbstractWriteRequest request)
          Notify the completion of a write statement.
 void readCompletedNotify(SelectRequest request)
          Notify the completion of a read statement.
private  void releaseLock(long transactionId)
          Release the locks we may own on the schema.
protected  void rollbackTransaction(long transactionId)
          Rollback a transaction given its id.
 void scheduleNonSuspendedWriteRequest(AbstractWriteRequest request)
          Additionally to scheduling the request, this method replaces the SQL Date macros such as now() with the current date.
 void scheduleReadRequest(SelectRequest request)
          Additionally to scheduling the request, this method replaces the SQL Date macros such as now() with the current date.
 
Methods inherited from class org.objectweb.cjdbc.controller.scheduler.AbstractScheduler
begin, beginCompleted, commit, commitCompleted, getNumberRead, getNumberWrite, getParsingGranularity, getPendingTransactions, getPendingWrites, getRAIDbLevel, getSchedulerData, getXml, hasSQLMacros, initializeTransactionId, isSuspendedTransactions, isSuspendedWrites, mergeDatabaseSchema, readCompleted, resumeNewTransactions, resumeWrites, rollback, rollbackCompleted, scheduleWriteRequest, setDatabaseSchema, setParsingGranularity, setRAIDbLevel, suspendNewTransactionsForCheckpoint, suspendWrites, writeCompleted
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

requestId

private long requestId

lock

private TransactionExclusiveLock lock
Constructor Detail

RAIDb0PessimisticTransactionLevelScheduler

public RAIDb0PessimisticTransactionLevelScheduler()
Creates a new Pessimistic Transaction Level Scheduler

Method Detail

scheduleReadRequest

public final void scheduleReadRequest(SelectRequest request)
                               throws java.sql.SQLException
Additionally to scheduling the request, this method replaces the SQL Date macros such as now() with the current date.

Specified by:
scheduleReadRequest in class AbstractScheduler
Parameters:
request - Select request to schedule (SQL macros are already handled if needed)
Throws:
java.sql.SQLException - if a timeout occurs
See Also:
AbstractScheduler.scheduleReadRequest(SelectRequest)

readCompletedNotify

public final void readCompletedNotify(SelectRequest request)
Description copied from class: AbstractScheduler
Notify the completion of a read statement.

Specified by:
readCompletedNotify in class AbstractScheduler
Parameters:
request - the completed request
See Also:
AbstractScheduler.readCompletedNotify(SelectRequest)

scheduleNonSuspendedWriteRequest

public void scheduleNonSuspendedWriteRequest(AbstractWriteRequest request)
                                      throws java.sql.SQLException
Additionally to scheduling the request, this method replaces the SQL Date macros such as now() with the current date. Note that CREATE statements are not synchronized.

Specified by:
scheduleNonSuspendedWriteRequest in class AbstractScheduler
Parameters:
request - Write request to schedule (SQL macros are already handled if needed)
Throws:
java.sql.SQLException - if a timeout occurs
See Also:
AbstractScheduler.scheduleWriteRequest(AbstractWriteRequest)

notifyWriteCompleted

public final void notifyWriteCompleted(AbstractWriteRequest request)
Description copied from class: AbstractScheduler
Notify the completion of a write statement. This method does not need to be synchronized, it is enforced by the caller.

Specified by:
notifyWriteCompleted in class AbstractScheduler
Parameters:
request - the completed request
See Also:
AbstractScheduler.notifyWriteCompleted(AbstractWriteRequest)

commitTransaction

protected final void commitTransaction(long transactionId)
Description copied from class: AbstractScheduler
Commit a transaction given its id.

Specified by:
commitTransaction in class AbstractScheduler
Parameters:
transactionId - the transaction id
See Also:
AbstractScheduler.commitTransaction(long)

rollbackTransaction

protected final void rollbackTransaction(long transactionId)
Description copied from class: AbstractScheduler
Rollback a transaction given its id.

Specified by:
rollbackTransaction in class AbstractScheduler
Parameters:
transactionId - the transaction id
See Also:
AbstractScheduler.rollbackTransaction(long)

releaseLock

private void releaseLock(long transactionId)
Release the locks we may own on the schema.

Parameters:
transactionId - id of the transaction that releases the lock

getXmlImpl

public java.lang.String getXmlImpl()
Specified by:
getXmlImpl in class AbstractScheduler
See Also:
AbstractScheduler.getXmlImpl()


Copyright © 2002, 2005 - ObjectWeb Consortium - All Rights Reserved.