dotCMS / dotCMS/core

Investigate Push Publishing failure when pushing a page with built-in starter template to a clean receiver instance

Open
#35,746 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

dotCMS : Push Publishing stale Team : Scout Type : Spike
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/PublisherAPIImpl processes 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:

  1. 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"

  2. 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.

  3. 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.PushPublisher
  • com.dotcms.publishing.PublisherAPIImpl
  • com.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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.