----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/34072/ -----------------------------------------------------------
(Updated May 13, 2015, 1:38 a.m.) Review request for drill, Hanifi Gunes and Norris Lee. Changes ------- Added TCP_NODELAY to flush hearbeat messages immediately Started heartbeat listener thread as soon as the connection is made After sending a heartbeat, submit an async_read iff there is not already another async read in progress (critical!) Signal the wait for results condition variable if there are no more query results or heartbeat responses (PONG responses) pending. A waiting client app (like querySubmitter) can then exit if it want to. Repository: drill-git Description ------- DRILL-2998: Implement heartbeat in C++ client. As a result of adding a heartbeat mechanism, the client is always listening for a response from the hearbeat (i.e always has a request pending). The wait for results call therefore now returns when the number of query results pending is zero. Patch also includes a fix for a double delete caused by copying a pointer to the error object in the broadcastError call. The patch does not address all cases of detecting when a connection to the server is gone (this will be addressed in a subsequent fix). Diffs (updated) ----- contrib/native/client/example/querySubmitter.cpp 85e89e0c2429563c411f1e6a8c32f8c8fccf5f03 contrib/native/client/src/clientlib/drillClient.cpp 7162f63d16d4107f555c2ed3f66f7fc79e22ee0c contrib/native/client/src/clientlib/drillClientImpl.hpp 04d59c763cc9b160ebdba83579863c4856acd701 contrib/native/client/src/clientlib/drillClientImpl.cpp eca0e75167620194c848ec38c457c496514653c6 contrib/native/client/src/include/drill/common.hpp 2fa09545c6283faa6ff8aa0669ee4cde488088dc contrib/native/client/src/include/drill/drillClient.hpp d7bf33c076f37cd244ee8cd604868d9710e450f4 contrib/native/client/src/protobuf/BitControl.pb.h 865d3772843d2316e7a5f34fad42621e6360f14d contrib/native/client/src/protobuf/BitControl.pb.cc 827f708150df80908e9437a23ec4f915cb5efd7a contrib/native/client/src/protobuf/GeneralRPC.pb.h 49f4bf7f7e80939066037183c96d83f140bd7a9e contrib/native/client/src/protobuf/GeneralRPC.pb.cc 0ebb3a97c20dc1eabf3ebfc62b649be2fad12443 contrib/native/client/src/protobuf/User.pb.h c7deac38a025507bf4da16bb20d0ebce4d84571a contrib/native/client/src/protobuf/User.pb.cc 59f215795374e6f22316fe6fa5db588dfe770e9b contrib/native/client/src/protobuf/UserBitShared.pb.h e2f5fd0faeddc5968f0cdafd2200f46246210d31 contrib/native/client/src/protobuf/UserBitShared.pb.cc b07ecda41b5159458c1d3f7d215afc6835ccf809 Diff: https://reviews.apache.org/r/34072/diff/ Testing ------- Tested with broken connections on Mac. Linix and Win64 Thanks, Parth Chandra
