You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Kevan Miller (JIRA)" <ji...@apache.org> on 2010/03/04 14:35:27 UTC
[jira] Created: (OPENEJB-1239) Bad client connection is never
getting discarded from pool
Bad client connection is never getting discarded from pool
----------------------------------------------------------
Key: OPENEJB-1239
URL: https://issues.apache.org/jira/browse/OPENEJB-1239
Project: OpenEJB
Issue Type: Bug
Affects Versions: 3.1.x
Reporter: Kevan Miller
Fix For: 3.1.3
If I lookup a Stateless Session bean and invoke a method from a long running client then kill the server, a subsequent invocation by the client fails (Client.java gets an error flushing the OutputStream. However, if I then restart the server, the client keeps grabbing the stale connection (which is not removed from the pool). The connection remains in the pool for some amount of time. But does eventually get cleaned up (after a socket timout period, I suppose).
When the server is down, the Client receives an IOException for the flush at line 162. We handle the error, but as long as retry is false, the connection will not be removed from the pool. write() operations on the OutputStream are not failing. Good chance that this behavior is environmental. So, on different OS's (this test is on Windows), we may see a different error that is cleaning up the connection.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Closed: (OPENEJB-1239) Bad client connection is never
getting discarded from pool
Posted by "Kevan Miller (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/OPENEJB-1239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kevan Miller closed OPENEJB-1239.
---------------------------------
> Bad client connection is never getting discarded from pool
> ----------------------------------------------------------
>
> Key: OPENEJB-1239
> URL: https://issues.apache.org/jira/browse/OPENEJB-1239
> Project: OpenEJB
> Issue Type: Bug
> Affects Versions: 3.1.x
> Reporter: Kevan Miller
> Assignee: Kevan Miller
> Fix For: 3.1.3
>
>
> If I lookup a Stateless Session bean and invoke a method from a long running client then kill the server, a subsequent invocation by the client fails (Client.java gets an error flushing the OutputStream. However, if I then restart the server, the client keeps grabbing the stale connection (which is not removed from the pool). The connection remains in the pool for some amount of time. But does eventually get cleaned up (after a socket timout period, I suppose).
> When the server is down, the Client receives an IOException for the flush at line 162. We handle the error, but as long as retry is false, the connection will not be removed from the pool. write() operations on the OutputStream are not failing. Good chance that this behavior is environmental. So, on different OS's (this test is on Windows), we may see a different error that is cleaning up the connection.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (OPENEJB-1239) Bad client connection is never
getting discarded from pool
Posted by "Kevan Miller (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/OPENEJB-1239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kevan Miller resolved OPENEJB-1239.
-----------------------------------
Resolution: Fixed
Committed revision 918990.
We'll now discard a connection on any IOException. We could be a bit more fine-grained in our retry logic. If a write operation fails prior to writing an entire message, we could add automatic retry logic (that isn't conditional). The whole message would never be sent. So, there's no chance that the server would have actually processed the invocation.
However, this error occurred on final flush. So, depending on the underlying socket implementation, the entire message could have been sent -- we've written the data to the outputstream, so it's out of our hands. And thus a retry might perform a duplicate operation.
Tests look good for me.
> Bad client connection is never getting discarded from pool
> ----------------------------------------------------------
>
> Key: OPENEJB-1239
> URL: https://issues.apache.org/jira/browse/OPENEJB-1239
> Project: OpenEJB
> Issue Type: Bug
> Affects Versions: 3.1.x
> Reporter: Kevan Miller
> Assignee: Kevan Miller
> Fix For: 3.1.3
>
>
> If I lookup a Stateless Session bean and invoke a method from a long running client then kill the server, a subsequent invocation by the client fails (Client.java gets an error flushing the OutputStream. However, if I then restart the server, the client keeps grabbing the stale connection (which is not removed from the pool). The connection remains in the pool for some amount of time. But does eventually get cleaned up (after a socket timout period, I suppose).
> When the server is down, the Client receives an IOException for the flush at line 162. We handle the error, but as long as retry is false, the connection will not be removed from the pool. write() operations on the OutputStream are not failing. Good chance that this behavior is environmental. So, on different OS's (this test is on Windows), we may see a different error that is cleaning up the connection.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Assigned: (OPENEJB-1239) Bad client connection is never
getting discarded from pool
Posted by "Kevan Miller (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/OPENEJB-1239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kevan Miller reassigned OPENEJB-1239:
-------------------------------------
Assignee: Kevan Miller
> Bad client connection is never getting discarded from pool
> ----------------------------------------------------------
>
> Key: OPENEJB-1239
> URL: https://issues.apache.org/jira/browse/OPENEJB-1239
> Project: OpenEJB
> Issue Type: Bug
> Affects Versions: 3.1.x
> Reporter: Kevan Miller
> Assignee: Kevan Miller
> Fix For: 3.1.3
>
>
> If I lookup a Stateless Session bean and invoke a method from a long running client then kill the server, a subsequent invocation by the client fails (Client.java gets an error flushing the OutputStream. However, if I then restart the server, the client keeps grabbing the stale connection (which is not removed from the pool). The connection remains in the pool for some amount of time. But does eventually get cleaned up (after a socket timout period, I suppose).
> When the server is down, the Client receives an IOException for the flush at line 162. We handle the error, but as long as retry is false, the connection will not be removed from the pool. write() operations on the OutputStream are not failing. Good chance that this behavior is environmental. So, on different OS's (this test is on Windows), we may see a different error that is cleaning up the connection.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.