Hi Christian, Here you go...
ERROR:root:Error updating reviews using default Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 188, in handle_label self.update_backend(label, using) File "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 233, in update_backend do_update(backend, index, qs, start, end, total, verbosity=self.verbosity, commit=self.commit) File "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 96, in do_update backend.update(index, current_qs, commit=commit) File "/usr/lib/python2.7/site-packages/haystack/backends/whoosh_backend.py", line 196, in update doc = index.full_prepare(obj) File "/usr/lib/python2.7/site-packages/haystack/indexes.py", line 212, in full_prepare self.prepared_data = self.prepare(obj) File "/usr/lib/python2.7/site-packages/haystack/indexes.py", line 203, in prepare self.prepared_data[field.index_fieldname] = field.prepare(obj) File "/usr/lib/python2.7/site-packages/haystack/fields.py", line 166, in prepare return self.convert(super(CharField, self).prepare(obj)) File "/usr/lib/python2.7/site-packages/haystack/fields.py", line 90, in prepare getattr(current_object, attr) File "/usr/lib/python2.7/site-packages/reviewboard/reviews/models/review_request.py", line 273, in get_commit commit_id=six.text_type(self.changenum)) File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 493, in update rows = query.get_compiler(self.db).execute_sql(None) File "/usr/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 980, in execute_sql cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) File "/usr/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 786, in execute_sql cursor.execute(sql, params) File "/usr/lib/python2.7/site-packages/django/db/backends/util.py", line 53, in execute return self.cursor.execute(sql, params) File "/usr/lib/python2.7/site-packages/django/db/utils.py", line 99, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "/usr/lib/python2.7/site-packages/django/db/backends/util.py", line 53, in execute return self.cursor.execute(sql, params) File "/usr/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 124, in execute return self.cursor.execute(query, args) File "/usr/lib64/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute self.errorhandler(self, exc, value) File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue IntegrityError: (1062, "Duplicate entry '1701871-1' for key 'reviews_reviewrequest_b8c24015'") Traceback (most recent call last): File "/usr/bin/rb-site", line 9, in <module> load_entry_point('ReviewBoard==2.5.16', 'console_scripts', 'rb-site')() File "/usr/lib/python2.7/site-packages/reviewboard/cmdline/rbsite.py", line 1964, in main command.run() File "/usr/lib/python2.7/site-packages/reviewboard/cmdline/rbsite.py", line 1884, in run site.run_manage_command(args[0], args[1:]) File "/usr/lib/python2.7/site-packages/reviewboard/cmdline/rbsite.py", line 712, in run_manage_command execute_from_command_line([__file__, cmd] + params) File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line utility.execute() File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute output = self.handle(*args, **options) File "/usr/lib/python2.7/site-packages/reviewboard/reviews/management/commands/index.py", line 19, in handle call_command('rebuild_index', interactive=False) File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 159, in call_command return klass.execute(*args, **defaults) File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute output = self.handle(*args, **options) File "/usr/lib/python2.7/site-packages/haystack/management/commands/rebuild_index.py", line 26, in handle call_command('update_index', **options) File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 159, in call_command return klass.execute(*args, **defaults) File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute output = self.handle(*args, **options) File "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 183, in handle return super(Command, self).handle(*items, **options) File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 385, in handle label_output = self.handle_label(label, **options) File "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 188, in handle_label self.update_backend(label, using) File "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 233, in update_backend do_update(backend, index, qs, start, end, total, verbosity=self.verbosity, commit=self.commit) File "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 96, in do_update backend.update(index, current_qs, commit=commit) File "/usr/lib/python2.7/site-packages/haystack/backends/whoosh_backend.py", line 196, in update doc = index.full_prepare(obj) File "/usr/lib/python2.7/site-packages/haystack/indexes.py", line 212, in full_prepare self.prepared_data = self.prepare(obj) File "/usr/lib/python2.7/site-packages/haystack/indexes.py", line 203, in prepare self.prepared_data[field.index_fieldname] = field.prepare(obj) File "/usr/lib/python2.7/site-packages/haystack/fields.py", line 166, in prepare return self.convert(super(CharField, self).prepare(obj)) File "/usr/lib/python2.7/site-packages/haystack/fields.py", line 90, in prepare getattr(current_object, attr) File "/usr/lib/python2.7/site-packages/reviewboard/reviews/models/review_request.py", line 273, in get_commit commit_id=six.text_type(self.changenum)) File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 493, in update rows = query.get_compiler(self.db).execute_sql(None) File "/usr/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 980, in execute_sql cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) File "/usr/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 786, in execute_sql cursor.execute(sql, params) File "/usr/lib/python2.7/site-packages/django/db/backends/util.py", line 53, in execute return self.cursor.execute(sql, params) File "/usr/lib/python2.7/site-packages/django/db/utils.py", line 99, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "/usr/lib/python2.7/site-packages/django/db/backends/util.py", line 53, in execute return self.cursor.execute(sql, params) File "/usr/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 124, in execute return self.cursor.execute(query, args) File "/usr/lib64/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute self.errorhandler(self, exc, value) File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue django.db.utils.IntegrityError: (1062, "Duplicate entry '1701871-1' for key 'reviews_reviewrequest_b8c24015'") The error looks familiar - we had some issue sin the past with duplicate entries. The index never used to fail for them though... Thanks Rob On Monday, 16 October 2017 10:38:52 UTC+1, Christian Hammond wrote: > > Hi Rob, > > I think what's happening is that there's an exception being raised the > first time this is accessed that is resulting in hasattr failing. One more > check (I'm about to go to bed so I'll have to follow up in the morning). > > Before the "has_attr = ..." line, add: > > if attr == 'commit': > getattr(current_object, attr) > > I imagine that's going to result in a new crash, which is good. Show me > what that says. > > Christian > > On Mon, Oct 16, 2017 at 2:09 AM, 'Rob Backhurst' via reviewboard < > revie...@googlegroups.com <javascript:>> wrote: > >> Hi Chris, >> >> Certainly seems a bit weird - I appreciate all your efforts so far!. >> See the out put from the latest index below. If this doesn't tell you >> anything useful, perhaps we can try (on our test system) removing the >> review/record that seems to be causing this and re-run the index? >> >> >> ERROR:root:Error updating reviews using default >> Traceback (most recent call last): >> File >> "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", >> >> line 188, in handle_label >> self.update_backend(label, using) >> File >> "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", >> >> line 233, in update_backend >> do_update(backend, index, qs, start, end, total, >> verbosity=self.verbosity, commit=self.commit) >> File >> "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", >> >> line 96, in do_update >> backend.update(index, current_qs, commit=commit) >> File >> "/usr/lib/python2.7/site-packages/haystack/backends/whoosh_backend.py", >> line 196, in update >> doc = index.full_prepare(obj) >> File "/usr/lib/python2.7/site-packages/haystack/indexes.py", line 212, >> in full_prepare >> self.prepared_data = self.prepare(obj) >> File "/usr/lib/python2.7/site-packages/haystack/indexes.py", line 203, >> in prepare >> self.prepared_data[field.index_fieldname] = field.prepare(obj) >> File "/usr/lib/python2.7/site-packages/haystack/fields.py", line 164, >> in prepare >> return self.convert(super(CharField, self).prepare(obj)) >> File "/usr/lib/python2.7/site-packages/haystack/fields.py", line 92, in >> prepare >> raise SearchFieldError("The model '%s' ('%s' -- %s.%s at %s -- %s:%s) >> does not have a model_attr '%s' (%s -- %s)." % (obj.__class__.__name__, >> current_object.pk, current_object.__class__.__module__, >> current_object.__class__.__name__, inspect.getfile(obj.__class__), id(obj), >> id(current_object), attr, hasattr(current_object, attr), has_attr)) >> SearchFieldError: The model 'ReviewRequest' ('27393' -- >> reviewboard.reviews.models.review_request.ReviewRequest at >> /usr/lib/python2.7/site-packages/reviewboard/reviews/models/review_request.pyc >> >> -- 231638480:231638480) does not have a model_attr 'commit' (True -- False). >> Traceback (most recent call last): >> File "/usr/bin/rb-site", line 9, in <module> >> load_entry_point('ReviewBoard==2.5.16', 'console_scripts', >> 'rb-site')() >> File "/usr/lib/python2.7/site-packages/reviewboard/cmdline/rbsite.py", >> line 1964, in main >> command.run() >> File "/usr/lib/python2.7/site-packages/reviewboard/cmdline/rbsite.py", >> line 1884, in run >> site.run_manage_command(args[0], args[1:]) >> File "/usr/lib/python2.7/site-packages/reviewboard/cmdline/rbsite.py", >> line 712, in run_manage_command >> execute_from_command_line([__file__, cmd] + params) >> File >> "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line >> 399, in execute_from_command_line >> utility.execute() >> File >> "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line >> 392, in execute >> self.fetch_command(subcommand).run_from_argv(self.argv) >> File "/usr/lib/python2.7/site-packages/django/core/management/base.py", >> line 242, in run_from_argv >> self.execute(*args, **options.__dict__) >> File "/usr/lib/python2.7/site-packages/django/core/management/base.py", >> line 285, in execute >> output = self.handle(*args, **options) >> File >> "/usr/lib/python2.7/site-packages/reviewboard/reviews/management/commands/index.py", >> >> line 19, in handle >> call_command('rebuild_index', interactive=False) >> File >> "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line >> 159, in call_command >> return klass.execute(*args, **defaults) >> File "/usr/lib/python2.7/site-packages/django/core/management/base.py", >> line 285, in execute >> output = self.handle(*args, **options) >> File >> "/usr/lib/python2.7/site-packages/haystack/management/commands/rebuild_index.py", >> >> line 26, in handle >> call_command('update_index', **options) >> File >> "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line >> 159, in call_command >> return klass.execute(*args, **defaults) >> File "/usr/lib/python2.7/site-packages/django/core/management/base.py", >> line 285, in execute >> output = self.handle(*args, **options) >> File >> "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", >> >> line 183, in handle >> return super(Command, self).handle(*items, **options) >> File "/usr/lib/python2.7/site-packages/django/core/management/base.py", >> line 385, in handle >> label_output = self.handle_label(label, **options) >> File >> "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", >> >> line 188, in handle_label >> self.update_backend(label, using) >> File >> "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", >> >> line 233, in update_backend >> do_update(backend, index, qs, start, end, total, >> verbosity=self.verbosity, commit=self.commit) >> File >> "/usr/lib/python2.7/site-packages/haystack/management/commands/update_index.py", >> >> line 96, in do_update >> backend.update(index, current_qs, commit=commit) >> File >> "/usr/lib/python2.7/site-packages/haystack/backends/whoosh_backend.py", >> line 196, in update >> doc = index.full_prepare(obj) >> File "/usr/lib/python2.7/site-packages/haystack/indexes.py", line 212, >> in full_prepare >> self.prepared_data = self.prepare(obj) >> File "/usr/lib/python2.7/site-packages/haystack/indexes.py", line 203, >> in prepare >> self.prepared_data[field.index_fieldname] = field.prepare(obj) >> File "/usr/lib/python2.7/site-packages/haystack/fields.py", line 164, >> in prepare >> return self.convert(super(CharField, self).prepare(obj)) >> File "/usr/lib/python2.7/site-packages/haystack/fields.py", line 92, in >> prepare >> raise SearchFieldError("The model '%s' ('%s' -- %s.%s at %s -- %s:%s) >> does not have a model_attr '%s' (%s -- %s)." % (obj.__class__.__name__, >> current_object.pk, current_object.__class__.__module__, >> current_object.__class__.__name__, inspect.getfile(obj.__class__), id(obj), >> id(current_object), attr, hasattr(current_object, attr), has_attr)) >> haystack.exceptions.SearchFieldError: The model 'ReviewRequest' ('27393' >> -- reviewboard.reviews.models.review_request.ReviewRequest at >> /usr/lib/python2.7/site-packages/reviewboard/reviews/models/review_request.pyc >> >> -- 231638480:231638480) does not have a model_attr 'commit' (True -- False). >> >> >> Thaks >> Rob >> >> >> >> On Monday, 16 October 2017 06:31:25 UTC+1, Christian Hammond wrote: >>> >>> Hi Rob, >>> >>> At this point, "Gremlins" appear to be the best answer from what I'm >>> able to see right now. The output in that error is directly contradicting >>> the conditional that allows the error to be shown, so something really >>> bizarre is happening that absolutely should not be able to happen. It's not >>> normal. >>> >>> There's one last thing I want to see... I don't think it's going to give >>> me any answers directly, but let's see where this goes. >>> >>> Change the code to: >>> >>> import inspect >>> has_attr = hasattr(current_object, attr) >>> print '%r (%s): %s' % (current_object.__class__, id(current_object), >>> has_attr) >>> if not has_attr: >>> raise SearchFieldError("The model '%s' ('%s' -- %s.%s at %s -- >>> %s:%s) does not have a model_attr '%s' (%s -- %s)." % >>> (obj.__class__.__name__, current_object.pk, >>> current_object.__class__.__module__, >>> current_object.__class__.__name__, inspect.getfile(obj.__class__), >>> id(obj), id(current_object), attr, hasattr(current_object, attr), has_attr)) >>> >>> Christian >>> >>> On Fri, Oct 13, 2017 at 2:41 AM, 'Rob Backhurst' via reviewboard < >>> revie...@googlegroups.com> wrote: >>> >>>> No probs - where do we go from here? >>>> >>>> Thanks >>>> Rob >>>> >>>> On Thursday, 12 October 2017 19:58:13 UTC+1, Stephen Gallagher wrote: >>>>> >>>>> Ok, I just wanted to rule out an easy solution. >>>>> On Thu, Oct 12, 2017 at 5:47 AM 'Rob Backhurst' via reviewboard < >>>>> revie...@googlegroups.com> wrote: >>>>> >>>>>> Just to add, the haystack version shown in the reviewboard shell is >>>>>> looking better now though. >>>>>> >>>>>> >>> import reviewboard >>>>>> >>> print reviewboard.VERSION >>>>>> (2, 5, 16, 0, u'final', 0, True) >>>>>> >>> print reviewboard.__file__ >>>>>> /usr/lib/python2.7/site-packages/reviewboard/__init__.pyc >>>>>> >>> import haystack >>>>>> >>> print haystack.__version__ >>>>>> (2, 4, 1) >>>>>> >>> print haystack.__file__ >>>>>> /usr/lib/python2.7/site-packages/haystack/__init__.pyc >>>>>> >>>>>> >>>>>> Thanks >>>>>> Rob >>>>>> >>>>>> On Thursday, 12 October 2017 10:41:59 UTC+1, Rob Backhurst wrote: >>>>>>> >>>>>>> Hi Stephen, >>>>>>> >>>>>>> I've installed that on our test system and re-run the index - >>>>>>> unfortunately the same problem. >>>>>>> >>>>>>> Thanks >>>>>>> Rob >>>>>>> >>>>>>> On Wednesday, 11 October 2017 19:21:22 UTC+1, Stephen Gallagher >>>>>>> wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Oct 11, 2017 at 7:40 AM 'Rob Backhurst' via reviewboard < >>>>>>>> revie...@googlegroups.com> wrote: >>>>>>>> >>>>>>>>> Hi Christian, >>>>>>>>> >>>>>>>>> Ok, lets hope this can tell you something useful... >>>>>>>>> >>>>>>>>> <snip> >>>>>>>> >>>>>>>> Rob, I just packaged up Haystack 2.4.1 (and did rudimentary testing >>>>>>>> to see that ReviewBoard still works). Would you mind installing the >>>>>>>> RPM at >>>>>>>> https://bodhi.fedoraproject.org/updates/python-django-haystack-2.4.1-1.el7 >>>>>>>> , >>>>>>>> restarting httpd and seeing if that fixes things? >>>>>>>> >>>>>>>> I'd like to see if this issue might just already be fixed in the >>>>>>>> newer release. >>>>>>>> >>>>>>> -- >>>>>> Supercharge your Review Board with Power Pack: >>>>>> https://www.reviewboard.org/powerpack/ >>>>>> Want us to host Review Board for you? Check out RBCommons: >>>>>> https://rbcommons.com/ >>>>>> Happy user? Let us know! https://www.reviewboard.org/users/ >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "reviewboard" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to reviewboard...@googlegroups.com. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> -- >>>> Supercharge your Review Board with Power Pack: >>>> https://www.reviewboard.org/powerpack/ >>>> Want us to host Review Board for you? Check out RBCommons: >>>> https://rbcommons.com/ >>>> Happy user? Let us know! https://www.reviewboard.org/users/ >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "reviewboard" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to reviewboard...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >>> >>> -- >>> Christian Hammond >>> President/CEO of Beanbag <https://www.beanbaginc.com/> >>> Makers of Review Board <https://www.reviewboard.org/> >>> >> -- >> Supercharge your Review Board with Power Pack: >> https://www.reviewboard.org/powerpack/ >> Want us to host Review Board for you? Check out RBCommons: >> https://rbcommons.com/ >> Happy user? Let us know! https://www.reviewboard.org/users/ >> --- >> You received this message because you are subscribed to the Google Groups >> "reviewboard" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to reviewboard...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Christian Hammond > President/CEO of Beanbag <https://www.beanbaginc.com/> > Makers of Review Board <https://www.reviewboard.org/> > -- Supercharge your Review Board with Power Pack: https://www.reviewboard.org/powerpack/ Want us to host Review Board for you? Check out RBCommons: https://rbcommons.com/ Happy user? Let us know! https://www.reviewboard.org/users/ --- You received this message because you are subscribed to the Google Groups "reviewboard" group. To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.