Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-75329

Deprecation warning message for findAncestor() slows down configuration page - hudson-behavior.js:443 Deprecated call to findAncestor - use standard javascript method `e.closest(tagName)` instead

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • matrix-auth-plugin
    • None
    • matrix-auth-3.2.5

      There's a console.warn() message now being logged by hudson-behavior.js for findAncestor() calls being deprecated, and we're getting thousands for warnings, that's causing some performance issue with configuration pages for Jenkins job.

      The calls appears to be mostly from this plugin (table.js).

      We can only type a handful of letters at a time most of the time, then we're having to wait 10-15 seconds for the focus to return.

       

      This is happening with both Chrome and Safari on MacOS Sonoma 14.7.4.

      The Chrome version: Version 133.0.6943.127 (Official Build) (arm64)

      The Safari version: Version 18.3 (19620.2.4.111.8, 19620)

      From Developer Tools:

      The console.war from hudson-behavior.js:

       

      // @deprecated Use standard javascript method `e.closest(tagName)` instead
      // eslint-disable-next-line no-unused-vars
      function findAncestor(e, tagName) {
        console.warn(
          "Deprecated call to findAncestor - use standard javascript method `e.closest(tagName)` instead",
        );
        return e.closest(tagName);
      }
      // @deprecated Use standard javascript method `e.closest(className)` instead
      // eslint-disable-next-line no-unused-vars
      function findAncestorClass(e, cssClass) {
        console.warn(
          "Deprecated call to findAncestorClass - use standard javascript method `e.closest(className)` instead",
        );
        return e.closest("." + cssClass);
      }
      

      and the findAncestor() calls in table.js:

       

        var impliedByString = findAncestor(e, "TD").getAttribute('data-implied-by-list');
        var impliedByList = impliedByString.split(" ");
        var tr = findAncestor(e,"TR");
        e.disabled = false;
        let tooltip = YAHOO.lang.escapeHTML(findAncestor(e, "TD").getAttribute('data-tooltip-enabled'));
        e.setAttribute(tooltipAttributeName, tooltip); // before 2.335 -- TODO remove once baseline is new enough
        e.nextSibling.setAttribute(tooltipAttributeName, tooltip); // 2.335+

       

      It'd be great to know if there's a workaround for say lowering the log level temporarily so console.warn() doesn't log anything until there's a fix for this.

            mawinter69 Markus Winter
            lmic Larry
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: