使WordPress成为核心

开的17个月前

关闭4个月前

上次修改时间4周前

#58281 关闭 增强 (固定的)

回滚自动更新(回滚部分3)

报告人: 阿夫拉根的个人资料 阿夫拉根 所有者: 约翰百亿的简介 约十亿
里程碑: 6.6 优先: 正常的
严重程度: 正常的 版本: 6.3
组件: 升级/安装 关键词: has-patch接口 开发人员反馈 需求-测试 has-testing-info(有测试信息) 早期的 犯罪
重点: 复写的副本:

描述(上次修改者阿夫拉根)

这是回滚第3部分。它开始于移动_目录()第1部分的WP 6.2。第2部分已完成#51857在工作包6.3中。这让我们进入第三部分。

第3部分是自动更新的回滚。当手动更新插件时,如果插件在重新激活时出现致命错误,则会阻止插件重新激活。不幸的是,在自动更新期间,此重新激活检查不会发生,并且下次站点运行时,用户将看到WSOD。

回滚自动更新执行类似的重新激活检查,如果出现致命错误,将在错误处理程序中捕获该错误,并恢复先前安装的插件。如果发生这种情况,将发送一封电子邮件,通知站点管理员更新和回滚失败。

回滚后,核心和主题更新的挂起自动更新将重新启动。

此代码当前正在为所有拥有回滚更新失败已安装功能插件。

我个人一直在使用一个插件进行测试,如果发生更新,这个插件将是致命的。该插件位于我的测试站点上,处于活动状态,并设置为自动更新。从年初开始,我就一直这样跑步。

PR与功能插件中的代码略有不同。请在您的站点上测试、运行功能插件,并查看PR中的代码。主要是给我们您的评论和反馈。

props@costdev和@pbiron,用于继续进行代码审查、橡皮保护和健全性检查。

更改历史记录(62)

这张票是在采购订单号3958WordPress/WordPress-develop开发通过@阿夫拉根.


17个月以前
#1

此PR将回滚自动更新功能添加到核心。这已经是回滚更新失败功能插件。

这需要PR2225型.

Trac票:https://core.trac.wordpress.org/ticket/58281#票证

这张票是在松弛(Slack)在afragen的core-upgrade-install中。查看日志.


17个月以前

#3 @阿夫拉根
17个月以前

  • 所有者设置为阿夫拉根
  • 状态已从更改新的分配

这张票是在松弛(Slack)在afragen的core-upgrade-install中。查看日志.


15个月以前

#5 @阿夫拉根
15个月以前

#6 @谢尔盖·比留科夫
15个月以前

  • 里程碑已从更改等待审查6.4

这张票是在松弛(Slack)在afragen的core-upgrade-install中。查看日志.


15个月以前

这张票是在松弛(Slack)在afragen的core-upgrade-install中。查看日志.


14个月以前

这张票是在松弛(Slack)在afragen的#core committers中。查看日志.


13个月以前

这张票是在松弛(Slack)oglekler的in#core。查看日志.


12个月以前

#11 @基拉松
12个月以前

感谢大家为此所做的工作!

我在PR的评论中留下了几个问题/评论。

我将尝试做一些进一步的手动测试,但我目前没有看到任何拦截器可以阻止将其首次运行到主干中,以便我们可以进行更广泛的测试。

这张票是在松弛(Slack)oglekler的in#core。查看日志.


12个月以前

这张票是在松弛(Slack)在由oglekler进行的核心测试中。查看日志.


12个月以前

#14 @彼得威尔逊公司
12个月以前

我已经测试过了链接的拉请求在我们的老朋友在VirtualBox上运行的机箱上,我看到了一些明显的超时。

我写了一个迷你插件给增加更新cron作业的运行频率所以我不需要为每一轮测试等待12个小时。这让我可以使用wp-cron.php型让事件模拟真实世界的环境。

然后我安装了以下插件:

  • akismet 4.1.10系列
  • 古腾堡16.5.1
  • 喷气背包11.3.2
  • 邮差4.0.1
  • 独白石2.5.2.8
  • woocommerce 7.0.0版
  • wordpress-seo 19.7版
  • wpforms-lite 1.7.0

在签出拉请求的情况下运行,更新在上述设置中失败。Aksimet、Gutenberg和Jetpack将进行更新,但其余的将无法升级。

由于升级失败,没有发送电子邮件通知自动更新器锁定选项将保留在数据库中,以防止下次运行完成。

我想知道PHP请求是否超时。在wp-cron.php中,首先运行的内容之一是快速完成代码以防止请求阻止站点。我想知道这是否阻止了更新开始运行时超时的延长。

这张票是在PR#5287WordPress/WordPress-develop开发通过@成本开发.


12个月以前
#15

插件自动更新时最大的问题是,它们可能包含导致网站崩溃的致命错误。

这将执行两个环回请求,一个是对仪表板的请求,另一个是针对主页的请求,以尝试检测此类致命错误。

如果检测到致命错误,更新将还原为以前安装的版本。

@阿夫拉根对发表了评论PR#5287:


12个月以前
#16

@costdev和我一直在测试插件、fataling插件和主题的所有组合,甚至包括@peterwilsoncc的插件列表。

测试结果很好!

这张票是在松弛(Slack)javier主持。查看日志.


12个月以前

#19 @彼得威尔逊公司
12个月以前

@costdev@afragen我测试了刷新请购单包括我的插件列表注释#14

插件处于非活动状态时,更新成功运行,我收到了自动更新电子邮件。

由于插件处于活动状态,它似乎在WooCommerce更新后停止运行,而且我没有收到自动更新电子邮件和自动更新器锁定选项保留。wordpress-seo和wpforms-lite未更新。

当插件处于活动状态时,我在插件管理屏幕上得到了190个查询,因此,激活可能会导致问题,因为站点比处于非活动状态时做了更多的工作。

成功更新的插件的备份保留在升级-模板备份/插件文件夹。

像往常一样,这是在VirtualBox上进行测试(使用底盘).

这张票是在松弛(Slack)peterwilsoncc的core-upgrade-install中。查看日志.


12个月以前

#21 @阿夫拉根
12个月以前

@peterwilsoncc我用你所有的插件和其他几个插件运行了这个,总共14个,包括2个会引发致命错误的插件。

我在LocalWP和WP docker env上的运行都很成功升级-模板备份/插件为空。

也许这是您用来帮助触发更新的方法?在LocalWP上,我可以使用@costdev'scli-force-auto-updates.php插件。在Docker上我使用npm运行env:cli-cron事件运行wpversioncheck.

上次编辑时间12个月前通过阿夫拉根(以前的)(差异)

这张票是在松弛(Slack)oglekler的in#core。查看日志.


12个月以前

#23 @成本开发
12个月以前

  • 里程碑已从更改6.46.5

通过额外的测试,问题得以重现。

在自动更新期间浏览网站时会出现问题,正在进行调查以找到解决方案。我们将继续工作,并再次尝试WordPress 6.5。

感谢大家迄今为止对回滚自动更新的工作和兴趣!

#24 @基拉松
12个月以前

非常感谢@costdev@afragen@peterwilsoncc和所有一直在开发和测试此功能的人。

我同意,考虑到应用了该功能的更新中的回归(没有发生本应成功的更新),以及今天/明天的Beta 1,将其设置为6.5是有意义的。

我计划继续关注这一点,很高兴能在6.5版中提供帮助!

这张票是在松弛(Slack)在afragen的core-upgrade-install中。查看日志.


12个月以前

这张票是在松弛(Slack)在afragen的#core升级安装中。查看日志.


11个月以前

这张票是在松弛(Slack)afragen的in#core。查看日志.


11个月以前

这张票是在松弛(Slack)由pbiron进行core-upgrade-install。查看日志.


10个月以前

这张票是在松弛(Slack)afragen的in#core。查看日志.


10个月以前

#30 @安娜扎祖
8个月以前

在这里检查,因为我们距离beta 1还不到一个月。这还是6.5的预定价格吗?如果是这样的话,我想确保它已涵盖测试范围。

#31 @成本开发
8个月以前

@annezazu谢谢您的入住!

是的,该功能仍计划用于6.5。不幸的是,我的代理工作忙得不可开交,还没来得及回头。在升级/安装松弛通道中,我已经联系了其他委员看看他们是否有带宽公关部.

有了眼睛和更多提交者的可能输入,这个功能绝对可以在6.5中实现。

#32 @瑞士风格
8个月以前

最近这里没有任何吸引力,距离beta 1只有一周的时间了。您可能想在开发聊天中提出这个问题,也许需要一些测试说明?

#33 @成本开发
8个月以前

@瑞士斯皮迪感谢您标记机票上没有更新!

我在Slack进行了额外的测试@peterwilsoncc今天也将进行额外的测试。让我们拭目以待,看看Peter是否发现了任何问题,看看此功能在进入Beta 1时的表现。

#34 @成本开发
8个月以前

  • 关键词 has-testing-info(有测试信息)补充

可以找到测试说明在这里.

这张票是在松弛(Slack)audrasjb的in#core。查看日志.


7个月以前

#36 @瑞士风格
7个月以前

  • 关键词 早期的补充
  • 里程碑已从更改6.56.6

添加测试说明后,此处没有牵引力。

让我们确保在6.6的早期完成此操作!

这张票是在松弛(Slack)在afragen的core-upgrade-install中。查看日志.


7个月以前

这张票是在松弛(Slack)在afragen的#core升级安装中。查看日志.


5个月以前

#39 @audrasjb公司
5个月以前

感谢您在此功能上所做的出色工作!
我在公关中添加了一些评论:)

#40 @audrasjb公司
5个月以前

感谢您提供详细的测试信息!

我用此插头不应使用插件和回滚按预期工作升级临时备份在进程结束时为空。

我还用一个位于自定义存储库中的插件测试了PR(新版本中有或没有致命错误),看起来也很好。

@约十亿美元对发表了评论PR#5287:


5个月以前
#41

我添加了一些次要的代码评审注释,但总的来说看起来不错。我将在接下来的几天里对此进行功能测试。

@约十亿美元对发表了评论公共关系编号5287:


5个月以前
#42

我们该怎么处理这些错误_日志()在这个公关中打电话?把它们剥光?

@成本开发对发表了评论PR#5287:


5个月以前
#43

出于调试目的,由于这是一个后台任务,如果我们能将它们放在WP_DEBUG公司标记,以便任何报告的问题都可以详细说明哪里出错,然后在周期的稍后删除此日志记录。

@阿夫拉根对发表了评论PR#5287:


5个月以前
#44

我说现在就让他们进行更广泛的测试。在beta1附近的某个地方,我们可以将环回结果放在WP_DEBUG后面,并删除大多数其他结果。

#45 @约十亿
4个月以前

  • 关键词 犯罪补充
  • 所有者已从更改阿夫拉根约十亿
  • 状态已从更改分配审查

#46 @约十亿
4个月以前

  • 分辨率设置为固定的
  • 状态已从更改审查关闭

58128:

升级/安装:当自动插件更新导致网站前端出现致命错误时,自动回滚到以前的版本。

这建立在6.3中引入的临时备份系统的基础上,以允许自动更新,从而从致命错误保护中获益。如果发现致命错误,将向站点主页执行环回请求,并将插件回滚到其备份版本。

为了在beta测试期间进行调试和观察,此更改包括几个调用错误_日志()在升级和回滚阶段。一旦我们准备好RC1,这些呼叫可以被删除或放在标志后面。

Props costdev、johnbillion、mukesh27、afragen、audrasjb、justlevine、kirasong、peterwilsoncc

修复#58281

#48 @瑞士风格
4个月以前

  • 分辨率 固定的删除
  • 状态已从更改关闭重新打开的

仅供参考,这些错误日志调用导致一些WP-CLI测试失败,因为现在在运行命令时有很多意外输出。

这张票是在公共关系编号6542WordPress/WordPress-develop开发通过@成本开发.


4个月以前
#49

58128兰特,错误_日志()已添加个呼叫。其中一个用于在发布之后保持,其余用于在6.6开发周期中进行测试。

测试错误_日志()引起的呼叫测试失败由于意外输出。

此更改保护了测试调用和发布后调用WP_缺陷工作包_DEBUG_LOG,类似于各种块文件的使用WP_DEBUG&&WP_DEBU显示警卫。

@阿夫拉根对发表了评论采购订单号6542:


4个月以前
#50

看起来不错

#51 @约十亿
4个月以前

  • 分辨率设置为固定的
  • 状态已从更改重新打开的关闭

58139:

引导/加载:将自动插件和主题更新的调试输出放在调试标志后面。

此更改意味着只有在WP_DEBUG公司工作包_DEBUG_LOG常量定义为true。

Props costdev,阿夫拉根,瑞士

修复#58281

#54 @成本开发
4个月以前

  • 分辨率 固定的删除
  • 状态已从更改关闭重新打开的

@johnbillion看起来我们在$is_debug定义。

公关6632应该解决不一致的问题,以便$is_debug使用的定义WP_DEBUG&&WP_DEBUG_LOG.

@成本开发对发表了评论采购订单号6632:


4个月以前
#55

@swissspidy注意到,我们在调试保护中发现了一些不一致的地方,并对其中一些进行了检查工作包_DEBUG_DISPLAY而不是工作包_DEBUG_LOG.

你能确认修改代码以使用吗WP_DEBUG&&WP_DEBUG_LOG对于所有的实例(这个PR是这样做的),仍然会防止WP-CLI测试中的意外输出?

谢谢!

@瑞士风格对发表了评论采购订单号6632:


4个月以前
#56

我想是的,是的,当我查看此PR&run时wp-cron事件运行wp-version_check wp-update_plugins(上次触发这些问题的原因)👍

#57 @成本开发
4个月以前

58308:

升级/安装:在翻译更新时不要切换维护模式。

回滚自动更新功能引入了额外的维护模式切换。

在以非英语(US)语言安装WordPress后,会自动执行翻译更新。由于核心主题和捆绑主题可能会有大量更新,用户在访问新安装的网站时将收到维护通知。

为了避免让用户担心网站无法正确安装,这就排除了翻译更新触发额外维护模式切换的可能性。

后续行动[58128].

Props Bennieldl、afragen、rajinsharwar、costdev。
修复#61260。请参阅#58281.

#58 @成本开发
4个月以前

第6632页已由另一个组件维护人员进行了审查,并由另一名提交人进行了测试。

准备好了犯罪注意:@rogermedia在主机Slack频道的测试中发现了这个问题,并将包含在道具列表中。

上次编辑时间4个月前通过成本开发(以前的)(差异)

#59 @成本开发
4个月以前

  • 分辨率设置为固定的
  • 状态已从更改重新打开的关闭

58309:

升级/安装:Make$is_debug在中一致WP_自动更新.

[58139]引入了调试标志,以确保调试输出仅在WP_DEBUG公司工作包_DEBUG_LOG常量定义为true。然而,有些标志使用错误工作包_DEBUG_DISPLAY而不是工作包_DEBUG_LOG.

这修复了一致使用的标志WP_DEBUG公司工作包_DEBUG_LOG如预期。

后续行动[58128],[58139].

Props rogermedia、afragen、swissspidy、costdev。
修复#58281.

#60 @成本开发
3个月以前

58435:

升级/安装:安装后延迟自动更新。

安装后,用户将被定向到登录第页。这将触发wp_schedule_update_checks()挂接到的函数初始化并计划在不存在其他事件时立即运行更新。由于中增加了对自动更新的维护模式的更稳健使用[58128],用户可能会在安装WordPress后看到维护模式屏幕。

为了改善用户体验,它将核心更新安排为1小时,插件更新安排为1.5小时,主题更新安排为安装后2小时。

后续行动[58128],[58139],[58308],[58309].

Props afragen,hellofrom Tonya,peterwilsoncc,nithi22,dd32。
修复#61457。请参阅#58281,#61391.

#61 @成本开发
3个月以前

58436:

升级/安装:核心自动更新失败时禁用维护模式。

[58128],自动更新过程中添加了其他维护模式调用。然而,如果“核心”自动更新失败,则会提前返回。

维护模式直到稍后在WP_自动更新程序::更新()方法。这意味着,尽管核心更新被视为跳过的更新,但维护模式可能会继续启用。

这将在提前返回之前禁用维护模式。

后续行动[58128].

道具成本开发,hellofromTonya,peterwilsoncc。
修复#61459。请参阅#58281.

@谢尔盖·比留科夫对发表了评论采购订单号6632:


4周以前
#62

谢谢你的公关!看起来这是合并的58309兰特.

注:请参阅TracTickets公司有关使用的帮助门票。