Interesting. Okay, yeah, you'd need to remove the commit ID from one of them for now. I'll put a fix together for the next 2.5.x and schedule a release. Thanks for your patience on this!
Christian On Mon, Oct 16, 2017 at 07:46 'Rob Backhurst' via reviewboard < reviewboard@googlegroups.com> wrote: > 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> 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. >>> 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. > -- -- Christian Hammond President/CEO of Beanbag Makers of Review Board -- 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.