During rolling upgrade if the DN gets restarted, then it will send special OOB_RESTART status to all streams opened for write.
1. Local clients will wait for 30 seconds to datanode to come back.
2. Remote clients will consider these nodes as bad nodes and continue with pipeline recoveries and write. These restarted nodes will be considered as bad, and will be excluded for lifetime of stream.
In case of small cluster, where total nodes itself is 3, each time a remote node restarts for upgrade, it will be excluded.
So a stream writing to 3 nodes initial, will end-up writing to only one node at the end, there are no other nodes to replace.