I'm using PHP and the gRPC API to talk to an etcd cluster. I'm trying to do a watch on a range of keys. I get a WatchClient and call Watch to get a BiDiStreamingCall object and write a WatchCreateRequest. I then go into a loop reading from the stream and processing Events. If the etcd cluster node I'm communicating with goes down, subsequent calls to BiDiStreamingCall::read() fail. My understanding is that as long as there are nodes available the read function should continue. Is this not the case?
The BiDiStreamingCall connection sets up communication with a specific node in the etcd cluster. If the connection to that node is lost, the Watch is terminated.