2760: Diffviewer produces error "String incdices must be integers, not str"

Robert.*******@gmai***** (Google Code) (Is this you? Claim this profile.)
Oct. 5, 2012
What version are you running? 1.6.13


What's the URL of the page containing the problem?
http://<server>/r/2476/diff/#index_header

What steps will reproduce the problem?
1. Upgrade from 1.6.9 to 1.6.13 (used pip and easy_install, makes no difference)
2. During upgrade database upgrade partially failed, but fixed with info from: http://www.mail-archive.com/reviewboard@googlegroups.com/msg09591.html
3. Open a review
4. Click "View Diff"
5. Stack trace (see below)

What is the expected output? What do you see instead?
The posted diff(s)

What operating system are you using? What browser?
Server is running Ubuntu 10.04.4 server edition. Client Windows 7 with Chrome.

Please provide any additional information below.

string indices must be integers, not str

Traceback (most recent call last):
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/ReviewBoard-1.6.13-py2.6.egg/reviewboard/diffviewer/views.py", line 270, in view_diff
    'diffviewer/diff_file_fragment.html')
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/ReviewBoard-1.6.13-py2.6.egg/reviewboard/diffviewer/views.py", line 159, in build_diff_fragment
    return cache_memoize(key, func)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/djblets/util/misc.py", line 164, in cache_memoize
    data = lookup_callable()
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/ReviewBoard-1.6.13-py2.6.egg/reviewboard/diffviewer/views.py", line 148, in <lambda>
    RequestContext(request, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/loader.py", line 183, in render_to_string
    return t.render(Context(dictionary))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 123, in render
    return self._render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 117, in _render
    return self.nodelist.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 757, in render_node
    return node.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/defaulttags.py", line 311, in render
    return self.nodelist_true.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 757, in render_node
    return node.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/defaulttags.py", line 313, in render
    return self.nodelist_false.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 757, in render_node
    return node.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/defaulttags.py", line 313, in render
    return self.nodelist_false.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 757, in render_node
    return node.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/defaulttags.py", line 227, in render
    nodelist.append(node.render(context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/defaulttags.py", line 313, in render
    return self.nodelist_false.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 757, in render_node
    return node.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/defaulttags.py", line 285, in render
    return self.nodelist_true.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 757, in render_node
    return node.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/defaulttags.py", line 311, in render
    return self.nodelist_true.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 757, in render_node
    return node.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/defaulttags.py", line 285, in render
    return self.nodelist_true.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/django/template/base.py", line 757, in render_node
    return node.render(context)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/djblets/util/decorators.py", line 119, in render
    return self.tag_func(context, *args)
  File "/var/virtual-env/reviewboard/lib/python2.6/site-packages/ReviewBoard-1.6.13-py2.6.egg/reviewboard/diffviewer/templatetags/difftags.py", line 204, in diff_chunk_header
    if header['line'] >= line[1]:
TypeError: string indices must be integers, not str
chipx86
#1 chipx86
I'll look at it and get a release out tonight.
  • +Started
  • -Priority-Medium
    +Priority-Critical
    +Milestone-Release1.6.x
    +Component-DiffViewer
chipx86
#2 chipx86
Actually, can you clear your memory cache? This looks like it may be a stale cache issue.
  • -Started
    +NeedInfo
#3 Robert.*******@gmai***** (Google Code) (Is this you? Claim this profile.)
Yes, that was it! Thank you very much!
#4 Robert.*******@gmai***** (Google Code) (Is this you? Claim this profile.)
for others:

restart memcached (sudo service memcached restart)
chipx86
#5 chipx86
Glad to hear :) Thanks.
  • -NeedInfo
    +SetupIssue
  • -Priority-Critical
    +Priority-Medium