I have been testing failover scenarios on AIX where I bring down the 
network on the member in a cluster the client is connected to. It looks 
like there is a bug with the keep-alive timeouts where the timer isn’t 
being set. This causes the failover to take fairly long (~75 seconds) on 
AIX as there aren’t any OS-level socket errors until then.

I have found that the following change causes the keep-alive timeouts to 
work properly causing quicker failovers respecting the 
GRPC_ARG_KEEPALIVE_TIMEOUT_MS value on AIX.

I have been using grpc v1.80.0.

diff --git a/src/core/ext/transport/chttp2/transport/writing.cc 
b/src/core/ext/transport/chttp2/transport/writing.cc

index 30f6caa033..7a288c7066 100644

--- a/src/core/ext/transport/chttp2/transport/writing.cc

+++ b/src/core/ext/transport/chttp2/transport/writing.cc

@@ -799,7 +799,7 @@ void grpc_chttp2_end_write(grpc_chttp2_transport* t, 
grpc_error_handle error) {

 

     if (t->keepalive_incoming_data_wanted &&

         t->keepalive_timeout < t->ping_timeout &&

-        t->keepalive_ping_timeout_handle !=

+        t->keepalive_ping_timeout_handle ==

             grpc_event_engine::experimental::EventEngine::TaskHandle::

                 kInvalid) {

       if (GRPC_TRACE_FLAG_ENABLED(http2_ping) ||

`keepalive_ping_timeout_handle != kInvalid` can never be true when the 
handle is first being armed (it starts as `kInvalid`), so the watchdog 
timer is never scheduled.

It looks like this was a bug that was identified and fixed in 
https://github.com/grpc/grpc/commit/b086f689effef7276bef6456f599aee1c12489d4. 
However, there was an automated rollback to the original version in 
https://github.com/grpc/grpc/commit/4f9b6f15f391433ef12952fe9578b9b50e159990
.

The bug is platform-agnostic dead code, but the bug seems to be only 
visible on AIX (I don’t see such issues on Linux).

Could someone confirm whether this is indeed a bug worth fixing upstream? 
Happy to submit a PR with this fix.

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/grpc-io/2986fac1-6927-4cf8-815c-b495531b86d2n%40googlegroups.com.

Reply via email to