Error in Graph after upgrading to FPMI 3.3.1

I have some graphs that were functioning correctly before the upgrade using the Chart component. Now when I run them, the graph is not displaying and I get the following error

com.inductiveautomation.factorypmi.common.xmlserialization.SerializationException: Error invoking [PMIChart]com.inductiveautomation.factorypmi.application.components.PMIChart[chFiller,0,112,405x281,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=405,height=281]].setDynamicProps({Cumulative=Cumulative, Data=Data})
	at com.inductiveautomation.factorypmi.common.xmlserialization.deserialization.handlers.ObjectDeserializationHandler.endSubElement(ObjectDeserializationHandler.java:82)
	at com.inductiveautomation.factorypmi.common.xmlserialization.deserialization.handlers.ComponentDeserializationHandler.endSubElement(ComponentDeserializationHandler.java:83)
	at com.inductiveautomation.factorypmi.common.xmlserialization.deserialization.XMLDeserializer$Parser.endElement(XMLDeserializer.java:368)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at com.inductiveautomation.factorypmi.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:142)
	at com.inductiveautomation.factorypmi.application.model.WindowController.deserializeWindow(WindowController.java:619)
	at com.inductiveautomation.factorypmi.application.model.WindowController._loadWindow(WindowController.java:324)
	at com.inductiveautomation.factorypmi.application.model.WindowController.getWindow(WindowController.java:368)
	at com.inductiveautomation.factorypmi.application.FPMIApp.openWindow(FPMIApp.java:836)
	at com.inductiveautomation.factorypmi.application.FPMIApp.openWindow(FPMIApp.java:817)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities$7.run(NavUtilities.java:366)
	at com.inductiveautomation.factorypmi.application.script.builtin.WindowUtilities.doGUIAction(WindowUtilities.java:463)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.openWindow(NavUtilities.java:364)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java)
	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java)
	at org.python.core.PyObject.__call__(PyObject.java)
	at org.python.core.PyObject.invoke(PyObject.java)
	at org.python.pycode._pyx6.f$0(<event:actionPerformed>:6)
	at org.python.pycode._pyx6.call_function(<event:actionPerformed>)
	at org.python.core.PyTableCode.call(PyTableCode.java)
	at org.python.core.PyCode.call(PyCode.java)
	at org.python.core.Py.runCode(Py.java)
	at com.inductiveautomation.factorypmi.application.script.ScriptManager.runCode(ScriptManager.java:245)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.runActions(ActionAdapter.java:145)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.invoke(ActionAdapter.java:287)
	at com.inductiveautomation.factorypmi.application.binding.action.RelayInvocationHandler.invoke(RelayInvocationHandler.java:57)
	at $Proxy0.actionPerformed(Unknown Source)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.inductiveautomation.factorypmi.common.xmlserialization.deserialization.handlers.ObjectDeserializationHandler.endSubElement(ObjectDeserializationHandler.java:69)
	... 65 more
Caused by: java.lang.IllegalArgumentException: Range(double, double): require lower (Infinity) <= upper (-Infinity).
	at org.jfree.data.Range.<init>(Range.java:90)
	at com.inductiveautomation.factorypmi.application.components.chart.runtime.CategoryDataSet.calcRange(CategoryDataSet.java:91)
	at com.inductiveautomation.factorypmi.application.components.chart.runtime.CategoryDataSet.setDataSet(CategoryDataSet.java:69)
	at com.inductiveautomation.factorypmi.application.components.chart.runtime.CategoryDataSet.<init>(CategoryDataSet.java:45)
	at com.inductiveautomation.factorypmi.application.components.PMIChart.createCategoryChart(PMIChart.java:535)
	at com.inductiveautomation.factorypmi.application.components.PMIChart.createChartImpl(PMIChart.java:477)
	at com.inductiveautomation.factorypmi.application.components.chart.PMILineChartPanel.createChart(PMILineChartPanel.java:115)
	at com.inductiveautomation.factorypmi.application.components.PMIChart.setDynamicProps(PMIChart.java:1313)
	... 70 more

I also clicked on the send to Inductive button on the error message.

I think this is caused by a category chart with no rows - does that fit your situation?

You should still be able to open the window, correct? As a workaround, make sure that there is at least 1 datapoint in the chart. We’ll have to release version 3.3.2 to fix this.

That may be the case. The window does open, but the chart won’t display, even after the datasets are populated. Normally the datasets are based on a date selected by the user, so when they first load, some of the graphs are blank. I tried pre-loading the graphs with some data and they came up without an error. I tried moving the dates on my dataset to a place where there would be no data and it gives me an error Range(double, double): require lower (Infinity) <= upper (-Infinity), which is a little different then the error I got before, but when I move it back into my valid data range, it works again.

Yes, thats the same error (look far down in your previous stack trace near a “Caused by”).

This was introduced in 3.3.1 by fixing another bug. Sorry for the trouble, we’ll get 3.3.2 out soon.