Closed Bug 1273846 Opened 8 years ago Closed 8 years ago

Checksetup fails to update chart storage during pre-3.6 - 5.0 upgrade

Categories

(Bugzilla :: Installation & Upgrading, defect)

5.0.3
defect
Not set
critical

Tracking

()

RESOLVED FIXED
Bugzilla 5.0

People

(Reporter: pnj, Assigned: LpSolit)

References

Details

Attachments

(1 file, 1 obsolete file)

User Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko

Steps to reproduce:

A Bugzilla 3.2 installation was copied to a new server:
X64 Windows server 2012 R2
MySQL 5.1.72
Strawberry Perl 5.24.0.1
IIS 8

Invoke checksetup to upgrade.



Actual results:

After adding new tables to the database, the following happened:
Updating old chart storage format...
DBD::mysql::db selectall_arrayref failed:
 Unknown column 'isactive' in 'field list'
 [for Statement  "SELECT id,name,classification_id,description,isactive,defaultmilestone
   ,allows_unconfirmed FROM products ORDER BY name"]
 at Bugzilla/Object.pm line 403.
   Bugzilla::Object::_do_list_select("Bugzilla::Product")
      called at Bugzilla/Object.pm line 757
   Bugzilla::Object::get_all("Bugzilla::Product")
      called at Bugzilla/Install/Filesystem.pm line 794
   Bugzilla::Install::Filesystem::_update_old_mining_filenames("data\\mining")
      called at Bugzilla/INstall/Filesystem.pm line 507
   Bugzilla::Install::Filesystem::update_filesystem(HASH(0x8563b78))
      called at checksetup.pl line 129
Updating old charting data file names...



Expected results:

This failure was unexpected.  Normally checksetup would continue with the upgrade process.
This is the patch made by LpSolit which corrected the problem.
OS: Unspecified → Windows
Hardware: Unspecified → x86_64
The problem is that in Bugzilla 3.4 and older, the products table didn't have the isactive column, and so when _update_old_mining_filenames() calls Bugzilla::Product->get_all(), it fails because the DB schema hasn't been updated yet.

I don't know the historical reason why checksetup.pl calls update_filesystem() before update_table_definitions(), but this means that update_filesystem() cannot make any guess on the current DB schema.

As _update_old_mining_filenames() only needs the product name and ID, I patched it to explicitly request them only. This only affects Bugzilla 5.0 and newer, see bug 604388. Bugzilla 4.4 and older are not affected.
Assignee: installation → LpSolit
Severity: normal → critical
Status: UNCONFIRMED → ASSIGNED
Depends on: 604388
Ever confirmed: true
Flags: blocking5.0.4+
OS: Windows → Unspecified
Hardware: x86_64 → Unspecified
Summary: Checksetup fails to update chart storage during 3.2 - 5.0.3 upgrade → Checksetup fails to update chart storage during pre-3.6 - 5.0 upgrade
Target Milestone: --- → Bugzilla 5.0
This affects all platforms; it's not specific to Windows.
OS: Unspecified → All
Hardware: Unspecified → All
Attached patch patch, v1Splinter Review
Split a too long line.
Attachment #8753805 - Attachment is obsolete: true
Attachment #8753811 - Flags: review?(dkl)
Comment on attachment 8753811 [details] [diff] [review]
patch, v1

Review of attachment 8753811 [details] [diff] [review]:
-----------------------------------------------------------------

tested on trunk and 5.0. r=dkl
Attachment #8753811 - Flags: review?(dkl) → review+
Flags: approval5.0+
To ssh://gitolite3@git.mozilla.org/bugzilla/bugzilla.git
   2904562..779e021  master -> master

To ssh://gitolite3@git.mozilla.org/bugzilla/bugzilla.git
   40d86a5..fe2e95f  5.0 -> 5.0
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: