JDBCLoggerThread.java の 40 行で定義されています。
Public メソッド | |
JDBCLoggerThread (PreparedStatement pstmt, PreparedStatement removeBeginStatement, Trace logger) | |
synchronized void | log (long id, String login, String query, long tid, boolean escapeProcessing) |
synchronized void | rollbackTransactions () |
synchronized void | rollbackTransaction (long tid) |
synchronized boolean | getLogQueueIsEmpty () |
void | run () |
Private 変数 | |
boolean | killed = false |
ArrayList | logQueue |
PreparedStatement | pstmt |
PreparedStatement | removeBeginStatement |
Trace | logger |
|
Create a new JDBCLoggerThread
JDBCLoggerThread.java の 124 行で定義されています。 参照先 org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.logQueue.
00126 { 00127 super("JDBCLoggerThread"); 00128 this.pstmt = pstmt; 00129 this.removeBeginStatement = removeBeginStatement; 00130 this.logger = logger; 00131 logQueue = new ArrayList(); 00132 } |
|
Tells whether there are pending logs
JDBCLoggerThread.java の 197 行で定義されています。 参照先 org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.logQueue. 参照元 org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.run().
00198 { 00199 if (logQueue.isEmpty()) 00200 { 00201 // Notifies the Recovery log that the queue is empty. 00202 notify(); 00203 return true; 00204 } 00205 else 00206 { 00207 return false; 00208 } 00209 } |
|
Log a query.
JDBCLoggerThread.java の 143 行で定義されています。 参照先 org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.logQueue.
00145 { 00146 logQueue.add(new LogObject(id, login, query, tid, escapeProcessing)); 00147 notify(); 00148 } |
|
Remove all queries that have not been logged yet and belonging to the specified transaction.
JDBCLoggerThread.java の 180 行で定義されています。 参照先 org.objectweb.cjdbc.common.log.Trace.debug(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.LogObject.getTid(), と org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.logQueue. 参照元 org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.rollbackTransactions().
|
|
Roll back all unfinished transactions. JDBCLoggerThread.java の 153 行で定義されています。 参照先 org.objectweb.cjdbc.common.log.Trace.debug(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.LogObject.getQuery(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.LogObject.getTid(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.logQueue, と org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.rollbackTransaction().
00154 { 00155 if (logQueue.isEmpty()) 00156 { 00157 logger.debug(Translate 00158 .get("recovery.jdbc.loggerthread.rollback.no.transaction")); 00159 return; 00160 } 00161 // Find all begun transactions 00162 LogObject log; 00163 for (int i = 0; i < logQueue.size(); i++) 00164 { 00165 log = (LogObject) logQueue.get(i); 00166 if (log.getQuery().equalsIgnoreCase("begin")) 00167 { 00168 // Found beginning of transaction, let's roll it back 00169 rollbackTransaction(log.getTid()); 00170 } 00171 } 00172 } |
|
Log the requests from queue until the thread is explicetly killed. The logger used is the one of the JDBCRecoveryLog. JDBCLoggerThread.java の 215 行で定義されています。 参照先 org.objectweb.cjdbc.common.log.Trace.debug(), org.objectweb.cjdbc.common.log.Trace.error(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.LogObject.getEscapeProcessing(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.LogObject.getId(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.LogObject.getLogin(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.getLogQueueIsEmpty(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.LogObject.getQuery(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.LogObject.getTid(), org.objectweb.cjdbc.common.log.Trace.info(), org.objectweb.cjdbc.common.log.Trace.isDebugEnabled(), org.objectweb.cjdbc.common.log.Trace.isInfoEnabled(), org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.killed, org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.logQueue, org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.pstmt, org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.removeBeginStatement, と org.objectweb.cjdbc.common.log.Trace.warn().
00216 { 00217 LogObject params; 00218 00219 while (!killed) 00220 { 00221 synchronized (this) 00222 { 00223 while (getLogQueueIsEmpty()) 00224 { 00225 try 00226 { 00227 wait(); 00228 } 00229 catch (InterruptedException e) 00230 { 00231 logger.warn(Translate.get("recovery.jdbc.loggerthread.awaken"), e); 00232 } 00233 } 00234 params = (LogObject) logQueue.remove(0); 00235 if (params.getQuery().equals("c")) 00236 { // The transaction succeeded 00237 // Remove the begin with this tranactionId from the database 00238 try 00239 { 00240 removeBeginStatement.setLong(1, params.getTid()); 00241 removeBeginStatement.executeUpdate(); 00242 } 00243 catch (SQLException ignore) 00244 { 00245 } 00246 } 00247 else 00248 { 00249 try 00250 { 00251 pstmt.setLong(1, params.getId()); 00252 pstmt.setString(2, params.getLogin()); 00253 pstmt.setString(3, params.getQuery()); 00254 pstmt.setLong(4, params.getTid()); 00255 pstmt.setEscapeProcessing(params.getEscapeProcessing()); 00256 pstmt.executeUpdate(); 00257 if (logger.isDebugEnabled()) 00258 logger.debug(Translate.get( 00259 "recovery.jdbc.loggerthread.log.debug", new String[]{ 00260 String.valueOf(params.getId()), params.getLogin(), 00261 params.getQuery(), String.valueOf(params.getTid()), 00262 String.valueOf(params.getEscapeProcessing())})); 00263 else if (logger.isInfoEnabled()) 00264 logger.info(Translate.get("recovery.jdbc.loggerthread.log.info", 00265 params.getId())); 00266 } 00267 catch (SQLException e) 00268 { 00269 logger.error(Translate 00270 .get("recovery.jdbc.loggerthread.log.failed", new String[]{ 00271 params.getQuery(), String.valueOf(params.getTid())}), e); 00272 } 00273 } 00274 } 00275 } 00276 } |
|
JDBCLoggerThread.java の 42 行で定義されています。 参照元 org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.run(). |
|
JDBCLoggerThread.java の 46 行で定義されています。 |
|
|
JDBCLoggerThread.java の 44 行で定義されています。 参照元 org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.run(). |
|
JDBCLoggerThread.java の 45 行で定義されています。 参照元 org.objectweb.cjdbc.controller.recoverylog.JDBCLoggerThread.run(). |