Wei Zhong created FLINK-39017:
---------------------------------

             Summary: Flink WebUI Job graph node click interaction fails in 
Chrome 144+ (PointerEvents suppression)
                 Key: FLINK-39017
                 URL: https://issues.apache.org/jira/browse/FLINK-39017
             Project: Flink
          Issue Type: Bug
          Components: Runtime / Web Frontend
    Affects Versions: 1.20.3, 2.3.0
            Reporter: Wei Zhong


*Environment:*
 * *Browsers:* Chrome 144.0.x (and newer), Edge (Chromium based 144+)

 * *Flink Versions:* All versions (verified in 1.15 through master branch)

 * *Context:* Job Graph / Plan Visualization page.

*Steps to Reproduce:*
 # Open Flink WebUI in Chrome 144+.

 # Navigate to a running or completed job.

 # Click on any node in the execution graph to view node details.

*Actual Result:*

The node details panel does not pop up. No {{click}} event is fired on the 
{{.node-group}} element, even though the mouse is physically clicked.

*Expected Result:*

The details panel should be displayed as in previous browser versions.

*Technical Analysis:*

Our investigation shows that the issue stems from changes in Chrome's 
hit-testing and gesture recognition logic.
 * The {{pointerdown}} and {{pointerup}} events fire correctly on the node.

 * However, the {{click}} event is suppressed by the browser. This is likely 
because the high-precision coordinate calculations in the new Chrome engine 
perceive the micro-movements (common in high-scale SVG transforms like Flink's 
{{scale(999999)}} overlay) as a "Drag" rather than a "Click".

 * Manually dispatching a click event via Console ({{{}$0.dispatchEvent(new 
MouseEvent('click', ...)){}}}) successfully triggers the UI logic.

*Workaround (Console Fix):*

The following script manually re-dispatches the missing {{click}} event when a 
{{pointerup}} is detected on a node group:
 
(function() \{
    document.addEventListener('pointerup', (e) => {
        const node = e.target.closest('.node-group');
        if (node) {
            setTimeout(() => {
                node.dispatchEvent(new MouseEvent('click', {
                    view: window,
                    bubbles: true,
                    cancelable: true
                }));
            }, 50);
        }
    }, true);
})();
*Notes:*
{quote}I am not a frontend expert. The technical analysis and workaround above 
were conducted with the assistance of Gemini AI and have been verified through 
my local debugging and testing.

This issue was identified following a mandatory company-wide Chrome update 
pushed last week. Starting this week, we have received numerous user reports.
{quote}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to