Fix for #17168 misleading pull error

This fix avoids overwritting the previous error messages, ensures the client gets the correct error messages and not just the most recent message during the pull request.
For this `var lastErr` replaced with a slice which acts as a temp place holder for the list of returned error messages for every attempt.
The slice is later joined and returned to the caller function after searching for the image with diffirent versions(v2,v1,v0).

Updated the code with check for no space left on device error occurance and prevent the
daemon on falling back to v1,v0.

Incorporated the comments from @calavera, @RichardScothern, @cpuguy83

Signed-off-by: Anil Belur <askb23@gmail.com>
This commit is contained in:
Anil Belur 2015-11-02 13:38:02 +05:30
parent 9516a01c56
commit 1820704288

View file

@ -13,6 +13,7 @@ import (
"path/filepath"
"runtime"
"strings"
"syscall"
"time"
"github.com/Sirupsen/logrus"
@ -219,6 +220,10 @@ func ContinueOnError(err error) bool {
return shouldV2Fallback(v)
case *client.UnexpectedHTTPResponseError:
return true
case error:
if val := strings.Contains(err.Error(), strings.ToLower(syscall.ENOSPC.Error())); val {
return false
}
}
// let's be nice and fallback if the error is a completely
// unexpected one.