The middle always assumes that a node is down temporarily. So, when ever a client gets timeout/null/exception from node1, it should start routing request to the next node2.
You don't. The replication is taking care of keeping the data on node2's replication store. But, node2 keeps checking the status of node1, once it's up it send the diff of the new data to node1. (we can use rsync algo here)
Lame question. It's always the next node. Better answer: Handoff to the nodes where you are replication. So, this answer will be depended on the ReplicationInterface.java
http://wiki.basho.com/Riak-Glossary.html