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) |
Definition at line 45 of file RAIDb2PessimisticTransactionLevelScheduler.java.
|
Creates a new Pessimistic Transaction Level Scheduler Definition at line 69 of file RAIDb2PessimisticTransactionLevelScheduler.java. 00070 { 00071 super(RAIDbLevels.RAIDb2, ParsingGranularities.NO_PARSING); 00072 }
|
|
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 }
|
|
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 }
|
|
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 }
|
|
Implements org.objectweb.cjdbc.controller.scheduler.AbstractScheduler. Definition at line 96 of file RAIDb2PessimisticTransactionLevelScheduler.java. 00097 { 00098 }
|
|
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 }
|
|
Note that CREATE statements are not synchronized.
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 }
|
|
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 84 of file RAIDb2PessimisticTransactionLevelScheduler.java. 00086 { 00087 synchronized (this) 00088 { 00089 request.setId(requestId++); 00090 } 00091 }
|