@@ -696,6 +696,8 @@ FETCH:
696696 }
697697
698698 jsonhttp .NotFound (w , "path address not found" )
699+ } else if errors .Is (err , topology .ErrNotFound ) {
700+ jsonhttp .ServiceUnavailable (w , "content could not be retrieved because no usable peer was available" )
699701 } else {
700702 jsonhttp .NotFound (w , nil )
701703 }
@@ -768,12 +770,18 @@ func (s *Service) downloadHandler(logger log.Logger, w http.ResponseWriter, r *h
768770 reader , l , err = joiner .New (ctx , s .storer .Download (cache ), s .storer .Cache (), reference , rLevel )
769771 }
770772 if err != nil {
771- if errors .Is (err , storage .ErrNotFound ) || errors . Is ( err , topology . ErrNotFound ) {
773+ if errors .Is (err , storage .ErrNotFound ) {
772774 logger .Debug ("api download: not found " , "address" , reference , "error" , err )
773775 logger .Error (nil , err .Error ())
774776 jsonhttp .NotFound (w , nil )
775777 return
776778 }
779+ if errors .Is (err , topology .ErrNotFound ) {
780+ logger .Debug ("api download: no peers available" , "address" , reference , "error" , err )
781+ logger .Error (nil , err .Error ())
782+ jsonhttp .ServiceUnavailable (w , "content could not be retrieved because no usable peer was available" )
783+ return
784+ }
777785 logger .Debug ("api download: unexpected error" , "address" , reference , "error" , err )
778786 logger .Error (nil , "api download: unexpected error" )
779787 jsonhttp .InternalServerError (w , "joiner failed" )
0 commit comments