New media uploads are offloaded while Image Storage rollback is active
维护者通常 1 天内回复
评估
调研方向
Start with inc/settings.php and inc/media_offload.php, especially is_offload_enabled(), instance(), and generate_image_meta(). Review tests/test-media.php and its rollback coverage, then add coverage for a new attachment while rollback_status is enabled and offload_media is disabled. Done means new uploads no longer enter the offload path during rollback while existing rollback behavior remains covered.
由索引模型根据 Issue 内容生成。
描述
Status (2026-10-11)
Fixed in PR #1174 (bugfix/1159 → development, approved by pirate-bot at aed92868).
- Fix: while an Image Storage rollback runs, new uploads stay in the media library. The hook that offloads a new upload, and the filename deduplication that goes with it, are now registered only while Image Storage is on. Offloaded images keep being served from Optimole during the rollback, as before.
- Tests: with a rollback in progress, neither hook is registered and a new upload keeps a local file. The test fails on
development. - To know: an upload made during a rollback keeps its local file; a not-yet-restored image with the same name in the same month folder is then restored with a
-1suffix. - Not proven: on a live connected site (the local test site is not connected to Optimole).
Summary
Images added to the WordPress Media Library while an Image Storage rollback is active can still be transferred to Optimole Cloud. Starting rollback is expected to stop cloud offloading for new uploads while existing cloud images are restored locally. Instead, newly added media can continue entering the offload workflow, preventing users from reliably stopping additional cloud transfers during recovery.
Customer context
- Product / area: Optimole Pro, Image Storage rollback and media uploads
- Version: Unknown from the ticket; defect is present in inspected tag
v4.2.14 - Environment: WordPress; other environment details not provided
- Integration / third party: WordPress attachment metadata generation
- Reported error / symptom: Newly added images continue going to Optimole servers while rollback is in progress
- Impact: Additional media can be cloud-offloaded while the user is attempting to stop offloading and restore local files
Reproduction notes
Code-backed reproduction:
- Enable Optimole Image Storage offloading and offload at least one image.
- Start
Rollbacksorollback_statusbecomesenabledandoffload_mediabecomesdisabled. - While rollback remains active, upload a new image to the WordPress Media Library.
- Observe that the new attachment still enters Optimole’s metadata-generation/offload callback and can be transferred to cloud storage.
The source path is confirmed in v4.2.14; a controlled WordPress runtime reproduction was not performed.
Diagnosis
Conclusion
The plugin disables the offload_media setting when rollback starts, but treats any active rollback as equivalent to enabled offloading during bootstrap. This registers the attachment-metadata callback that uploads newly generated media to Optimole Cloud. The callback has no rollback-state guard, so a new image uploaded during rollback can follow the normal offload path. This directly matches the reported continued cloud uploads.
Where this likely occurs
assets/src/dashboard/parts/connected/settings/OffloadMedia.js—onRollbackdMedia()lines 138–160 setsrollback_statustoenabledandoffload_mediatodisabledbefore starting rollback.inc/settings.php—Optml_Settings::is_offload_enabled()lines 875–882 returns true when either offloading is enabled or rollback is active.inc/media_offload.php—Optml_Media_Offload::instance()lines 154–185 registersgenerate_image_meta()onwp_generate_attachment_metadatawheneveris_offload_enabled()is true.inc/media_offload.php—Optml_Media_Offload::generate_image_meta()lines 1289–1379 validates and prepares a newly generated attachment for cloud upload without distinguishing rollback from normal offload mode.- Git history: commit
723d891d57cf66713ad73cca58ca1e61725743e0changed rollback to satisfyis_offload_enabled()and first appears in tagv3.11.1; tag containment confirms the behavior remains throughv4.2.14. The preceding implementation only registered these hooks whenoffload_mediaitself was enabled.
Engineering notes
Rollback requires portions of the media-offload subsystem to remain available for restoring and rendering existing offloaded attachments. The inspected bootstrap gate groups URL handling, attachment rendering, post filtering, and new-upload processing under the same state check. The confirmed scope is new WordPress image attachments created while bulk rollback status is active; other upload mechanisms were not tested.
Test coverage status
tests/test-media.php includes successful rollback coverage in test_image_rollback() lines 348–358 and rollback scheduling/locking coverage at lines 643–741. No relevant coverage was found during inspection for creating a new attachment while rollback_status is enabled and offload_media is disabled.
What to verify or explore next
- May be worth reproducing on
v4.2.14by starting rollback, uploading one image through the Media Library, and checking its local file, attachment metadata, offload flags, and cloud record. - May be worth comparing the same workflow on
v3.11.0andv3.11.1to verify the identified release boundary at runtime. - If reproducible, checking uploads through the block editor, WooCommerce product media, and REST media endpoint could establish whether they share the attachment-metadata path.
Unknowns / follow-up
The customer’s installed plugin version and the exact upload interface are unknown. No runtime logs were provided, and WordPress core source was not inspected in this plugin-only workspace.
Confidence
Confidence: 96/100
Repository inspection confirms that new attachments can enter the cloud-offload path while rollback is active. The separate stalled-restoration report matches open issue #1108, which was read and already contains evidence from the linked parent HelpScout conversation.
Source: HelpScout #3458633804
Generated by bug-report-triage (ID: bug-report-triage_6ab26de1374543.30050428)
- 主要语言
- PHP
- 星标
- 74
- 派生
- 14
- 平均合并
- 2 天 9 小时
- 30 天内合并 PR
- 22
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Codeinwp/optimole-wp 的其他 Issue
-
Image URL replacement passes an integer cache token to the Optimole SDK可能已有人在做 @selul 于 7 天前认领。 未关闭bug bug-report bug-report-triage crash-report
难度 3/5 1-2 天 新手友好度 55/100
Codeinwp/optimole-wp#1187 · 2 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
Image parser uses a data: placeholder from data-src as the image URL, so the real src misses srcset enhancement可能已有人在做 @selul 于 7 天前认领。 未关闭bug bug-report
难度 4/5 1-2 天 新手友好度 56/100
Codeinwp/optimole-wp#1186 · 2 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
customer report feature-request-triage
难度 5/5 一周以上 新手友好度 35/100
Codeinwp/optimole-wp#1179 ·
维护者通常 1 天内回复
-
customer report feature-request-triage
难度 4/5 3-5 天 新手友好度 54/100
Codeinwp/optimole-wp#1178 ·
维护者通常 1 天内回复
-
bug bug-report bug-report-triage crash-report
难度 4/5 3-5 天 新手友好度 45/100
Codeinwp/optimole-wp#1163 · 4 条评论 ·
维护者通常 1 天内回复
查看 Codeinwp/optimole-wp 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 70/100
MagnaCapax/PMSS#1206 ·
维护者通常 3 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 88/100
backdrop-contrib/print#58 ·
-
Bug Status: Needs Triage
难度 2/5 1-3 小时 新手友好度 70/100
维护者通常 1 天内回复