Affects Version/s: 0.89.20100924, 0.90.3, 0.92.0
Fix Version/s: None
When we process a batch of puts, the current algorithm basically goes like this:
1. Find all servers for the Put requests
2. Partition Puts by servers
3. Make requests
4. Collect success/error results
If we throw an IOE in step 1 or 2, we will abort the whole batch operation. In our case, this was an NoServerForRegionException due to region rebalancing. However, the asynchronous put case normally has requests going to a wide variety of servers. We should fail all the put requests that throw an IOE in Step 1 but continue to try all the put requests that succeed at this stage.