Problem/Motivation

Drupal 8.x.y is end of life as of yesterday. Only security issues were fixed in Drupal 8.9.x either way for a while, and no bugfixes were made. So existing issues against Drupal 8.x.y all need to move to Drupal 9.2.x.

Message:

<a href="/psa-2021-11-30">Drupal 8 is end-of-life as of November 17, 2021</a>. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the <a href="/core/release-cycle-overview#minor">Drupal core minor version schedule</a> and the <a href="/core/d8-allowed-changes">Allowed changes during the Drupal core release cycle</a>.

Comments

Gábor Hojtsy created an issue. See original summary.

drumm’s picture

Issue summary: View changes

I updated https://www.drupal.org/psa-2021-06-29 so it doesn’t have “2021” doubled up in the advisory ID, and have updated the draft.

I’m working through triaging the pending bulk updates. To confirm, this is ready to initiate today? It isn’t waiting on any other bulk updates or other blockers, correct?

gábor hojtsy’s picture

I think this is not waiting on anything, bugfixes have long been impossible on 8.9.x, it was on security support only. However it would be best to verify the text with @catch or @xjm to make sure they agree with the wording.

xjm’s picture

Issue summary: View changes
Issue tags: -Needs release manager review

We'll want to update the date to be whatever date we issue any final security release (and do the bulk update then). Making some small edits to the IS text. LGTM other than that. We can RTBC once the final EOL happens.

gábor hojtsy’s picture

Status: Needs review » Postponed

Postponed then.

xjm’s picture

Issue summary: View changes

Updated for D8's EOL and 9.2.x's last bugfix release having shipped.

xjm’s picture

Issue summary: View changes

Fixing a typo.

xjm’s picture

Status: Postponed » Needs review
drumm’s picture

This will currently update 6,501 issues, which is in line with https://www.drupal.org/project/issues/drupal?text=&status=Open&prioritie...

The comment for review is #10566-33: Forum can not appear in multiple containers

xjm’s picture

Status: Needs review » Reviewed & tested by the community

Thanks @drumm, I think this one is also ready to go.

drumm’s picture

This is now running, about 10% done

drumm’s picture

Status: Reviewed & tested by the community » Fixed

Done!

Status: Fixed » Closed (fixed)

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

xjm’s picture

Oops, I missed that this moved issues to 9.2.x. It should have been 9.3.x. So we need a new bulk update.

drumm’s picture

Status: Closed (fixed) » Postponed (maintainer needs more info)

Will this be a straightforward update, like the others, or do we need something that only affects issues that received one of the previous updates?

This will basically be the same as other updates, it'll be a new comment posted. So need everything drafted as usual.

xjm’s picture

The comment that was posted to them was exactly correct, including about 9.3.x:

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

No point in repeating that twice; can we just do the bulk update with no comment text?

xjm’s picture

Status: Postponed (maintainer needs more info) » Active
xjm’s picture

Discussed with @drumm and we will just leave the comment body blank, since all the text we would is in the previous bulk update comment (including that it specifies 9.3.x) and for the vast majority of issues there aren't even comments between them.

drumm’s picture

Status: Active » Postponed (maintainer needs more info)

Which issues are we updating? All open 9.2.x to 9.3.x? All 9.2.x which received this update?

xjm’s picture

Status: Postponed (maintainer needs more info) » Active

@drumm Those should be the same set; there should be nothing against 9.2.x. To be safe we could say "all issues which received this update last time on this issue" and then if anything is left over after it figure out if something went wrong with other updates.

drumm’s picture

There are 20 issues where the bot didn't make that comment. Probably all of them newly-opened.

MariaDB [drupal]> SELECT concat('[#', n.nid, ']'), group_concat(fd_cb.entity_id IS NOT NULL) bot_comment FROM node n INNER JOIN field_data_field_project fdf_p ON fdf_p.entity_id = n.nid AND fdf_p.field_project_target_id = 3060 INNER JOIN field_data_field_issue_version fdf_iv ON fdf_iv.entity_id = n.nid AND fdf_iv.field_issue_version_value = '9.2.x-dev' INNER JOIN field_data_field_issue_status fdf_is ON fdf_is.entity_id = n.nid AND fdf_is.field_issue_status_value IN (1,13,8,14,15,4,16) LEFT JOIN comment c ON c.nid = n.nid AND c.uid = 180064 LEFT JOIN field_data_comment_body fd_cb ON fd_cb.entity_id = c.cid AND fd_cb.comment_body_value = '<a href="/psa-2021-11-30">Drupal 8 is end-of-life as of November 17, 2021</a>. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the <a href="/core/release-cycle-overview#minor">Drupal core minor version schedule</a> and the <a href="/core/d8-allowed-changes">Allowed changes during the Drupal core release cycle</a>.' GROUP BY n.nid HAVING bot_comment NOT LIKE '%1%';

#3252456: Provide default value Content ID from URL not working
#3252501: Internal Server Error 500 for jsonapi/file/file
#3252587: Extend the $skip_protocol_filtering list of attributes to use Tailwind CSS classes with prefix ":"
#3252854: Mismatched entity and/or field definitions
#3252904: Dates are incorrectly translated as Interface.
#3253217: User disable the account and unpublish its content option only disabled account but created content not unpublished it.
#3253763: Performance of moderation control state filter is slow
#3253827: Suppress suffix cache in table names to prevent table name hashing before actual table length exceeds sql max allowed settting
#3254758: Nested Paragraph field support for inline form errors
#3254880: Update file usage number when translation or entity reference revisions (paragraphs) usages change
#3255337: "Redirects to external URLs are not allowed by default" in detection configuration by domain
#3255437: Avoid error when throwing DatabaseExceptionWrapper for insert queries
#3255737: Access $form_state from cache with form_build_id outside of form.
#3256056: Entity query system does not document the NOT BETWEEN operator, but JSON:API supports/uses it
#3256106: Call to a member function isTranslatable() on null in Drupal\Core\Field\FieldConfigBase->isTranslatable()
#3256288: Change html tag for dialog title from span to heading tag
#3256828: Chainflix OEmbed endpoint breaks regex matching
#3256957: Views Global: Custom text field strips in-line styles
#3257013: Allow to customize the Oembed providers/optimize the provider lookup
#3257167: Ajax wrapper's class or id is not unique

drumm’s picture

Status: Active » Needs review

This will currently update 6,429 issues which lines up with https://www.drupal.org/project/issues/drupal?text=&status=Open&prioritie...

#10566-34: Forum can not appear in multiple containers is the test comment for review.

I currently do not have the logic in the script to exclude the now 21 issues that did not get the previous comment. If we want to skip updating those, I can run the query above and exclude those by nid, to keep the logic simple.

gábor hojtsy’s picture

I think those 20 issues would be odd to update without a comment, we should probably update those by hand.

drumm’s picture

I thought of a way to do that exclusion with some straightforward code. This would currently update 6,404 issues

$previously_updated = db_query("SELECT n.nid, group_concat(fd_cb.entity_id IS NOT NULL) bot_comment FROM {node} n INNER JOIN {field_data_field_project} fdf_p ON fdf_p.entity_id = n.nid AND fdf_p.field_project_target_id = 3060 INNER JOIN {field_data_field_issue_version} fdf_iv ON fdf_iv.entity_id = n.nid AND fdf_iv.field_issue_version_value = '9.2.x-dev' INNER JOIN {field_data_field_issue_status} fdf_is ON fdf_is.entity_id = n.nid AND fdf_is.field_issue_status_value IN (1,13,8,14,15,4,16) LEFT JOIN {comment} c ON c.nid = n.nid AND c.uid = 180064 LEFT JOIN {field_data_comment_body} fd_cb ON fd_cb.entity_id = c.cid AND fd_cb.comment_body_value = '<a href=\"/psa-2021-11-30\">Drupal 8 is end-of-life as of November 17, 2021</a>. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the <a href=\"/core/release-cycle-overview#minor\">Drupal core minor version schedule</a> and the <a href=\"/core/d8-allowed-changes\">Allowed changes during the Drupal core release cycle</a>.' GROUP BY n.nid HAVING bot_comment NOT LIKE '%1%'")->fetchCol();
print_r($previously_updated);

$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'node')
->entityCondition('bundle', project_issue_issue_node_types())
->fieldCondition('field_project', 'target_id', 3060)

->fieldCondition('field_issue_version', 'value', ['9.2.x-dev'])
//->fieldCondition('field_issue_version', 'value', '8.%.x-dev', 'LIKE')

//->propertyCondition('status', 0) // this is why the counts differ
->fieldCondition('field_issue_status', 'value', project_issue_open_states())
->fieldCondition('field_issue_status', 'value', 2, '!=')

->propertyCondition('nid', $previously_updated, 'NOT IN')

//->range(0, 1)
//->range(0, 50)
->execute();
print count($result['node']) . " issues\n";
if (empty($result['node'])) {
  exit(1);
}
/*
/*
$followup_account = user_load(variable_get('project_issue_followup_user', 0));
// Load in batches of 50 and update.
foreach (array_chunk(array_keys($result['node']), 50) as $nids) {
  foreach (node_load_multiple($nids) as $node) {
    print 'Updating ' . $node->nid . ' ' . $node->title . "\n";
    $node->field_issue_version[LANGUAGE_NONE][0]['value'] = '9.3.x-dev';
    $node->nodechanges_uid = $followup_account->uid;
    $node->nodechanges_comment['comment_body'][LANGUAGE_NONE][0] = [
      'value' => '',
      'format' => filter_default_format($followup_account),
    ];
    // Do not send mail notifications.
    $node->nodechanges_comment_attributes = [
      'created' => $node->last_comment_timestamp,
      'project_issue_no_email' => TRUE,
    ];
    $node->_project_issue_changed_timestamp = $node->changed;
    node_save($node);
    sleep(1);
  }
}
xjm’s picture

It's been awhile since I wrote queries against the d.o DB, but that looks like a sound approach to me as far as I can tell.

drumm’s picture

Assigned: Unassigned » drumm

I’ll take that as close enough to “RTBC” to run this.

drumm’s picture

Status: Needs review » Fixed

Done!

gábor hojtsy’s picture

Thanks!

Status: Fixed » Closed (fixed)

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