RTC: Fix find_canonical_storage_post_id() always returning null#78053
Conversation
get_posts() with 'fields' => 'ids' returns an array of IDs, so the previous is_numeric( $post_id ) check was always false. As a result, find_canonical_storage_post_id() always returned null and the storage layer kept promoting the suffixed post to the canonical slug, leaving two posts sharing the same slug. This caused test_first_access_race_does_not_split_room_storage to fail on WordPress 6.8/6.9 where the Gutenberg shim is active (WP 7.0+ skips the test because core ships its own class). Read the first element from the result array and return it as the canonical post ID instead. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The race-condition regression test for WP_Sync_Post_Meta_Storage only runs against the Gutenberg shim, which is bypassed on the latest WP. PRs normally exclude the previous-major WP job, so the fix cannot be verified by CI on a PR. Comment out that exclude with a TODO to revert before merging. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
OK, all unit tests have passed. I will now remove the temporary code. https://github.com/WordPress/gutenberg/actions/runs/25486730647/job/74784157464?pr=78053 |
CI confirmed the fix on the previous WP major. Restore the original pull_request exclude. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| return null; | ||
| } | ||
|
|
||
| return $posts[0]; |
There was a problem hiding this comment.
Since $posts is guaranteed to be an array of int values, I don't think is_numeric is necessary.
The find_canonical_storage_post_id() fix needs to ride along with the existing 11660 backport so Core gets the corrected race-resolution logic in one piece. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
* RTC: Fix find_canonical_storage_post_id() always returning null get_posts() with 'fields' => 'ids' returns an array of IDs, so the previous is_numeric( $post_id ) check was always false. As a result, find_canonical_storage_post_id() always returned null and the storage layer kept promoting the suffixed post to the canonical slug, leaving two posts sharing the same slug. This caused test_first_access_race_does_not_split_room_storage to fail on WordPress 6.8/6.9 where the Gutenberg shim is active (WP 7.0+ skips the test because core ships its own class). Read the first element from the result array and return it as the canonical post ID instead. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * CI: Temporarily run previous-major WP PHP tests on pull_request The race-condition regression test for WP_Sync_Post_Meta_Storage only runs against the Gutenberg shim, which is bypassed on the latest WP. PRs normally exclude the previous-major WP job, so the fix cannot be verified by CI on a PR. Comment out that exclude with a TODO to revert before merging. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Revert "CI: Temporarily run previous-major WP PHP tests on pull_request" CI confirmed the fix on the previous WP major. Restore the original pull_request exclude. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Backport changelog: Add PR 78053 to 7.0/11660 entry The find_canonical_storage_post_id() fix needs to ride along with the existing 11660 backport so Core gets the corrected race-resolution logic in one piece. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: Mamaduka <mamaduka@git.wordpress.org>
|
I just cherry-picked this PR to the wp/7.0 branch to get it included in the next release: 842a2be |
This updates the pinned hash from the `gutenberg` from `e2970ba736edb99e08fb369d4fb0c378189468ee ` to `c15cef1d6b07f666df28dac0383bafb0edfe0914`. The following changes are included: - RTC: Predefined retry schedules for disconnect dialog, make more lenient (WordPress/gutenberg#76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (WordPress/gutenberg#76989) - Cover block: fix embed video background Error 153 in editor (WordPress/gutenberg#76904) - Restore original template registration tests alongside activation variants (WordPress/gutenberg#77068) - Avoid stale values in core/cover block for RTC compatibility (WordPress/gutenberg#76916) - Bump oras-project/setup-oras (WordPress/gutenberg#77096) (WordPress/gutenberg#77110) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (WordPress/gutenberg#76853) - contentOnly template lock: Fix block insertion and removal rules (WordPress/gutenberg#77119) - Global Styles Revisions: Fix footer overflow (WordPress/gutenberg#77103) - Revision: Fix 'Show changes' button reset state (WordPress/gutenberg#77122) - Link picker: Decode HTML entities in link preview title (WordPress/gutenberg#77170) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (WordPress/gutenberg#77116) - Connectors: Replace speak() with notice store for state changes (WordPress/gutenberg#77174) - Core Data: Fix 'useEntityProp' for raw attributes (WordPress/gutenberg#77120) - Fix PatternsActions prop name from postType to type (WordPress/gutenberg#77251) - Fix: restore editor canvas padding in classic themes (WordPress/gutenberg#76864) - RTC: Add filterable flag for meta box RTC compatibility (WordPress/gutenberg#76939) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (WordPress/gutenberg#77025) (WordPress/gutenberg#77325) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (WordPress/gutenberg#77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (WordPress/gutenberg#77336) - Test: Connectors Point to the righ page. (WordPress/gutenberg#77272) - Post Editor: Store metaboxes RTC-compatible flag on location entries (WordPress/gutenberg#77361) - Core Abilities: Export initialization promise as `ready` (WordPress/gutenberg#77254) - Block Editor: Strip per-block custom CSS on save for users without edit_css (WordPress/gutenberg#76650) - Add heading level 1 for the fonts page (WordPress/gutenberg#77482) - Connectors: Treat network-active plugins as active in plugin status check (WordPress/gutenberg#77661) - RTC: Fix disconnect dialog due to uneditable entity (WordPress/gutenberg#77242) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (WordPress/gutenberg#77631) - RTC: Fix "Edit as HTML" content reset during collaboration (WordPress/gutenberg#77043) - RTC: Add optional `shouldSync` function to entity sync config (WordPress/gutenberg#76947) - RTC: Fixed orphaned meta causing dirty editor state (WordPress/gutenberg#77529) - Ensure "Retry" button is stable during retries (WordPress/gutenberg#77234) - Patterns: add confirmation dialog before disconnecting/detaching (WordPress/gutenberg#75713) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (WordPress/gutenberg#77581) - Remove sandbox `allow-same-origin` for core/html blocks (Merge WordPress/gutenberg#77212 to `wp/7.0`) (WordPress/gutenberg#77699) - Added Context for Next/Prev Enlarge Image (WordPress/gutenberg#76967) - Backport: Writing Flow: fix arrow keys skipping paragraph containing link (WordPress/gutenberg#77478) - Revisions: Improve screen reader accessibility for diff markers region and slider (WordPress/gutenberg#77660) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (WordPress/gutenberg#77689) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (WordPress/gutenberg#77638) - RTC: Fix inline inserter reset on update sync (WordPress/gutenberg#76980) (WordPress/gutenberg#77706) - Connectors: keep focus on action Button during install (WordPress/gutenberg#77544) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Core Data: Treat single-item responses specially (WordPress/gutenberg#76318) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - i18n: add context to scale (WordPress/gutenberg#76917) - Revisions: Simplify fetching (WordPress/gutenberg#77086) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) (WordPress/gutenberg#78070) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Real-time collaboration: Bundle @wordpress/sync instead of exposing as wp.sync (WordPress/gutenberg#78085) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/e2970ba736edb99e08fb369d4fb0c378189468ee…c15cef1d6b07f666df28dac0383bafb0edfe0914. Log created with: git log --reverse --format="- %s" e2970ba736edb99e08fb369d4fb0c378189468ee..c15cef1d6b07f666df28dac0383bafb0edfe0914 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy See #64595. git-svn-id: https://develop.svn.wordpress.org/trunk@62333 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned hash from the `gutenberg` from `e2970ba736edb99e08fb369d4fb0c378189468ee ` to `c15cef1d6b07f666df28dac0383bafb0edfe0914`. The following changes are included: - RTC: Predefined retry schedules for disconnect dialog, make more lenient (WordPress/gutenberg#76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (WordPress/gutenberg#76989) - Cover block: fix embed video background Error 153 in editor (WordPress/gutenberg#76904) - Restore original template registration tests alongside activation variants (WordPress/gutenberg#77068) - Avoid stale values in core/cover block for RTC compatibility (WordPress/gutenberg#76916) - Bump oras-project/setup-oras (WordPress/gutenberg#77096) (WordPress/gutenberg#77110) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (WordPress/gutenberg#76853) - contentOnly template lock: Fix block insertion and removal rules (WordPress/gutenberg#77119) - Global Styles Revisions: Fix footer overflow (WordPress/gutenberg#77103) - Revision: Fix 'Show changes' button reset state (WordPress/gutenberg#77122) - Link picker: Decode HTML entities in link preview title (WordPress/gutenberg#77170) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (WordPress/gutenberg#77116) - Connectors: Replace speak() with notice store for state changes (WordPress/gutenberg#77174) - Core Data: Fix 'useEntityProp' for raw attributes (WordPress/gutenberg#77120) - Fix PatternsActions prop name from postType to type (WordPress/gutenberg#77251) - Fix: restore editor canvas padding in classic themes (WordPress/gutenberg#76864) - RTC: Add filterable flag for meta box RTC compatibility (WordPress/gutenberg#76939) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (WordPress/gutenberg#77025) (WordPress/gutenberg#77325) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (WordPress/gutenberg#77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (WordPress/gutenberg#77336) - Test: Connectors Point to the righ page. (WordPress/gutenberg#77272) - Post Editor: Store metaboxes RTC-compatible flag on location entries (WordPress/gutenberg#77361) - Core Abilities: Export initialization promise as `ready` (WordPress/gutenberg#77254) - Block Editor: Strip per-block custom CSS on save for users without edit_css (WordPress/gutenberg#76650) - Add heading level 1 for the fonts page (WordPress/gutenberg#77482) - Connectors: Treat network-active plugins as active in plugin status check (WordPress/gutenberg#77661) - RTC: Fix disconnect dialog due to uneditable entity (WordPress/gutenberg#77242) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (WordPress/gutenberg#77631) - RTC: Fix "Edit as HTML" content reset during collaboration (WordPress/gutenberg#77043) - RTC: Add optional `shouldSync` function to entity sync config (WordPress/gutenberg#76947) - RTC: Fixed orphaned meta causing dirty editor state (WordPress/gutenberg#77529) - Ensure "Retry" button is stable during retries (WordPress/gutenberg#77234) - Patterns: add confirmation dialog before disconnecting/detaching (WordPress/gutenberg#75713) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (WordPress/gutenberg#77581) - Remove sandbox `allow-same-origin` for core/html blocks (Merge WordPress/gutenberg#77212 to `wp/7.0`) (WordPress/gutenberg#77699) - Added Context for Next/Prev Enlarge Image (WordPress/gutenberg#76967) - Backport: Writing Flow: fix arrow keys skipping paragraph containing link (WordPress/gutenberg#77478) - Revisions: Improve screen reader accessibility for diff markers region and slider (WordPress/gutenberg#77660) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (WordPress/gutenberg#77689) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (WordPress/gutenberg#77638) - RTC: Fix inline inserter reset on update sync (WordPress/gutenberg#76980) (WordPress/gutenberg#77706) - Connectors: keep focus on action Button during install (WordPress/gutenberg#77544) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Core Data: Treat single-item responses specially (WordPress/gutenberg#76318) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - i18n: add context to scale (WordPress/gutenberg#76917) - Revisions: Simplify fetching (WordPress/gutenberg#77086) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) (WordPress/gutenberg#78070) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Real-time collaboration: Bundle @wordpress/sync instead of exposing as wp.sync (WordPress/gutenberg#78085) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/e2970ba736edb99e08fb369d4fb0c378189468ee…c15cef1d6b07f666df28dac0383bafb0edfe0914. Log created with: git log --reverse --format="- %s" e2970ba736edb99e08fb369d4fb0c378189468ee..c15cef1d6b07f666df28dac0383bafb0edfe0914 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy See #64595. Built from https://develop.svn.wordpress.org/trunk@62333 git-svn-id: http://core.svn.wordpress.org/trunk@61614 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This updates the pinned hash from the `gutenberg` from `e2970ba736edb99e08fb369d4fb0c378189468ee ` to `c15cef1d6b07f666df28dac0383bafb0edfe0914`. The following changes are included: - RTC: Predefined retry schedules for disconnect dialog, make more lenient (WordPress/gutenberg#76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (WordPress/gutenberg#76989) - Cover block: fix embed video background Error 153 in editor (WordPress/gutenberg#76904) - Restore original template registration tests alongside activation variants (WordPress/gutenberg#77068) - Avoid stale values in core/cover block for RTC compatibility (WordPress/gutenberg#76916) - Bump oras-project/setup-oras (WordPress/gutenberg#77096) (WordPress/gutenberg#77110) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (WordPress/gutenberg#76853) - contentOnly template lock: Fix block insertion and removal rules (WordPress/gutenberg#77119) - Global Styles Revisions: Fix footer overflow (WordPress/gutenberg#77103) - Revision: Fix 'Show changes' button reset state (WordPress/gutenberg#77122) - Link picker: Decode HTML entities in link preview title (WordPress/gutenberg#77170) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (WordPress/gutenberg#77116) - Connectors: Replace speak() with notice store for state changes (WordPress/gutenberg#77174) - Core Data: Fix 'useEntityProp' for raw attributes (WordPress/gutenberg#77120) - Fix PatternsActions prop name from postType to type (WordPress/gutenberg#77251) - Fix: restore editor canvas padding in classic themes (WordPress/gutenberg#76864) - RTC: Add filterable flag for meta box RTC compatibility (WordPress/gutenberg#76939) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (WordPress/gutenberg#77025) (WordPress/gutenberg#77325) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (WordPress/gutenberg#77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (WordPress/gutenberg#77336) - Test: Connectors Point to the righ page. (WordPress/gutenberg#77272) - Post Editor: Store metaboxes RTC-compatible flag on location entries (WordPress/gutenberg#77361) - Core Abilities: Export initialization promise as `ready` (WordPress/gutenberg#77254) - Block Editor: Strip per-block custom CSS on save for users without edit_css (WordPress/gutenberg#76650) - Add heading level 1 for the fonts page (WordPress/gutenberg#77482) - Connectors: Treat network-active plugins as active in plugin status check (WordPress/gutenberg#77661) - RTC: Fix disconnect dialog due to uneditable entity (WordPress/gutenberg#77242) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (WordPress/gutenberg#77631) - RTC: Fix "Edit as HTML" content reset during collaboration (WordPress/gutenberg#77043) - RTC: Add optional `shouldSync` function to entity sync config (WordPress/gutenberg#76947) - RTC: Fixed orphaned meta causing dirty editor state (WordPress/gutenberg#77529) - Ensure "Retry" button is stable during retries (WordPress/gutenberg#77234) - Patterns: add confirmation dialog before disconnecting/detaching (WordPress/gutenberg#75713) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (WordPress/gutenberg#77581) - Remove sandbox `allow-same-origin` for core/html blocks (Merge WordPress/gutenberg#77212 to `wp/7.0`) (WordPress/gutenberg#77699) - Added Context for Next/Prev Enlarge Image (WordPress/gutenberg#76967) - Backport: Writing Flow: fix arrow keys skipping paragraph containing link (WordPress/gutenberg#77478) - Revisions: Improve screen reader accessibility for diff markers region and slider (WordPress/gutenberg#77660) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (WordPress/gutenberg#77689) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (WordPress/gutenberg#77638) - RTC: Fix inline inserter reset on update sync (WordPress/gutenberg#76980) (WordPress/gutenberg#77706) - Connectors: keep focus on action Button during install (WordPress/gutenberg#77544) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Core Data: Treat single-item responses specially (WordPress/gutenberg#76318) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - i18n: add context to scale (WordPress/gutenberg#76917) - Revisions: Simplify fetching (WordPress/gutenberg#77086) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) (WordPress/gutenberg#78070) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Real-time collaboration: Bundle @wordpress/sync instead of exposing as wp.sync (WordPress/gutenberg#78085) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/e2970ba736edb99e08fb369d4fb0c378189468ee…c15cef1d6b07f666df28dac0383bafb0edfe0914. Log created with: git log --reverse --format="- %s" e2970ba736edb99e08fb369d4fb0c378189468ee..c15cef1d6b07f666df28dac0383bafb0edfe0914 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy Reviewed by desrosj. Merges [62333] to the 7.0 branch. Props ellatrix, desrosj. See #64595. git-svn-id: https://develop.svn.wordpress.org/branches/7.0@62335 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned hash from the `gutenberg` from `e2970ba736edb99e08fb369d4fb0c378189468ee ` to `c15cef1d6b07f666df28dac0383bafb0edfe0914`. The following changes are included: - RTC: Predefined retry schedules for disconnect dialog, make more lenient (WordPress/gutenberg#76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (WordPress/gutenberg#76989) - Cover block: fix embed video background Error 153 in editor (WordPress/gutenberg#76904) - Restore original template registration tests alongside activation variants (WordPress/gutenberg#77068) - Avoid stale values in core/cover block for RTC compatibility (WordPress/gutenberg#76916) - Bump oras-project/setup-oras (WordPress/gutenberg#77096) (WordPress/gutenberg#77110) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (WordPress/gutenberg#76853) - contentOnly template lock: Fix block insertion and removal rules (WordPress/gutenberg#77119) - Global Styles Revisions: Fix footer overflow (WordPress/gutenberg#77103) - Revision: Fix 'Show changes' button reset state (WordPress/gutenberg#77122) - Link picker: Decode HTML entities in link preview title (WordPress/gutenberg#77170) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (WordPress/gutenberg#77116) - Connectors: Replace speak() with notice store for state changes (WordPress/gutenberg#77174) - Core Data: Fix 'useEntityProp' for raw attributes (WordPress/gutenberg#77120) - Fix PatternsActions prop name from postType to type (WordPress/gutenberg#77251) - Fix: restore editor canvas padding in classic themes (WordPress/gutenberg#76864) - RTC: Add filterable flag for meta box RTC compatibility (WordPress/gutenberg#76939) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (WordPress/gutenberg#77025) (WordPress/gutenberg#77325) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (WordPress/gutenberg#77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (WordPress/gutenberg#77336) - Test: Connectors Point to the righ page. (WordPress/gutenberg#77272) - Post Editor: Store metaboxes RTC-compatible flag on location entries (WordPress/gutenberg#77361) - Core Abilities: Export initialization promise as `ready` (WordPress/gutenberg#77254) - Block Editor: Strip per-block custom CSS on save for users without edit_css (WordPress/gutenberg#76650) - Add heading level 1 for the fonts page (WordPress/gutenberg#77482) - Connectors: Treat network-active plugins as active in plugin status check (WordPress/gutenberg#77661) - RTC: Fix disconnect dialog due to uneditable entity (WordPress/gutenberg#77242) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (WordPress/gutenberg#77631) - RTC: Fix "Edit as HTML" content reset during collaboration (WordPress/gutenberg#77043) - RTC: Add optional `shouldSync` function to entity sync config (WordPress/gutenberg#76947) - RTC: Fixed orphaned meta causing dirty editor state (WordPress/gutenberg#77529) - Ensure "Retry" button is stable during retries (WordPress/gutenberg#77234) - Patterns: add confirmation dialog before disconnecting/detaching (WordPress/gutenberg#75713) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (WordPress/gutenberg#77581) - Remove sandbox `allow-same-origin` for core/html blocks (Merge WordPress/gutenberg#77212 to `wp/7.0`) (WordPress/gutenberg#77699) - Added Context for Next/Prev Enlarge Image (WordPress/gutenberg#76967) - Backport: Writing Flow: fix arrow keys skipping paragraph containing link (WordPress/gutenberg#77478) - Revisions: Improve screen reader accessibility for diff markers region and slider (WordPress/gutenberg#77660) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (WordPress/gutenberg#77689) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (WordPress/gutenberg#77638) - RTC: Fix inline inserter reset on update sync (WordPress/gutenberg#76980) (WordPress/gutenberg#77706) - Connectors: keep focus on action Button during install (WordPress/gutenberg#77544) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Core Data: Treat single-item responses specially (WordPress/gutenberg#76318) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - i18n: add context to scale (WordPress/gutenberg#76917) - Revisions: Simplify fetching (WordPress/gutenberg#77086) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) (WordPress/gutenberg#78070) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Real-time collaboration: Bundle @wordpress/sync instead of exposing as wp.sync (WordPress/gutenberg#78085) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/e2970ba736edb99e08fb369d4fb0c378189468ee…c15cef1d6b07f666df28dac0383bafb0edfe0914. Log created with: git log --reverse --format="- %s" e2970ba736edb99e08fb369d4fb0c378189468ee..c15cef1d6b07f666df28dac0383bafb0edfe0914 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy Reviewed by desrosj. Merges [62333] to the 7.0 branch. Props ellatrix, desrosj. See #64595. Built from https://develop.svn.wordpress.org/branches/7.0@62335 git-svn-id: http://core.svn.wordpress.org/branches/7.0@61616 1a063a9b-81f0-0310-95a4-ce76da25c4cd
* RTC: Fix find_canonical_storage_post_id() always returning null get_posts() with 'fields' => 'ids' returns an array of IDs, so the previous is_numeric( $post_id ) check was always false. As a result, find_canonical_storage_post_id() always returned null and the storage layer kept promoting the suffixed post to the canonical slug, leaving two posts sharing the same slug. This caused test_first_access_race_does_not_split_room_storage to fail on WordPress 6.8/6.9 where the Gutenberg shim is active (WP 7.0+ skips the test because core ships its own class). Read the first element from the result array and return it as the canonical post ID instead. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * CI: Temporarily run previous-major WP PHP tests on pull_request The race-condition regression test for WP_Sync_Post_Meta_Storage only runs against the Gutenberg shim, which is bypassed on the latest WP. PRs normally exclude the previous-major WP job, so the fix cannot be verified by CI on a PR. Comment out that exclude with a TODO to revert before merging. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Revert "CI: Temporarily run previous-major WP PHP tests on pull_request" CI confirmed the fix on the previous WP major. Restore the original pull_request exclude. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Backport changelog: Add PR 78053 to 7.0/11660 entry The find_canonical_storage_post_id() fix needs to ride along with the existing 11660 backport so Core gets the corrected race-resolution logic in one piece. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: Mamaduka <mamaduka@git.wordpress.org>
Follow up to #77675
What?
Fix
WP_Sync_Post_Meta_Storage::find_canonical_storage_post_id()always returningnull.Why?
The function calls
get_posts( ..., 'fields' => 'ids' )which returns an array of IDs, but checkedis_numeric( $post_id ). That check is alwaysfalsefor an array, so the function always returnednull.This issue surfaced when it was merged into trunk. The problem went unnoticed because the PR only runs unit tests on the latest WordPress version. This is because the latest version of WordPress skips these unit tests.
Testing Instructions
In this PR, I will intentionally run unit tests with an older WP version. Once I confirm that the tests do not fail, I will remove the temporary code.
Use of AI Tools
AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 4.7
Used for: Root-cause analysis and the fix. Reviewed and validated by me.