Page 1 of 1

Random error

PostPosted: Mon Oct 30, 2017 1:47 pm
by Peter de Groot
Hi all,

we keep getting randomly the error below,

okt 30, 2017 12:36:53 PM com.servoy.j2db.util.Debug error
SEVERE: Throwable
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at com.servoy.j2db.dataprocessing.RelatedValueList.fill(RelatedValueList.java:169)
at com.servoy.j2db.util.model.ComboModelListModelWrapper$SeparatorProcessingValueList.fill(ComboModelListModelWrapper.java:772)
at com.servoy.j2db.util.model.ComboModelListModelWrapper.fill(ComboModelListModelWrapper.java:176)
at com.servoy.j2db.smart.dataui.DataComboBox.setRecord(DataComboBox.java:1552)
at com.servoy.j2db.dataprocessing.DataAdapterList.setRecord(DataAdapterList.java:390)
at com.servoy.j2db.smart.dataui.DataRenderer.refreshRecord(DataRenderer.java:667)
at com.servoy.j2db.FormController.refreshAllPartRenderers(FormController.java:715)
at com.servoy.j2db.BasicFormController.valueChanged(BasicFormController.java:503)
at com.servoy.j2db.BasicFormController.tableChanged(BasicFormController.java:454)
at com.servoy.j2db.dataprocessing.TableAndListEventDelegate.fireTableModelEvent(TableAndListEventDelegate.java:76)
at com.servoy.j2db.dataprocessing.SwingRelatedFoundSet.fireTableModelEvent(SwingRelatedFoundSet.java:269)
at com.servoy.j2db.smart.dataui.CellAdapter.fireModificationEvent(CellAdapter.java:1351)
at com.servoy.j2db.smart.dataui.CellAdapter.valueChanged(CellAdapter.java:1733)
at com.servoy.j2db.dataprocessing.DataAdapterList.valueChanged(DataAdapterList.java:466)
at com.servoy.j2db.dataprocessing.Record.fireJSModificationEvent(Record.java:424)
at com.servoy.j2db.dataprocessing.Record.notifyChange(Record.java:872)
at com.servoy.j2db.dataprocessing.Row.fireNotifyChange(Row.java:96)
at com.servoy.j2db.dataprocessing.Row.setValue(Row.java:378)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:227)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:185)
at com.servoy.j2db.smart.dataui.CellAdapter$5.run(CellAdapter.java:1185)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


We have no idea what this means, we're using Servoy 8.1.3


Regards,
Peter

Re: Random error

PostPosted: Mon Nov 06, 2017 3:22 pm
by jcompagner
that sounds like a threading problem (because you are in tableview where we get the data at the same with multiply threads)
Somehow that same RelatedValueList is hit i guess at the same time.

I wonder if that is reproducible that code didn't really change for years so this should be some corner case that is hitting this scenario

Re: Random error

PostPosted: Tue Nov 07, 2017 12:23 pm
by Peter de Groot
jcompagner wrote:that sounds like a threading problem (because you are in tableview where we get the data at the same with multiply threads)
Somehow that same RelatedValueList is hit i guess at the same time.

I wonder if that is reproducible that code didn't really change for years so this should be some corner case that is hitting this scenario


I'm not able to reproduce/debug, the message shows at random and not always on the same form, today I got this error in the Java console

nov 07, 2017 11:13:57 AM com.servoy.j2db.util.Debug warn
WARNING: startBundlingEvents() called twice without stopBundlingEvents(). This is not expected and might hide unwanted behavior...
nov 07, 2017 11:14:01 AM com.servoy.j2db.util.Debug error
SEVERE: Throwable
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at com.servoy.j2db.dataprocessing.RelatedValueList.fill(RelatedValueList.java:169)
at com.servoy.j2db.util.model.ComboModelListModelWrapper$SeparatorProcessingValueList.fill(ComboModelListModelWrapper.java:772)
at com.servoy.j2db.util.model.ComboModelListModelWrapper.fill(ComboModelListModelWrapper.java:176)
at com.servoy.j2db.smart.dataui.DataComboBox.setRecord(DataComboBox.java:1552)
at com.servoy.j2db.dataprocessing.DataAdapterList.setRecord(DataAdapterList.java:390)
at com.servoy.j2db.smart.dataui.DataRenderer.refreshRecord(DataRenderer.java:667)
at com.servoy.j2db.FormController.refreshAllPartRenderers(FormController.java:715)
at com.servoy.j2db.BasicFormController.valueChanged(BasicFormController.java:503)
at com.servoy.j2db.BasicFormController.tableChanged(BasicFormController.java:454)
at com.servoy.j2db.dataprocessing.TableAndListEventDelegate.fireTableModelEvent(TableAndListEventDelegate.java:76)
at com.servoy.j2db.dataprocessing.SwingFoundSet.fireTableModelEvent(SwingFoundSet.java:268)
at com.servoy.j2db.smart.dataui.CellAdapter.fireModificationEvent(CellAdapter.java:1351)
at com.servoy.j2db.smart.dataui.CellAdapter.valueChanged(CellAdapter.java:1733)
at com.servoy.j2db.dataprocessing.DataAdapterList.valueChanged(DataAdapterList.java:466)
at com.servoy.j2db.dataprocessing.Record.fireJSModificationEvent(Record.java:424)
at com.servoy.j2db.dataprocessing.Record.notifyChange(Record.java:872)
at com.servoy.j2db.dataprocessing.Row.fireNotifyChange(Row.java:96)
at com.servoy.j2db.dataprocessing.Row.setValue(Row.java:378)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:227)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:185)
at com.servoy.j2db.smart.dataui.CellAdapter$5.run(CellAdapter.java:1185)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

nov 07, 2017 11:14:01 AM com.servoy.j2db.util.Debug error
SEVERE: Throwable
java.lang.IllegalStateException: Cannot bundle 'added' event; intervals cannot be merged
at com.servoy.j2db.util.model.OptimizedDefaultListModel.fireIntervalAdded(OptimizedDefaultListModel.java:143)
at javax.swing.DefaultListModel.addElement(Unknown Source)
at com.servoy.j2db.dataprocessing.RelatedValueList.fillFromFoundset(RelatedValueList.java:289)
at com.servoy.j2db.dataprocessing.RelatedValueList.fill(RelatedValueList.java:185)
at com.servoy.j2db.util.model.ComboModelListModelWrapper$SeparatorProcessingValueList.fill(ComboModelListModelWrapper.java:772)
at com.servoy.j2db.util.model.ComboModelListModelWrapper.fill(ComboModelListModelWrapper.java:176)
at com.servoy.j2db.smart.dataui.DataComboBox.setRecord(DataComboBox.java:1552)
at com.servoy.j2db.dataprocessing.DataAdapterList.setRecord(DataAdapterList.java:390)
at com.servoy.j2db.smart.dataui.DataRenderer.refreshRecord(DataRenderer.java:667)
at com.servoy.j2db.FormController.refreshAllPartRenderers(FormController.java:715)
at com.servoy.j2db.BasicFormController.valueChanged(BasicFormController.java:503)
at com.servoy.j2db.BasicFormController.tableChanged(BasicFormController.java:454)
at com.servoy.j2db.dataprocessing.TableAndListEventDelegate.fireTableModelEvent(TableAndListEventDelegate.java:76)
at com.servoy.j2db.dataprocessing.SwingFoundSet.fireTableModelEvent(SwingFoundSet.java:268)
at com.servoy.j2db.smart.dataui.CellAdapter.fireModificationEvent(CellAdapter.java:1351)
at com.servoy.j2db.smart.dataui.CellAdapter.valueChanged(CellAdapter.java:1733)
at com.servoy.j2db.dataprocessing.DataAdapterList.valueChanged(DataAdapterList.java:466)
at com.servoy.j2db.dataprocessing.Record.fireJSModificationEvent(Record.java:424)
at com.servoy.j2db.dataprocessing.Record.notifyChange(Record.java:872)
at com.servoy.j2db.dataprocessing.Row.fireNotifyChange(Row.java:96)
at com.servoy.j2db.dataprocessing.Row.setValue(Row.java:378)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:227)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:185)
at com.servoy.j2db.smart.dataui.CellAdapter$5.run(CellAdapter.java:1185)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

nov 07, 2017 11:14:01 AM com.servoy.j2db.util.Debug error
SEVERE: Throwable
java.lang.IllegalStateException: Cannot bundle 'added' event; intervals cannot be merged
at com.servoy.j2db.util.model.OptimizedDefaultListModel.fireIntervalAdded(OptimizedDefaultListModel.java:143)
at javax.swing.DefaultListModel.addElement(Unknown Source)
at com.servoy.j2db.dataprocessing.RelatedValueList.fillFromFoundset(RelatedValueList.java:289)
at com.servoy.j2db.dataprocessing.RelatedValueList.fill(RelatedValueList.java:185)
at com.servoy.j2db.util.model.ComboModelListModelWrapper$SeparatorProcessingValueList.fill(ComboModelListModelWrapper.java:772)
at com.servoy.j2db.util.model.ComboModelListModelWrapper.fill(ComboModelListModelWrapper.java:176)
at com.servoy.j2db.smart.dataui.DataComboBox.setRecord(DataComboBox.java:1552)
at com.servoy.j2db.dataprocessing.DataAdapterList.setRecord(DataAdapterList.java:390)
at com.servoy.j2db.smart.dataui.DataRenderer.refreshRecord(DataRenderer.java:667)
at com.servoy.j2db.FormController.refreshAllPartRenderers(FormController.java:715)
at com.servoy.j2db.BasicFormController.valueChanged(BasicFormController.java:503)
at com.servoy.j2db.BasicFormController.tableChanged(BasicFormController.java:454)
at com.servoy.j2db.dataprocessing.TableAndListEventDelegate.fireTableModelEvent(TableAndListEventDelegate.java:76)
at com.servoy.j2db.dataprocessing.SwingFoundSet.fireTableModelEvent(SwingFoundSet.java:268)
at com.servoy.j2db.smart.dataui.CellAdapter.fireModificationEvent(CellAdapter.java:1351)
at com.servoy.j2db.smart.dataui.CellAdapter.valueChanged(CellAdapter.java:1733)
at com.servoy.j2db.dataprocessing.DataAdapterList.valueChanged(DataAdapterList.java:466)
at com.servoy.j2db.dataprocessing.Record.fireJSModificationEvent(Record.java:424)
at com.servoy.j2db.dataprocessing.Record.notifyChange(Record.java:872)
at com.servoy.j2db.dataprocessing.Row.fireNotifyChange(Row.java:96)
at com.servoy.j2db.dataprocessing.Row.setValue(Row.java:378)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:227)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:185)
at com.servoy.j2db.smart.dataui.CellAdapter$5.run(CellAdapter.java:1185)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


we use Servoy version 8.1.3 -releaseNumber 3033

Regards,
Peter

Re: Random error

PostPosted: Wed Nov 29, 2017 10:35 am
by jcompagner
can you create a case with those stack traces?
As i said that code is all quite old, not really touched (maybe for years) so this is quite a specific scenario
That in a tableview i think you have a combobox there (or do you have a combo box around the tableview let say the tableview is in a tabpanel or in the header there is a combobox?)
And because of the a change that a column/cell in a tableview gets (calculation or related field) it triggers again a change even in the system that triggers a refill of a related valuelist of a combobox.
And i think that same related valuelist is triggered multiply times for different cells

So it would be nice to know what the setup is of the form where this goes wrong, what kind of tableview are you showing there, what kind of data in the columns (related/calculated?) and is there anything else shown on that form that is a combobox with a related valuelist.
(or is that also shown in the tableview itself?)