java.io.InvalidClassException

my wrapper.log file is full of these. Found them while trying to find out why it stopped.

INFO   | jvm 1    | 2011/11/08 15:30:46 | java.io.InvalidClassException: com.inductiveautomation.ignition.gateway.history.BasicHistoricalTagValue; local class incompatible: stream classdesc serialVersionUID = 1348450298049752199, local class serialVersionUID = -7250077794331397447
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readClassDesc(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readObject0(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readObject(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.util.ArrayList.readObject(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.lang.reflect.Method.invoke(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readSerialData(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readObject0(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at java.io.ObjectInputStream.readObject(Unknown Source)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.cluster.ClusterUtil.deserializeObject(ClusterUtil.java:60)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.cluster.ClusterUtil.deserializeObject(ClusterUtil.java:52)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.stores.AbstractDatasourceStore.deserializeObject(AbstractDatasourceStore.java:476)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.stores.AbstractDatasourceStore.loadTransactions(AbstractDatasourceStore.java:531)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.stores.AbstractDatasourceStore.syncdTakeNext(AbstractDatasourceStore.java:491)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.stores.AbstractStore.takeNext(AbstractStore.java:191)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.stores.MultiStageStore.syncdTakeNext(MultiStageStore.java:171)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.stores.AbstractStore.takeNext(AbstractStore.java:191)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.forwarders.ForwarderThread.synchedTakeNext(ForwarderThread.java:193)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.forwarders.RedundancyAwareForwarder.synchedTakeNext(RedundancyAwareForwarder.java:67)
INFO   | jvm 1    | 2011/11/08 15:30:46 | 	at com.inductiveautomation.ignition.gateway.history.forwarders.ForwarderThread.run(ForwarderThread.java:124)

Complete wrapper.log available

That indicates that you have data that was stored in the data cache before the software was upgraded, and the new version doesn’t know how to read it. This is a mistake we’ve made once or twice, but try to avoid. Did you recently upgrade? Furthermore, did you upgrade from a fairly old version? The change that broke this object happened over 9 months ago.

To fix it, you have two options, depending on how important the cached data is to you. First, you can just delete the data cache file (with Ignition stopped), and it will make a new one on startup. The data cache folder will be under the “datacache” folder, with the name of the db connection. The second option, if the data is important, is to simply rename the folder, and zip it up and send it to me. I can export the data and send it back to you. It’s not exactly an easy process, but I try to do what I can to save data.

Regards,

demo system so data not important.
upgraded to 7.3.1 from (I think) 7.2.6 or 7.2.8
I’ll wipe the cache tomorrow.

Thanks Colby, that got rid of that error.

Of course I’ve noticed a new one now :smiling_imp:

Exception: Error executing expression binding on
Alarm Summary.Root Container.Alarms.AlarmTable.data
	caused by ExpressionException: Error executing script for runScript() expression:app.alarms.get_history_alarms()
	caused by Traceback (innermost last):

  File "<expression:runScript>", line 1, in ?

  File "<module:alarms>", line 10, in get_history_alarms

com.inductiveautomation.ignition.client.gateway_interface.GatewayException: ERROR: column "system" does not exist

  Position: 8


Caused by: org.postgresql.util.PSQLException: ERROR: column "system" does not exist

  Position: 8

line 10 in get_history_alarms is

    return system.alert.queryAlertHistory(app.globals.getAlarmStorage(), 
        path=filterpath, stateName=filterpoint,
        startDate=startdate, endDate=enddate, 
        activeAndUnacked=1, activeAndAcked=1,
        clearAndUnacked=1, clearAndAcked=1)

Funny thing is this only shows up in the designer. The client never gets this error popup.
I’ve checked the alarm_log table and column ‘system’ does not exist. column ‘SYSTEM’ does exist however.

I had to lowercase every other column name except for ‘displaypath’ as well.

This has to be caused by postgres column quoting. If I recall… didn’t you have to remove the quote character from the translator because it was screwing something up with SQLTags (the name of the index or something)?

The problem with column quoting is you can use it or not- as long as everything does the same thing. It’s likely the table was created with them turned on, and now they’re not, or vice-versa.

Check the db translator and see if the column quote character is set. In this case, I believe the alarm log profile lets you define the column names, so you might be able to change the system column specification to be “SYSTEM”, with quotes.

Let me know what the settings currently are, though, and we can try to narrow it down. It’s possible that some part of the query is not getting properly quoted, one way or the other.

Regards,

I’m sure I change coloum quoting from the default. But now I can’t find where that setting is :scratch: Did this change in 7.3.x?

It would be under the database translator (Database>Drivers>Translator).

If it really was created when you had quoting turned on, and now you don’t, the only real solution would be to rename the columns. Actually, what I would probably do would be to rename the table, let Ignition create a new one, and then do a “insert into tablename select * from oldname”… except that your select might have to spell the columns out, to account for the differences.

I really hate case sensitivity and everything about that column quote setting…

Regards,

[quote=“Colby.Clegg”]I really hate case sensitivity and everything about that column quote setting…
[/quote]
Try being the lone linux user in a MAC shop. MySQL sucks at this case stuff.

For the record, I changed the column names.