Comment 19 for bug 322887

Revision history for this message
Marc Tardif (cr3) wrote :

For completeness purposes, here is the stack trace of the concurrent update exception as shown in the Zope 3 logs:

2009-01-30T17:29:31 ERROR SiteError http://localhost:8080/hardware/200712-203/index.html
Traceback (most recent call last):
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/publisher/publish.py", line 136, in publish
    result = publication.callObject(request, obj)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/app/publication/zopepublication.py", line 167, in callObject
    return mapply(ob, request.getPositionalArguments(), request)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/publisher/publish.py", line 108, in mapply
    return debug_call(obj, args)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/publisher/publish.py", line 114, in debug_call
    return obj(*args)
  File "/srv/trunk.certification.canonical.com/certify-web/src/canonical/certify/browser/page.py", line 61, in __call__
    result = provider.render()
  File "/srv/trunk.certification.canonical.com/certify-web/src/canonical/content/provider.py", line 55, in render
    return self.template(*args, **kwargs)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/app/pagetemplate/viewpagetemplatefile.py", line 83, in __call__
    return self.im_func(im_self, *args, **kw)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/app/pagetemplate/viewpagetemplatefile.py", line 51, in __call__
    sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/pagetemplate/pagetemplate.py", line 115, in pt_render
    strictinsert=0, sourceAnnotations=sourceAnnotations)()
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tal/talinterpreter.py", line 271, in __call__
    self.interpret(self.program)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tal/talinterpreter.py", line 346, in interpret
    handlers[opcode](self, args)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tal/talinterpreter.py", line 536, in do_optTag_tal
    self.do_optTag(stuff)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tal/talinterpreter.py", line 521, in do_optTag
    return self.no_tag(start, program)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tal/talinterpreter.py", line 516, in no_tag
    self.interpret(program)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tal/talinterpreter.py", line 346, in interpret
    handlers[opcode](self, args)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tal/talinterpreter.py", line 623, in do_insertText_tal
    text = self.engine.evaluateText(stuff[0])
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tales/tales.py", line 704, in evaluateText
    text = self.evaluate(expr)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tales/tales.py", line 696, in evaluate
    return expression(self)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tales/expressions.py", line 217, in __call__
    return self._eval(econtext)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tales/expressions.py", line 194, in _eval
    ob = self._subexprs[-1](econtext)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/tales/expressions.py", line 124, in _eval
    ob = self._traverser(ob, element, econtext)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/app/pagetemplate/engine.py", line 68, in __call__
    request=request)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/traversing/adapters.py", line 164, in traversePathElement
    return traversable.traverse(nm, further_path)
  File "/srv/trunk.certification.canonical.com/certify-zope3/src/zope/traversing/adapters.py", line 44, in traverse
    attr = getattr(subject, name, _marker)
  File "/srv/trunk.certification.canonical.com/certify-web/src/canonical/certify/browser/hardware.py", line 59, in title
    return "%s %s" % (self.context.record_type.name,
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/references.py", line 154, in __get__
    self._relation.get_local_variables(local))
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/store.py", line 157, in get
    self.flush()
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/store.py", line 494, in flush
    self._flush_one(obj_info)
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/store.py", line 556, in _flush_one
    self._connection.execute(expr, noresult=True)
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/databases/postgres.py", line 263, in execute
    return Connection.execute(self, statement, params, noresult)
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/database.py", line 203, in execute
    raw_cursor = self.raw_execute(statement, params)
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/databases/postgres.py", line 293, in raw_execute
    return Connection.raw_execute(self, statement, params)
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/database.py", line 284, in raw_execute
    self._check_disconnect(raw_cursor.execute, *args)
  File "/srv/trunk.certification.canonical.com/certify-storm/storm/database.py", line 325, in _check_disconnect
    return function(*args, **kwargs)
ProgrammingError: could not serialize access due to concurrent update