Bug 1312185 - [GSS](JDG 6.x) Double invalidate of invalid Hot Rod connections
Summary: [GSS](JDG 6.x) Double invalidate of invalid Hot Rod connections
Keywords:
Status: VERIFIED
Alias: None
Product: JBoss Data Grid 6
Classification: JBoss
Component: Infinispan
Version: 6.4.1,6.5.0,6.6.0,6.5.1
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ER1
: 6.6.1
Assignee: Tristan Tarrant
QA Contact: Martin Gencur
URL:
Whiteboard:
Depends On:
Blocks: 1309749 1324651
TreeView+ depends on / blocked
 
Reported: 2016-02-26 02:54 UTC by dereed
Modified: 2023-09-30 08:28 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker ISPN-6275 0 Major Closed Double invalidate of invalid Hot Rod connections 2016-09-08 16:40:41 UTC
Red Hat Issue Tracker JDG-82 0 Major Verified Avoid invalidating transport twice 2016-09-08 16:40:41 UTC

Description dereed 2016-02-26 02:54:06 UTC
When there's a problem with a Hot Rod operation, RetryOnFailureOperation invalidates the connection twice (once in a catch block, and once in a finally block).

This causes the GenericKeyedObjectPool counts to get off, and anything relying on that count (such as the maxTotal configuration for the pool) to break.

Comment 1 dereed 2016-02-26 02:54:28 UTC
org.infinispan.client.hotrod.impl.operations.RetryOnFailureOperation

    public T execute() {
        ...
        try {
            transport = getTransport(retryCount, failedServers);
            return executeOperation(transport);
        } catch (TransportException te) {
            ...
            if (transport != null)
                transportFactory.invalidateTransport(te.getServerAddress(), transport);
        ...
        } finally {
            releaseTransport(transport);
        } 
        ...

   protected void releaseTransport(Transport transport) {
      if (transport != null)
         transportFactory.releaseTransport(transport);
   }


org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory:

   public void invalidateTransport(SocketAddress serverAddress, Transport transport) {  
       ...
       pool.invalidateObject(serverAddress, (TcpTransport) transport);

   public void releaseTransport(Transport transport) {
      TcpTransport tcpTransport = (TcpTransport) transport;
      if (!tcpTransport.isValid()) {
          ...
          pool.invalidateObject(tcpTransport.getServerAddress(), tcpTransport);

Comment 4 Shay Matasaro 2016-02-29 20:03:00 UTC
the impact of this issue for this customer is that more sockets then expected are getting created and using more memory , which results in server stability issues

Comment 6 JBoss JIRA Server 2016-03-16 15:16:01 UTC
Galder Zamarreño <galder.zamarreno> updated the status of jira ISPN-6275 to Coding In Progress

Comment 7 JBoss JIRA Server 2016-04-04 16:34:04 UTC
Sebastian Łaskawiec <slaskawi> updated the status of jira ISPN-6275 to Closed

Comment 8 JBoss JIRA Server 2016-04-14 13:40:20 UTC
Galder Zamarreño <galder.zamarreno> updated the status of jira JDG-82 to Resolved


Note You need to log in before you can comment on or make changes to this bug.