|
From: Christoph J. <chr...@ma...> - 2018-11-19 15:20:09
|
Hi, I heard recently that "old" dynamic sessions were not properly removed before QFJ 2.1.0. So maybe this is a side effect of this. But just a wild guess though. Anyway, please open a JIRA issue for this. Of course it would be the best if we could reproduce it. :) I briefly tested if this is a general problem but it does not seem likely. E.g. when I comment line https://github.com/quickfix-j/quickfixj/blob/fcee00fb1709bc3f1c62b9a893c0e38d873fd312/quickfixj-core/src/test/java/quickfix/mina/acceptor/DynamicAcceptorSessionProviderTest.java#L195 then the test fails with the error message "Missing ConnectionType". However, when I add ownSettings.setString("ConnectionType", "acceptor"); , i.e. adding the ConnectionType to the DEFAULT section, the test passes. Cheers, Chris. On 19/11/2018 13:12, Alex Wibowo wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J Support: http://www.quickfixj.org/support/ > > > > Hi, > > We have been using DynamicAcceptorSessionProvider in our project for quite sometime now. > After a recent upgrade to Quickfix 2.1.0 (from 1.5.3), we saw some errors that I believe is caused > by Quickfix being unable to find the session settings. > The stack trace looks like below: > ----- > > 2018-11-19 00:01:13,236|| ERROR |||| org.quickfixj.QFJException: quickfix.ConfigError: Missing > ConnectionType | NioProcessor-23 | q.m.a.AcceptorIoHandler > > org.quickfixj.QFJException: quickfix.ConfigError: Missing ConnectionType > > at > quickfix.mina.acceptor.DynamicAcceptorSessionProvider.getSession(DynamicAcceptorSessionProvider.java:153) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at quickfix.mina.acceptor.AcceptorIoHandler.findQFSession(AcceptorIoHandler.java:118) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at quickfix.mina.AbstractIoHandler.messageReceived(AbstractIoHandler.java:129) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:997) > ~[mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:641) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1114) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:437) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:256) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:641) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1114) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:121) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:641) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:634) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1242) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1231) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) > [mina-core-2.0.19.jar:?] > > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > [?:1.8.0-zing_18.06.0.0] > > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > [?:1.8.0-zing_18.06.0.0] > > at java.lang.Thread.run(Thread.java:748) [?:1.8.0-zing_18.06.0.0] > > Caused by: quickfix.ConfigError: Missing ConnectionType > > at quickfix.DefaultSessionFactory.create(DefaultSessionFactory.java:102) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at > quickfix.mina.acceptor.DynamicAcceptorSessionProvider.getSession(DynamicAcceptorSessionProvider.java:148) > ~[quickfixj-cor > > > ---- > I find this very strange, as we definitely have the session configuration, and the session > configuration specifies the 'ConnectionType' (which is an 'acceptor'). > > Also, earlier in the log we found the following error: > ---- > > 2018-11-19 23:00:34,836|| ERROR |||| org.quickfixj.QFJException: Connector MBean postregistration > failed | NioProcessor-23 | q.m.a.AcceptorIoHandler > > org.quickfixj.QFJException: Connector MBean postregistration failed > > at org.quickfixj.jmx.mbean.connector.ConnectorAdmin.registerSessions(ConnectorAdmin.java:188) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at org.quickfixj.jmx.mbean.connector.ConnectorAdmin.lambda$postRegister$0(ConnectorAdmin.java:170) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) ~[?:1.8.0_172] > > at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) ~[?:1.8.0_172] > > at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263) ~[?:1.8.0_172] > > at quickfix.mina.SessionConnector.addDynamicSession(SessionConnector.java:166) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at > quickfix.mina.acceptor.DynamicAcceptorSessionProvider.getSession(DynamicAcceptorSessionProvider.java:150) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at quickfix.mina.acceptor.AcceptorIoHandler.findQFSession(AcceptorIoHandler.java:118) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at quickfix.mina.AbstractIoHandler.messageReceived(AbstractIoHandler.java:129) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:997) > ~[mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:641) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1114) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:437) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:256) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:641) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1114) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:121) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:641) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:634) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1242) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1231) > [mina-core-2.0.19.jar:?] > > at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683) > [mina-core-2.0.19.jar:?] > > at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) > [mina-core-2.0.19.jar:?] > > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_172] > > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_172] > > at java.lang.Thread.run(Thread.java:748) [?:1.8.0_172] > > Caused by: javax.management.InstanceAlreadyExistsException: > org.quickfixj:type=Settings,beginString=FIX.4.2,senderCompID=AU_MD,targetCompID=esp-peak-33 > > at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437) ~[?:1.8.0_172] > > at > com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898) > ~[?:1.8.0_172] > > at > com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966) > ~[?:1.8.0_172] > > at > com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900) > ~[?:1.8.0_172] > > at > com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324) > ~[?:1.8.0_172] > > at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) ~[?:1.8.0_172] > > at org.quickfixj.jmx.JmxExporter.registerMBean(JmxExporter.java:131) ~[quickfixj-core-2.1.0.jar:2.1.0] > > at org.quickfixj.jmx.mbean.session.SessionJmxExporter.register(SessionJmxExporter.java:45) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > at org.quickfixj.jmx.mbean.connector.ConnectorAdmin.registerSessions(ConnectorAdmin.java:181) > ~[quickfixj-core-2.1.0.jar:2.1.0] > > ... 29 more > > > --- > > I'm not 100% sure if they are related though (i..e whether the mbean registration failure caused > the session configuration error). > > I know that we can change the JMX Exporter behaviour to get around the jmx registration. But right > now it is set as default (which I believe is 'REGISTRATION_FAIL_ON_EXISTING'). > > > Thanks in advance! > > > > -- > Best regards, > > > Alex Wibowo > > -- Christoph John Software Engineering T +49 241 557080-28 chr...@ma... MACD GmbH Oppenhoffallee 103 52066 Aachen, Germany www.macd.com Amtsgericht Aachen: HRB 8151 Ust.-Id: DE 813021663 Geschäftsführer: George Macdonald |