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.loadbalancer.BackendWorkerThread; 29 import org.continuent.sequoia.controller.requests.AbstractRequest; 30 31 38 public class ClosePersistentConnectionTask extends AbstractTask 39 { 40 private String login; 41 private long persistentConnectionId; 42 43 51 public ClosePersistentConnectionTask(int nbToComplete, int totalNb, 52 String login, long persistentConnectionId) 53 { 54 super(nbToComplete, totalNb, true, persistentConnectionId); 55 this.login = login; 56 this.persistentConnectionId = persistentConnectionId; 57 } 58 59 62 public void executeTask(BackendWorkerThread backendThread) 63 throws SQLException 64 { 65 DatabaseBackend backend = backendThread.getBackend(); 66 AbstractConnectionManager cm = backend.getConnectionManager(login); 67 if (cm == null) 68 { 69 notifyCompletion(backendThread); 71 return; 72 } 73 74 try 75 { 76 if (backend.canAcceptTasks(persistentConnectionId)) 77 { 78 cm.releasePersistentConnectionInAutoCommit(persistentConnectionId); 80 backend.removePersistentConnection(persistentConnectionId); 81 notifySuccess(backendThread); 82 } 83 else 84 notifyCompletion(backendThread); 85 } 86 catch (Exception e) 87 { 88 notifyFailure(backendThread, -1, e); 89 } 90 } 91 92 95 public AbstractRequest getRequest() 96 { 97 return null; 98 } 99 100 103 public long getTransactionId() 104 { 105 return persistentConnectionId; 106 } 107 108 111 public boolean isAutoCommit() 112 { 113 return true; 114 } 115 116 119 public String toString() 120 { 121 return "Close persistent connection " + persistentConnectionId; 122 } 123 124 } 125 | Popular Tags |