This commit is contained in:
@@ -30,6 +30,7 @@ type indexSender struct {
|
|||||||
prevSequence int64
|
prevSequence int64
|
||||||
evLogger events.Logger
|
evLogger events.Logger
|
||||||
connClosed chan struct{}
|
connClosed chan struct{}
|
||||||
|
done chan struct{}
|
||||||
token suture.ServiceToken
|
token suture.ServiceToken
|
||||||
pauseChan chan struct{}
|
pauseChan chan struct{}
|
||||||
resumeChan chan *db.FileSet
|
resumeChan chan *db.FileSet
|
||||||
@@ -38,6 +39,7 @@ type indexSender struct {
|
|||||||
func (s *indexSender) Serve(ctx context.Context) (err error) {
|
func (s *indexSender) Serve(ctx context.Context) (err error) {
|
||||||
l.Debugf("Starting indexSender for %s to %s at %s (slv=%d)", s.folder, s.conn.ID(), s.conn, s.prevSequence)
|
l.Debugf("Starting indexSender for %s to %s at %s (slv=%d)", s.folder, s.conn.ID(), s.conn, s.prevSequence)
|
||||||
defer func() {
|
defer func() {
|
||||||
|
close(s.done)
|
||||||
err = svcutil.NoRestartErr(err)
|
err = svcutil.NoRestartErr(err)
|
||||||
l.Debugf("Exiting indexSender for %s to %s at %s: %v", s.folder, s.conn.ID(), s.conn, err)
|
l.Debugf("Exiting indexSender for %s to %s at %s: %v", s.folder, s.conn.ID(), s.conn, err)
|
||||||
}()
|
}()
|
||||||
@@ -101,14 +103,14 @@ func (s *indexSender) Serve(ctx context.Context) (err error) {
|
|||||||
|
|
||||||
func (s *indexSender) resume(fset *db.FileSet) {
|
func (s *indexSender) resume(fset *db.FileSet) {
|
||||||
select {
|
select {
|
||||||
case <-s.connClosed:
|
case <-s.done:
|
||||||
case s.resumeChan <- fset:
|
case s.resumeChan <- fset:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *indexSender) pause() {
|
func (s *indexSender) pause() {
|
||||||
select {
|
select {
|
||||||
case <-s.connClosed:
|
case <-s.done:
|
||||||
case s.pauseChan <- struct{}{}:
|
case s.pauseChan <- struct{}{}:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -314,6 +316,7 @@ func (r *indexSenderRegistry) addLocked(folder config.FolderConfiguration, fset
|
|||||||
is := &indexSender{
|
is := &indexSender{
|
||||||
conn: r.conn,
|
conn: r.conn,
|
||||||
connClosed: r.closed,
|
connClosed: r.closed,
|
||||||
|
done: make(chan struct{}),
|
||||||
folder: folder.ID,
|
folder: folder.ID,
|
||||||
folderIsReceiveEncrypted: folder.Type == config.FolderTypeReceiveEncrypted,
|
folderIsReceiveEncrypted: folder.Type == config.FolderTypeReceiveEncrypted,
|
||||||
fset: fset,
|
fset: fset,
|
||||||
@@ -366,7 +369,7 @@ func (r *indexSenderRegistry) removeAllExcept(except map[string]struct{}) {
|
|||||||
delete(r.indexSenders, folder)
|
delete(r.indexSenders, folder)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for folder := range r.indexSenders {
|
for folder := range r.startInfos {
|
||||||
if _, ok := except[folder]; !ok {
|
if _, ok := except[folder]; !ok {
|
||||||
delete(r.startInfos, folder)
|
delete(r.startInfos, folder)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user