Public Member Functions | |
RAIDb1PessimisticTransactionLevelScheduler () | |
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) |
Package Attributes | |
TransactionExclusiveLock | lock = new TransactionExclusiveLock() |
Definition at line 46 of file RAIDb1PessimisticTransactionLevelScheduler.java.
|
Creates a new Pessimistic Transaction Level Scheduler Definition at line 71 of file RAIDb1PessimisticTransactionLevelScheduler.java. 00072 { 00073 super(RAIDbLevels.RAIDb1, ParsingGranularities.NO_PARSING); 00074 }
|
|
Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler. Definition at line 159 of file RAIDb1PessimisticTransactionLevelScheduler.java. 00160 { 00161 if (lock.isLocked()) 00162 releaseLock(transactionId); 00163 // else this was an empty or read-only transaction 00164 }
|
|
Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler. Definition at line 208 of file RAIDb1PessimisticTransactionLevelScheduler.java. 00209 { 00210 return "<" + DatabasesXmlTags.ELT_RAIDb1Scheduler + " " 00211 + DatabasesXmlTags.ATT_level + "=\"" 00212 + DatabasesXmlTags.VAL_pessimisticTransaction + "\"/>"; 00213 }
|
|
Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler. Definition at line 143 of file RAIDb1PessimisticTransactionLevelScheduler.java. References org.objectweb.cjdbc.common.sql.AbstractRequest.getTransactionId(), org.objectweb.cjdbc.common.sql.AbstractRequest.isAutoCommit, and org.objectweb.cjdbc.common.sql.AbstractWriteRequest.isCreate(). 00145 { 00146 // Requests outside transaction delimiters must release the lock 00147 // as soon as they have executed 00148 if (request.isAutoCommit() && (!request.isCreate())) 00149 releaseLock(request.getTransactionId()); 00150 }
|
|
Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler. Definition at line 98 of file RAIDb1PessimisticTransactionLevelScheduler.java. 00099 { 00100 }
|
|
Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler. Definition at line 169 of file RAIDb1PessimisticTransactionLevelScheduler.java. 00170 { 00171 if (lock.isLocked()) 00172 releaseLock(transactionId); 00173 // else this was an empty or read-only transaction 00174 }
|
|
Note that CREATE statements are not synchronized.
Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler. Definition at line 107 of file RAIDb1PessimisticTransactionLevelScheduler.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(). 00109 { 00110 if (request.isCreate()) 00111 { 00112 synchronized (this) 00113 { 00114 request.setId(requestId++); 00115 } 00116 return; 00117 } 00118 00119 if (lock.acquire(request)) 00120 { 00121 synchronized (this) 00122 { 00123 request.setId(requestId++); 00124 } 00125 if (logger.isDebugEnabled()) 00126 logger.debug("Request " + request.getId() + " scheduled for write (" 00127 + getPendingWrites() + " pending writes)"); 00128 } 00129 else 00130 { 00131 if (logger.isWarnEnabled()) 00132 logger.warn("Request " + request.getId() + " timed out (" 00133 + request.getTimeout() + " s)"); 00134 throw new SQLException("Timeout (" + request.getTimeout() 00135 + ") for request: " 00136 + request.getSQLShortForm(Constants.SQL_SHORT_FORM_LENGTH)); 00137 } 00138 }
|
|
Additionally to scheduling the request, this method replaces the SQL Date macros such as now() with the current date.
Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler. Definition at line 86 of file RAIDb1PessimisticTransactionLevelScheduler.java. 00088 { 00089 synchronized (this) 00090 { 00091 request.setId(requestId++); 00092 } 00093 }
|