[ https://issues.apache.org/jira/browse/AMQ-7347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Work on AMQ-7347 started by Jean-Baptiste Onofré. ------------------------------------------------- > Unnecessary stack trace in case of invalid selector > --------------------------------------------------- > > Key: AMQ-7347 > URL: https://issues.apache.org/jira/browse/AMQ-7347 > Project: ActiveMQ > Issue Type: Bug > Components: STOMP > Reporter: Lionel Cons > Assignee: Jean-Baptiste Onofré > Priority: Minor > Fix For: 5.16.0, 5.15.12 > > Time Spent: 10m > Remaining Estimate: 0h > > When using an invalid selector in STOMP, ActiveMQ logs a full stack trace: > {code:java} > 2019-11-20 09:23:57,842 [ActiveMQ NIO Worker 26] ERROR TopicRegion - Failed > to create TopicSubscription > javax.jms.InvalidSelectorException: foo.bar = 'good' > at > org.apache.activemq.selector.SelectorParser.parse(SelectorParser.java:88) > at > org.apache.activemq.selector.SelectorParser.parse(SelectorParser.java:58) > at > org.apache.activemq.broker.region.AbstractSubscription.parseSelector(AbstractSubscription.java:75) > at > org.apache.activemq.broker.region.AbstractSubscription.<init>(AbstractSubscription.java:68) > at > org.apache.activemq.broker.region.TopicSubscription.<init>(TopicSubscription.java:73) > at > org.apache.activemq.broker.region.TopicRegion.createSubscription(TopicRegion.java:361) > at > org.apache.activemq.broker.jmx.ManagedTopicRegion.createSubscription(ManagedTopicRegion.java:44) > at > org.apache.activemq.broker.region.AbstractRegion.addConsumer(AbstractRegion.java:379) > at > org.apache.activemq.broker.region.TopicRegion.addConsumer(TopicRegion.java:188) > at > org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:418) > at > org.apache.activemq.broker.jmx.ManagedRegionBroker.addConsumer(ManagedRegionBroker.java:240) > at > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:104) > at > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:104) > at > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:104) > at > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:104) > at > org.apache.activemq.security.AuthorizationBroker.addConsumer(AuthorizationBroker.java:183) > at > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:104) > at > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:104) > at > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:104) > at > org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:104) > at > org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:703) > at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:352) > at > org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:336) > at > org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:200) > at > org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:45) > at > org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:301) > at > org.apache.activemq.transport.stomp.StompTransportFilter.sendToActiveMQ(StompTransportFilter.java:97) > at > org.apache.activemq.transport.stomp.ProtocolConverter.sendToActiveMQ(ProtocolConverter.java:177) > at > org.apache.activemq.transport.stomp.ProtocolConverter.onStompSubscribe(ProtocolConverter.java:646) > at > org.apache.activemq.transport.stomp.ProtocolConverter.onStompCommand(ProtocolConverter.java:235) > at > org.apache.activemq.transport.stomp.StompTransportFilter.onCommand(StompTransportFilter.java:85) > at > org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) > at > org.apache.activemq.transport.stomp.StompCodec.processCommand(StompCodec.java:133) > at > org.apache.activemq.transport.stomp.StompCodec.parse(StompCodec.java:100) > at > org.apache.activemq.transport.stomp.StompNIOTransport.processBuffer(StompNIOTransport.java:136) > at > org.apache.activemq.transport.stomp.StompNIOTransport.serviceRead(StompNIOTransport.java:121) > at > org.apache.activemq.transport.stomp.StompNIOTransport.access$000(StompNIOTransport.java:44) > at > org.apache.activemq.transport.stomp.StompNIOTransport$1.onSelect(StompNIOTransport.java:73) > at > org.apache.activemq.transport.nio.SelectorSelection.onSelect(SelectorSelection.java:98) > at > org.apache.activemq.transport.nio.SelectorWorker$1.run(SelectorWorker.java:123) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: org.apache.activemq.selector.TokenMgrError: Lexical error at line > 1, column 5. Encountered: "b" (98), after : "." > at > org.apache.activemq.selector.SelectorParserTokenManager.getNextToken(SelectorParserTokenManager.java:1053) > at > org.apache.activemq.selector.SelectorParser.jj_scan_token(SelectorParser.java:1271) > at > org.apache.activemq.selector.SelectorParser.jj_3_7(SelectorParser.java:946) > at > org.apache.activemq.selector.SelectorParser.jj_2_7(SelectorParser.java:658) > at > org.apache.activemq.selector.SelectorParser.unaryExpr(SelectorParser.java:458) > at > org.apache.activemq.selector.SelectorParser.multExpr(SelectorParser.java:392) > at > org.apache.activemq.selector.SelectorParser.addExpression(SelectorParser.java:361) > at > org.apache.activemq.selector.SelectorParser.comparisonExpression(SelectorParser.java:213) > at > org.apache.activemq.selector.SelectorParser.equalityExpression(SelectorParser.java:158) > at > org.apache.activemq.selector.SelectorParser.andExpression(SelectorParser.java:137) > at > org.apache.activemq.selector.SelectorParser.orExpression(SelectorParser.java:116) > at > org.apache.activemq.selector.SelectorParser.JmsSelector(SelectorParser.java:107) > at > org.apache.activemq.selector.SelectorParser.parse(SelectorParser.java:85) > ... 42 more > {code} > First of all, a single line containing the error message > ({{javax.jms.InvalidSelectorException: foo.bar = 'good'}}) is enough. The > stack trace is not needed. > Then, connection information (e.g. IP address) would be very useful to track > down the culprit. -- This message was sent by Atlassian Jira (v8.3.4#803005)