Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

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

Inheritance diagram for org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler:

Inheritance graph
[legend]
Collaboration diagram for org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 RAIDb0PessimisticTransactionLevelScheduler ()
final void scheduleReadRequest (SelectRequest request) throws SQLException
final void readCompletedNotify (SelectRequest request)
void scheduleNonSuspendedWriteRequest (AbstractWriteRequest request) throws SQLException
final synchronized void notifyWriteCompleted (AbstractWriteRequest request)
String getXmlImpl ()

Protected Member Functions

final void commitTransaction (long transactionId)
final void rollbackTransaction (long transactionId)

Detailed Description

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.

Author:
Emmanuel Cecchet
Version:
1.0

Definition at line 46 of file RAIDb0PessimisticTransactionLevelScheduler.java.


Constructor & Destructor Documentation

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

Creates a new Pessimistic Transaction Level Scheduler

Definition at line 71 of file RAIDb0PessimisticTransactionLevelScheduler.java.

00072   {
00073     super(RAIDbLevels.RAIDb0, ParsingGranularities.NO_PARSING);
00074   }


Member Function Documentation

final void org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler.commitTransaction long  transactionId  )  [protected, virtual]
 

See also:
org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.commitTransaction(long)

Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.

Definition at line 161 of file RAIDb0PessimisticTransactionLevelScheduler.java.

00162   {
00163     releaseLock(transactionId);
00164   }

String org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler.getXmlImpl  )  [virtual]
 

See also:
org.objectweb.cjdbc.controller.scheduler.AbstractScheduler#getXmlImpl()

Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.

Definition at line 208 of file RAIDb0PessimisticTransactionLevelScheduler.java.

00209   {
00210     StringBuffer info = new StringBuffer();
00211     info.append("<" + DatabasesXmlTags.ELT_RAIDb0Scheduler + " "
00212         + DatabasesXmlTags.ATT_level + "=\""
00213         + DatabasesXmlTags.VAL_pessimisticTransaction + "\"/>");
00214     return info.toString();
00215   }

final synchronized void org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler.notifyWriteCompleted AbstractWriteRequest  request  )  [virtual]
 

See also:
org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.notifyWriteCompleted(AbstractWriteRequest)

Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.

Definition at line 145 of file RAIDb0PessimisticTransactionLevelScheduler.java.

References org.objectweb.cjdbc.common.sql.AbstractRequest.getTransactionId(), org.objectweb.cjdbc.common.sql.AbstractRequest.isAutoCommit, and org.objectweb.cjdbc.common.sql.AbstractWriteRequest.isCreate().

00147   {
00148     // Requests outside transaction delimiters must release the lock
00149     // as soon as they have executed
00150     if (request.isAutoCommit() && (!request.isCreate()))
00151       releaseLock(request.getTransactionId());
00152   }

final void org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler.readCompletedNotify SelectRequest  request  )  [virtual]
 

See also:
org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.readCompletedNotify(SelectRequest)

Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.

Definition at line 98 of file RAIDb0PessimisticTransactionLevelScheduler.java.

00099   {
00100   }

final void org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler.rollbackTransaction long  transactionId  )  [protected, virtual]
 

See also:
org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.rollbackTransaction(long)

Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.

Definition at line 169 of file RAIDb0PessimisticTransactionLevelScheduler.java.

00170   {
00171     releaseLock(transactionId);
00172   }

void org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler.scheduleNonSuspendedWriteRequest AbstractWriteRequest  request  )  throws SQLException [virtual]
 

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.

See also:
org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.scheduleWriteRequest(AbstractWriteRequest)

Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.

Definition at line 109 of file RAIDb0PessimisticTransactionLevelScheduler.java.

References org.objectweb.cjdbc.common.log.Trace.debug(), org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.getPendingWrites(), org.objectweb.cjdbc.common.log.Trace.isDebugEnabled(), org.objectweb.cjdbc.common.log.Trace.isWarnEnabled(), and org.objectweb.cjdbc.common.log.Trace.warn().

00111   {
00112     if (request.isCreate())
00113     {
00114       synchronized (this)
00115       {
00116         request.setId(requestId++);
00117       }
00118       return;
00119     }
00120 
00121     if (lock.acquire(request))
00122     {
00123       synchronized (this)
00124       {
00125         request.setId(requestId++);
00126       }
00127       if (logger.isDebugEnabled())
00128         logger.debug("Request " + request.getId() + " scheduled for write ("
00129             + getPendingWrites() + " pending writes)");
00130     }
00131     else
00132     {
00133       if (logger.isWarnEnabled())
00134         logger.warn("Request " + request.getId() + " timed out ("
00135             + request.getTimeout() + " s)");
00136       throw new SQLException("Timeout (" + request.getTimeout()
00137           + ") for request: "
00138           + request.getSQLShortForm(Constants.SQL_SHORT_FORM_LENGTH));
00139     }
00140   }

final void org.objectweb.cjdbc.controller.scheduler.raidb0.RAIDb0PessimisticTransactionLevelScheduler.scheduleReadRequest SelectRequest  request  )  throws SQLException [virtual]
 

Additionally to scheduling the request, this method replaces the SQL Date macros such as now() with the current date.

See also:
org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.scheduleReadRequest(SelectRequest)

Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler.

Definition at line 86 of file RAIDb0PessimisticTransactionLevelScheduler.java.

00088   {
00089     synchronized (this)
00090     {
00091       request.setId(requestId++);
00092     }
00093   }


The documentation for this class was generated from the following file:
Generated on Mon Apr 11 22:04:32 2005 for C-JDBC by  doxygen 1.3.9.1