RemoteRepository: account rx/tx bytes

This commit is contained in:
Marian Beermann 2017-02-23 16:50:52 +01:00
parent 4862efe718
commit f3c7e7cd36
1 changed files with 9 additions and 1 deletions

View File

@ -507,6 +507,8 @@ class RemoteRepository:
self.location = self._location = location
self.preload_ids = []
self.msgid = 0
self.rx_bytes = 0
self.tx_bytes = 0
self.to_send = b''
self.chunkid_to_msgids = {}
self.ignore_responses = set()
@ -607,6 +609,8 @@ This problem will go away as soon as the server has been upgraded to 1.0.7+.
# in any case, we want to cleanly close the repo, even if the
# rollback can not succeed (e.g. because the connection was
# already closed) and raised another exception:
logger.debug('RemoteRepository: %d bytes sent, %d bytes received, %d messages sent',
self.tx_bytes, self.rx_bytes, self.msgid)
self.close()
@property
@ -728,6 +732,7 @@ This problem will go away as soon as the server has been upgraded to 1.0.7+.
data = os.read(fd, BUFSIZE)
if not data:
raise ConnectionClosed()
self.rx_bytes += len(data)
self.unpacker.feed(data)
for unpacked in self.unpacker:
if isinstance(unpacked, dict):
@ -752,6 +757,7 @@ This problem will go away as soon as the server has been upgraded to 1.0.7+.
data = os.read(fd, 32768)
if not data:
raise ConnectionClosed()
self.rx_bytes += len(data)
data = data.decode('utf-8')
for line in data.splitlines(keepends=True):
handle_remote_line(line)
@ -785,7 +791,9 @@ This problem will go away as soon as the server has been upgraded to 1.0.7+.
if self.to_send:
try:
self.to_send = self.to_send[self.ratelimit.write(self.stdin_fd, self.to_send):]
written = self.ratelimit.write(self.stdin_fd, self.to_send)
self.tx_bytes += written
self.to_send = self.to_send[written:]
except OSError as e:
# io.write might raise EAGAIN even though select indicates
# that the fd should be writable