In a clean checkout:

  1. Take the attached database dump file, unzip it and restore it to a database. This is two dumps, drupal-7.filled.standard_all.database.php.gz and drupal-7.all-disabled.database.php in an sql file.
  2. Point a D7-style settings.php to it.
  3. Add $settings['update_free_access'] = TRUE; to it. Back this file up.
  4. Run D8 update.php
  5. Observe white screen of death.
  6. Restore the database.
  7. Remove everything in sites/default/files
  8. Restore settings.php.
  9. Apply patch.
  10. Observe update finishing.
  11. Report back.

How on earth can the testbots pass? I presume it has something to do with $settings['update_free_access'] = TRUE;.

CommentFileSizeAuthor
#6 d8update_wow-2.patch1.02 KBswentel
d8update_wow.patch576 byteschx
d7disabledmodules.zip85.5 KBchx
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

chx’s picture

Issue summary: View changes

Updated issue summary.

szantog’s picture

Status: Needs review » Reviewed & tested by the community

1. I Installed drupal 7.21 minimal profile.
2. Set $settings['update_free_access'] = TRUE;
3. Checkout 8.x HEAD,
4. Run update.php

I get HTTP Error 500 (Internal Server Error) with the following log entry:

[21-Mar-2013 02:57:39 UTC] PHP Fatal error:  Call to a member function get() on a non-object in /home/szantogabor/public_html/d8/core/includes/theme.maintenance.inc on line 59
[21-Mar-2013 02:57:39 UTC] PHP Stack trace:
[21-Mar-2013 02:57:39 UTC] PHP   1. _drupal_exception_handler() /home/szantogabor/public_html/d8/core/includes/bootstrap.inc:0
[21-Mar-2013 02:57:39 UTC] PHP   2. _drupal_log_error() /home/szantogabor/public_html/d8/core/includes/bootstrap.inc:2259
[21-Mar-2013 02:57:39 UTC] PHP   3. drupal_maintenance_theme() /home/szantogabor/public_html/d8/core/includes/errors.inc:185
[21-Mar-2013 02:57:39 UTC] PHP   4. _drupal_maintenance_theme() /home/szantogabor/public_html/d8/core/includes/bootstrap.inc:2641

Btw update_free_access is irrelevant in this issue.

5. Went to step 1
6. Remove all from sites/default/files.
8. Reinstall d7.
9. Checkout 8.x HEAD
10 Applied patch.
11. Run update.php
12. Smile.

The update run as well.

Marked as RTBC, and hope, the testbot also want it.

Berdir’s picture

Note that we currently can't really test those early-bootstrap upgrade path issues because we have to do a few shortcuts (pre-create config directories, create a session) as we can not have a settings.php specific for the upgrade path.

swentel’s picture

Confirmed, this fixes the white screen.

swentel’s picture

However, could be I'm doing something stupid, but I don't see the 'Apply updates' button, I only see "The version of Drupal you are updating from has been automatically detected."

swentel’s picture

Ok, nevermind, for some reason I still had an old theme registry, clearing that fixed the upgrade.
This also fixes the errors mentioned in #1919002: Upgrade to D8 broken when D7 has more then one language enabled (#10 and #20)

swentel’s picture

Status: Reviewed & tested by the community » Needs review
FileSize
1.02 KB

Update on the patch to make sure the theming registry is cleared. In case there's still some cache, you would only see 'The version of Drupal you are updating from has been automatically detected.' but no 'Apply pending updates' button.

chx’s picture

Status: Needs review » Reviewed & tested by the community

That looks alright to me. Note that by this time Drupal is fully bootstrapped so flushing the cache here is alright. We quite probably can add a test for this one later.

chx’s picture

Tests will be written in #1949724: Allow simpletest child sites to additionally load a test-specific settings.php to allow testing anonymous and configless updates (edit: has been written and you can see in #4 how this patch makes the bot pass with the right test and without fails it) but that is a wide and huge effort that should not hold this up. Even with that issue, manual testing will be quite necessary (not the least to uncover the cases we forgot to test) and before this is in, that can't happen.

And if you wonder, why does the testbot passes? Blame update_access_allowed which, in order to run user_access, adds the user module to various places. If update_free_access is not TRUE then it runs:

    drupal_container()->get('kernel')->updateModules($module_filenames, $module_filenames);

Now the patch does, in another place:

      Drupal::service('kernel')->updateModules($sorted_with_filenames, $sorted_with_filenames);

Looks familiar, eh?

YesCT’s picture

Issue tags: +D8 upgrade path

#1948390: [Meta] Upgrade to D8 from D7: regular testing needed on various OSs with different versions of php and other unique situations is postponed on this (no need to do more manual testing since we know it's broken).

When this is fixed, we need to update 1948390 back to active.

andypost’s picture

+1 RTBC, patch allows upgrade for multilingual sites

Dries’s picture

Status: Reviewed & tested by the community » Fixed

Committed to 8.x. Thanks.

xjm’s picture

Note that this patch was committed without test coverage for the bug in order to unblock everything related to the upgrade path. We've escalated #1949724: Allow simpletest child sites to additionally load a test-specific settings.php to allow testing anonymous and configless updates to critical for the test coverage.

xjm’s picture

Automatically closed -- issue fixed for 2 weeks with no activity.

Anonymous’s picture

Issue summary: View changes

Updated issue summary.