Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-3402

Failed to load Ljava.util.concurrent.ConcurrentHashMap$Segment;

    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

      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)
      

            [BAM-3402] Failed to load Ljava.util.concurrent.ConcurrentHashMap$Segment;

            The observed behaviour was a consequence of BAM-3401 leaving 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.

            Adrian Hempel [Atlassian] added a comment - The observed behaviour was a consequence of BAM-3401 leaving 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.

            MarkC added a comment -

            Lowering priority now BAM-3401 has been resolved.

            MarkC added a comment - Lowering priority now BAM-3401 has been resolved.

            It's looking like some kookiness in ActiveMQs classloading code: It appears to be asking for a class named "Ljava.util.concurrent.ConcurrentHashMap$Segment;". The 'L' prefix and ';' suffix should only be used when the class is being used as an array element type.

            Given that we don't expect classnames in this format, we're not recognising it as as belonging to a java.* package.

            I'll dig a bit further, and implement a workaround if necessary.

            Adrian Hempel [Atlassian] added a comment - It's looking like some kookiness in ActiveMQs classloading code: It appears to be asking for a class named "Ljava.util.concurrent.ConcurrentHashMap$Segment;". The 'L' prefix and ';' suffix should only be used when the class is being used as an array element type. Given that we don't expect classnames in this format, we're not recognising it as as belonging to a java.* package. I'll dig a bit further, and implement a workaround if necessary.

            Not so strange. Taking builds from the queue involves deserialisation.

            Adrian Hempel [Atlassian] added a comment - Not so strange. Taking builds from the queue involves deserialisation.

            MarkC added a comment -

            Strangely, it looks like the class is being loaded when taking from queue.

            	at com.atlassian.bamboo.v2.build.queue.AgentQueueAccessorImpl.takeBuildContext(AgentQueueAccessorImpl.java:29)
            	at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:65)
            

            MarkC added a comment - Strangely, it looks like the class is being loaded when taking from queue. at com.atlassian.bamboo.v2.build.queue.AgentQueueAccessorImpl.takeBuildContext(AgentQueueAccessorImpl.java:29) at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:65)

              Unassigned Unassigned
              mark@atlassian.com MarkC
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:

                  Estimated:
                  Original Estimate - 4h
                  4h
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 4h
                  4h