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: CLOSED UPSTREAM
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: 2025-02-10 03:48 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-02-10 03:48:49 UTC
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

Comment 12 Red Hat Bugzilla 2025-02-10 03:48:49 UTC
This product has been discontinued or is no longer tracked in Red Hat Bugzilla.


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