[teiid-commits] teiid SVN: r2781 - in branches/7.1.x: engine/src/main/java/org/teiid/dqp/internal/process and 3 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Dec 15 11:43:08 EST 2010


Author: rareddy
Date: 2010-12-15 11:43:07 -0500 (Wed, 15 Dec 2010)
New Revision: 2781

Modified:
   branches/7.1.x/client/src/main/java/org/teiid/net/socket/SocketServerConnectionFactory.java
   branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
   branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
   branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/TransactionServerImpl.java
   branches/7.1.x/engine/src/main/java/org/teiid/dqp/service/TransactionService.java
   branches/7.1.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
   branches/7.1.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java
Log:
TEIID-1392: Two leaks found, one with client state in the DQPCore and second with TransactionContext in NONE case not being cleared. Also added the debug statements for ping calls.

Modified: branches/7.1.x/client/src/main/java/org/teiid/net/socket/SocketServerConnectionFactory.java
===================================================================
--- branches/7.1.x/client/src/main/java/org/teiid/net/socket/SocketServerConnectionFactory.java	2010-12-14 21:40:44 UTC (rev 2780)
+++ branches/7.1.x/client/src/main/java/org/teiid/net/socket/SocketServerConnectionFactory.java	2010-12-15 16:43:07 UTC (rev 2781)
@@ -210,6 +210,7 @@
 								try {
 									logon.assertIdentity(session);
 									logon.ping();
+									log.log(Level.FINER, "issueing ping for session:", session); //$NON-NLS-1$
 								} catch (InvalidSessionException e) {
 								}
 							}
@@ -219,6 +220,7 @@
 								sessionStrings.add(session.getSessionID());
 							}
 							logon.ping(sessionStrings);
+							log.log(Level.FINER, "issueing ping for sessions:", sessionStrings); //$NON-NLS-1$
 						}
 					} catch (Exception e) {
 						log.log(Level.WARNING, "Error performing keep-alive ping", e); //$NON-NLS-1$

Modified: branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java	2010-12-14 21:40:44 UTC (rev 2780)
+++ branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java	2010-12-15 16:43:07 UTC (rev 2781)
@@ -488,6 +488,7 @@
 	                LogManager.logWarning(LogConstants.CTX_DQP, err, "Failed to cancel " + reqId); //$NON-NLS-1$
 				}
 	        }
+	        this.clientState.remove(sessionId);
         }
         
         try {

Modified: branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2010-12-14 21:40:44 UTC (rev 2780)
+++ branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2010-12-15 16:43:07 UTC (rev 2781)
@@ -269,6 +269,9 @@
 					suspend();
 				}
 			}
+			else if (this.transactionState == TransactionState.NONE && this.transactionContext != null) {
+				this.transactionService.closeTransactionContext(this.transactionContext);
+			}
 			sendResultsIfNeeded(null);
 		} else {
 			moreWork(false); // If the timeslice expired, then the processor can probably produce more batches.

Modified: branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/TransactionServerImpl.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/TransactionServerImpl.java	2010-12-14 21:40:44 UTC (rev 2780)
+++ branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/TransactionServerImpl.java	2010-12-15 16:43:07 UTC (rev 2781)
@@ -459,6 +459,10 @@
         return transactions.getOrCreateTransactionContext(threadId);
     }
 
+    public void closeTransactionContext(TransactionContext tc) {
+    	transactions.removeTransactionContext(tc);
+    }
+    
     /**
      * Request level transaction
      */

Modified: branches/7.1.x/engine/src/main/java/org/teiid/dqp/service/TransactionService.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/dqp/service/TransactionService.java	2010-12-14 21:40:44 UTC (rev 2780)
+++ branches/7.1.x/engine/src/main/java/org/teiid/dqp/service/TransactionService.java	2010-12-15 16:43:07 UTC (rev 2781)
@@ -47,6 +47,8 @@
 
     TransactionContext getOrCreateTransactionContext(String threadId);
     
+    void closeTransactionContext(TransactionContext tc);
+    
     void suspend(TransactionContext context) throws XATransactionException;
     
     void resume(TransactionContext context) throws XATransactionException;

Modified: branches/7.1.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java	2010-12-14 21:40:44 UTC (rev 2780)
+++ branches/7.1.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java	2010-12-15 16:43:07 UTC (rev 2781)
@@ -204,7 +204,10 @@
         }
 
         Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg);
+        assertNotNull(core.getClientState(String.valueOf(sessionid), false));
         ResultsMessage results = message.get(5000, TimeUnit.MILLISECONDS);
+        core.terminateSession(String.valueOf(sessionid));
+        assertNull(core.getClientState(String.valueOf(sessionid), false));
         if (results.getException() != null) {
         	throw results.getException();
         }

Modified: branches/7.1.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java
===================================================================
--- branches/7.1.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java	2010-12-14 21:40:44 UTC (rev 2780)
+++ branches/7.1.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java	2010-12-15 16:43:07 UTC (rev 2781)
@@ -279,6 +279,7 @@
 		SessionMetadata info = getSessionInfo(sessionID);
 		info.setLastPingTime(System.currentTimeMillis());
 		this.sessionCache.put(sessionID, info);
+		LogManager.logDetail(LogConstants.CTX_SECURITY, "Keep-alive ping received for session:"+sessionID); //$NON-NLS-1$
 	}
 
 	@Override



More information about the teiid-commits mailing list