-
Suggestion
-
Resolution: Fixed
-
None
A certain flow from BAM-3401 is causing the remote agant to try to load Ljava.util.concurrent.ConcurrentHashMap$Segment;
2009-01-06 18:11:26,923 FATAL [BAM::ip-10-250-150-114.ec2.internal::Agent] [AgentContext] Agent encountered fatal error. Exiting. java.io.IOException: HTTP status code 500 received in response to GET request for Ljava.util.concurrent.ConcurrentHashMap$Segment;. at com.atlassian.bamboo.agent.bootstrap.AgentContext.httpException(AgentContext.java:24) at com.atlassian.bamboo.agent.bootstrap.AgentClassLoader.findClass(AgentClassLoader.java:139) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at com.atlassian.bamboo.agent.bootstrap.AgentClassLoader.loadClass(AgentClassLoader.java:295) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at org.apache.activemq.util.ClassLoading.load(ClassLoading.java:112) at org.apache.activemq.util.ClassLoading.loadClass(ClassLoading.java:51) at org.apache.activemq.util.ClassLoading.loadClass(ClassLoading.java:78) at org.apache.activemq.util.ClassLoadingAwareObjectInputStream.load(ClassLoadingAwareObjectInputStream.java:55) at org.apache.activemq.util.ClassLoadingAwareObjectInputStream.resolveClass(ClassLoadingAwareObjectInputStream.java:37) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1624) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480) at java.util.concurrent.ConcurrentHashMap.readObject(ConcurrentHashMap.java:1265) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:166) at org.springframework.jms.support.converter.SimpleMessageConverter.extractSerializableFromMessage(SimpleMessageConverter.java:222) at org.springframework.jms.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:109) at org.springframework.jms.core.JmsTemplate.doConvertFromMessage(JmsTemplate.java:763) at org.springframework.jms.core.JmsTemplate.receiveSelectedAndConvert(JmsTemplate.java:742) at com.atlassian.bamboo.v2.build.queue.AgentQueueAccessorImpl.takeBuildContext(AgentQueueAccessorImpl.java:29) at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:65) at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent$1.run(DefaultBuildAgent.java:101) at com.atlassian.bamboo.build.pipeline.concurrent.NamedThreadFactory$1.run(NamedThreadFactory.java:32) at edu.emory.mathcs.backport.java.util.concurrent.helpers.ThreadHelpers$1.run(ThreadHelpers.java:34) at java.lang.Thread.run(Thread.java:619)
The observed behaviour was a consequence of
BAM-3401leaving HttpClient in a broken state.The ClassLoading mechanism of ActiveMQ is reliant on the AgentClassLoader throwing a ClassNotFoundException in response to an attempt to load "Ljava.util.concurrent.ConcurrentHashMap$Segment;". AgentClassLoader delegates to the server, and encounters the HttpClient problem.
Without the HttpClient problem, the call to the server completes normally, and a ClassNotFoundException is thrown.