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
Show replies by date