Fix retries on req body reads
This commit is contained in:
@@ -66,13 +66,13 @@ func (t *TorrentManager) processFixers(instances []realdebrid.Torrent) {
|
||||
}
|
||||
|
||||
otherId := strings.TrimPrefix(command, "repaired_with:")
|
||||
for _, instance := range instances {
|
||||
if instance.ID == otherId {
|
||||
if instance.Progress != 100 {
|
||||
for _, instance2 := range instances {
|
||||
if instance2.ID == otherId {
|
||||
if instance2.Progress != 100 {
|
||||
t.fixers.Set(id, command) // requeue the fixer
|
||||
break
|
||||
}
|
||||
torrent := t.getMoreInfo(instance)
|
||||
torrent := t.getMoreInfo(instance2)
|
||||
t.log.Debugf("Repairing torrent %s again now that fixers ids=%s and %s are done", t.GetKey(torrent), id, otherId)
|
||||
repairMe, _ := allTorrents.Get(t.GetKey(torrent))
|
||||
toRedownload = append(toRedownload, repairMe)
|
||||
|
||||
@@ -199,9 +199,16 @@ func (t *TorrentManager) repair(torrent *Torrent) {
|
||||
}
|
||||
|
||||
// second step: download the broken files
|
||||
if len(brokenFiles) > 0 {
|
||||
t.log.Infof("Repairing by downloading only the %d broken out of %d files of torrent %s", len(brokenFiles), torrent.SelectedFiles.Count(), t.GetKey(torrent))
|
||||
|
||||
if len(brokenFiles) == 1 && allBroken {
|
||||
// if all files are broken, we can't do anything
|
||||
t.log.Warnf("Torrent %s has only 1 cached file and it's broken, marking as unfixable", t.GetKey(torrent))
|
||||
t.markAsUnfixable(torrent, "the lone cached file is broken")
|
||||
return
|
||||
|
||||
} else if len(brokenFiles) > 1 {
|
||||
if !allBroken {
|
||||
t.log.Infof("Repairing by downloading only the %d broken out of %d files of torrent %s", len(brokenFiles), torrent.SelectedFiles.Count(), t.GetKey(torrent))
|
||||
redownloadedInfo, err := t.redownloadTorrent(torrent, brokenFileIDs)
|
||||
if err != nil {
|
||||
t.log.Warnf("Cannot repair torrent %s by downloading broken files (error=%s) giving up", t.GetKey(torrent), err.Error())
|
||||
@@ -213,6 +220,8 @@ func (t *TorrentManager) repair(torrent *Torrent) {
|
||||
}
|
||||
}
|
||||
|
||||
t.log.Infof("Repairing by downloading 2 batches of the broken %d files of torrent %s", len(brokenFiles), t.GetKey(torrent))
|
||||
|
||||
// divide the broken files into 2 groups
|
||||
group1 := make([]*File, 0)
|
||||
group2 := make([]*File, 0)
|
||||
|
||||
Reference in New Issue
Block a user