OPCUA Connection on Ignition 8.3.1 with Stratus ZTC Edge

I have a Stratus ZTC Edge machine which has an OPCUA server to allow an OPC client to get status information about the machine and operating environment. I was able to connect and read the topics using Ignition 8.1. I am now trying to connect using an Ignition 8.3.1 system. I have disabled security and certificates for testing. I get the following error when trying to connect. Has anyone else seen this?

ava.lang.NullPointerException: Parameter specified as non-null is null: method com.inductiveautomation.ignition.gateway.secrets.SecretConfigKtx.getPlaintextString-gIAlu-s, parameter $this$getPlaintextString
at com.inductiveautomation.ignition.gateway.secrets.SecretConfigKtx.getPlaintextString-gIAlu-s(SecretConfigKtx.kt)

Can you post the full logs?

I think this means something is wrong with the OPC UA connection configuration... missing/empty password maybe?

Thanks for the response. The OPCUA Server is setup for anonymous connection since it is for inhouse testing.

ava.lang.NullPointerException: Parameter specified as non-null is null: method com.inductiveautomation.ignition.gateway.secrets.SecretConfigKtx.getPlaintextString-gIAlu-s, parameter $this$getPlaintextString
at com.inductiveautomation.ignition.gateway.secrets.SecretConfigKtx.getPlaintextString-gIAlu-s(SecretConfigKtx.kt)
at com.inductiveautomation.ignition.gateway.opcua.client.connection.OpcUaConnectionExtensionPoint.create(OpcUaConnectionExtensionPoint.kt:42)
at com.inductiveautomation.ignition.gateway.opcua.client.connection.OpcUaConnectionExtensionPoint.create(OpcUaConnectionExtensionPoint.kt:19)
at com.inductiveautomation.ignition.gateway.opc.OpcConnectionExtensionPoint.create(OpcConnectionExtensionPoint.java:64)
at com.inductiveautomation.ignition.gateway.opc.OpcConnectionManagerImpl.createAndStartConnection(OpcConnectionManagerImpl.java:390)
at com.inductiveautomation.ignition.gateway.opc.OpcConnectionManagerImpl$OpcConnectionResourceHandler.onResourceUpdated(OpcConnectionManagerImpl.java:466)
at com.inductiveautomation.ignition.gateway.config.NamedResourceHandler$Lifecycle.onAfterChanges(NamedResourceHandler.java:713)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycle$LifecycleResourceListener.onAfterChanges(ResourceCollectionLifecycle.java:183)
at com.inductiveautomation.ignition.common.resourcecollection.AbstractResourceCollection.notifyListener(AbstractResourceCollection.java:386)
at com.inductiveautomation.ignition.common.resourcecollection.AbstractResourceCollection.notifyResourceListeners(AbstractResourceCollection.java:315)
at com.inductiveautomation.ignition.common.resourcecollection.AbstractResourceCollection.updateEffectiveState(AbstractResourceCollection.java:156)
at com.inductiveautomation.ignition.common.resourcecollection.RuntimeResourceCollection.applyChange(RuntimeResourceCollection.java:267)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.lambda$updateOrStartAffected$5(ResourceCollectionLifecycleFactory.java:210)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.updateOrStartAffected(ResourceCollectionLifecycleFactory.java:190)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.collectionUpdated(ResourceCollectionLifecycleFactory.java:167)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionManagerImpl.notifyCollectionChanged(ResourceCollectionManagerImpl.java:1610)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionManagerImpl.lambda$fireCollectionChanged$31(ResourceCollectionManagerImpl.java:1589)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionManagerImpl.lambda$submitToQueue$30(ResourceCollectionManagerImpl.java:1574)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionManagerImpl.lambda$wrapNotificationTask$0(ResourceCollectionManagerImpl.java:204)
at com.inductiveautomation.ignition.common.util.ExecutionQueue$PollAndExecute.run(ExecutionQueue.java:238)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)

Ok, it seems you may have modified the "Key Store Alias Password" field (advanced setting) to be empty.

By default, the "Key Store Alias" is "client" and the "Key Store Alias Password" should be "password". Most people will never need to change these.

Kevin,

Thanks, That fixed it.

We should probably make that failure mode a little more graceful...

1 Like