Mitigate frozen predixy due to infinite TCP conn retry to a failed Redis cluster node

This commit is contained in:
Iwan BK 2022-04-08 08:22:16 +07:00
parent c15f54e274
commit 2380a4f252

View File

@ -178,6 +178,13 @@ bool Socket::setTcpKeepAlive(int interval)
if (ret != 0) { if (ret != 0) {
return false; return false;
} }
// Mitigate frozen predixy due to infinite TCP conn retry to a failed Redis cluster node
// https://github.com/joyieldInc/predixy/issues/136
val = 1000; // millisecond
ret = setsockopt(mFd, IPPROTO_TCP, TCP_USER_TIMEOUT, &val, sizeof(val));
if (ret != 0) {
return false;
}
#else #else
((void)interval); //Avoid unused var warning for non Linux systems ((void)interval); //Avoid unused var warning for non Linux systems
#endif #endif
@ -238,4 +245,4 @@ int Socket::writev(const struct iovec* vecs, int cnt)
return n; return n;
} }
return 0; return 0;
} }