Commit 7e456329 authored by Julien Muchembled's avatar Julien Muchembled

More RTMIN+2 (log) information for clients and connections

parent d66b4f24
...@@ -123,6 +123,8 @@ class Application(ThreadedApplication): ...@@ -123,6 +123,8 @@ class Application(ThreadedApplication):
def log(self): def log(self):
super(Application, self).log() super(Application, self).log()
logging.info("%r", self._cache) logging.info("%r", self._cache)
for txn_context in self._txn_container.itervalues():
logging.info("%r", txn_context)
@property @property
def txn_contexts(self): def txn_contexts(self):
......
...@@ -19,6 +19,7 @@ from ZODB.POSException import StorageTransactionError ...@@ -19,6 +19,7 @@ from ZODB.POSException import StorageTransactionError
from neo.lib.connection import ConnectionClosed from neo.lib.connection import ConnectionClosed
from neo.lib.locking import SimpleQueue from neo.lib.locking import SimpleQueue
from neo.lib.protocol import Packets from neo.lib.protocol import Packets
from neo.lib.util import dump
from .exception import NEOStorageError from .exception import NEOStorageError
@apply @apply
...@@ -52,6 +53,15 @@ class Transaction(object): ...@@ -52,6 +53,15 @@ class Transaction(object):
# involved storage nodes; connection is None is connection was lost # involved storage nodes; connection is None is connection was lost
self.conn_dict = {} # {node_id: connection} self.conn_dict = {} # {node_id: connection}
def __repr__(self):
error = self.error
return ("<%s ttid=%s locking_tid=%s voted=%u"
" #queue=%s #writing=%s #written=%s%s>") % (
self.__class__.__name__,
dump(self.ttid), dump(self.locking_tid), self.voted,
len(self.queue._queue), len(self.data_dict), len(self.cache_dict),
' error=%r' % error if error else '')
def wakeup(self, conn): def wakeup(self, conn):
self.queue.put((conn, _WakeupPacket, {})) self.queue.put((conn, _WakeupPacket, {}))
......
...@@ -314,6 +314,11 @@ class EpollEventManager(object): ...@@ -314,6 +314,11 @@ class EpollEventManager(object):
for fd, conn in self.connection_dict.items(): for fd, conn in self.connection_dict.items():
logging.info(' %r: %r (pending=%r)', fd, conn, logging.info(' %r: %r (pending=%r)', fd, conn,
conn in pending_set) conn in pending_set)
for request_dict, handler in conn._handlers._pending:
handler = handler.__class__.__name__
for msg_id, (klass, kw) in sorted(request_dict.items()):
logging.info(' #0x%04x %s (%s)', msg_id,
klass.__name__, handler)
# Default to EpollEventManager. # Default to EpollEventManager.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment