Skip to content
Snippets Groups Projects
Commit 7eb68b7e authored by Richard T. Carback III's avatar Richard T. Carback III
Browse files

Fix race condition when closing channels. Don't retry anymore and instead prefer erroring out

parent 6fe18101
No related branches found
No related tags found
3 merge requests!231Revert "Update store to print changes to the partners list",!187Xx 3829/triggers,!182Add the restore error operation to the report object
...@@ -149,13 +149,18 @@ func RestoreContactsFromBackup(backupPartnerIDs []byte, client *api.Client, ...@@ -149,13 +149,18 @@ func RestoreContactsFromBackup(backupPartnerIDs []byte, client *api.Client,
} }
// Cleanup // Cleanup
// lookupCh -> foundCh -> resetContactCh -> restoredCh
close(lookupCh) close(lookupCh)
close(resetContactCh)
close(failCh)
// Now wait for subroutines to close before closing their output chans // Now wait for subroutines to close before closing their output chans
lcWg.Wait() lcWg.Wait()
// Close input to reset chan after lookup is done to avoid writes after
// close
close(foundCh) close(foundCh)
close(resetContactCh)
rsWg.Wait() rsWg.Wait()
// failCh is closed after exit of the threads to avoid writes after
// close
close(failCh)
close(restoredCh) close(restoredCh)
failWg.Wait() failWg.Wait()
...@@ -185,8 +190,6 @@ func LookupContacts(in chan *id.ID, out chan *contact.Contact, ...@@ -185,8 +190,6 @@ func LookupContacts(in chan *id.ID, out chan *contact.Contact,
continue continue
} }
jww.WARN.Printf("could not lookup %s: %v", lookupID, err) jww.WARN.Printf("could not lookup %s: %v", lookupID, err)
// Retry later
in <- lookupID
} }
} }
...@@ -207,9 +210,9 @@ func ResetSessions(in, out chan *contact.Contact, failCh chan failure, ...@@ -207,9 +210,9 @@ func ResetSessions(in, out chan *contact.Contact, failCh chan failure,
continue continue
} }
// If an error, figure out if I should report or retry // If an error, figure out if I should report or retry
// Note: Always retry here for now. // Note: Always fail here for now.
jww.WARN.Printf("could not reset %s: %v", c.ID, err) jww.WARN.Printf("could not reset %s: %v", c.ID, err)
in <- c failCh <- failure{ID: c.ID, Err: err}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment