Skip to content

Conversation

@jglick
Copy link
Member

@jglick jglick commented Dec 8, 2025

I saw a thread dump from a controller running this plugin that included numerous threads blocked in file I/O in RunActionFactory.createFor where the caller did not need to be running this code at all, for example:

   java.lang.Thread.State: RUNNABLE
	at java.io.UnixFileSystem.getBooleanAttributes0(java.base@21.0.8/Native Method)
	at java.io.UnixFileSystem.hasBooleanAttributes(java.base@21.0.8/UnixFileSystem.java:194)
	at java.io.File.exists(java.base@21.0.8/File.java:836)
	at com.splunk.splunkjenkins.links.RunActionFactory.createFor(RunActionFactory.java:32)
	at com.splunk.splunkjenkins.links.RunActionFactory.createFor(RunActionFactory.java:16)
	at hudson.model.Actionable.createFor(Actionable.java:118)
	at hudson.model.Actionable.getAction(Actionable.java:335)
	at hudson.plugins.gradle.injection.BuildScanEnvironmentContributor.alreadyExecuted(BuildScanEnvironmentContributor.java:122)
	at hudson.plugins.gradle.injection.BuildScanEnvironmentContributor.buildEnvironmentFor(BuildScanEnvironmentContributor.java:46)
	at hudson.model.Run.getEnvironment(Run.java:2431)
	at org.jenkinsci.plugins.workflow.job.WorkflowRun.getEnvironment(WorkflowRun.java:525)
	at org.jenkinsci.plugins.workflow.cps.EnvActionImpl.getEnvironment(EnvActionImpl.java:92)
	at org.jenkinsci.plugins.workflow.cps.EnvActionImpl.getProperty(EnvActionImpl.java:108)
	at org.jenkinsci.plugins.workflow.cps.EnvActionImpl.getProperty(EnvActionImpl.java:59)
	at …
   java.lang.Thread.State: RUNNABLE
	at java.io.UnixFileSystem.getBooleanAttributes0(java.base@21.0.8/Native Method)
	at java.io.UnixFileSystem.hasBooleanAttributes(java.base@21.0.8/UnixFileSystem.java:194)
	at java.io.File.exists(java.base@21.0.8/File.java:836)
	at com.splunk.splunkjenkins.links.RunActionFactory.createFor(RunActionFactory.java:32)
	at com.splunk.splunkjenkins.links.RunActionFactory.createFor(RunActionFactory.java:16)
	at hudson.model.Actionable.createFor(Actionable.java:118)
	at hudson.model.Actionable.getAction(Actionable.java:335)
	at com.cloudbees.plugins.credentials.builds.CredentialsParameterBinder.getOrCreate(CredentialsParameterBinder.java:58)
	at com.cloudbees.plugins.credentials.CredentialsProvider.findCredentialById(CredentialsProvider.java:913)
	at com.cloudbees.plugins.credentials.CredentialsProvider.findCredentialById(CredentialsProvider.java:864)
	at org.jenkinsci.plugins.pipeline.modeldefinition.model.CredentialsBindingHandler.forId(CredentialsBindingHandler.java:95)
	at org.jenkinsci.plugins.pipeline.modeldefinition.model.CredentialsBindingHandler$forId$2.call(Unknown Source)
	at …

Implementing actionType will not address all cases but it should help.

@jglick
Copy link
Member Author

jglick commented Dec 8, 2025

Also, why is this code looking for junitResult.xml on disk, rather than checking for TestResultAction?

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant