RHEL6.9: NFSv3 client TCP connection stuck in FIN-WAIT-2 state forever after NFSv3 idle timer expires and NFS server's TCP FIN never arrives at the NFS client (TCP half-close)
Issue
After the NFSv3 5 minute idle timer expires, the NFS client drops the connection and a "FIN,ACK" is sent to the NFS server. For some reason, the NFS server only responds with an 'ACK' which means the TCP connection is "half-closed". At this point, no other traffic is seen and the NFS client is hung with the TCP connection in FIN_WAIT_2 state indefinitely. This looks identical to the NFSv4 issue described in https://access.redhat.com/solutions/3053801 but it is happening on NFSv3 with the TCP keepalive patch that fixes that issue.
Environment
- Red Hat Enterprise Linux 6 (NFSv3 client)
- seen once on kernel-2.6.32-696.8.1.el6 (has the TCP keepalive patch for the analogous NFSv4 issue)
- NFSv3
- seen with a 32-bit RHEL5.5 NFS server
- NOTE: A necessary condition for this failure is the NFS server does a TCP half-close (i.e. never sends a final FIN), which is likely due to either a bug on the NFS server (i.e. NFS server crash, etc), or some networking environment such as a firewall that strips a FIN from the TCP teardown sequence.
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.