Public Member Functions | |
int | getRAIDbLevel () |
void | setRAIDbLevel (int raidbLevel) |
int | getParsingGranularity () |
void | setParsingGranularity (int parsingGranularity) |
abstract ControllerResultSet | execReadRequest (SelectRequest request, MetadataCache metadataCache) throws SQLException |
abstract int | execWriteRequest (AbstractWriteRequest request) throws AllBackendsFailedException, SQLException |
abstract ControllerResultSet | execWriteRequestWithKeys (AbstractWriteRequest request, MetadataCache metadataCache) throws AllBackendsFailedException, SQLException |
abstract ControllerResultSet | execReadOnlyReadStoredProcedure (StoredProcedure proc, MetadataCache metadataCache) throws SQLException |
abstract ControllerResultSet | execReadStoredProcedure (StoredProcedure proc, MetadataCache metadataCache) throws SQLException |
abstract int | execWriteStoredProcedure (StoredProcedure proc) throws SQLException |
abstract void | begin (TransactionMarkerMetaData tm) throws SQLException |
abstract void | commit (TransactionMarkerMetaData tm) throws AllBackendsFailedException, SQLException |
abstract void | rollback (TransactionMarkerMetaData tm) throws AllBackendsFailedException, SQLException |
abstract void | enableBackend (DatabaseBackend db, boolean writeEnabled) throws SQLException |
abstract void | disableBackend (DatabaseBackend db) throws SQLException |
void | setWeight (String name, int w) throws SQLException |
abstract String | getInformation () |
abstract String | getXmlImpl () |
void | setMacroHandler (MacrosHandler handler) |
void | handleMacros (AbstractRequest request) |
String | getXml () |
String | getAssociatedString () |
Static Public Member Functions | |
final ControllerResultSet | executeSelectRequestOnBackend (SelectRequest request, DatabaseBackend backend, Connection c, MetadataCache metadataCache) throws SQLException, BadConnectionException |
final int | executeUpdateRequestOnBackend (AbstractWriteRequest request, DatabaseBackend backend, Connection c) throws SQLException, BadConnectionException |
final ControllerResultSet | executeUpdateRequestOnBackendWithKeys (AbstractWriteRequest request, DatabaseBackend backend, Connection c, MetadataCache metadataCache) throws SQLException, BadConnectionException |
final ControllerResultSet | executeReadStoredProcedureOnBackend (StoredProcedure proc, DatabaseBackend backend, Connection c, MetadataCache metadataCache) throws SQLException, BadConnectionException |
final int | executeWriteStoredProcedureOnBackend (StoredProcedure proc, DatabaseBackend backend, Connection c) throws SQLException, BadConnectionException |
final Connection | getConnectionAndBeginTransaction (DatabaseBackend backend, AbstractConnectionManager cm, long tid) throws SQLException, UnreachableBackendException |
Protected Member Functions | |
AbstractLoadBalancer (VirtualDatabase vdb, int raidbLevel, int parsingGranularity) throws SQLException, NotCompliantMBeanException | |
Protected Attributes | |
VirtualDatabase | vdb |
int | raidbLevel |
int | parsingGranularity |
MacrosHandler | macroHandler |
Static Protected Attributes | |
Trace | logger |
The requests comes from the Request Controller and are sent to the Connection Managers.
Definition at line 69 of file AbstractLoadBalancer.java.
|
Generic constructor that sets some member variables and checks that backends are in the disabled state
Definition at line 105 of file AbstractLoadBalancer.java. References org.objectweb.cjdbc.controller.backend.DatabaseBackend.disable(), org.objectweb.cjdbc.controller.loadbalancer.AbstractLoadBalancer.disableBackend(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.getName(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.isReadEnabled(), and org.objectweb.cjdbc.controller.backend.DatabaseBackend.isWriteEnabled(). 00107 { 00108 super(AbstractLoadBalancerMBean.class); 00109 this.raidbLevel = raidbLevel; 00110 this.parsingGranularity = parsingGranularity; 00111 this.vdb = vdb; 00112 try 00113 { 00114 vdb.acquireReadLockBackendLists(); 00115 } 00116 catch (InterruptedException e) 00117 { 00118 String msg = Translate.get( 00119 "loadbalancer.backendlist.acquire.readlock.failed", e); 00120 logger.error(msg); 00121 throw new SQLException(msg); 00122 } 00123 int size = vdb.getBackends().size(); 00124 ArrayList backends = vdb.getBackends(); 00125 for (int i = 0; i < size; i++) 00126 { 00127 DatabaseBackend backend = (DatabaseBackend) backends.get(i); 00128 if (backend.isReadEnabled() || backend.isWriteEnabled()) 00129 { 00130 if (logger.isWarnEnabled()) 00131 logger.warn(Translate.get( 00132 "loadbalancer.constructor.backends.not.disabled", backend 00133 .getName())); 00134 try 00135 { 00136 disableBackend(backend); 00137 } 00138 catch (Exception e) 00139 { // Set the disabled state anyway 00140 backend.disable(); 00141 } 00142 } 00143 } 00144 vdb.releaseReadLockBackendLists(); 00145 }
|
|
Begin a new transaction.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. Referenced by org.objectweb.cjdbc.controller.requestmanager.distributed.DistributedRequestManager.begin(), and org.objectweb.cjdbc.controller.requestmanager.distributed.DistributedRequestManager.lazyTransactionStart(). |
|
Commit a transaction.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
|
Enable a backend without further check. The backend is at least read enabled but could also be enabled for writes. Ask the corresponding connection manager to initialize the connections if needed.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. Referenced by org.objectweb.cjdbc.controller.requestmanager.distributed.DistributedRequestManager.enableBackend(). |
|
Call a read-only stored procedure that returns a ResultSet. The stored procedure will be executed by one node only.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_LPRF, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec_WRR, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
Perform a read request. It is up to the implementation to choose to which backend node(s) this request should be sent.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_LPRF, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec_WRR, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
Call a stored procedure that returns a ResultSet. This stored procedure can possibly perform writes and will therefore be executed by all nodes.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
Execute a read stored procedure on the given backend. The callable statement is setXXX if the driver has not processed the statement.
Definition at line 458 of file AbstractLoadBalancer.java. 00461 { 00462 try 00463 { 00464 backend.addPendingReadRequest(proc); 00465 00466 // We suppose here that the request does not modify the schema since 00467 // it is a read-only query. 00468 CallableStatement cs; 00469 if (proc.isDriverProcessed()) 00470 cs = c.prepareCall(proc.getSQL()); 00471 else 00472 { 00473 cs = c.prepareCall(proc.getSqlSkeleton()); 00474 org.objectweb.cjdbc.driver.PreparedStatement.setPreparedStatement(proc 00475 .getSQL(), cs); 00476 } 00477 if (backend.getDriverCompliance().supportSetQueryTimeout()) 00478 cs.setQueryTimeout(proc.getTimeout()); 00479 if ((proc.getMaxRows() > 0) 00480 && backend.getDriverCompliance().supportSetMaxRows()) 00481 cs.setMaxRows(proc.getMaxRows()); 00482 ControllerResultSet rs = new ControllerResultSet(proc, cs.executeQuery(), 00483 metadataCache, cs); 00484 return rs; 00485 } 00486 catch (SQLException e) 00487 { // Something bad happened 00488 if (backend.isValidConnection(c)) 00489 throw e; // Connection is valid, throw the exception 00490 else 00491 throw new BadConnectionException(e); 00492 } 00493 finally 00494 { 00495 backend.removePendingRequest(proc); 00496 } 00497 }
|
|
Execute a statement on a backend. If the execution fails, the connection is checked for validity. If the connection was not valid, the query is automatically retried on a new connection.
Definition at line 282 of file AbstractLoadBalancer.java. References java.sql.Statement.executeQuery(), java.sql.Statement.setCursorName(), java.sql.Statement.setFetchSize(), java.sql.Statement.setMaxRows(), java.sql.Statement.setQueryTimeout(), org.objectweb.cjdbc.controller.backend.DriverCompliance.supportSetCursorName, org.objectweb.cjdbc.controller.backend.DriverCompliance.supportSetFetchSize, org.objectweb.cjdbc.controller.backend.DriverCompliance.supportSetMaxRows, and org.objectweb.cjdbc.controller.backend.DriverCompliance.supportSetQueryTimeout. Referenced by org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB.execReadRequest(). 00285 { 00286 ControllerResultSet rs = null; 00287 try 00288 { 00289 backend.addPendingReadRequest(request); 00290 String sql = request.getSQL(); 00291 // Rewrite the query if needed 00292 sql = backend.rewriteQuery(sql); 00293 00294 Statement s; // Can also be used as a PreparedStatement 00295 if (request.isDriverProcessed() || (request.getSqlSkeleton() == null)) 00296 s = c.createStatement(); 00297 else 00298 { 00299 s = c.prepareStatement(request.getSqlSkeleton()); 00300 org.objectweb.cjdbc.driver.PreparedStatement.setPreparedStatement(sql, 00301 (PreparedStatement) s); 00302 } 00303 00304 // Execute the query 00305 DriverCompliance driverCompliance = backend.getDriverCompliance(); 00306 if (driverCompliance.supportSetQueryTimeout()) 00307 s.setQueryTimeout(request.getTimeout()); 00308 if ((request.getCursorName() != null) 00309 && (driverCompliance.supportSetCursorName())) 00310 s.setCursorName(request.getCursorName()); 00311 if ((request.getFetchSize() != 0) 00312 && driverCompliance.supportSetFetchSize()) 00313 s.setFetchSize(request.getFetchSize()); 00314 if ((request.getMaxRows() > 0) && driverCompliance.supportSetMaxRows()) 00315 s.setMaxRows(request.getMaxRows()); 00316 if (request.isDriverProcessed() || (request.getSqlSkeleton() == null)) 00317 rs = new ControllerResultSet(request, s.executeQuery(sql), 00318 metadataCache, s); 00319 else 00320 rs = new ControllerResultSet(request, ((PreparedStatement) s) 00321 .executeQuery(), metadataCache, s); 00322 } 00323 catch (SQLException e) 00324 { // Something bad happened 00325 if (backend.isValidConnection(c)) 00326 throw e; // Connection is valid, throw the exception 00327 else 00328 throw new BadConnectionException(e); 00329 } 00330 finally 00331 { 00332 backend.removePendingRequest(request); 00333 } 00334 return rs; 00335 }
|
|
Execute an update prepared statement on a backend. If the execution fails, the connection is checked for validity. If the connection was not valid, the query is automatically retried on a new connection.
Definition at line 349 of file AbstractLoadBalancer.java. References java.sql.Statement.close(), java.sql.Statement.executeUpdate(), java.sql.Statement.setQueryTimeout(), and org.objectweb.cjdbc.controller.backend.DriverCompliance.supportSetQueryTimeout. 00352 { 00353 try 00354 { 00355 backend.addPendingWriteRequest(request); 00356 String sql = request.getSQL(); 00357 // Rewrite the query if needed 00358 sql = backend.rewriteQuery(sql); 00359 00360 Statement s; // Can also be used as a PreparedStatement 00361 if (request.isDriverProcessed() || (request.getSqlSkeleton() == null)) 00362 s = c.createStatement(); 00363 else 00364 { 00365 s = c.prepareStatement(request.getSqlSkeleton()); 00366 org.objectweb.cjdbc.driver.PreparedStatement.setPreparedStatement(sql, 00367 (PreparedStatement) s); 00368 } 00369 00370 // Execute the query 00371 DriverCompliance driverCompliance = backend.getDriverCompliance(); 00372 if (driverCompliance.supportSetQueryTimeout()) 00373 s.setQueryTimeout(request.getTimeout()); 00374 00375 int rows = 0; 00376 if (request.isDriverProcessed() || (request.getSqlSkeleton() == null)) 00377 rows = s.executeUpdate(sql); 00378 else 00379 rows = ((PreparedStatement) s).executeUpdate(); 00380 00381 s.close(); 00382 return rows; 00383 } 00384 catch (SQLException e) 00385 { // Something bad happened 00386 if (backend.isValidConnection(c)) 00387 throw e; // Connection is valid, throw the exception 00388 else 00389 throw new BadConnectionException(e); 00390 } 00391 finally 00392 { 00393 backend.removePendingRequest(request); 00394 } 00395 }
|
|
Execute an update prepared statement on a backend. If the execution fails, the connection is checked for validity. If the connection was not valid, the query is automatically retried on a new connection.
Definition at line 410 of file AbstractLoadBalancer.java. References java.sql.Statement.executeUpdate(), java.sql.Statement.setQueryTimeout(), and org.objectweb.cjdbc.controller.backend.DriverCompliance.supportSetQueryTimeout. 00413 { 00414 try 00415 { 00416 backend.addPendingWriteRequest(request); 00417 String sql = request.getSQL(); 00418 // Rewrite the query if needed 00419 sql = backend.rewriteQuery(sql); 00420 00421 Statement s = c.createStatement(); 00422 00423 // Execute the query 00424 DriverCompliance driverCompliance = backend.getDriverCompliance(); 00425 if (driverCompliance.supportSetQueryTimeout()) 00426 s.setQueryTimeout(request.getTimeout()); 00427 00428 s.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); 00429 ControllerResultSet rs = new ControllerResultSet(request, s 00430 .getGeneratedKeys(), metadataCache, s); 00431 return rs; 00432 } 00433 catch (SQLException e) 00434 { // Something bad happened 00435 if (backend.isValidConnection(c)) 00436 throw e; // Connection is valid, throw the exception 00437 else 00438 throw new BadConnectionException(e); 00439 } 00440 finally 00441 { 00442 backend.removePendingRequest(request); 00443 } 00444 }
|
|
Execute a write stored procedure on the given backend. The callable statement is setXXX if the driver has not processed the statement.
Definition at line 510 of file AbstractLoadBalancer.java. 00513 { 00514 try 00515 { 00516 backend.addPendingWriteRequest(proc); 00517 00518 // We suppose here that the request does not modify the schema since 00519 // it is a read-only query. 00520 CallableStatement cs; 00521 if (proc.isDriverProcessed()) 00522 cs = c.prepareCall(proc.getSQL()); 00523 else 00524 { 00525 cs = c.prepareCall(proc.getSqlSkeleton()); 00526 org.objectweb.cjdbc.driver.PreparedStatement.setPreparedStatement(proc 00527 .getSQL(), cs); 00528 } 00529 if (backend.getDriverCompliance().supportSetQueryTimeout()) 00530 cs.setQueryTimeout(proc.getTimeout()); 00531 if ((proc.getMaxRows() > 0) 00532 && backend.getDriverCompliance().supportSetMaxRows()) 00533 cs.setMaxRows(proc.getMaxRows()); 00534 int rows = cs.executeUpdate(); 00535 cs.close(); 00536 return rows; 00537 } 00538 catch (SQLException e) 00539 { // Something bad happened 00540 if (backend.isValidConnection(c)) 00541 throw e; // Connection is valid, throw the exception 00542 else 00543 throw new BadConnectionException(e); 00544 } 00545 finally 00546 { 00547 backend.removePendingRequest(proc); 00548 } 00549 }
|
|
Perform a write request. This request should usually be broadcasted to all nodes.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
Perform a write request and return a ResultSet containing the auto generated keys.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
Call a stored procedure that performs an update.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
Definition at line 744 of file AbstractLoadBalancer.java. 00745 { 00746 return "loadbalancer"; 00747 }
|
|
Factorized code to start a transaction on a backend and to retrieve a connection on this backend
Definition at line 707 of file AbstractLoadBalancer.java. 00710 { 00711 Connection c = null; 00712 boolean isConnectionValid = false; 00713 do 00714 { 00715 c = cm.getConnection(tid); 00716 00717 // Sanity check 00718 if (c == null) 00719 throw new UnreachableBackendException(Translate.get( 00720 "loadbalancer.unable.get.connection", new String[]{ 00721 String.valueOf(tid), backend.getName()})); 00722 try 00723 { 00724 c.setAutoCommit(false); 00725 isConnectionValid = true; 00726 } 00727 catch (SQLException e) 00728 { 00729 if (backend.isValidConnection(c)) 00730 throw e; // Connection is valid, throw the exception 00731 else 00732 { 00733 cm.deleteConnection(tid); 00734 } 00735 } 00736 } 00737 while (!isConnectionValid); 00738 return c; 00739 }
|
|
Get information about the Request Load Balancer
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_LPRF, org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_LPRF, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_LPRF, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec_RR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec_WRR, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
Get the needed query parsing granularity.
Definition at line 176 of file AbstractLoadBalancer.java. 00177 {
00178 return parsingGranularity;
00179 }
|
|
Returns the RAIDbLevel.
Definition at line 156 of file AbstractLoadBalancer.java. Referenced by org.objectweb.cjdbc.controller.loadbalancer.BackendWorkerThread.BackendWorkerThread(). 00157 {
00158 return raidbLevel;
00159 }
|
|
Definition at line 684 of file AbstractLoadBalancer.java. References org.objectweb.cjdbc.controller.loadbalancer.AbstractLoadBalancer.getXmlImpl(). 00685 { 00686 StringBuffer info = new StringBuffer(); 00687 info.append("<" + DatabasesXmlTags.ELT_LoadBalancer + ">"); 00688 info.append(getXmlImpl()); 00689 info.append("</" + DatabasesXmlTags.ELT_LoadBalancer + ">"); 00690 return info.toString(); 00691 }
|
|
Get information about the Request Load Balancer in xml
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. Referenced by org.objectweb.cjdbc.controller.loadbalancer.AbstractLoadBalancer.getXml(). |
|
Interprets the macros in the request (depending on the
Definition at line 662 of file AbstractLoadBalancer.java. References org.objectweb.cjdbc.common.sql.AbstractRequest.getSQL(), org.objectweb.cjdbc.common.sql.AbstractRequest.getSqlSkeleton(), org.objectweb.cjdbc.common.sql.AbstractWriteRequest.isAlter(), org.objectweb.cjdbc.common.sql.AbstractWriteRequest.isCreate(), org.objectweb.cjdbc.common.sql.AbstractRequest.isDriverProcessed(), org.objectweb.cjdbc.common.sql.AbstractWriteRequest.isDrop(), org.objectweb.cjdbc.common.sql.AbstractRequest.isWriteRequest(), org.objectweb.cjdbc.common.sql.AbstractRequest.setSQL(), and org.objectweb.cjdbc.common.sql.AbstractRequest.setSqlSkeleton(). Referenced by org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.executeRequestOnBackend(). 00663 { 00664 if (macroHandler == null) 00665 return; 00666 00667 if (request.isWriteRequest()) 00668 { 00669 AbstractWriteRequest writeReq = (AbstractWriteRequest) request; 00670 if (writeReq.isCreate() || writeReq.isAlter() || writeReq.isDrop()) 00671 return; 00672 } 00673 00674 if (request.isDriverProcessed() || (request.getSqlSkeleton() == null)) 00675 request.setSQL(macroHandler.processMacros(request.getSQL())); 00676 else 00677 request.setSqlSkeleton(macroHandler.processMacros(request 00678 .getSqlSkeleton())); 00679 }
|
|
Rollback a transaction.
Implemented in org.objectweb.cjdbc.controller.loadbalancer.paralleldb.ParallelDB, org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. |
|
This sets the macro handler for this load balancer. Handling macros prevents different backends to generate different values when interpreting the macros which could result in data inconsitencies.
Definition at line 649 of file AbstractLoadBalancer.java. 00650 {
00651 this.macroHandler = handler;
00652 }
|
|
Set the needed query parsing granularity.
Definition at line 186 of file AbstractLoadBalancer.java. 00187 {
00188 this.parsingGranularity = parsingGranularity;
00189 }
|
|
Sets the RAIDbLevel.
Definition at line 166 of file AbstractLoadBalancer.java. 00167 {
00168 this.raidbLevel = raidbLevel;
00169 }
|
|
Associate a weight to a backend identified by its logical name.
Reimplemented in org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1ec_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2_WRR, org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2ec_WRR, and org.objectweb.cjdbc.controller.loadbalancer.singledb.SingleDB. Definition at line 619 of file AbstractLoadBalancer.java. 00620 { 00621 throw new SQLException("Weight is not supported by this load balancer"); 00622 }
|
|
Initial value: Trace
.getLogger("org.objectweb.cjdbc.controller.loadbalancer")
Definition at line 91 of file AbstractLoadBalancer.java. |