Author: david.lloyd(a)jboss.com
Date: 2008-07-19 01:38:50 -0400 (Sat, 19 Jul 2008)
New Revision: 4411
Modified:
remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic/BasicHandler.java
remoting3/trunk/protocol/basic/src/test/java/org/jboss/cx/remoting/protocol/basic/ConnectionTestCase.java
Log:
Fix service registry handle leak
Modified:
remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic/BasicHandler.java
===================================================================
---
remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic/BasicHandler.java 2008-07-19
05:26:35 UTC (rev 4410)
+++
remoting3/trunk/protocol/basic/src/main/java/org/jboss/cx/remoting/protocol/basic/BasicHandler.java 2008-07-19
05:38:50 UTC (rev 4411)
@@ -256,16 +256,20 @@
final int serviceId = buffer.getInt();
final int clientId = buffer.getInt();
final Handle<RemoteServiceEndpoint> handle =
registry.lookup(serviceId);
- if (handle == null) {
- log.warn("Received client open message for unknown service
%d", Integer.valueOf(serviceId));
- break;
+ try {
+ if (handle == null) {
+ log.warn("Received client open message for unknown
service %d", Integer.valueOf(serviceId));
+ break;
+ }
+ final RemoteServiceEndpoint serviceEndpoint =
handle.getResource();
+ final Handle<RemoteClientEndpoint> clientHandle =
serviceEndpoint.createClientEndpoint();
+ // todo check for duplicate
+ // todo validate the client ID
+ log.trace("Opening client %d from service %d",
Integer.valueOf(clientId), Integer.valueOf(serviceId));
+ forwardedClients.put(Integer.valueOf(clientId), clientHandle);
+ } finally {
+ IoUtils.safeClose(handle);
}
- final RemoteServiceEndpoint serviceEndpoint = handle.getResource();
- final Handle<RemoteClientEndpoint> clientHandle =
serviceEndpoint.createClientEndpoint();
- // todo check for duplicate
- // todo validate the client ID
- log.trace("Opening client %d from service %d",
Integer.valueOf(clientId), Integer.valueOf(serviceId));
- forwardedClients.put(Integer.valueOf(clientId), clientHandle);
break;
}
case SERVICE_CLOSE: {
Modified:
remoting3/trunk/protocol/basic/src/test/java/org/jboss/cx/remoting/protocol/basic/ConnectionTestCase.java
===================================================================
---
remoting3/trunk/protocol/basic/src/test/java/org/jboss/cx/remoting/protocol/basic/ConnectionTestCase.java 2008-07-19
05:26:35 UTC (rev 4410)
+++
remoting3/trunk/protocol/basic/src/test/java/org/jboss/cx/remoting/protocol/basic/ConnectionTestCase.java 2008-07-19
05:38:50 UTC (rev 4411)
@@ -91,7 +91,7 @@
try {
context.sendReply(REPLY);
} catch (RemotingException e) {
- e.printStackTrace();
+ problems.add(e);
}
}
});
Show replies by date