We’re looking into a project where we’d like to leverage 8.0 but decouple some of the functionality from the existing 7.9 system. To do this, we’d like to send gateway messages from the 7.9 gateway to the 8.0 gateway. I’ve successfully established a gateway network connection outgoing from 8.0 to 7.9 and all seems to function well–I can even add the 7.9 tag provider to the 8.0 gateway via Remote Tag Provider.
Here is some baseline context:
- Ignition 8.0 Gateway
- Version: 8.0.9
- Hostname:
eightoh
- Ignition Gateway Name:
Ignition-eightoh
- Project Name:
EightOhTest
- Message Handler Name:
UpdateTime
- Ignition 7.9 Gateway
- Version: 7.9.13
- Hostname:
sevennine
- Ignition Gateway Name:
Ignition-sevennine
- Project Name:
SevenNineTest
When I attempt to send a gateway message from the 7.9 gateway (via the Designer, in R/W mode) with the script below:
results = system.util.sendMessage(project="EightOhTest", messageHandler="UpdateTime", remoteServers=['Ignition-eightoh'])
… I get a sendStatus=SENT
and the message seems to go out the door. On the 8.0 gateway, however, I get an error in the logger from metro.Intent
(error is the same even if I change the project or messageHandler variables to invalid values in the msg send, so it appears to be at a level before the message is delivered to a given project’s handler):
Intent 25Feb2020 09:18:58 Unhandled Intent failure.
java.io.StreamCorruptedException: invalid type code: FF
at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
at java.base/java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
at java.base/java.io.ObjectInputStream.readObject(Unknown Source)
at java.base/java.util.concurrent.ConcurrentHashMap.readObject(Unknown Source)
at java.base/jdk.internal.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at java.base/java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
at java.base/java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
at java.base/java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
at java.base/java.io.ObjectInputStream.readObject(Unknown Source)
at com.inductiveautomation.metro.impl.codecs.JavaSerializationCodec.decode(JavaSerializationCodec.java:41)
at com.inductiveautomation.metro.impl.CentralManagerImpl.handleLocal(CentralManagerImpl.java:432)
at com.inductiveautomation.metro.impl.ConnectionWatcher.handle(ConnectionWatcher.java:424)
at com.inductiveautomation.metro.impl.ConnectionWatcher.handle(ConnectionWatcher.java:43)
at com.inductiveautomation.metro.impl.protocol.websocket.WebSocketConnection.forward(WebSocketConnection.java:1407)
at com.inductiveautomation.metro.impl.protocol.websocket.WebSocketConnection$RunDownload.run(WebSocketConnection.java:1965)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
Has anyone else had success using gateway messaging between a 7.9 and 8.0 gateway?
Thanks in advance for any insights!