1 21 22 package org.continuent.sequoia.controller.loadbalancer.tasks; 23 24 import java.sql.SQLException ; 25 26 import org.continuent.sequoia.controller.backend.DatabaseBackend; 27 import org.continuent.sequoia.controller.connection.AbstractConnectionManager; 28 import org.continuent.sequoia.controller.connection.PooledConnection; 29 import org.continuent.sequoia.controller.loadbalancer.BackendWorkerThread; 30 import org.continuent.sequoia.controller.requests.AbstractRequest; 31 import org.continuent.sequoia.controller.requests.UnknownReadRequest; 32 33 40 public class OpenPersistentConnectionTask extends AbstractTask 41 { 42 private AbstractRequest request; 43 44 52 public OpenPersistentConnectionTask(int nbToComplete, int totalNb, 53 String login, long persistentConnectionId) 54 { 55 super(nbToComplete, totalNb, true, persistentConnectionId); 56 request = new UnknownReadRequest("", false, 0, ""); 57 request.setLogin(login); 58 request.setPersistentConnection(true); 59 request.setPersistentConnectionId(persistentConnectionId); 60 } 61 62 65 public void executeTask(BackendWorkerThread backendThread) 66 throws SQLException 67 { 68 DatabaseBackend backend = backendThread.getBackend(); 69 70 if (!backend.canAcceptTasks(request)) 71 { 72 notifyCompletion(backendThread); 74 return; 75 } 76 77 AbstractConnectionManager cm = backend.getConnectionManager(request 78 .getLogin()); 79 if (cm == null) 80 { 81 notifyFailure(backendThread, -1, new SQLException ( 82 "No connection manager found for user " + request.getLogin())); 83 return; 84 } 85 86 try 87 { 88 PooledConnection c = cm.retrieveConnectionInAutoCommit(request); 90 backend.addPersistentConnection(request.getPersistentConnectionId(), c); 91 92 notifySuccess(backendThread); 93 } 94 catch (Exception e) 95 { 96 notifyFailure(backendThread, -1, e); 97 } 98 } 99 100 103 public AbstractRequest getRequest() 104 { 105 return null; 106 } 107 108 111 public long getTransactionId() 112 { 113 return request.getPersistentConnectionId(); 114 } 115 116 119 public boolean isAutoCommit() 120 { 121 return true; 122 } 123 124 127 public String toString() 128 { 129 return "Open persistent connection " + request.getPersistentConnectionId(); 130 } 131 132 } 133 | Popular Tags |