/** * INTERNAL: * Set the connection to be used for database modification. */ public void setWriteConnection(Accessor writeConnection) { if (writeConnection == null) { setWriteConnections(null); return; } String poolName = null; if (writeConnection.getPool() != null) { poolName = writeConnection.getPool().getName(); } else { poolName = ServerSession.NOT_POOLED; } addWriteConnection(poolName, writeConnection); }
/** * INTERNAL: * Set the connection to be used for database modification. */ public void setWriteConnection(Accessor writeConnection) { if (writeConnection == null) { setWriteConnections(null); return; } String poolName = null; if (writeConnection.getPool() != null) { poolName = writeConnection.getPool().getName(); } else { poolName = ServerSession.NOT_POOLED; } addWriteConnection(poolName, writeConnection); }
/** * INTERNAL: * Release any invalid connection in the client session. */ public void releaseInvalidClientSession(ClientSession clientSession) throws DatabaseException { for (Iterator<Accessor> accessors = clientSession.getWriteConnections().values().iterator(); accessors.hasNext(); ) { Accessor accessor = accessors.next(); if (!accessor.isValid()) { if (clientSession.getConnectionPolicy().isPooled()) { try { accessor.getPool().releaseConnection(accessor); } catch (Exception ignore) {} } else { if (!accessor.usesExternalConnectionPooling()) { clientSession.disconnect(accessor); } else { accessor.closeConnection(); } if (this.maxNumberOfNonPooledConnections != NO_MAX) { synchronized (this) { this.numberOfNonPooledConnectionsUsed--; notify(); } } } accessors.remove(); } } }
if (clientSession.getConnectionPolicy().isPooled()) { try { accessor.getPool().releaseConnection(accessor); } catch (Exception ignore) {} } else {
if (writeConnection.getPool() == null) { return super.retryTransaction(writeConnection, databaseException, retryCount, executionSession); String poolName = writeConnection.getPool().getName(); DatabaseLogin login = getLogin(); int count = login.getQueryRetryAttemptCount(); preReleaseConnection(writeConnection); writeConnection.getPool().releaseConnection(writeConnection); try { writeConnection = writeConnection.getPool().acquireConnection(); writeConnection.beginTransaction(this);
if (writeConnection.getPool() == null) { return super.retryTransaction(writeConnection, databaseException, retryCount, executionSession); String poolName = writeConnection.getPool().getName(); DatabaseLogin login = getLogin(); int count = login.getQueryRetryAttemptCount(); preReleaseConnection(writeConnection); writeConnection.getPool().releaseConnection(writeConnection); try { writeConnection = writeConnection.getPool().acquireConnection(); writeConnection.beginTransaction(this);
/** * INTERNAL: * Release (if required) connection after call. * @param query */ public void releaseConnectionAfterCall(DatabaseQuery query) { RuntimeException exception = null; for (Accessor accessor : query.getAccessors()) { //if connection is using external connection pooling then the event has been risen right before it disconnected. try { if (!accessor.usesExternalConnectionPooling()) { preReleaseConnection(accessor); } accessor.getPool().releaseConnection(accessor); } catch (RuntimeException ex) { if (exception == null) { exception = ex; } } } query.setAccessors(null); if (exception != null) { throw exception; } }
/** * INTERNAL: * Release (if required) connection after call. * @param query */ public void releaseConnectionAfterCall(DatabaseQuery query) { RuntimeException exception = null; for (Accessor accessor : query.getAccessors()) { //if connection is using external connection pooling then the event has been risen right before it disconnected. try { if (!accessor.usesExternalConnectionPooling()) { preReleaseConnection(accessor); } accessor.getPool().releaseConnection(accessor); } catch (RuntimeException ex) { if (exception == null) { exception = ex; } } } query.setAccessors(null); if (exception != null) { throw exception; } }
clientSession.preReleaseConnection(accessor); accessor.getPool().releaseConnection(accessor);
clientSession.preReleaseConnection(accessor); accessor.getPool().releaseConnection(accessor);
accessor = ((ClientSession)session).addWriteConnection(accessor.getPool().getName(), accessor);
accessor = ((ClientSession)session).addWriteConnection(accessor.getPool().getName(), accessor);