[Zodb-checkins] CVS: ZODB3/ZEO - StorageServer.py:1.74.2.6.4.9
Guido van Rossum
guido@python.org
Tue, 17 Dec 2002 16:40:36 -0500
Update of /cvs-repository/ZODB3/ZEO
In directory cvs.zope.org:/tmp/cvs-serv24193
Modified Files:
Tag: ZODB3-fast-restart-branch
StorageServer.py
Log Message:
Logging cleanup. Use the connection address as part of the log label,
so log messages pertaining to different clients can be distinguished.
Jeremy is making a similar change to zrpc.
=== ZODB3/ZEO/StorageServer.py 1.74.2.6.4.8 => 1.74.2.6.4.9 ===
--- ZODB3/ZEO/StorageServer.py:1.74.2.6.4.8 Tue Dec 17 16:15:44 2002
+++ ZODB3/ZEO/StorageServer.py Tue Dec 17 16:40:36 2002
@@ -246,10 +246,18 @@
self.storage_id = "uninitialized"
self.transaction = None
self.read_only = read_only
+ self.log_label = _label
def notifyConnected(self, conn):
self.connection = conn # For restart_other() below
self.client = self.ClientStorageStubClass(conn)
+ addr = conn.addr
+ if isinstance(addr, type("")):
+ label = addr
+ else:
+ host, port = addr
+ label = str(host) + ":" + str(port)
+ self.log_label = _label + "/" + label
def notifyDisconnected(self):
# When this storage closes, we must ensure that it aborts
@@ -271,7 +279,7 @@
return "<%s %X trans=%s s_trans=%s>" % (name, id(self), tid, stid)
def log(self, msg, level=zLOG.INFO, error=None):
- zLOG.LOG("%s:%s" % (_label, self.storage_id), level, msg, error=error)
+ zLOG.LOG(self.log_label, level, msg, error=error)
def setup_delegation(self):
"""Delegate several methods to the storage"""
@@ -309,7 +317,7 @@
This method must be the first one called by the client.
"""
if self.storage is not None:
- log("duplicate register() call")
+ self.log("duplicate register() call")
raise ValueError, "duplicate register() call"
storage = self.server.storages.get(storage_id)
if storage is None:
@@ -569,7 +577,8 @@
old_strategy = self.strategy
assert isinstance(old_strategy, DelayedCommitStrategy)
self.strategy = ImmediateCommitStrategy(self.storage,
- self.client)
+ self.client,
+ self.log)
resp = old_strategy.restart(self.strategy)
if delay is not None:
delay.reply(resp)
@@ -625,11 +634,12 @@
class ImmediateCommitStrategy:
"""The storage is available so do a normal commit."""
- def __init__(self, storage, client):
+ def __init__(self, storage, client, logmethod):
self.storage = storage
self.client = client
self.invalidated = []
self.serials = []
+ self.log = logmethod
def tpc_begin(self, txn, tid, status):
self.txn = txn
@@ -657,8 +667,8 @@
if not isinstance(err, TransactionError):
# Unexpected errors are logged and passed to the client
exc_info = sys.exc_info()
- log("store error: %s, %s" % exc_info[:2],
- zLOG.ERROR, error=exc_info)
+ self.log("store error: %s, %s" % exc_info[:2],
+ zLOG.ERROR, error=exc_info)
del exc_info
# Try to pickle the exception. If it can't be pickled,
# the RPC response would fail, so use something else.
@@ -668,7 +678,7 @@
pickler.dump(err, 1)
except:
msg = "Couldn't pickle storage exception: %s" % repr(err)
- log(msg, zLOG.ERROR)
+ self.log(msg, zLOG.ERROR)
err = StorageServerError(msg)
# The exception is reported back as newserial for this oid
newserial = err