Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-7286

When a durable client is killed for the second time, its socket is not closed properly

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.11.0
    • client queues
    • None

    Description

      The first time the durable client is killed, the socket is closed by SocketCloser.inlineClose:

      [warn 2019/10/10 12:26:07.025 PDT <ServerConnection on port 49494 Thread 4> tid=0x41] ClientHealthMonitor: Unregistering client with member id identity(192.168.1.4(client:17910:loner):49501:cf8f22b7:client,connection=2,durableAttributes=DurableClientAttributes[id=client-1; timeout=120]) due to: The connection has been reset while reading the header
      
      [warn 2019/10/10 12:26:07.026 PDT <ServerConnection on port 49494 Thread 4> tid=0x41] XXX CacheClientProxy.closeSocket socket=Socket[addr=/192.168.1.4,port=49506,localport=49494]; socketIsClosed=false; _socketClosed=false
      
      [warn 2019/10/10 12:26:07.026 PDT <ServerConnection on port 49494 Thread 4> tid=0x41] XXX SocketCloser.asyncClose socket=Socket[addr=/192.168.1.4,port=49506,localport=49494]; socketIsClosed=false
      
      [info 2019/10/10 12:26:07.028 PDT <Client Message Dispatcher for 192.168.1.4(client:17910:loner):49501:cf8f22b7:client (client-1)> tid=0x42] CacheClientProxy[identity(192.168.1.4(client:17910:loner):49501:cf8f22b7:client,connection=2,durableAttributes=DurableClientAttributes[id=client-1; timeout=120]); port=49506; primary=true; version=GEODE 1.11.0] : Pausing processing
      
      [warn 2019/10/10 12:26:07.031 PDT <AsyncSocketCloser for 192.168.1.4> tid=0x46] XXX SocketCloser.inlineClose closed socket=Socket[addr=/192.168.1.4,port=49506,localport=49494]; socketIsClosed=true
      
      [info 2019/10/10 12:26:07.031 PDT <ServerConnection on port 49494 Thread 4> tid=0x41] CacheClientNotifier: Keeping proxy for durable client named client-1 for 120 seconds CacheClientProxy[identity(192.168.1.4(client:17910:loner):49501:cf8f22b7:client,connection=2,durableAttributes=DurableClientAttributes[id=client-1; timeout=120]); port=49506; primary=true; version=GEODE 1.11.0].
      

      If the client rejoins and is killed again, the socket is not closed because the _socketClosed AtomicBoolean is true from the last time the client closed, so SocketCloser.asyncClose is not called:

      [warn 2019/10/10 12:26:27.706 PDT <ServerConnection on port 49494 Thread 10> tid=0x4a] ClientHealthMonitor: Unregistering client with member id identity(192.168.1.4(client:17939:loner):49519:62f822b7:client,connection=2,durableAttributes=DurableClientAttributes[id=client-1; timeout=120]) due to: The connection has been reset while reading the header
      
      [warn 2019/10/10 12:26:27.706 PDT <ServerConnection on port 49494 Thread 10> tid=0x4a] XXX CacheClientProxy.closeSocket socket=Socket[addr=/192.168.1.4,port=49524,localport=49494]; socketIsClosed=false; _socketClosed=true
      
      [info 2019/10/10 12:26:27.706 PDT <ServerConnection on port 49494 Thread 10> tid=0x4a] CacheClientNotifier: Keeping proxy for durable client named client-1 for 120 seconds CacheClientProxy[identity(192.168.1.4(client:17939:loner):49519:62f822b7:client,connection=2,durableAttributes=DurableClientAttributes[id=client-1; timeout=120]); port=49524; primary=true; version=GEODE 1.11.0].
      

      Even when the durable client's expiration task fires, the socket is not closed:

      [warn 2019/10/10 12:28:27.708 PDT <Timer-2> tid=0x29] CacheClientProxy[identity(192.168.1.4(client:17939:loner):49519:62f822b7:client,connection=2,durableAttributes=DurableClientAttributes[id=client-1; timeout=120]); port=49524; primary=true; version=GEODE 1.11.0] : The expiration task has fired, so this proxy is being terminated.
      
      [warn 2019/10/10 12:28:27.710 PDT <Timer-2> tid=0x29] XXX CacheClientProxy.closeSocket socket=Socket[addr=/192.168.1.4,port=49524,localport=49494]; socketIsClosed=false; _socketClosed=true
      
      [warn 2019/10/10 12:28:27.712 PDT <Timer-2> tid=0x29] XXX CacheClientProxy.closeSocket socket=Socket[addr=/192.168.1.4,port=49524,localport=49494]; socketIsClosed=false; _socketClosed=true
      

      The AtomicBoolean needs to be reset when the durable client rejoins.

      Attachments

        Issue Links

          Activity

            People

              boglesby Barrett Oglesby
              boglesby Barrett Oglesby
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h