I've only been running the software for a couple of days, but I keep getting the following exception thrown:
ERROR: ''
javax.xml.transform.TransformerException: java.lang.NullPointerException
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:737)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:343)
at CAT.E_MarketSupport.RestoreRoutines.A_Executor.XML_Manager.finalizeXML(Unknown Source)
at CAT.E_MarketSupport.RestoreRoutines.A_Executor.XML_SAVE_LOAD_MANAGER.fullMarketSave(Unknown Source)
at CAT.B_Env_Exchange.A_ExchEnv.ExchAutoBackupManager.b(Unknown Source)
at CAT.B_Env_Exchange.A_ExchEnv.a.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
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: java.lang.NullPointerException
at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.characters(ToUnknownStream.java:342)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:244)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:136)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:98)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:684)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:728)
... 12 more
---------
java.lang.NullPointerException
at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.characters(ToUnknownStream.java:342)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:244)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:136)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:98)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:684)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:728)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:343)
at CAT.E_MarketSupport.RestoreRoutines.A_Executor.XML_Manager.finalizeXML(Unknown Source)
at CAT.E_MarketSupport.RestoreRoutines.A_Executor.XML_SAVE_LOAD_MANAGER.fullMarketSave(Unknown Source)
at CAT.B_Env_Exchange.A_ExchEnv.ExchAutoBackupManager.b(Unknown Source)
at CAT.B_Env_Exchange.A_ExchEnv.a.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
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)
Usually it seems to run fine for about 8-16 hours before it starts, then it'll do it once or twice a minute, most recently it started doing it after running only around 1hr.
I've taken a look at the logs for the markets it's trading on, and can't see any sort of exception or anything abnormal in any of them, it's also showing 0 for retry, http error, and aborted on the API console; so I don't think it's an API response that it's failing to parse, so possibly it's a part of the Swing UI that it's failing to parse?
It does appear to continue trading after it's begun to throw the exceptions, so I don't think it's halting trading or anything, I just can't be certain as I haven't yet left it running long enough post-exception to confirm that - it's still performing trades on at least two of the three markets I've got it running on, and I'm going to let it keep running and hopefully confirm it's still successfully trading on the third as well.
When I first got the software and was initially getting acquainted with it, I was running it on Windows 10, running Oracle Java 8 Update 171, I've since switched it over onto my Linux box, running Arch Linux and OpenJDK update 172, both systems throw the same exception.
Anyway, yeah, doesn't seem to actually have any negative effects (assuming the third market is still working), just wanted to submit a bug report.
Thanks very much, I've been very impressed by the software thus far - I primarily do Linux Sysadmin stuff, but I've done my fair share of software development and interfacing with various third-party APIs of varying quality, I sure as hell wouldn't have the patience for a project of this kind of scope, and I'm particularly impressed by how many exchanges you've written API interfaces for.
EDIT: I've now confirmed that all three markets are continuing to trade, so there appears to be zero impact from this exception, it looks to be purely cosmetic.