[apt-proxy-devel] r677 - trunk/apt_proxy
Chris Halls
halls at alioth.debian.org
Fri Aug 17 11:05:58 UTC 2007
Author: halls
Date: Fri Aug 17 11:05:58 2007
New Revision: 677
Log:
Improve individual fetchers disconnect handling
Modified:
trunk/apt_proxy/cache.py
trunk/apt_proxy/fetchers.py
Modified: trunk/apt_proxy/cache.py
==============================================================================
--- trunk/apt_proxy/cache.py (original)
+++ trunk/apt_proxy/cache.py Fri Aug 17 11:05:58 2007
@@ -150,7 +150,7 @@
log.err('Unknown error adding request %s - %s' % (request, e), 'CacheEntry')
self.requests.remove(request)
f = failure.Failure(*sys.exc_info())
- for l in f.getTraceback().split('\n'):
+ for l in str(f).split('\n'):
log.err(' '+l, 'CacheEntry')
request.finishCode(http.INTERNAL_SERVER_ERROR, 'Unknown exception, see log file')
@@ -582,6 +582,7 @@
if self.name == new_name:
return
log.debug("renaming file: %s->%s " % (self.name, new_name), 'CacheEntry')
+ #os.system("find " + os.path.dirname(self.name))
os.rename(self.name, new_name)
self.name = new_name
Modified: trunk/apt_proxy/fetchers.py
==============================================================================
--- trunk/apt_proxy/fetchers.py (original)
+++ trunk/apt_proxy/fetchers.py Fri Aug 17 11:05:58 2007
@@ -50,6 +50,8 @@
self.backend = cacheEntry.backend
self.len_received = 0
self.deferred = defer.Deferred()
+ #import traceback
+ #self.deferred.addCallback(lambda x:traceback.print_stack())
self.start_download()
return self.deferred
@@ -353,6 +355,8 @@
def handleResponse(self, buffer):
#log.debug('handleResponse, %s bytes' % (len(buffer)), 'HttpFetcher')
+ if self.finished:
+ return
log.debug('handleResponse status=%s' % (self.http_status), 'HttpFetcher')
if self.http_status == http.NOT_MODIFIED:
log.debug("Backend server reported file is not modified: " + self.uri,'HttpFetcher')
@@ -446,9 +450,11 @@
http.HTTPClient.sendHeader(self, name, value)
def disconnect(self):
- log.debug("DISCONNECT:",'HttpFetcher')
- import traceback
- traceback.print_stack()
+ log.debug("DISCONNECT:",'FetcherHttpClient')
+ self.transport.loseConnection()
+ self.finished = True
+ #import traceback
+ #traceback.print_stack()
class HttpFetcher(protocol.ClientFactory):
@@ -518,10 +524,12 @@
fetcher.fetcher_internal_error("http_client self.connection == None")
def disconnect(self):
+ log.debug("disconnect connector:%s" % self.connector, 'HttpFetcher')
if self.connector:
self.connector.disconnect()
else:
- self.connection.transport.loseConnection()
+ #self.connection.transport.loseConnection()
+ self.connection.disconnect()
self.isConnected = False
class FtpFetcher(protocol.Protocol):
@@ -545,11 +553,13 @@
self.isConnected = False
self.instance = None
self.ftpclient = None
+ self.aborted = False
def connect(self):
"""
Establish connection to ftp server specified by backendServer
"""
+ self.aborted = False
self.connectCallback = defer.Deferred()
if not self.backendServer.username:
creator = protocol.ClientCreator(reactor, ftp.FTPClient, passive=0)
@@ -563,6 +573,10 @@
return self.connectCallback
def controlConnectionMade(self, ftpclient):
+ if self.aborted:
+ log.debug('Aborting control connection')
+ ftpclient.transport.loseConnection()
+ return
self.ftpclient = ftpclient
if(self.backendServer.backend.config.passive_ftp):
@@ -693,12 +707,14 @@
self.parent.data_received(data)
def disconnect(self):
+ self.aborted = True
if self.ftpclient is not None:
log.debug('disconnecting', 'ftp_client')
self.ftpclient.quit()
self.ftpclient.transport.loseConnection()
self.ftpclient = None
-
+ else:
+ log.debug('disconnect: no ftpclient', 'ftp_client')
def connectionLost(self, reason=None):
"""
Maybe we should do some recovery here, I don't know, but the Deferred
More information about the apt-proxy-devel
mailing list