[teiid-commits] teiid SVN: r4451 - in trunk/runtime/src: test/java/org/teiid/transport and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Sep 17 12:29:05 EDT 2012


Author: shawkins
Date: 2012-09-17 12:29:05 -0400 (Mon, 17 Sep 2012)
New Revision: 4451

Modified:
   trunk/runtime/src/main/java/org/teiid/transport/LogonImpl.java
   trunk/runtime/src/test/java/org/teiid/transport/TestCommSockets.java
Log:
TEIID-2172 fix for invalid session with load balancing

Modified: trunk/runtime/src/main/java/org/teiid/transport/LogonImpl.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/LogonImpl.java	2012-09-17 15:38:33 UTC (rev 4450)
+++ trunk/runtime/src/main/java/org/teiid/transport/LogonImpl.java	2012-09-17 16:29:05 UTC (rev 4451)
@@ -83,8 +83,8 @@
 	}
 	
 	private LogonResult logon(Properties connProps, byte[] krb5ServiceTicket) throws LogonException {
-		DQPWorkContext workContext = DQPWorkContext.getWorkContext();
-		String oldSessionId = workContext.getSessionId();
+		//DQPWorkContext workContext = DQPWorkContext.getWorkContext();
+		//String oldSessionId = workContext.getSessionId();
         String applicationName = connProps.getProperty(TeiidURL.CONNECTION.APP_NAME);
         // user may be null if using trustedToken to log on
         String user = connProps.getProperty(TeiidURL.CONNECTION.USER_NAME, CoreConstants.DEFAULT_ANON_USERNAME);
@@ -101,12 +101,10 @@
 	        if (DQPWorkContext.getWorkContext().getClientAddress() == null) {
 				sessionInfo.setEmbedded(true);
 	        }
-	        if (oldSessionId != null) {
-	        	try {
-					this.service.closeSession(oldSessionId);
-				} catch (InvalidSessionException e) {
-				}
-	        }
+	        //if (oldSessionId != null) {
+	        	//TODO: we should be smarter about disassociating the old sessions from the client.  we'll just rely on 
+	        	//ping based clean up
+	        //}
 			LogonResult result = new LogonResult(sessionInfo.getSessionToken(), sessionInfo.getVDBName(), sessionInfo.getVDBVersion(), clusterName);
 			if (krb5ServiceTicket != null) {
 				result.addProperty(ILogon.KRB5TOKEN, krb5ServiceTicket);

Modified: trunk/runtime/src/test/java/org/teiid/transport/TestCommSockets.java
===================================================================
--- trunk/runtime/src/test/java/org/teiid/transport/TestCommSockets.java	2012-09-17 15:38:33 UTC (rev 4450)
+++ trunk/runtime/src/test/java/org/teiid/transport/TestCommSockets.java	2012-09-17 16:29:05 UTC (rev 4451)
@@ -23,7 +23,6 @@
 package org.teiid.transport;
 
 import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
 
 import java.io.ByteArrayInputStream;
 import java.io.Serializable;
@@ -35,18 +34,10 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.teiid.client.security.ILogon;
-import org.teiid.client.security.InvalidSessionException;
-import org.teiid.client.security.LogonException;
-import org.teiid.client.security.LogonResult;
-import org.teiid.client.security.SessionToken;
-import org.teiid.client.util.ResultsFuture;
 import org.teiid.common.buffer.BufferManagerFactory;
 import org.teiid.common.buffer.impl.MemoryStorageManager;
-import org.teiid.core.ComponentNotFoundException;
-import org.teiid.core.TeiidComponentException;
 import org.teiid.core.crypto.NullCryptor;
 import org.teiid.core.util.ObjectConverterUtil;
-import org.teiid.dqp.service.SessionService;
 import org.teiid.net.CommunicationException;
 import org.teiid.net.ConnectionException;
 import org.teiid.net.TeiidURL;
@@ -54,6 +45,7 @@
 import org.teiid.net.socket.SocketServerConnectionFactory;
 import org.teiid.net.socket.SocketUtil;
 import org.teiid.net.socket.UrlServerDiscovery;
+import org.teiid.services.SessionServiceImpl;
 import org.teiid.transport.TestSocketRemoting.FakeService;
 
 
@@ -64,6 +56,7 @@
 	private SocketServerConnectionFactory sscf;
 	private InetSocketAddress addr;
 	private MemoryStorageManager storageManager;
+	private SessionServiceImpl service;
 
 	@Before public void setUp() {
 		addr = new InetSocketAddress(0);
@@ -165,26 +158,8 @@
 					return getClass().getClassLoader();
 				}
 			};
-			server.registerClientService(ILogon.class, new LogonImpl(mock(SessionService.class), "fakeCluster") { //$NON-NLS-1$
-				@Override
-				public LogonResult logon(Properties connProps)
-						throws LogonException, ComponentNotFoundException {
-					return new LogonResult(new SessionToken("dummy"), "x", 1, "z");
-				}
-				
-				@Override
-				public ResultsFuture<?> ping() throws InvalidSessionException,
-						TeiidComponentException {
-					return ResultsFuture.NULL_FUTURE;
-				}
-				
-				@Override
-				public void assertIdentity(SessionToken checkSession)
-						throws InvalidSessionException, TeiidComponentException {
-					return;
-				}
-
-			}, null); 
+			service = new SessionServiceImpl();
+			server.registerClientService(ILogon.class, new LogonImpl(service, "fakeCluster"), null); 
 			server.registerClientService(FakeService.class, new TestSocketRemoting.FakeServiceImpl(), null);
 			storageManager = new MemoryStorageManager();
 			listener = new SocketListener(addr, 1024, 1024, 1, config, server, storageManager);
@@ -199,6 +174,7 @@
 		Properties p = new Properties();
 		String url = new TeiidURL(addr.getHostName(), listener.getPort(), clientSecure).getAppServerURL();
 		p.setProperty(TeiidURL.CONNECTION.SERVER_URL, url); 
+		p.setProperty(TeiidURL.CONNECTION.APP_NAME, "test");
 		p.setProperty(TeiidURL.CONNECTION.DISCOVERY_STRATEGY, UrlServerDiscovery.class.getName());
 		if (sscf == null) {
 			sscf = new SocketServerConnectionFactory();
@@ -254,10 +230,13 @@
 		assertEquals(2, stats.objectsRead); // handshake response, logon,
 		assertEquals(1, stats.sockets);
 		conn.cleanUp();
+		helpEstablishConnection(false, config, p);
+		conn.selectServerInstance(false);
+		assertEquals(2, this.service.getActiveSessions().size());
 		assertTrue(conn.isOpen(1000));
 		stats = listener.getStats();
-		assertEquals(5, stats.objectsRead); // ping (pool test), assert identity, ping (isOpen)
-		assertEquals(1, stats.sockets);
+		assertEquals(7, stats.objectsRead); // ping (pool test), assert identity, ping (isOpen)
+		assertEquals(2, stats.sockets);
 		conn.close();
 	}
 	



More information about the teiid-commits mailing list