Specification:+index asserts - (from_node, to_node) not in self.edges

Bug #810664 reported by Chris Johnston
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Launchpad itself
Fix Released
Critical
Curtis Hovey

Bug Description

OOPS-2021EE81 Obtained this oops after adding a blueprint as a dependency.

AssertionError:

    Traceback (most recent call last):
  Module zope.publisher.publish, line 134, in publish
    result = publication.callObject(request, obj)
  Module canonical.launchpad.webapp.publication, line 498, in callObject
    return mapply(ob, request.getPositionalArguments(), request)
  Module zope.publisher.publish, line 109, in mapply
    return debug_call(obj, args)
   - __traceback_info__: <security proxied zope.browserpage.metaconfigure.SimpleViewClass from /srv/launchpad.net/production/launchpad-rev-13405.1/lib/lp/blueprints/browser/../templates/specification-index.pt instance at 0x10d1b6d0>
  Module zope.publisher.publish, line 115, in debug_call
    return obj(*args)
  Module canonical.launchpad.webapp.publisher, line 308, in __call__
    return self.render()
  Module canonical.launchpad.webapp.publisher, line 293, in render
    return self.template()
  Module zope.app.pagetemplate.viewpagetemplatefile, line 83, in __call__
    return self.im_func(im_self, *args, **kw)
  Module zope.app.pagetemplate.viewpagetemplatefile, line 51, in __call__
    sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
  Module zope.pagetemplate.pagetemplate, line 113, in pt_render
    strictinsert=0, sourceAnnotations=sourceAnnotations)()
  Module zope.tal.talinterpreter, line 271, in __call__
    self.interpret(self.program)
  Module zope.tal.talinterpreter, line 343, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 888, in do_useMacro
    self.interpret(macro)
  Module zope.tal.talinterpreter, line 343, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
    self.do_optTag(stuff)
  Module zope.tal.talinterpreter, line 518, in do_optTag
    return self.no_tag(start, program)
  Module zope.tal.talinterpreter, line 513, in no_tag
    self.interpret(program)
  Module zope.tal.talinterpreter, line 343, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
    self.do_optTag(stuff)
  Module zope.tal.talinterpreter, line 522, in do_optTag
    self.interpret(program)
  Module zope.tal.talinterpreter, line 343, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 946, in do_defineSlot
    self.interpret(slot)
  Module zope.tal.talinterpreter, line 343, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 852, in do_condition
    self.interpret(block)
  Module zope.tal.talinterpreter, line 343, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
    self.do_optTag(stuff)
  Module zope.tal.talinterpreter, line 518, in do_optTag
    return self.no_tag(start, program)
  Module zope.tal.talinterpreter, line 513, in no_tag
    self.interpret(program)
  Module zope.tal.talinterpreter, line 343, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 531, in do_optTag_tal
    self.no_tag(stuff[-2], stuff[-1])
  Module zope.tal.talinterpreter, line 513, in no_tag
    self.interpret(program)
  Module zope.tal.talinterpreter, line 343, in interpret
    handlers[opcode](self, args)
  Module zope.tal.talinterpreter, line 742, in do_insertStructure_tal
    structure = self.engine.evaluateStructure(expr)
  Module zope.tales.tales, line 696, in evaluate
    return expression(self)
   - /srv/launchpad.net/production/launchpad-rev-13405.1/lib/lp/blueprints/browser/../templates/specification-index.pt
   - Line 289, Column 8
   - Expression: <PathExpr standard:u'context/@@+deptreeimgtag'>
   - Names:
      {'args': (),
       'context': <Specification 38137 u'topic-oneiric-community-web-projects' for u'ubuntu'>,
       'default': <object object at 0x2aead5f39220>,
       'loop': {},
       'nothing': None,
       'options': {},
       'repeat': {},
       'request': <lp.blueprints.publisher.BlueprintsBrowserRequest instance URL=https://blueprints.launchpad.net/ubuntu/+spec/topic-oneiric-community-web-projects/+index>,
       'template': <z3c.ptcompat.ViewPageTemplateFile object at 0xa421e50>,
       'view': <zope.browserpage.metaconfigure.SimpleViewClass from /srv/launchpad.net/production/launchpad-rev-13405.1/lib/lp/blueprints/browser/../templates/specification-index.pt object at 0x10d1b6d0>,
       'views': <zope.app.pagetemplate.viewpagetemplatefile.ViewMapper object at 0x120c5350>}
  Module zope.tales.expressions, line 217, in __call__
    return self._eval(econtext)
  Module zope.tales.expressions, line 211, in _eval
    return ob()
  Module canonical.launchpad.webapp.publisher, line 308, in __call__
    return self.render()
  Module lp.blueprints.browser.specification, line 1307, in render
    image_map = self.renderGraphvizGraph('cmapx').decode('UTF-8')
  Module lp.blueprints.browser.specification, line 1248, in renderGraphvizGraph
    input = self.getDotFileText().encode('UTF-8')
  Module lp.blueprints.browser.specification, line 1238, in getDotFileText
    specgraph = self.makeSpecGraph()
  Module lp.blueprints.browser.specification, line 1232, in makeSpecGraph
    graph.addDependencyNodes(self.context)
  Module lp.blueprints.browser.specification, line 995, in addDependencyNodes
    self.walkSpecsMakingNodes(spec, get_related_specs_fn, link_nodes_fn)
  Module lp.blueprints.browser.specification, line 1024, in walkSpecsMakingNodes
    link_nodes_fn(node, self.newOrExistingNode(related_spec))
  Module lp.blueprints.browser.specification, line 994, in link_nodes_fn
    self.link(dependency, node)
  Module lp.blueprints.browser.specification, line 984, in link
    assert (from_node, to_node) not in self.edges

Related branches

description: updated
summary: - OOPS-2021EE81
+ Specification:+index asserts - (from_node, to_node) not in self.edges
Changed in launchpad:
status: New → Triaged
importance: Undecided → Critical
tags: added: oops
description: updated
Revision history for this message
Robert Collins (lifeless) wrote :

This is a regression from the 'allow specification dependencies from different contexts'.

The graph code treated things as unique by their .name, when we need something more sophisticated - like specification.target.name + specification.name, or canonical_url(specification).

tags: added: regression
Curtis Hovey (sinzui)
Changed in launchpad:
assignee: nobody → Curtis Hovey (sinzui)
status: Triaged → In Progress
Revision history for this message
Launchpad QA Bot (lpqabot) wrote :
tags: added: qa-needstesting
Changed in launchpad:
status: In Progress → Fix Committed
Curtis Hovey (sinzui)
tags: added: qa-ok
removed: qa-needstesting
Deryck Hodge (deryck)
Changed in launchpad:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.