|
@@ -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
|