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

org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler Class Reference

Inheritance diagram for org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler:

Inheritance graph
[legend]
Collaboration diagram for org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 RAIDb2PessimisticTransactionLevelScheduler ()
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-2 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 45 of file RAIDb2PessimisticTransactionLevelScheduler.java.


Constructor & Destructor Documentation

org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler.RAIDb2PessimisticTransactionLevelScheduler  ) 
 

Creates a new Pessimistic Transaction Level Scheduler

Definition at line 69 of file RAIDb2PessimisticTransactionLevelScheduler.java.

00070   {
00071     super(RAIDbLevels.RAIDb2, ParsingGranularities.NO_PARSING);
00072   }


Member Function Documentation

final void org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler.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 156 of file RAIDb2PessimisticTransactionLevelScheduler.java.

00157   {
00158     if (lock.isLocked())
00159       releaseLock(transactionId);
00160     // else this was an empty or read-only transaction
00161   }

String org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler.getXmlImpl  )  [virtual]
 

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

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

Definition at line 206 of file RAIDb2PessimisticTransactionLevelScheduler.java.

00207   {
00208     return "<" + DatabasesXmlTags.ELT_RAIDb2Scheduler + " "
00209         + DatabasesXmlTags.ATT_level + "=\""
00210         + DatabasesXmlTags.VAL_pessimisticTransaction + "\"/>";
00211   }

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

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

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

Definition at line 140 of file RAIDb2PessimisticTransactionLevelScheduler.java.

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

00142   {
00143     // Requests outside transaction delimiters must release the lock
00144     // as soon as they have executed
00145     if (request.isAutoCommit() && (!request.isCreate()))
00146       releaseLock(request.getTransactionId());
00147   }

final void org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler.readCompletedNotify SelectRequest  request  )  [virtual]
 

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

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

Definition at line 96 of file RAIDb2PessimisticTransactionLevelScheduler.java.

00097   {
00098   }

final void org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler.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 166 of file RAIDb2PessimisticTransactionLevelScheduler.java.

00167   {
00168     if (lock.isLocked())
00169       releaseLock(transactionId);
00170     // else this was an empty or read-only transaction
00171   }

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

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 105 of file RAIDb2PessimisticTransactionLevelScheduler.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().

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

final void org.objectweb.cjdbc.controller.scheduler.raidb2.RAIDb2PessimisticTransactionLevelScheduler.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 84 of file RAIDb2PessimisticTransactionLevelScheduler.java.

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


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