[SPARK-2670] FetchFailedException should be thrown when local fetch has failed

Thank you for your comment, @mateiz .

> I wouldn't do drop and such on a ConcurrentQueue, since it might drop stuff other threads  were adding. Just do a results.put on the failed block and don't worry about dropping other ones. You can actually move the try/catch into the for loop and add a "return" at the bottom of the catch after adding this failing FetchResult.

But, if it returns from getLocalBlocks immediately rest of FetchResults is not set to results, and we waits on results.take() in next method forever right? results is a instance of LinkedBlockingQueue and take method is blocking method.