[Neo-report] r2123 gregory - in /trunk/neo: ./ master/ storage/
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon May 24 12:25:47 CEST 2010
Author: gregory
Date: Mon May 24 12:25:44 2010
New Revision: 2123
Log:
Catch exceptions at higher to log informations pre-mortem.
- Unify log methods among classes.
- Define log() on event manager
Modified:
trunk/neo/event.py
trunk/neo/master/app.py
trunk/neo/master/transactions.py
trunk/neo/node.py
trunk/neo/storage/app.py
trunk/neo/storage/transactions.py
Modified: trunk/neo/event.py
==============================================================================
--- trunk/neo/event.py [iso-8859-1] (original)
+++ trunk/neo/event.py [iso-8859-1] Mon May 24 12:25:44 2010
@@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
from time import time
-
+from neo import logging
from neo.epoll import Epoll
from neo.profiling import profiler_decorator
@@ -183,5 +183,15 @@
self.writer_set.remove(fd)
self.epoll.modify(fd, fd in self.reader_set, 0)
+ def log(self):
+ logging.info('Event Manager:')
+ logging.info(' Readers: %r', [x for x in self.reader_set])
+ logging.info(' Writers: %r', [x for x in self.writer_set])
+ logging.info(' Connections:')
+ pending_set = set(self._pending_processing)
+ for fd, conn in self.connection_dict.items():
+ logging.info(' %r: %r (pending=%r)', fd, conn, conn in pending_set)
+
+
# Default to EpollEventManager.
EventManager = EpollEventManager
Modified: trunk/neo/master/app.py
==============================================================================
--- trunk/neo/master/app.py [iso-8859-1] (original)
+++ trunk/neo/master/app.py [iso-8859-1] Mon May 24 12:25:44 2010
@@ -96,6 +96,17 @@
registerLiveDebugger()
def run(self):
+ try:
+ self._run()
+ except:
+ logging.info('\nPre-mortem informations:')
+ self.em.log()
+ self.nm.log()
+ self.pt.log()
+ self.tm.log()
+ raise
+
+ def _run(self):
"""Make sure that the status is sane and start a loop."""
bootstrap = True
Modified: trunk/neo/master/transactions.py
==============================================================================
--- trunk/neo/master/transactions.py [iso-8859-1] (original)
+++ trunk/neo/master/transactions.py [iso-8859-1] Mon May 24 12:25:44 2010
@@ -241,3 +241,11 @@
# discard node entry
del self._node_dict[node]
+ def log(self):
+ logging.info('Transactions:')
+ for node, tid_dict in self._node_dict.items():
+ if not len(tid_dict):
+ continue
+ logging.info(' %r: %r', dump(node.getUUID()), [dump(x) for x in
+ tid_dict.keys()])
+
Modified: trunk/neo/node.py
==============================================================================
--- trunk/neo/node.py [iso-8859-1] (original)
+++ trunk/neo/node.py [iso-8859-1] Mon May 24 12:25:44 2010
@@ -475,12 +475,12 @@
self.log()
def log(self):
- logging.debug('Node manager : %d nodes' % len(self._node_set))
+ logging.info('Node manager : %d nodes' % len(self._node_set))
for node in sorted(list(self._node_set)):
uuid = dump(node.getUUID()) or '-' * 32
address = node.getAddress() or ''
if address:
address = '%s:%d' % address
- logging.debug(' * %32s | %8s | %22s | %s' % (
+ logging.info(' * %32s | %8s | %22s | %s' % (
uuid, node.getType(), address, node.getState()))
Modified: trunk/neo/storage/app.py
==============================================================================
--- trunk/neo/storage/app.py [iso-8859-1] (original)
+++ trunk/neo/storage/app.py [iso-8859-1] Mon May 24 12:25:44 2010
@@ -145,6 +145,18 @@
self.pt.update(ptid, new_cell_list, self.nm)
def run(self):
+ try:
+ self._run()
+ except:
+ logging.info('\nPre-mortem informations:')
+ self.em.log()
+ self.nm.log()
+ self.pt.log()
+ self.tm.log()
+ self.logQueuedEvents()
+ raise
+
+ def _run(self):
"""Make sure that the status is sane and start a loop."""
if len(self.name) == 0:
raise RuntimeError, 'cluster name must be non-empty'
@@ -301,6 +313,15 @@
conn.setPeerId(msg_id)
some_callable(conn, *args, **kwargs)
+ def logQueuedEvents(self):
+ if self.event_queue is None:
+ return
+ logging.info("Pending events:")
+ for event, _msg_id, _conn, args, _kwargs in self.event_queue:
+ oid, serial, _compression, _checksum, data, tid, time = args
+ logging.info(' %r: %r:%r by %r -> %r (%r)', event.__name__, dump(oid),
+ dump(serial), dump(tid), data, time)
+
def shutdown(self, erase=False):
"""Close all connections and exit"""
for c in self.em.getConnectionList():
Modified: trunk/neo/storage/transactions.py
==============================================================================
--- trunk/neo/storage/transactions.py [iso-8859-1] (original)
+++ trunk/neo/storage/transactions.py [iso-8859-1] Mon May 24 12:25:44 2010
@@ -280,3 +280,13 @@
def loadLocked(self, oid):
return oid in self._load_lock_dict
+ def log(self):
+ logging.info("Transactions: %r",
+ [dump(x) for x in self._transaction_dict.keys()])
+ logging.info(' Read locks:')
+ for oid, tid in self._load_lock_dict.items():
+ logging.info(' %r by %r', dump(oid), dump(tid))
+ logging.info(' Write locks:')
+ for oid, tid in self._store_lock_dict.items():
+ logging.info(' %r by %r', dump(oid), dump(tid))
+
More information about the Neo-report
mailing list