[ https://issues.apache.org/jira/browse/QPID-5205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13787289#comment-13787289 ]
ASF subversion and git services commented on QPID-5205: ------------------------------------------------------- Commit 1529492 from [~k-wall] in branch 'qpid/trunk' [ https://svn.apache.org/r1529492 ] QPID-5205: Change ExchangeAdapter to return a model exchange object for alternate exchange This avoids the possibility of a StackOverflowException when viewing an exchange were a alternate has been set at declare time (0-10 only). > Viewing an exchange with alternate exchange through the Management UI causes > exception in Broker logs. > ------------------------------------------------------------------------------------------------------ > > Key: QPID-5205 > URL: https://issues.apache.org/jira/browse/QPID-5205 > Project: Qpid > Issue Type: Bug > Components: Java Broker > Affects Versions: 0.25 > Reporter: Keith Wall > > If I create an exchange with an alternate exchange with the following command: > {code} > java -cp ... 'org.apache.qpid.example.Spout' "ADDR:test-exch; {create: > always, node:{type: topic,x-declare: {alternate-exchange:'am q.fanout'}}}" > {code} > and then try and view the exchange through the Web Management Console, I see > the following exception reported in the Broker logs. > {noformat} > 2013-10-03 18:00:58,112 ERROR [qtp2123954626-50] (rest.AbstractServlet) - > Unable to perform action > java.security.PrivilegedActionException: > org.codehaus.jackson.map.JsonMappingException: No serializer found for class > org.apache.qpid.server.security.SecurityManager and no properties discovered > to create BeanSerializer (to avoid exception, disable > SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: > java.util.ArrayList[0]->java.util.LinkedHashMap["exchanges"]->java.util.ArrayList[4]->java.util.LinkedHashMap["alternateExchange"]->org.apache.qpid.server.exchange.FanoutExchange["virtualHost"]->org.apache.qpid.server.virtualhost.StandardVirtualHost["securityManager"]) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:396) > at > org.apache.qpid.server.management.plugin.servlet.rest.AbstractServlet.doWithSubjectAndActor(AbstractServlet.java:208) > at > org.apache.qpid.server.management.plugin.servlet.rest.AbstractServlet.doGet(AbstractServlet.java:74) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:693) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) > at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1320) > at > org.apache.qpid.server.management.plugin.filter.ForbiddingAuthorisationFilter.doFilter(ForbiddingAuthorisationFilter.java:90) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:443) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) > at org.eclipse.jetty.server.Server.handle(Server.java:367) > at > org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486) > at > org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926) > at > org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988) > at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640) > at > org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) > at > org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) > at > org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) > at > org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) > at java.lang.Thread.run(Thread.java:662) > Caused by: org.codehaus.jackson.map.JsonMappingException: No serializer found > for class org.apache.qpid.server.security.SecurityManager and no properties > discovered to create BeanSerializer (to avoid exception, disable > SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: > java.util.ArrayList[0]->java.util.LinkedHashMap["exchanges"]->java.util.ArrayList[4]->java.util.LinkedHashMap["alternateExchange"]->org.apache.qpid.server.exchange.FanoutExchange["virtualHost"]->org.apache.qpid.server.virtualhost.StandardVirtualHost["securityManager"]) > at > org.codehaus.jackson.map.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:52) > {noformat} > I've also seen this same problem manifest StackOverflowException (Darwin > Oslo.local 12.5.0/Java(TM) SE Runtime Environment (build 1.7.0_12-ea-b08)). > I suspect that the difference may be down to the unpredictable serialisation > order. > {noformat} > Caused by: org.codehaus.jackson.map.JsonMappingException: Infinite recursion > (StackOverflowError) (through reference chain: > org.apache.qpid.server.virtualhost.VirtualHostRegistry["defaultVirtualHost"]->org.apache.qpid.server.virtualhost.StandardVirtualHost["virtualHostRegistry"]->org.apache.qpid.server.virtualhost.VirtualHostRegistry["defaultVirtualHost"]->org.apache.qpid.server.virtualhost.StandardVirtualHost["virtualHostRegistry"]->org.apache.qpid.server.virtualhost.VirtualHostRegistry["defaultVirtualHost"]->org.apache.qpid.server.virtualhost.StandardVirtualHost["virtualHostRegistry"]->org.apache.qpid.server.virtualhost.VirtualHostRegistry["defaultVirtualHost"]->org.apache.qpid.server.virtualhost.StandardVirtualHost["virtualHostRegistry"]->org.apache.qpid.server.virtualhost.VirtualHostRegistry["defaultVirtualHost"]->org.apache.qpid.server.virtualhost.StandardVirtualHost["virtualHostRegistry"]->org.apache.qpid.server.virtualhost.VirtualHostRegistry["defaultVirtualHost"]->org.apache.qpid.server.virtualhost.StandardVirtualHost["virtualHostRegistry"]->org.apache.qpid.server.virtualhost.VirtualHostRegistry["defaultVirtualHost"] > {noformat} -- This message was sent by Atlassian JIRA (v6.1#6144) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org