Builds fail to run on agents due to "no converter available"

Still need help?

The Atlassian Community is here for you.

Ask the community

Platform Notice: Data Center - This article applies to Atlassian products on the Data Center platform.

Note that this knowledge base article was created for the Data Center version of the product. Data Center knowledge base articles for non-Data Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

Build plans fail to run and the following error can be seen in the <bamboo-agent-home>/atlassian-bamboo-agent.log file

atlassian-bamboo-agent.log
com.thoughtworks.xstream.converters.ConversionException: No converter available

Environment

The solution has been validated in Bamboo 9.6 and 9.4 but may be applicable to other versions.
This can also be seen when upgrading to Java 11 or Java 17.

Diagnosis

Build plans are unable to run and trigger the following error in the <bamboo-agent-home>/atlassian-bamboo-agent.log file:

atlassian-bamboo-agent.log
WARN [remoteEventRebroadcasterMessageListenerContainer-1] [AbstractMessageListenerContainer] Execution of JMS message listener failed, and no ErrorHandler has been set.
com.thoughtworks.xstream.converters.ConversionException: No converter available
---- Debugging information ----
message             : No converter available
type                : com.atlassian.bamboo.event.ServerFingerprintBroadcastEventV2
converter           : com.atlassian.bamboo.serialization.xstream.StrippingConverter
message[1]          : Could not initialize class net.sf.cglib.proxy.Enhancer
converter[1]        : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
message[2]          : Unable to make field private static final long java.util.EventObject.serialVersionUID accessible: module java.base does not "opens java.util" to unnamed module @4eb6d1d0
version             : not available
-------------------------------
at com.thoughtworks.xstream.core.DefaultConverterLookup.lookupConverterForType(DefaultConverterLookup.java:88) ~[xstream-1.4.20.jar:1.4.20]

The following errors can also be present in the <bamboo-agent-home>/logs/atlassian-bamboo.log file:

INFO   | jvm 1    | 2024/07/05 21:17:05 | 2024-07-05 21:17:05,483 ERROR [0-BAM::worker6-1.bar.iec.it.ubc.ca::Agent:pool-4-thread-1] [BuildAgentControllerImpl] Unknown error occurred on 'AHENT' when building Deployment of 'RELEASE' on 'ENVIRONMENT'. Agent will attempt process the build result...
INFO   | jvm 1    | 2024/07/05 21:17:05 | com.google.common.util.concurrent.UncheckedExecutionException: io.atlassian.util.concurrent.LazyReference$InitializationException: com.thoughtworks.xstream.converters.ConversionException: com.thoughtworks.xstream.converters.enums.EnumSetConverter
INFO   | jvm 1    | 2024/07/05 21:17:05 | ---- Debugging information ----
INFO   | jvm 1    | 2024/07/05 21:17:05 | message             : No converter available
INFO   | jvm 1    | 2024/07/05 21:17:05 | type                : java.util.EnumSet
INFO   | jvm 1    | 2024/07/05 21:17:05 | converter           : com.atlassian.bamboo.serialization.xstream.StrippingConverter
INFO   | jvm 1    | 2024/07/05 21:17:05 | message[1]          : Could not initialize class net.sf.cglib.proxy.Enhancer
INFO   | jvm 1    | 2024/07/05 21:17:05 | converter[1]        : com.thoughtworks.xstream.converters.enums.EnumSetConverter
INFO   | jvm 1    | 2024/07/05 21:17:05 | message[2]          : Could not initialize class com.thoughtworks.xstream.converters.enums.EnumSetConverter$Reflections
INFO   | jvm 1    | 2024/07/05 21:17:05 | converter[2]        : com.thoughtworks.xstream.converters.reflection.SerializableConverter
INFO   | jvm 1    | 2024/07/05 21:17:05 | message[3]          : Unable to make private void java.util.EnumSet.readObject(java.io.ObjectInputStream) throws java.io.InvalidObjectException accessible: module java.base does not "opens java.util" to unnamed module @7d4b5b0a
INFO   | jvm 1    | 2024/07/05 21:17:05 | converter[3]        : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
INFO   | jvm 1    | 2024/07/05 21:17:05 | message[4]          : Unable to make field private static final long java.util.EnumSet.serialVersionUID accessible: module java.base does not "opens java.util" to unnamed module @7d4b5b0a
INFO   | jvm 1    | 2024/07/05 21:17:05 | class               : com.atlassian.bamboo.deployments.expiry.DeploymentExpiryConfig
INFO   | jvm 1    | 2024/07/05 21:17:05 | required-type       : com.atlassian.bamboo.deployments.expiry.DeploymentExpiryConfig
INFO   | jvm 1    | 2024/07/05 21:17:05 | converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
INFO   | jvm 1    | 2024/07/05 21:17:05 | path                : /org.springframework.remoting.support.RemoteInvocationResult/value/deploymentExpiryConfig/expiryTypes
INFO   | jvm 1    | 2024/07/05 21:17:05 | line number         : 23
INFO   | jvm 1    | 2024/07/05 21:17:05 | class[1]            : com.atlassian.bamboo.configuration.AdministrationConfigurationImpl
INFO   | jvm 1    | 2024/07/05 21:17:05 | required-type[1]    : com.atlassian.bamboo.configuration.AdministrationConfigurationImpl
INFO   | jvm 1    | 2024/07/05 21:17:05 | class[2]            : org.springframework.remoting.support.RemoteInvocationResult
INFO   | jvm 1    | 2024/07/05 21:17:05 | required-type[2]    : org.springframework.remoting.support.RemoteInvocationResult
INFO   | jvm 1    | 2024/07/05 21:17:05 | version             : not available
INFO   | jvm 1    | 2024/07/05 21:17:05 | -------------------------------
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2086) ~[guava-32.1.2-jre.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.google.common.cache.LocalCache.get(LocalCache.java:4012) ~[guava-32.1.2-jre.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4035) ~[guava-32.1.2-jre.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5013) ~[guava-32.1.2-jre.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5020) ~[guava-32.1.2-jre.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.atlassian.bamboo.v2.build.agent.remote.RemoteBuildLoggerManager.getLogger(RemoteBuildLoggerManager.java:119) ~[atlassian-bamboo-agent-remote-9.2.13.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.atlassian.bamboo.v2.build.agent.remote.RemoteBuildLoggerManager.getLogger(RemoteBuildLoggerManager.java:103) ~[atlassian-bamboo-agent-remote-9.2.13.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:151) ~[atlassian-bamboo-agent-core-9.2.13.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent.lambda$start$0(DefaultBuildAgent.java:124) ~[atlassian-bamboo-agent-core-9.2.13.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48) ~[atlassian-bamboo-api-9.2.13.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26) ~[atlassian-bamboo-api-9.2.13.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17) ~[atlassian-bamboo-api-9.2.13.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41) ~[atlassian-bamboo-api-9.2.13.jar:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | 	at java.lang.Thread.run(Thread.java:840) ~[?:?]
INFO   | jvm 1    | 2024/07/05 21:17:05 | Caused by: io.atlassian.util.concurrent.LazyReference$InitializationException: com.thoughtworks.xstream.converters.ConversionException:  No converter available 

Cause

Performance enhancements have been observed across Java versions 8, 11, and 17, although some classes now require additional parameters to function optimally.  If the agent is not upgraded or manually updated as per the Bamboo remote agent installation guide, the properties outlined in the Solution section within the wrapper.conf file of the agent operating on Java 11 or Java 17 will not be updated and will result in the build plan being unable to execute. This will trigger the error detailed in the Diagnosis section.

The  "Cannot invoke "Object.toString()" because the return value of "java.util.Map$Entry.getValue()" is nullhas also been observed due to version mismatches between the agent and Bamboo, and on scenarios of Operating System upgrades.

Solution

The solution consists of ensuring that agents running on Java 11 or Java 17 can perform the necessary conversions effectively. This can be achieved in two ways:

Reinstall the agent

When upgrading Bamboo from versions 8.0–9.3 to version 9.4 or later it's recommended to download a new remote agent JAR from your upgraded Bamboo and reinstall the wrapper:

Workaround

An workaround to solve this error is to update the wrapper configuration manually through the steps below:

  1. Stop the original agent.
  2. Open the wrapper configuration file <BAMBOO_AGENT_HOME>/conf/wrapper.conf.
  3. In the wrapper.conf file, replace the values for the following properties (or add them if they are not there):

    wrapper.java.version.min=11
    wrapper.java.version.max=17
    wrapper.java.version.fallback=11
    wrapper.java.additional.4=--add-opens=java.base/java.util=ALL-UNNAMED
    wrapper.java.additional.5=--add-opens=java.base/java.lang=ALL-UNNAMED
    wrapper.java.additional.6=--add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED
    wrapper.java.additional.7=--add-opens=java.base/sun.net.www.protocol.https=ALL-UNNAMED

    Please ensure that you use a sequential number as per your wrapper.java.additional properties.

  4. Start the agent.

Last modified on Jul 31, 2024

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.