Hi Michael,

Absolutely.

For one-off database repairs, we charge $200 USD/hour for the repair. As I
mentioned, this usually takes no more than 2 hours, sometimes upwards of 3,
but we have a lot of experience at this point in correcting these issues
once we get our hands on things.

What we then present to you is a set of SQL statements or a script that
will issue the repair on your end. Along with that, we provide detailed
information on what went wrong, how we think it went wrong, what steps we
went through, and how the fix worked. That's hopefully helpful information
in case there's ever a problem again.

I also mentioned that this is included as part of Premium Support. I'll go
into some details here. We have two levels of paid support today: Basic and
Premium. These are covered under 1 year contracts.

(Going to copy and paste some stuff here.)

Basic support includes:


   - Private support on our support tracker or through a dedicated support
   address.
   - Guaranteed next-day responses. We aim to respond same day,
   particularly if it's an emergency.
   - All support requests are handled by the developers of Review Board, so
   you'll get the best possible answers.
   - Assistance with installation/upgrades, if needed.
   - Troubleshooting for Review Board, RBTools, Power Pack, and
   integrations with your repositories (and wherever else we can help, related
   to our products).
   - Help with any other questions or problems you run into.


Premium support builds upon basic support by offering:



   - Guaranteed same-day responses, and usually that'll be within an hour.
   If there's an emergency 24/7/365, simply e-mail us and we'll be notified no
   matter where we are.
   - Priority fixes for urgent bugs.
   - Backports of urgent fixes to older releases where possible.
   - Emergency repair for corrupted databases where possible (in the event
   of canceled upgrades, power failures, etc.).
   - Phone/chat support (by appointment).


Pricing depends on the number of production servers you run, and the number
of users using Review Board at your company. I can provide more specific
quotes with those numbers.

Christian

-- 
Christian Hammond
President/CEO of Beanbag <https://www.beanbaginc.com/>
Makers of Review Board <https://www.reviewboard.org/>

On Wed, Mar 23, 2016 at 2:51 PM, Michael Lund <lund.michael.ja...@gmail.com>
wrote:

> Thank you, Christian.  Could you please send me some details about the
> fees involved so that I can present to my management?
>
> Mike
>
> On Saturday, March 19, 2016 at 6:37:14 PM UTC-6, Christian Hammond wrote:
>>
>> Hi Michael,
>>
>> I've seen this error before, and it's always been due to a prior upgrade
>> in some prior version being forced using 'evolve --hint --execute," which
>> can mess up the history and require manual repair. I'm not seeing anything
>> in the output indicating anything otherwise. Is it possible this was ever
>> executed?
>>
>> We can attempt a repair for you. We do charge for this (although we
>> include it as part of a Premium Support contract), if you'd like me to
>> discuss this with you. A repair usually only takes a couple of hours, and
>> we include full details on what went wrong and how we fixed it, for future
>> reference.
>>
>> Christian
>>
>>
>> On Monday, March 14, 2016, Michael Lund <lund.mich...@gmail.com> wrote:
>>
>>> Hi, Christian --
>>>
>>> Is this output helpful in determining what to do next?
>>>
>>> Thank you!
>>>
>>> Mike
>>>
>>>
>>> On Friday, March 11, 2016 at 12:21:17 PM UTC-7, Michael Lund wrote:
>>>>
>>>> The server is running Django 1.4.22
>>>>
>>>> Here is the requested output:
>>>>
>>>> >>> from django_evolution.models import Version
>>>> >>> for v in Version.objects.order_by('pk'):
>>>> ...    print '%s - %s - %s' % (v.pk, v.evolutions.count(), v.when)
>>>> ...
>>>> 1 - 7 - 2010-03-05 15:48:24+00:00
>>>> 2 - 7 - 2011-03-06 15:09:29+00:00
>>>> 3 - 0 - 2012-03-23 19:19:59+00:00
>>>> 4 - 13 - 2012-03-23 19:20:53+00:00
>>>> 5 - 6 - 2016-03-09 23:59:00+00:00
>>>> >>>
>>>>
>>>>
>>>> And, the results of Risha's invocation:
>>>>
>>>>
>>>> [root@reviewboard2 conf]# rb-site manage /var/www/
>>>> reviewboard.quantum.com evolve -- --hint
>>>> #----- Evolution for auth
>>>> from django_evolution.mutations import ChangeMeta, DeleteModel
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     ChangeMeta('Permission', 'unique_together', ((u'content_type',
>>>> u'codename'),)),
>>>>     DeleteModel('Message')
>>>> ]
>>>> #----------------------
>>>> #----- Evolution for contenttypes
>>>> from django_evolution.mutations import ChangeMeta
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     ChangeMeta('ContentType', 'unique_together', (('app_label',
>>>> 'model'),))
>>>> ]
>>>> #----------------------
>>>> #----- Evolution for accounts
>>>> from django_evolution.mutations import AddField, ChangeMeta, DeleteField
>>>> from django.db import models
>>>> from djblets.db.fields import JSONField
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     AddField('Profile', 'default_use_rich_text',
>>>> models.NullBooleanField, null=True),
>>>>     AddField('Profile', 'should_send_email', models.BooleanField,
>>>> initial=True),
>>>>     AddField('Profile', 'timezone', models.CharField, initial=u'UTC',
>>>> max_length=30),
>>>>     AddField('Profile', 'open_an_issue', models.BooleanField,
>>>> initial=True),
>>>>     AddField('Profile', 'extra_data', JSONField, null=True),
>>>>     AddField('Profile', 'show_closed', models.BooleanField,
>>>> initial=True),
>>>>     AddField('Profile', 'should_send_own_updates', models.BooleanField,
>>>> initial=True),
>>>>     DeleteField('Profile', 'show_submitted'),
>>>>     AddField('ReviewRequestVisit', 'visibility', models.CharField,
>>>> initial=u'V', max_length=1),
>>>>     ChangeMeta('ReviewRequestVisit', 'unique_together', ((u'user',
>>>> u'review_request'),)),
>>>>     ChangeMeta('ReviewRequestVisit', 'index_together', [(u'user',
>>>> u'visibility')]),
>>>>     AddField('LocalSiteProfile', 'permissions', JSONField, null=True),
>>>>     ChangeMeta('LocalSiteProfile', 'unique_together', ((u'user',
>>>> u'local_site'), (u'profile', u'local_site')))
>>>> ]
>>>> #----------------------
>>>> #----- Evolution for attachments
>>>> from django_evolution.mutations import AddField, ChangeField
>>>> from django.db import models
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     AddField('FileAttachment', 'orig_filename', models.CharField,
>>>> max_length=256, null=True),
>>>>     AddField('FileAttachment', 'added_in_filediff', models.ForeignKey,
>>>> null=True, related_model='diffviewer.FileDiff'),
>>>>     AddField('FileAttachment', 'attachment_revision',
>>>> models.IntegerField, initial=0),
>>>>     AddField('FileAttachment', 'repository', models.ForeignKey,
>>>> null=True, related_model='scmtools.Repository'),
>>>>     AddField('FileAttachment', 'repo_revision', models.CharField,
>>>> max_length=64, null=True, db_index=True),
>>>>     AddField('FileAttachment', 'attachment_history', models.ForeignKey,
>>>> null=True, related_model='attachments.FileAttachmentHistory'),
>>>>     AddField('FileAttachment', 'repo_path', models.CharField,
>>>> max_length=1024, null=True),
>>>>     ChangeField('FileAttachment', 'file', initial=None, max_length=512)
>>>> ]
>>>> #----------------------
>>>> #----- Evolution for changedescs
>>>> from django_evolution.mutations import AddField
>>>> from django.db import models
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     AddField('ChangeDescription', 'rich_text', models.BooleanField,
>>>> initial=False)
>>>> ]
>>>> #----------------------
>>>> #----- Evolution for diffviewer
>>>> from django_evolution.mutations import AddField, DeleteField
>>>> from django.db import models
>>>> from djblets.db.fields import Base64Field
>>>> from djblets.db.fields import JSONField
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     AddField('DiffSet', 'base_commit_id', models.CharField,
>>>> max_length=64, null=True, db_index=True),
>>>>     AddField('DiffSet', 'extra_data', JSONField, null=True),
>>>>     AddField('DiffSetHistory', 'last_diff_updated',
>>>> models.DateTimeField, null=True),
>>>>     AddField('DiffSetHistory', 'extra_data', JSONField, null=True),
>>>>     AddField('FileDiff', 'diff_hash', models.ForeignKey, null=True,
>>>> db_column=u'raw_diff_hash_id', related_model='diffviewer.RawFileDiffData'),
>>>>     AddField('FileDiff', 'parent_diff_hash', models.ForeignKey,
>>>> null=True, db_column=u'raw_parent_diff_hash_id',
>>>> related_model='diffviewer.RawFileDiffData'),
>>>>     AddField('FileDiff', 'diff64', Base64Field, initial=u'',
>>>> db_column=u'diff_base64'),
>>>>     AddField('FileDiff', 'parent_diff64', Base64Field, initial=u'',
>>>> db_column=u'parent_diff_base64'),
>>>>     AddField('FileDiff', 'legacy_diff_hash', models.ForeignKey,
>>>> null=True, db_column=u'diff_hash_id',
>>>> related_model='diffviewer.LegacyFileDiffData'),
>>>>     AddField('FileDiff', 'legacy_parent_diff_hash', models.ForeignKey,
>>>> null=True, db_column=u'parent_diff_hash_id',
>>>> related_model='diffviewer.LegacyFileDiffData'),
>>>>     AddField('FileDiff', 'extra_data', JSONField, null=True),
>>>>     DeleteField('FileDiff', 'parent_diff'),
>>>>     DeleteField('FileDiff', 'diff')
>>>> ]
>>>> #----------------------
>>>> #----- Evolution for reviews
>>>> from django_evolution.mutations import AddField, ChangeField,
>>>> ChangeMeta, DeleteField
>>>> from django.db import models
>>>> from djblets.db.fields import CounterField
>>>> from djblets.db.fields import JSONField
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     AddField('Comment', 'rich_text', models.BooleanField,
>>>> initial=False),
>>>>     AddField('Comment', 'extra_data', JSONField, null=True),
>>>>     AddField('Group', 'extra_data', JSONField, null=True),
>>>>     AddField('Group', 'is_default_group', models.BooleanField,
>>>> initial=False),
>>>>     AddField('Group', 'email_list_only', models.BooleanField,
>>>> initial=True),
>>>>     ChangeField('Group', 'mailing_list', initial=None, max_length=254),
>>>>     ChangeMeta('Group', 'unique_together', ((u'name', u'local_site'),)),
>>>>     AddField('FileAttachmentComment', 'diff_against_file_attachment',
>>>> models.ForeignKey, null=True, related_model='attachments.FileAttachment'),
>>>>     AddField('FileAttachmentComment', 'rich_text', models.BooleanField,
>>>> initial=False),
>>>>     AddField('FileAttachmentComment', 'extra_data', JSONField,
>>>> null=True),
>>>>     AddField('Review', 'body_top_rich_text', models.BooleanField,
>>>> initial=False),
>>>>     AddField('Review', 'body_bottom_rich_text', models.BooleanField,
>>>> initial=False),
>>>>     AddField('Review', 'rich_text', models.BooleanField, initial=False),
>>>>     AddField('Review', 'extra_data', JSONField, null=True),
>>>>     AddField('ReviewRequestDraft', 'description_rich_text',
>>>> models.BooleanField, initial=False),
>>>>     AddField('ReviewRequestDraft', 'depends_on',
>>>> models.ManyToManyField, null=True, related_model='reviews.ReviewRequest'),
>>>>     AddField('ReviewRequestDraft', 'extra_data', JSONField, null=True),
>>>>     AddField('ReviewRequestDraft', 'rich_text', models.BooleanField,
>>>> initial=False),
>>>>     AddField('ReviewRequestDraft', 'commit_id', models.CharField,
>>>> max_length=64, null=True, db_index=True),
>>>>     AddField('ReviewRequestDraft', 'testing_done_rich_text',
>>>> models.BooleanField, initial=False),
>>>>     AddField('ReviewRequest', 'last_review_activity_timestamp',
>>>> models.DateTimeField, null=True, db_column=u'last_review_timestamp'),
>>>>     AddField('ReviewRequest', 'issue_dropped_count', CounterField,
>>>> null=True),
>>>>     AddField('ReviewRequest', 'description_rich_text',
>>>> models.BooleanField, initial=False),
>>>>     AddField('ReviewRequest', 'depends_on', models.ManyToManyField,
>>>> null=True, related_model='reviews.ReviewRequest'),
>>>>     AddField('ReviewRequest', 'extra_data', JSONField, null=True),
>>>>     AddField('ReviewRequest', 'commit_id', models.CharField,
>>>> max_length=64, null=True, db_index=True),
>>>>     AddField('ReviewRequest', 'issue_resolved_count', CounterField,
>>>> null=True),
>>>>     AddField('ReviewRequest', 'issue_open_count', CounterField,
>>>> null=True),
>>>>     AddField('ReviewRequest', 'file_attachment_histories',
>>>> models.ManyToManyField, related_model='attachments.FileAttachmentHistory'),
>>>>     AddField('ReviewRequest', 'testing_done_rich_text',
>>>> models.BooleanField, initial=False),
>>>>     AddField('ReviewRequest', 'rich_text', models.BooleanField,
>>>> initial=False),
>>>>     DeleteField('ReviewRequest', 'last_review_timestamp'),
>>>>     ChangeMeta('ReviewRequest', 'unique_together', ((u'commit_id',
>>>> u'repository'), (u'changenum', u'repository'), (u'local_site',
>>>> u'local_id'))),
>>>>     AddField('ScreenshotComment', 'rich_text', models.BooleanField,
>>>> initial=False),
>>>>     AddField('ScreenshotComment', 'extra_data', JSONField, null=True)
>>>> ]
>>>> #----------------------
>>>> #----- Evolution for scmtools
>>>> from django_evolution.mutations import AddField, ChangeMeta, DeleteField
>>>> from django.db import models
>>>> from djblets.db.fields import JSONField
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     AddField('Repository', 'encrypted_password', models.CharField,
>>>> initial=u'', max_length=128, db_column=u'password'),
>>>>     AddField('Repository', 'archived_timestamp', models.DateTimeField,
>>>> null=True),
>>>>     AddField('Repository', 'archived', models.BooleanField,
>>>> initial=False),
>>>>     AddField('Repository', 'hosting_account', models.ForeignKey,
>>>> null=True, related_model='hostingsvcs.HostingServiceAccount'),
>>>>     AddField('Repository', 'hooks_uuid', models.CharField,
>>>> max_length=32, null=True),
>>>>     AddField('Repository', 'extra_data', JSONField, null=True),
>>>>     DeleteField('Repository', 'password'),
>>>>     ChangeMeta('Repository', 'unique_together', ((u'name',
>>>> u'local_site'), (u'archived_timestamp', u'path', u'local_site'),
>>>> (u'hooks_uuid', u'local_site')))
>>>> ]
>>>> #----------------------
>>>> #----- Evolution for site
>>>> from django_evolution.mutations import AddField
>>>> from django.db import models
>>>>
>>>>
>>>> MUTATIONS = [
>>>>     AddField('LocalSite', 'public', models.BooleanField, initial=False)
>>>> ]
>>>> #----------------------
>>>> Trial evolution successful.
>>>>
>>>>
>>>>
>>>> On Thursday, March 10, 2016 at 6:17:04 PM UTC-7, Christian Hammond
>>>> wrote:
>>>>
>>>> Hi Michael,
>>>>
>>>> Sounds like some state got messed up on your end, too.
>>>>
>>>> Can you find the script I had Risha run (the one with the Version
>>>> import)? Any other info you can provide that we went through earlier on the
>>>> thread would also help.
>>>>
>>>> Basically... That KeyError means you have state missing that really
>>>> should be there. The core issue needs to be diagnosed and fixed.
>>>>
>>>> What version of Django Evolution are you running?
>>>>
>>>> Christian
>>>>
>>>>
>>>> On Thursday, March 10, 2016, Michael Lund <lund.mich...@gmail.com>
>>>> wrote:
>>>>
>>>> Is there a straightforward way to determine the location of the
>>>> offending key?
>>>>
>>>> I wonder whether I can circumvent some issues by upgrading
>>>> incrementally to intermediate versions of ReviewBoard -- I'm taking a
>>>> pretty big leap.  I have installed via easy_install, which has of course
>>>> taken the latest version.  How can I "tune down" the installed version of
>>>> ReviewBoard via easy_install, and can you recommend any intermediate
>>>> version?  This doesn't work when executed as root:  easy_install
>>>> ReviewBoard==1.7.22.
>>>>
>>>> On Thursday, March 10, 2016 at 1:31:11 PM UTC-7, Michael Lund wrote:
>>>>
>>>> Hi, Christian --
>>>>
>>>> I am encountering an error similar to the one described in this
>>>> posting.  This posting is the only one I can find on the Internet dealing
>>>> with the error -- 'KeyError: u'FileDiffData'.  I hope it is alright to
>>>> append, and if not, I am happy to open a new thread.
>>>>
>>>> I am moving from ReviewBoard version 1.6.4.1 to  2.5.3.  There are no
>>>> out-of-space issues.  I have followed Risha's procedure, including
>>>> migrating all tables to InnoDB.  I ran
>>>>
>>>> rb-site manage . . . syncdb
>>>>
>>>> then
>>>>
>>>> rb-site upgrade
>>>>
>>>> The result is shown below.  I do know that at some point in the past,
>>>> this database was running on SQLite and was migrated to MySQL after a fair
>>>> amount of difficulty.  I don't dismiss the possibility that this error
>>>> might be due to leftovers from that series of events.
>>>>
>>>> Please let me know what diagnostic information I can provide.
>>>>
>>>>
>>>> Mike
>>>>
>>>> Here is the output:
>>>>
>>>> # rb-site upgrade /var/www/reviewboard.quantum.com
>>>> Rebuilding directory structure
>>>> Updating database. This may take a while.
>>>>
>>>> The log output below, including warnings and errors,
>>>> can be ignored unless upgrade fails.
>>>>
>>>> ------------------ <begin log output> ------------------
>>>> Creating tables ...
>>>> There are unapplied evolutions for auth.
>>>> There are unapplied evolutions for contenttypes.
>>>> There are unapplied evolutions for accounts.
>>>> There are unapplied evolutions for attachments.
>>>> There are unapplied evolutions for changedescs.
>>>> There are unapplied evolutions for diffviewer.
>>>> There are unapplied evolutions for reviews.
>>>> There are unapplied evolutions for scmtools.
>>>> There are unapplied evolutions for site.
>>>> Project signature has changed - an evolution is required
>>>> Installing custom SQL ...
>>>> Installing indexes ...
>>>> Installed 0 object(s) from 0 fixture(s)
>>>> ERROR:root:Unexpected error: u'FileDiffData'
>>>> Traceback (most recent call last):
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/management/commands/evolve.py",
>>>> line 65, in handle
>>>>     self.evolve(*app_labels, **options)
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/management/commands/evolve.py",
>>>> line 125, in evolve
>>>>     sql.extend(self.evolve_app(app))
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/management/commands/evolve.py",
>>>> line 164, in evolve_app
>>>>     app_mutator.run_mutations(mutations)
>>>>   File "/usr/lib/python2.7/site-packages/django_evolution/mutators.py",
>>>> line 279, in run_mutations
>>>>     self.run_mutation(mutation)
>>>>   File "/usr/lib/python2.7/site-packages/django_evolution/mutators.py",
>>>> line 268, in run_mutation
>>>>     model_mutator.run_mutation(mutation)
>>>>   File "/usr/lib/python2.7/site-packages/django_evolution/mutators.py",
>>>> line 165, in run_mutation
>>>>     mutation.mutate(self, self.create_model())
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/mutations.py", line 446,
>>>> in mutate
>>>>     self.add_column(mutator, model)
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/mutations.py", line 450,
>>>> in add_column
>>>>     self.field_type, self.field_attrs, model)
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/mutations.py", line 37,
>>>> in create_field
>>>>     related_model_sig = proj_sig[related_app_name][related_model_name]
>>>> KeyError: u'FileDiffData'
>>>> Traceback (most recent call last):
>>>>   File "/usr/bin/rb-site", line 9, in <module>
>>>>     load_entry_point('ReviewBoard==2.5.3', 'console_scripts',
>>>> 'rb-site')()
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/cmdline/rbsite.py",
>>>> line 1922, in main
>>>>     command.run()
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/cmdline/rbsite.py",
>>>> line 1725, in run
>>>>     site.migrate_database()
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/cmdline/rbsite.py",
>>>> line 452, in migrate_database
>>>>     self.run_manage_command("evolve", ["--noinput", "--execute"])
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/cmdline/rbsite.py",
>>>> line 676, 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/django_evolution/management/commands/evolve.py",
>>>> line 65, in handle
>>>>     self.evolve(*app_labels, **options)
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/management/commands/evolve.py",
>>>> line 125, in evolve
>>>>     sql.extend(self.evolve_app(app))
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/management/commands/evolve.py",
>>>> line 164, in evolve_app
>>>>     app_mutator.run_mutations(mutations)
>>>>   File "/usr/lib/python2.7/site-packages/django_evolution/mutators.py",
>>>> line 279, in run_mutations
>>>>     self.run_mutation(mutation)
>>>>   File "/usr/lib/python2.7/site-packages/django_evolution/mutators.py",
>>>> line 268, in run_mutation
>>>>     model_mutator.run_mutation(mutation)
>>>>   File "/usr/lib/python2.7/site-packages/django_evolution/mutators.py",
>>>> line 165, in run_mutation
>>>>     mutation.mutate(self, self.create_model())
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/mutations.py", line 446,
>>>> in mutate
>>>>     self.add_column(mutator, model)
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/mutations.py", line 450,
>>>> in add_column
>>>>     self.field_type, self.field_attrs, model)
>>>>   File
>>>> "/usr/lib/python2.7/site-packages/django_evolution/mutations.py", line 37,
>>>> in create_field
>>>>     related_model_sig = proj_sig[related_app_name][related_model_name]
>>>> KeyError: u'FileDiffData'
>>>>
>>>>
>>>>
>>>>
>>>> On Wednesday, July 29, 2015 at 7:09:20 PM UTC-6, Christian Hammond
>>>> wrote:
>>>>
>>>> Thanks for the follow-up, Risha! I'm glad it's working :) Hopefully
>>>> this will help someone else down the road.
>>>>
>>>> Christian
>>>>
>>>> --
>>>> Christian Hammond - chri...@beanbaginc.com
>>>> Review Board - https://www.reviewboard.org
>>>> Beanbag, Inc. - https://www.beanbaginc.com
>>>>
>>>> On Wed, Jul 29, 2015 at 4:21 PM, Risha Chheda <risha...@gmail.com>
>>>> wrote:
>>>>
>>>> I managed to get this to work, just updating this thread.
>>>>
>>>> The problem was that the mysqldump I had done had truncated some of the
>>>> data in the diffviewer_filediff table. I had to gzip the mysqldump
>>>> output and dump it in my test mysql instance. After gzipping the dump was
>>>> 1.6G.
>>>>
>>>> I then converted all the tables from MyISAM to Innodb. Again this was
>>>> failing for the diffviewer_filediff table with the error 'The table is
>>>> full' since the VM I was running this on didn't have enough space.  Moving
>>>> to a physical server from the VM fixed this issue. I've attached the
>>>> commands I ran along with the mysql settings.
>>>>
>>>> Reviewboard with Docker worked beautifully after that. I just had to
>>>> run the docker instance and it installed reviewboard, connected to my
>>>> database, performed all the evolutions and started hosting immediately.
>>>>
>>>> Thanks,
>>>> Risha
>>>>
>>>>
>>>> On Tue, Jul 14, 2015 at 12:21 PM, Christian Hammond <
>>>> chri...@beanbaginc.com> wrote:
>>>>
>>>> Hi Risha,
>>>>
>>>> Hmm, I'm not seeing what I was expecting to see there.
>>>>
>>>> It's possible that there's a bug in upgrading to 2.5, due to one of the
>>>> changes we've made. I'm going to be investigating this. For now, I'd
>>>> suggest taking a copy of the 1.6 database and upgrading to the latest 2.0.x
>>>> release instead of 2.5 beta.
>>>>
>>>> Christian
>>>>
>>>> --
>>>> Christian Hammond - chri...@beanbaginc.com
>>>> Review Board - https://www.reviewboard.org
>>>> Beanbag, Inc. - https://www.beanbaginc.com
>>>>
>>>> On Tue, Jul 14, 2015 at 10:14 AM, Risha Chheda <risha...@gmail.com>
>>>> wrote:
>>>>
>>>> I'm not sure if it makes any difference but yesterday I ran the rb-site
>>>> manage evolve --hint and execute commands. I have attached the output of
>>>> both of those in the attached document. It didn't seem to make a
>>>> difference, rb-site upgrade still gives me the same issue. ​
>>>>  rb-site_evolve
>>>> <https://docs.google.com/document/d/1eg47ZY25Zzx4rOnWk-WWPaUOEF33emWx3S16PruRmZE/edit?usp=drive_web>
>>>> ​
>>>>
>>>> Here is the output you requested.
>>>> >>> from django_evolution.models import Version
>>>> >>> for v in Version.objects.order_by('pk'):
>>>> ...    print '%s - %s - %s' % (v.pk, v.evolutions.count(), v.when)
>>>> ...
>>>> 1 - 0 - 2008-05-19 20:11:53+00:00
>>>> 2 - 0 - 2008-09-24 10:08:29+00:00
>>>> 3 - 1 - 2008-09-24 10:09:01+00:00
>>>> 4 - 0 - 2008-10-27 16:17:08+00:00
>>>> 5 - 1 - 2008-10-27 16:17:25+00:00
>>>> 6 - 11 - 2011-03-08 05:21:06+00:00
>>>> 7 - 2 - 2011-10-17 12:15:42+00:00
>>>> 8 - 0 - 2012-10-13 09:34:28+00:00
>>>> 9 - 13 - 2012-10-13 09:34:36+00:00
>>>> 10 - 3 - 2015-07-13 22:41:16+00:00
>>>>
>>>>
>>>> On Tue, Jul 14, 2015 at 2:58 AM, Christian Hammond <
>>>> chri...@beanbaginc.com> wrote:
>>>>
>>>> Can you run the following:
>>>>
>>>> $ rb-site manage /path/to/site shell
>>>> >>> from django_evolution.models import Version
>>>> >>> for v in Version.objects.order_by('pk'):
>>>> >>>    print '%s - %s - %s' % (v.pk, v.evolutions.count(), v.when)
>>>>
>>>> That'll give me a sense of what evolutions are applied. There's a
>>>> hard-to-diagnose issue that's come up before where an invalid entry ends up
>>>> in the history, throwing things off, and this will help me check for that.
>>>>
>>>> Thanks,
>>>>
>>>> Christian
>>>>
>>>> --
>>>> Christian Hammond - chri...@beanbaginc.com
>>>> Review Board - https://www.reviewboard.org
>>>> Beanbag, Inc. - https://www.beanbaginc.com
>>>>
>>>> On Mon, Jul 13, 2015 at 3:58 PM, Risha Chheda <risha...@gmail.com>
>>>> wrote:
>>>>
>>>> No, that doesn't help either.
>>>>
>>>> # rb-site manage /var/ReviewBoard syncdb
>>>> Creating tables ...
>>>> There are unapplied evolutions for auth.
>>>> The following content types are stale and need to be deleted:
>>>>
>>>>     auth | message
>>>>
>>>> Any objects related to these content types by a foreign key will also
>>>> be deleted. Are you sure you want to delete these content types?
>>>> If you're unsure, answer 'no'.
>>>>
>>>>     Type 'yes' to continue, or 'no' to cancel: yes
>>>> There are unapplied evolutions for contenttypes.
>>>> There are unapplied evolutions for accounts.
>>>> There are unapplied evolutions for attachments.
>>>> There are unapplied evolutions for changedescs.
>>>> There are unapplied evolutions for diffviewer.
>>>> There are unapplied evolutions for hostingsvcs.
>>>> There are unapplied evolutions for reviews.
>>>> There are unapplied evolutions for scmtools.
>>>> There are unapplied evolutions for site.
>>>> Project signature has changed - an evolution is required
>>>> Installing custom SQL ...
>>>> Installing indexes ...
>>>> Installed 0 object(s) from 0 fixture(s)
>>>>
>>>>
>>>> root@05e83c8f5ab7:/# rb-site upgrade /var/ReviewBoard
>>>> ......
>>>> ......
>>>> <Same error as the original email>
>>>>
>>>>
>>>> On Mon, Jul 13, 2015 at 3:26 PM, Christian Hammond <
>>>> chri...@beanbaginc.com> wrote:
>>>>
>>>> Hi Risha,
>>>>
>>>> That's strange. It's like some state is missing there.
>>>>
>>>> Can you try doing this first:
>>>>
>>>>     $ rb-site manage /var/ReviewBoard syncdb
>>>>
>>>> and then do the upgrade? See if that gets any further.
>>>>
>>>> Christian
>>>>
>>>> --
>>>> Christian Hammond - chri...@beanbaginc.com
>>>> Review Board - https://www.reviewboard.org
>>>> Beanbag, Inc. - https://www.beanbaginc.com
>>>>
>>>> -----Original Message-----
>>>> From: Risha Chheda <risha...@gmail.com>
>>>> Reply: revie...@googlegroups.com <revie...@googlegroups.com>>
>>>> Date: July 13, 2015 at 3:24:20 PM
>>>> To: revie...@googlegroups.com <revie...@googlegroups.com>>
>>>> Subject:  Upgrading from 1.6.8 to 2.x
>>>>
>>>> > Hi,
>>>> >
>>>> > I am trying to upgrade reviewboard from 1.6.8 to 2.5.beta and
>>>> everytime I
>>>> > get this traceback:
>>>> > mysql version I'm testing against is 5.6.25.
>>>> >
>>>> > Both reviewboard and mysql are running in their own docker containers
>>>> on
>>>> > the same VM.
>>>> > I tried upgrading from 1.6.8 to 2.0.18 as well, but I get the same
>>>> issue.
>>>> >
>>>> > # rb-site upgrade /var/ReviewBoard
>>>> > Rebuilding directory structure
>>>> > Updating database. This may take a while.
>>>> >
>>>> > The log output below, including warnings and errors,
>>>> > can be ignored unless upgrade fails.
>>>> >
>>>> > ------------------ ------------------
>>>> > Creating tables ...
>>>> > There are unapplied evolutions for auth.
>>>> > There are unapplied evolutions for contenttypes.
>>>> > There are unapplied evolutions for accounts.
>>>> > There are unapplied evolutions for attachments.
>>>> > There are unapplied evolutions for changedescs.
>>>> > There are unapplied evolutions for diffviewer.
>>>> > There are unapplied evolutions for hostingsvcs.
>>>> > There are unapplied evolutions for reviews.
>>>> > There are unapplied evolutions for scmtools.
>>>> > There are unapplied evolutions for site.
>>>> > Project signature has changed - an evolution is required
>>>> > Installing custom SQL ...
>>>> > Installing indexes ...
>>>> > Installed 0 object(s) from 0 fixture(s)
>>>> > ERROR:root:Unexpected error: u'FileDiffData'
>>>> > Traceback (most recent call last):
>>>> > File
>>>> >
>>>> "/usr/local/lib/python2.7/dist-packages/django_evolution-0.7.5-py2.7.egg/django_evolution/management/commands/evolve.py",
>>>> > line 65, in handle
>>>> > self.evolve(*app_labels, **options)
>>>> > File
>>>> >
>>>> "/usr/local/lib/python2.7/dist-packages/django_evolution-0.7.5-py2.7.egg/django_evolution/management/commands/evolve.py",
>>>> > line 125, in evolve
>>>> > sql.extend(self.evolve_app(app))
>>>> > File
>>>> >
>>>> "/usr/local/lib/python2.7/dist-packages/django_evolution-0.7.5-py2.7.egg/django_evolution/management/commands/evolve.py",
>>>> > line 164, in evolve_app
>>>> > app_mutator.run_mutations(mutations)
>>>> > File
>>>> >
>>>> "/usr/local/lib/python2.7/dist-packages/django_evolution-0.7.5-py2.7.egg/django_evolution/mutators.py",
>>>> > line 279, in run_mutations
>>>> > self.run_mutation(mutation)
>>>> > File
>>>> > "/usr/local/lib/python2.7/
>>>>
>>>> ...
>>>
>>> --
>>> 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 <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.

Reply via email to