@ -290,8 +290,10 @@ func (fs *FilerSink) fetchAndWrite(sourceChunk *filer_pb.FileChunk, path string,
fullData = data
}
transferStatus . mu . Lock ( )
transferStatus . BytesReceived = int64 ( len ( fullData ) )
transferStatus . Status = "uploading"
transferStatus . mu . Unlock ( )
currentFileId , uploadResult , uploadErr , _ := uploader . UploadWithRetry (
fs ,
@ -335,15 +337,21 @@ func (fs *FilerSink) fetchAndWrite(sourceChunk *filer_pb.FileChunk, path string,
glog . V ( 1 ) . Infof ( "skip retrying stale source %s for %s: %v" , sourceChunk . GetFileIdString ( ) , path , retryErr )
return false
}
transferStatus . mu . Lock ( )
transferStatus . LastErr = retryErr . Error ( )
transferStatus . mu . Unlock ( )
if isEofError ( retryErr ) {
eofBackoff = nextEofBackoff ( eofBackoff )
transferStatus . mu . Lock ( )
transferStatus . BytesReceived = int64 ( len ( partialData ) )
transferStatus . Status = fmt . Sprintf ( "waiting %v" , eofBackoff )
transferStatus . mu . Unlock ( )
glog . V ( 0 ) . Infof ( "source connection interrupted while replicating %s for %s (%d bytes received so far), backing off %v: %v" ,
sourceChunk . GetFileIdString ( ) , path , len ( partialData ) , eofBackoff , retryErr )
time . Sleep ( eofBackoff )
transferStatus . mu . Lock ( )
transferStatus . Status = "downloading"
transferStatus . mu . Unlock ( )
} else {
glog . V ( 0 ) . Infof ( "replicate %s for %s: %v" , sourceChunk . GetFileIdString ( ) , path , retryErr )
}