GCS driver: fix retry function
Signed-off-by: Arthur Baars <arthur@semmle.com>
This commit is contained in:
		
							parent
							
								
									74d719d83f
								
							
						
					
					
						commit
						d3d40a8807
					
				
					 2 changed files with 43 additions and 3 deletions
				
			
		|  | @ -318,13 +318,13 @@ func retry(maxTries int, req request) error { | |||
| 	backoff := time.Second | ||||
| 	var err error | ||||
| 	for i := 0; i < maxTries; i++ { | ||||
| 		err := req() | ||||
| 		err = req() | ||||
| 		if err == nil { | ||||
| 			return nil | ||||
| 		} | ||||
| 
 | ||||
| 		status := err.(*googleapi.Error) | ||||
| 		if status == nil || (status.Code != 429 && status.Code < http.StatusInternalServerError) { | ||||
| 		status, ok := err.(*googleapi.Error) | ||||
| 		if !ok || (status.Code != 429 && status.Code < http.StatusInternalServerError) { | ||||
| 			return err | ||||
| 		} | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,10 +3,13 @@ | |||
| package gcs | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"io/ioutil" | ||||
| 	"os" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"google.golang.org/api/googleapi" | ||||
| 
 | ||||
| 	ctx "github.com/docker/distribution/context" | ||||
| 	storagedriver "github.com/docker/distribution/registry/storage/driver" | ||||
| 	"github.com/docker/distribution/registry/storage/driver/testsuites" | ||||
|  | @ -55,6 +58,43 @@ func init() { | |||
| 	}, skipGCS) | ||||
| } | ||||
| 
 | ||||
| func TestRetry(t *testing.T) { | ||||
| 	if skipGCS() != "" { | ||||
| 		t.Skip(skipGCS()) | ||||
| 	} | ||||
| 
 | ||||
| 	assertError := func(expected string, observed error) { | ||||
| 		observedMsg := "<nil>" | ||||
| 		if observed != nil { | ||||
| 			observedMsg = observed.Error() | ||||
| 		} | ||||
| 		if observedMsg != expected { | ||||
| 			t.Fatalf("expected %v, observed %v\n", expected, observedMsg) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	err := retry(2, func() error { | ||||
| 		return &googleapi.Error{ | ||||
| 			Code:    503, | ||||
| 			Message: "google api error", | ||||
| 		} | ||||
| 	}) | ||||
| 	assertError("googleapi: Error 503: google api error", err) | ||||
| 
 | ||||
| 	err = retry(2, func() error { | ||||
| 		return &googleapi.Error{ | ||||
| 			Code:    404, | ||||
| 			Message: "google api error", | ||||
| 		} | ||||
| 	}) | ||||
| 	assertError("googleapi: Error 404: google api error", err) | ||||
| 
 | ||||
| 	err = retry(2, func() error { | ||||
| 		return fmt.Errorf("error") | ||||
| 	}) | ||||
| 	assertError("error", err) | ||||
| } | ||||
| 
 | ||||
| func TestEmptyRootList(t *testing.T) { | ||||
| 	if skipGCS() != "" { | ||||
| 		t.Skip(skipGCS()) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue