Rework keepalive to use time.sleep() instead of event.wait()
This should improve power-management abilities some more The catch is that we can't wait any longer for the kathread to terminate. We were waiting for this in some cases. This is probably not a big deal. fixes deb#434074 fixes #66
This commit is contained in:
parent
b9f73621a5
commit
2a852a8f48
@ -83,16 +83,10 @@ class Account(CustomConfig.ConfigHelperMixin):
|
||||
|
||||
refreshperiod = int(self.refreshperiod * 60)
|
||||
sleepresult = self.ui.sleep(refreshperiod)
|
||||
if sleepresult == 2:
|
||||
# Cancel keep-alive, but don't bother terminating threads
|
||||
for item in kaobjs:
|
||||
item.stopkeepalive(abrupt = 1)
|
||||
return sleepresult
|
||||
else:
|
||||
# Cancel keep-alive and wait for thread to terminate.
|
||||
for item in kaobjs:
|
||||
item.stopkeepalive(abrupt = 0)
|
||||
return sleepresult
|
||||
# Cancel keepalive
|
||||
for item in kaobjs:
|
||||
item.stopkeepalive()
|
||||
return sleepresult
|
||||
|
||||
class AccountSynchronizationMixin:
|
||||
def syncrunner(self):
|
||||
|
@ -20,7 +20,7 @@ import imaplib
|
||||
from offlineimap import imaplibutil, imaputil, threadutil
|
||||
from offlineimap.ui import UIBase
|
||||
from threading import *
|
||||
import thread, hmac, os
|
||||
import thread, hmac, os, time
|
||||
import base64
|
||||
|
||||
try:
|
||||
@ -309,7 +309,7 @@ class IMAPServer:
|
||||
ui.debug('imap', 'keepalive thread started')
|
||||
while 1:
|
||||
ui.debug('imap', 'keepalive: top of loop')
|
||||
event.wait(timeout)
|
||||
time.sleep(timeout)
|
||||
ui.debug('imap', 'keepalive: after wait')
|
||||
if event.isSet():
|
||||
ui.debug('imap', 'keepalive: event is set; exiting')
|
||||
|
@ -171,8 +171,8 @@ class BaseRepository(CustomConfig.ConfigHelperMixin):
|
||||
"""The default implementation will do nothing."""
|
||||
pass
|
||||
|
||||
def stopkeepalive(self, abrupt = 0):
|
||||
"""Stop keep alive. If abrupt is 1, stop it but don't bother waiting
|
||||
def stopkeepalive(self):
|
||||
"""Stop keep alive, but don't bother waiting
|
||||
for the threads to terminate."""
|
||||
pass
|
||||
|
||||
|
@ -57,14 +57,12 @@ class IMAPRepository(BaseRepository):
|
||||
self.kathread.setDaemon(1)
|
||||
self.kathread.start()
|
||||
|
||||
def stopkeepalive(self, abrupt = 0):
|
||||
def stopkeepalive(self):
|
||||
if not hasattr(self, 'kaevent'):
|
||||
# Keepalive is not active.
|
||||
return
|
||||
|
||||
self.kaevent.set()
|
||||
if not abrupt:
|
||||
self.kathread.join()
|
||||
del self.kathread
|
||||
del self.kaevent
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user