andygrove opened a new issue, #6062:
URL: https://github.com/apache/datafusion-comet/issues/6062

   ### Describe the bug
   
   None of the three mermaid diagrams on the published site render. They are 
not blank or broken images — they are absent from the HTML entirely.
   
   This is a different cause from #6020, which was the client-side renderer 
being blocked by the ASF Content-Security-Policy. #6021 fixed that by switching 
to build-time SVG (`mermaid_output_format = 'svg'`), and in doing so replaced 
one silent failure with another.
   
   ### Steps to reproduce
   
   Fetch the deployed pages from the `asf-site` branch and look for any diagram:
   
   ```
   $ gh api 
"repos/apache/datafusion-comet/contents/contributor-guide/memory_management.html?ref=asf-site"
 \
       --jq .content | base64 -d | grep -c 'svg\|mermaid\|<object'
   0
   $ gh api 
"repos/apache/datafusion-comet/contents/contributor-guide/ci.html?ref=asf-site" 
\
       --jq .content | base64 -d | grep -c 'svg\|mermaid\|<object'
   0
   $ gh api "repos/apache/datafusion-comet/git/trees/asf-site?recursive=1" \
       --jq '[.tree[].path | select(test("mermaid"))] | length'
   0
   ```
   
   On `contributor-guide/memory_management.html` the text runs straight from
   `…who ends up charged for the bytes:</p>` into the next `<section>` heading.
   
   The hand-authored SVGs (`shim_pattern.svg`, `query_context_journey.svg`, 
`error_pipeline_overview.svg`) are all present, so this is specific to the 
mermaid pipeline.
   
   ### Expected behavior
   
   The two diagrams in `docs/source/contributor-guide/memory_management.md` and 
the one in `docs/source/contributor-guide/ci.md` render on the published pages.
   
   ### Additional context
   
   **What is happening.** `sphinxcontrib-mermaid` downgrades a render failure 
to a Sphinx warning and drops the node. The build stays green, the deploy runs, 
and the pages publish with a diagram-shaped hole. `docs/README.md` and the 
comment on the `Install mermaid-cli` step in `.github/workflows/docs.yaml` both 
already warn that this is the failure mode; nothing enforces it.
   
   The publish commit for #6021 (`b9ea47c16`) shows it exactly: it removed the 
`<pre class="mermaid">` blocks and the jsdelivr script import from both pages 
and added nothing in their place — no `<object>`, and no 
`_images/mermaid-*.svg` anywhere in the tree.
   
   So `mmdc` is not producing output in the docs job, even though the job is 
green and `Install mermaid-cli` succeeds (21s in the run for `d1bf687eb`).
   
   **Why it was not caught.** #6021 was verified locally on macOS, where it 
produced 2 and 1 `<object>` embeds on those two pages. The docs job only runs 
on push to main (`ci.yml`, `docs` is push-tier by POLICY), so no docs build ran 
on the pull request, and once on main the failure is silent by construction.
   
   **Likely cause.** `mmdc` drives headless Chrome through puppeteer. Ubuntu 
restricts unprivileged user namespaces by AppArmor policy from 23.10 onwards, 
so Chrome's setuid sandbox cannot start on an `ubuntu-24.04` runner and `mmdc` 
exits non-zero — the canonical "renders locally, dies in CI" shape for 
mermaid-cli. The alternative is puppeteer's Chrome not being where `mmdc` looks 
after a global install. Either way `sphinxcontrib-mermaid` swallows it, and the 
job log is the only place the difference shows.
   
   ### Proposed fix
   
   1. Pass `mmdc` a puppeteer config with `--no-sandbox` (the CI container is 
already the isolation boundary).
   2. Make the failure loud: render every ` ```mermaid ` fence in preflight so 
it fails on the pull request, and assert after the build that every fence 
produced a non-empty SVG that some page references, before the publish step 
runs.
   
   ### Component(s)
   
   Documentation
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to