Skip to content

Add a method isConnected to IComputer and provide implementation in Computer#10607

Merged
timja merged 24 commits intojenkinsci:masterfrom
gbhat618:add-a-isconnected-method
Aug 15, 2025
Merged

Add a method isConnected to IComputer and provide implementation in Computer#10607
timja merged 24 commits intojenkinsci:masterfrom
gbhat618:add-a-isconnected-method

Conversation

@gbhat618
Copy link
Contributor

@gbhat618 gbhat618 commented Apr 28, 2025

Adds a new method, isConnected, to indicate whether an agent is actually connected to the controller.
Currently, isOnline returns false when an agent is:

  • either, Temporarily offline but still connected
  • or, Actually disconnected.

The Javadoc for isOnline and isOffline has also been updated to clearly point out this behavior.

Background
At CloudBees, we use isOnline and isOffline to determine if an agent is connected to the controller. However, to distinguish between a temporarily offline agent and a disconnected one, we often needed to add explicit checks like Computer#getChannel() != null.
Introducing isConnected simplifies this logic and makes it easier to understand the behavior of isOnline and isOffline, especially with the @see reference in their Javadoc.

Testing done

Automated test

Proposed changelog entries

NA

Proposed changelog category

/label skip-changelog

Proposed upgrade guidelines

N/A

Submitter checklist

  • The Jira issue, if it exists, is well-described.
  • The changelog entries and upgrade guidelines are appropriate for the audience affected by the change (users or developers, depending on the change) and are in the imperative mood (see examples). Fill in the Proposed upgrade guidelines section only if there are breaking changes or changes that may require extra steps from users during upgrade.
  • There is automated testing or an explanation as to why this change has no tests.
  • New public classes, fields, and methods are annotated with @Restricted or have @since TODO Javadocs, as appropriate.
  • New deprecations are annotated with @Deprecated(since = "TODO") or @Deprecated(forRemoval = true, since = "TODO"), if applicable.
  • New or substantially changed JavaScript is not defined inline and does not call eval to ease future introduction of Content Security Policy (CSP) directives (see documentation).
  • For dependency updates, there are links to external changelogs and, if possible, full differentials.
  • For new APIs and extension points, there is a link to at least one consumer.

Desired reviewers

Before the changes are marked as ready-for-merge:

Maintainer checklist

  • There are at least two (2) approvals for the pull request and no outstanding requests for change.
  • Conversations in the pull request are over, or it is explicit that a reviewer is not blocking the change.
  • Changelog entries in the pull request title and/or Proposed changelog entries are accurate, human-readable, and in the imperative mood.
  • Proper changelog labels are set so that the changelog can be generated automatically.
  • If the change needs additional upgrade steps from users, the upgrade-guide-needed label is set and there is a Proposed upgrade guidelines section in the pull request title (see example).
  • If it would make sense to backport the change to LTS, a Jira issue must exist, be a Bug or Improvement, and be labeled as lts-candidate to be considered (see query).

@comment-ops-bot comment-ops-bot bot added the skip-changelog Should not be shown in the changelog label Apr 28, 2025
@gbhat618 gbhat618 marked this pull request as ready for review April 29, 2025 03:37
Copy link

@A1exKH A1exKH left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@gbhat618
Copy link
Contributor Author

gbhat618 commented Apr 29, 2025

(actually I need to move this to draft - so to provide a default implementation thus not breaking any class that implements IComputer)

Edit: fixed now.

@gbhat618 gbhat618 marked this pull request as draft April 29, 2025 15:24
@gbhat618 gbhat618 marked this pull request as ready for review April 29, 2025 15:34
@gbhat618
Copy link
Contributor Author

Flakes are affecting the build,

  • in previous build, hudson.cli.ComputerStateTest#disconnect failed with

    error
    java.lang.ClassCastException: class hudson.slaves.OfflineCause$ChannelTermination cannot be cast to class hudson.slaves.OfflineCause$UserCause (hudson.slaves.OfflineCause$ChannelTermination and hudson.slaves.OfflineCause$UserCause are in unnamed module of loader 'app')
        at hudson.cli.ComputerStateTest.disconnect(ComputerStateTest.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.jvnet.hudson.test.JenkinsRule$1.evaluate(JenkinsRule.java:648)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at java.base/java.lang.Thread.run(Thread.java:1583)
    
  • now, hudson.model.ProjectTest#testUnrestrictedJobNoLabelByCloudNoQueue

    error
    java.lang.NullPointerException: Cannot invoke "org.htmlunit.html.DomElement.getHtmlElementDescendants()" because "doc" is null
        at org.htmlunit.html.HtmlPage.executeDeferredScriptsIfNeeded(HtmlPage.java:1458)
        at org.htmlunit.html.HtmlPage.initialize(HtmlPage.java:263)
        at org.htmlunit.WebClient.loadWebResponseInto(WebClient.java:701)
        at org.htmlunit.WebClient.loadWebResponseInto(WebClient.java:575)
        at org.htmlunit.WebClient.getPage(WebClient.java:493)
        at org.htmlunit.WebClient.getPage(WebClient.java:402)
        at org.htmlunit.WebClient.getPage(WebClient.java:538)
        at org.htmlunit.WebClient.getPage(WebClient.java:520)
        at org.jvnet.hudson.test.JenkinsRule$WebClient.getPage(JenkinsRule.java:2632)
        at org.jvnet.hudson.test.JenkinsRule.after(JenkinsRule.java:508)
        at org.jvnet.hudson.test.JenkinsRule$1.evaluate(JenkinsRule.java:666)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at java.base/java.lang.Thread.run(Thread.java:1583)
    

I will check these flakes later, for now keeping the PR as it is without re-triggering another CI build

@gbhat618
Copy link
Contributor Author

gbhat618 commented May 8, 2025

I think we can add a @Retry(2) annotation after verifying if a test cannot be de-flake ed. Enforcing retry at global level would make it hard to detect and de-flake such tests. I have already seen Retry implementation and usage in some jenkins plugins, will try to propose a PR.

Edit: PR is passing, so leaving it at here for this PR.

@gbhat618
Copy link
Contributor Author

gbhat618 commented Jun 23, 2025

some kind of compilation error (?)

log
07:30:16  [INFO] Tests for Jenkins core ............................. FAILURE [ 14.721 s]
07:30:16  [INFO] Jenkins coverage ................................... SKIPPED
07:30:16  [INFO] ------------------------------------------------------------------------
07:30:16  [INFO] BUILD FAILURE
07:30:16  [INFO] ------------------------------------------------------------------------
07:30:16  [INFO] Total time:  07:04 min
07:30:16  [INFO] Finished at: 2025-06-23T07:30:15Z
07:30:16  [INFO] ------------------------------------------------------------------------
07:30:16  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.0:testCompile (default-testCompile) on project jenkins-test: Compilation failure: Compilation failure: 
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[330,41] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[331,44] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[335,91] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[336,44] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[337,42] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[341,90] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[342,100] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[343,42] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[347,41] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[348,44] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[353,102] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[354,44] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] /home/jenkins/agent/workspace/Core_jenkins_PR-10607/test/src/test/java/hudson/model/ComputerTest.java:[355,42] cannot find symbol
07:30:16  [ERROR]   symbol:   method is(boolean)
07:30:16  [ERROR]   location: class hudson.model.ComputerTest
07:30:16  [ERROR] -> [Help 1]
07:30:16  org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.0:testCompile (default-testCompile) on project jenkins-test: Compilation failure
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
07:30:16      at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
07:30:16      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
07:30:16      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
07:30:16      at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
07:30:16      at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
07:30:16      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
07:30:16      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
07:30:16      at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
07:30:16      at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
07:30:16      at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
07:30:16      at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
07:30:16      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
07:30:16      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
07:30:16      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
07:30:16      at java.lang.reflect.Method.invoke (Method.java:569)
07:30:16      at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
07:30:16      at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
07:30:16      at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
07:30:16      at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
07:30:16  Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
07:30:16      at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1309)
07:30:16      at org.apache.maven.plugin.compiler.TestCompilerMojo.execute (TestCompilerMojo.java:208)
07:30:16      at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
07:30:16      at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
07:30:16      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
07:30:16      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
07:30:16      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
07:30:16      at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
07:30:16      at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
07:30:16      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
07:30:16      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
07:30:16      at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
07:30:16      at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
07:30:16      at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
07:30:16      at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
07:30:16      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
07:30:16      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
07:30:16      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
07:30:16      at java.lang.reflect.Method.invoke (Method.java:569)
07:30:16      at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
07:30:16      at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
07:30:16      at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
07:30:16      at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
07:30:16  [ERROR] 
07:30:16  [ERROR] Re-run Maven using the -X switch to enable full debug logging.
07:30:16  [ERROR] 
07:30:16  [ERROR] For more information about the errors and possible solutions, please read the following articles:
07:30:16  [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
07:30:16  [ERROR] 
07:30:16  [ERROR] After correcting the problems, you can resume the build with the command
07:30:16  [ERROR]   mvn <args> -rf :jenkins-test
script returned exit code 1

I shall check in some hours

Edit: should be fixed now - an import org.hamcrest.Matchers.is was removed in prior refactoring, added.

@Vlatombe Vlatombe added developer Changes which impact plugin developers and removed developer Changes which impact plugin developers labels Jul 21, 2025
@Vlatombe Vlatombe requested a review from jglick July 21, 2025 08:16
Copy link
Member

@jglick jglick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code change and test look good. Minor comments about Javadoc.

@gbhat618
Copy link
Contributor Author

Code change and test look good. Minor comments about Javadoc.

Thank you. Fixed the javadocs, thanks for the comments.

@gbhat618
Copy link
Contributor Author

(flake 😢)

@gbhat618
Copy link
Contributor Author

gbhat618 commented Aug 12, 2025

various tests to be fixed 👀

failure list
Script to get failures across all builds https://gist.github.com/gbhat618/69541b0f3e7c26ef086e9abc922b5eb9

✗ python jenkins_test_failures.py --jobUrl https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607 --from=1 --to=25
Scraped 21 builds.
hudson.model.ComputerTest.isConnectedTest
  Build 1: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/1/testReport/hudson.model/ComputerTest/linux_jdk17___Linux___JDK_17___Build___Test___isConnectedTest/
  Build 1: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/1/testReport/hudson.model/ComputerTest/linux_jdk21___Linux___JDK_21___Build___Test___isConnectedTest/
  Build 1: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/1/testReport/hudson.model/ComputerTest/windows_jdk17___Windows___JDK_17___Build___Test___isConnectedTest/
  Build 21: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/21/testReport/hudson.model/ComputerTest/windows_jdk17___Windows___JDK_17___Build___Test___isConnectedTest/
hudson.cli.ComputerStateTest.disconnect
  Build 5: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/5/testReport/hudson.cli/ComputerStateTest/linux_jdk21___Linux___JDK_21___Build___Test___disconnect/
  Build 7: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/7/testReport/hudson.cli/ComputerStateTest/linux_jdk21___Linux___JDK_21___Build___Test___disconnect/
hudson.model.ProjectTest.testUnrestrictedJobNoLabelByCloudNoQueue
  Build 6: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/6/testReport/hudson.model/ProjectTest/linux_jdk21___Linux___JDK_21___Build___Test___testUnrestrictedJobNoLabelByCloudNoQueue/
hudson.widgets.HistoryWidgetTest.displayFilterInput
  Build 12: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/12/testReport/hudson.widgets/HistoryWidgetTest/linux_jdk21___Linux___JDK_21___Build___Test___displayFilterInput/
hudson.cli.ComputerStateTest.testUiForConnected
  Build 17: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/17/testReport/hudson.cli/ComputerStateTest/windows_jdk17___Windows___JDK_17___Build___Test___testUiForConnected/
jenkins.model.JenkinsTest.runScriptOnOfflineComputer
  Build 18: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/18/testReport/jenkins.model/JenkinsTest/windows_jdk17___Windows___JDK_17___Build___Test___runScriptOnOfflineComputer/
  Build 20: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/20/testReport/jenkins.model/JenkinsTest/windows_jdk17___Windows___JDK_17___Build___Test___runScriptOnOfflineComputer/
  Build 22: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/22/testReport/jenkins.model/JenkinsTest/windows_jdk17___Windows___JDK_17___Build___Test___runScriptOnOfflineComputer/
  Build 23: https://ci.jenkins.io/job/Core/job/jenkins/job/PR-10607/23/testReport/jenkins.model/JenkinsTest/windows_jdk17___Windows___JDK_17___Build___Test___runScriptOnOfflineComputer/

@gbhat618
Copy link
Contributor Author

gbhat618 commented Aug 12, 2025

Tried running all the tests 10times, passed.
For the new test hudson.model.ComputerTest#isConnectedTest executed 50 times, passed.
As the CI in here would be running in containers with cpu limits, tried to run test with cpulimit -l 5 -- mvn test -Dtest=... (would be about 0.6 cpu, my laptop 12cpus -> 12x0.05), still passed.

@jglick
Copy link
Member

jglick commented Aug 13, 2025

https://github.com/jenkinsci/jenkins/runs/47909286867 already passed, so why fe240d4?

Copy link
Contributor

@MarkEWaite MarkEWaite left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is now ready for merge. We will merge it after approximately 24 hours if there is no negative feedback.

/label ready-for-merge

@comment-ops-bot comment-ops-bot bot added the ready-for-merge The PR is ready to go, and it will be merged soon if there is no negative feedback label Aug 14, 2025
@MarkEWaite MarkEWaite added the squash-merge-me Unclean or useless commit history, should be merged only with squash-merge label Aug 14, 2025
@timja timja merged commit 1c6fb78 into jenkinsci:master Aug 15, 2025
19 checks passed
@gbhat618 gbhat618 deleted the add-a-isconnected-method branch August 19, 2025 06:10
@gbhat618
Copy link
Contributor Author

https://github.com/jenkinsci/jenkins/runs/47909286867 already passed, so why fe240d4?

I thought all PRs needed syncing with master and passing CI before merging, in case of new test failures (though maybe not needed for this PR).

@jglick
Copy link
Member

jglick commented Aug 19, 2025

all PRs needed syncing with master and passing CI before merging

All PRs need to pass CI before merging. This one already had, as of febf944. I am not aware of any requirement for the PR to be up to date with the base branch up to some specific duration, though of course if you filed in months ago it would be prudent to update it. (If core maintainers wished to err on the side of caution, we could set up a merge queue, though it would slow down integration and I think it would rarely catch any additional mistakes.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-merge The PR is ready to go, and it will be merged soon if there is no negative feedback skip-changelog Should not be shown in the changelog squash-merge-me Unclean or useless commit history, should be merged only with squash-merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants