Investigate Push Publishing failure when pushing a page with built-in starter template to a clean receiver instance
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 970
- Forks
- 486
- Avg merge
- 3d 33m
- Merged PRs (30d)
- 170
Description
Research Question
Why does push publishing fail when sending a page with a built-in starter template (Default or Advanced) to a clean receiver instance (no starter loaded), and what causes the sender page's live content to be wiped after a failed push followed by a successful retry?
Visual summary
https://github.com/user-attachments/assets/f5cf7dbc-3130-4dfa-ac82-61f0197269a0
https://github.com/user-attachments/assets/fa99a7d2-5e01-4eb8-837a-27c7709291c7
Timebox
8h
Acceptance Criteria
- Document the root cause of the push publishing failure: why a page with a built-in starter template (Default/Advanced) fails to push to a clean receiver with error "Field with id not found in Video content type"
- Identify which code path in
PushPublisher/PublisherAPIImplprocesses content type field validation during a template push, and where the field-not-found check occurs - Document why the sender page's live content is wiped ("Nothing Live here yet") after a failed push attempt followed by a successful retry — identify whether this is a rollback mechanism, a publish state machine bug, or another cause
- Determine whether the retry "success" represents a genuinely correct state on the receiver, or a false positive (partially published content)
- Provide a recommendation: should push publishing handle missing built-in content type fields gracefully (skip/warn and continue), or is this a required receiver setup/starter dependency? Include pros/cons.
Context
When pushing a page with a built-in starter template (Default or Advanced) from a sender instance (loaded with starter-20260430.zip) to a clean receiver instance (no starter loaded), push publishing fails on the first attempt.
Environments:
- Sender: dotCMS instance with
CUSTOM_STARTER_URL: starter-20260430.zip - Receiver: Clean dotCMS instance — no starter loaded
Observed behavior:
-
First push attempt —
FAILED_TO_SEND_TO_ALL_GROUPS
The publishing queue UI shows:"Failed to publish because an error occurred: An error occurred when processing Content Type in 'Video' with ID 'c77450b834901a20c8193ef9d561ee5b': Field with id:d6cc889c37b3e0d7fd5c9dae31e558b7 not found"
-
Retry (second attempt) — reports success
However, after the retry, the page on the sender shows "Nothing Live here yet" — the live version of the page has been wiped. -
Custom templates — unaffected
Pages pushed with custom (user-created) templates work correctly end-to-end. The issue is isolated to built-in starter templates (Default, Advanced).
Relevant log entries (sender):
[INFO] PushPublisher: Status Update: Sending to all environments
[INFO] PushPublisher: Status Update: Bundle sent
[INFO] PublisherAPIImpl: [BundleID: 01KS0CTRMNT55QEHV0P7RDN6DW] Completed Publishing Task
[INFO] PublisherQueueJob: -> Status: FAILED_TO_SEND_TO_ALL_GROUPS [4]
[INFO] PublisherQueueJob: -> Re-publish attempts: 1 out of 3
[INFO] PublisherQueueJob: -> NOTE: Bundle ID '01KS0CTRMNT55QEHV0P7RDN6DW' is stalled and its Audit History will NOT be updated properly.
Key classes to investigate:
com.dotcms.publisher.pusher.PushPublishercom.dotcms.publishing.PublisherAPIImplcom.dotmarketing.business.PublisherQueueJob
Links
- Push Publisher:
dotCMS/src/main/java/com/dotcms/publisher/pusher/PushPublisher.java - Publisher Queue Job:
dotCMS/src/main/java/com/dotmarketing/business/PublisherQueueJob.java
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with dotCMS/src/main/java/com/dotcms/publisher/pusher/PushPublisher.java and trace the template push into PublisherAPIImpl, then inspect the field-not-found validation path for Content Type processing. Review dotCMS/src/main/java/com/dotmarketing/business/PublisherQueueJob.java alongside the supplied logs to follow retry and publish-state handling. Done means documenting the failure, sender-content wipe, retry correctness, and a recommendation about missing built-in fields.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100