Page MenuHomePhabricator

Upgrade to 1.17.0rc1 fails
Closed, ResolvedPublic

Description

I'm trying to upgrade from 1.16a to 1.17.0rc1.

The process gets stuck after an exection time error.

...have ipb_id field in ipblocks table.
...have ipb_expiry field in ipblocks table.
...already have interwiki table
...indexes seem up to 20031107 standards
...hitcounter table already exists.
...have rc_type field in recentchanges table.
...have user_real_name field in user table.
...querycache table already exists.
...objectcache table already exists.
...categorylinks table already exists.
...il_from OK
...have rc_ip field in recentchanges table.
...PRIMARY key already set on image table.
...have rc_id field in recentchanges table.
...have rc_patrolled field in recentchanges table.
...logging table already exists.
...have user_token field in user table.
...have wl_notificationtimestamp field in watchlist table.
...watchlist talk page rows already present
...user table does not contain user_emailauthenticationtimestamp field.
...page table already exists.
...have log_params field in logging table.
...logging table has correct log_title encoding.
...have ar_rev_id field in archive table.
...have page_len field in page table.
...revision table does not contain inverse_timestamp field.
...have rev_text_id field in revision table.
...have rev_deleted field in revision table.
...have img_width field in image table.
...have img_metadata field in image table.
...have user_email_token field in user table.
...have ar_text_id field in archive table.
...page_namespace is already a full int (int(11)).
...ar_namespace is already a full int (int(11)).
...rc_namespace is already a full int (int(11)).
...wl_namespace is already a full int (int(11)).
...qc_namespace is already a full int (int(11)).
...log_namespace is already a full int (int(11)).
...have img_media_type field in image table.
...already have pagelinks table.
...image table does not contain img_type field.
...already have unique user_name index.
...user_groups table exists and is in current format.
...have ss_total_pages field in site_stats table.
...user_newtalk table already exists.
...transcache table already exists.
...have iw_trans field in interwiki table.
...trackbacks table already exists.
...wl_notificationtimestamp is already nullable.
...times key already set on logging table.
...have ipb_range_start field in ipblocks table.
...no page_random rows needed to be set
...have user_registration field in user table.
...templatelinks table already exists
...externallinks table already exists.
...job table already exists.
...have ss_images field in site_stats table.
...langlinks table already exists.
...querycache_info table already exists.
...filearchive table already exists.
...have ipb_anon_only field in ipblocks table.
...rc_ns_usertext key already set on recentchanges table.
...rc_user_text key already set on recentchanges table.
...have user_newpass_time field in user table.
...redirect table already exists.
...querycachetwo table already exists.
...have ipb_enable_autoblock field in ipblocks table.
...index pl_namespace on table pagelinks includes field pl_from
...index tl_namespace on table templatelinks includes field tl_from
...index il_to on table imagelinks includes field il_from
...have rc_old_len field in recentchanges table.
...have user_editcount field in user table.
...page_restrictions table already exists.
...have log_id field in logging table.
...have rev_parent_id field in revision table.
...have pr_id field in page_restrictions table.
...have rev_len field in revision table.
...have rc_deleted field in recentchanges table.
...have log_deleted field in logging table.
...have ar_deleted field in archive table.
...have ipb_deleted field in ipblocks table.
...have fa_deleted field in filearchive table.
...have ar_len field in archive table.
...have ipb_block_email field in ipblocks table.
...index cl_sortkey on table categorylinks includes field cl_from
...have oi_metadata field in oldimage table.
...usertext_timestamp key already set on archive table.
...img_usertext_timestamp key already set on image table.
...oi_usertext_timestamp key already set on oldimage table.
...have ar_page_id field in archive table.
...have img_sha1 field in image table.
...protected_titles table already exists.
...have ipb_by_text field in ipblocks table.
...page_props table already exists.
...updatelog table already exists.
...category table already exists.
...category table already populated.
...have ar_parent_id field in archive table.
...have user_last_timestamp field in user_newtalk table.
...rev_parent_id column already populated.
...protected_titles table has correct pt_title encoding.
...have ss_active_users field in site_stats table.
...ss_active_users user count set...
...have ipb_allow_usertalk field in ipblocks table.
...pl_namespace, tl_namespace, il_to indices are already UNIQUE.
...change_tag table already exists.
...tag_summary table already exists.
...valid_tag table already exists.
...user_properties table already exists.
...log_search table already exists.
...have log_user_text field in logging table.
Populating log_user_text field, printing progress markers. For large
databases, you may want to hit Ctrl-C and do this manually with
maintenance/populateLogUsertext.php.
Done populating log_user_text field.
...log_search table already populated.
...l10n_cache table already exists.
Creating external_user table...ok
...ls_field_val key already set on log_search table.
...change_tag_rc_tag key already set on change_tag table.
Adding rd_interwiki field to table redirect...ok
Converting tc_time from UNIX epoch to MediaWiki timestamp... ok
Renaming eu_wiki_id -> eu_local_id... done.
Altering all *_mime_minor fields to 100 bytes in size ... done.
<br />
<b>Fatal error</b>: Maximum execution time of 30 seconds exceeded in <b>.../maintenance/populateRevisionLength.php</b> on line <b>62</b><br />

My wiki has 50,000 articles / 110,000 total pages if that matters.


Version: 1.17.x
Severity: normal

Details

Reference
bz29492
TitleReferenceAuthorSource BranchDest Branch
Remove static validation and ensure that all validator functions are pass-throughs.repos/abstract-wiki/wikifunctions/function-orchestrator!51apineapine-no-static-validationmain
Customize query in GitLab

Event Timeline

bzimport raised the priority of this task from to High.Nov 21 2014, 11:27 PM
bzimport set Reference to bz29492.
bzimport added a subscriber: Unknown Object (MLST).

Seems we should use set_time_limit() in the updater.

I'd retry running update.php it is likely that this time it will take less time (due to the work done previously) and succeed. Else, you can add set_time_limit(0); at the top of update.php, after the <?php

The command line script shouldn't hit max execution times. However this could very easily be hit by the updater running from the web.

set_time_limit() for the web probably wouldn't be a bad idea. Disabling possibly super-long updates with a warning could be another course of action.

As noted in comment 1, re-running the updater should workaround the issue--since you won't be wasting time on the previous updates anymore.

Who says it is a table update that is slow? Reading the log kind of hints something else, since the last entry is an update which is *done*.

It's not a table update that's killing it in comment 0, it's populateRevisionLength.php (which is run as one of the updates). I never said anything specific about table updates.

This is related to bug 27929. I think that before it's resolved, we should make it obvious in docs/release notes that upgrading large wikis should still be done from command line.

Added set_time_limit(0); to update.php and it worked after creating an empty LocalSettings.php and AdminSettings.php

It ran since Platonides posted till now.

What took so long is:
Processing next 50 rows... 50 done.
...
Processing next 50 rows... 369980 done.
Creating msg_resource table...ok
Creating module_deps table...ok
...ar_page_revid key doesn't exist.
Adding ar_revid key to table archive... ok
...ll_lang is up-to-date.
Purging caches...done.
Checking site_stats row...done.
Checking existence of old default messages...done.

I def gave up earlier on the web-installer but since it read that error message as last entry with nothing happening for ages I assumed it got stuck... but maybe it really got because of set_time_limit().

Now my LocalSettings.php is empty but I'd like it to be created by the web installer for all the defaults, but that's not realted to this bug and I'll post on IRC.

Resolved the max execution time issue in r90506 by set_time_limit(0) during Install and Upgrade.

Thanks for testing RC1!