Thanks Christian, is that something we’ll need to do directly to the database? 
I don’t suppose you have any info on what needs to be done? Our DBA is on leave 
at the mo.

No probs, not always easy to get to the bottom of these things!

Thanks
Rob

Sent from my iPhone

> On 16 Oct 2017, at 19:15, Christian Hammond <christ...@beanbaginc.com> wrote:
> 
> 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
>>>>> 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...@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.
> 
> -- 
> -- 
> 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 a topic in the Google 
> Groups "reviewboard" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/reviewboard/52HnBiFJxp8/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> reviewboard+unsubscr...@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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to