[bug-14023]8.0.2-rc1 - core - Error configuring tag

when I try to import some tags from a json file I have the following error
How to find the tag(s) in error ?

core	28May2019 17:11:33	Error configuring tag
java.lang.NullPointerException: null

at com.inductiveautomation.ignition.gateway.tags.actors.factories.limit.EngLimitActorFactory.create(EngLimitActorFactory.java:79)

at com.inductiveautomation.ignition.gateway.tags.evaluation.TagActorRegistry$ClassificationRegistry.create(TagActorRegistry.java:134)

at com.inductiveautomation.ignition.gateway.tags.evaluation.TagActorRegistry.createActor(TagActorRegistry.java:57)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.ExecutableTag.configureActors(ExecutableTag.java:579)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.ExecutableTag.applyPropertyChangesToTag(ExecutableTag.java:426)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.managePropertyChanges(BasicTagDefinition.java:629)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.startPropModel(BasicTagDefinition.java:408)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.activate(BasicTagDefinition.java:748)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.onValidityChanged(BasicTagDefinition.java:707)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.refreshValidity(BasicTagDefinition.java:454)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.onPathValidityChanged(BasicTagDefinition.java:699)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.FolderNode.lambda$onPathValidityChanged$0(FolderNode.java:219)

at java.base/java.util.ArrayList.forEach(Unknown Source)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.FolderNode.onPathValidityChanged(FolderNode.java:219)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.setOwner(BasicTagDefinition.java:392)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.FolderNode.registerChild(FolderNode.java:175)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractTopLevelUdtTag.registerNodeToFolder(AbstractTopLevelUdtTag.java:81)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractTopLevelUdtTag.configureChild(AbstractTopLevelUdtTag.java:390)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractTopLevelUdtTag.manageMemberChanges(AbstractTopLevelUdtTag.java:249)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractTopLevelUdtTag.onSuperMembersChanged(AbstractTopLevelUdtTag.java:163)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.onSuperMembersChanged(TypesFolder.java:505)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.onValidityChanged(TypesFolder.java:454)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.setValidityState(TypesFolder.java:432)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.refreshValidity(TypesFolder.java:360)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.setSuperType(TypesFolder.java:299)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.notifyParentTypeChanged(TypesFolder.java:277)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.attach(TypesFolder.java:269)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder.registerComplexNode(TypesFolder.java:104)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractComplexTagDefinitionNode.startupInternal(AbstractComplexTagDefinitionNode.java:104)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.startup(BasicTagDefinition.java:717)

at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.FolderNode.startup(FolderNode.java:211)

at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processNewTag(TagEvaluationManagerImpl.java:410)

at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEditInternal(TagEvaluationManagerImpl.java:292)

at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEdit(TagEvaluationManagerImpl.java:238)

at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.saveTagConfigInternal(TagProviderImpl.java:604)

at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.lambda$importTagsAsync$17(TagProviderImpl.java:777)

at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.lambda$exec$2(TagProviderImpl.java:345)

at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)

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)

Look in the tags.json for an engLimitMode specifically set to null - it’s an error on our side.

Tags.json file has no None value, but this file contains only instance of existing udt.

engLimitMode was None in the udt after a json file import.
When we import udt definition from json files, if property value are not in the String enum, a None value is displayed in the designer.
It would be robust if the property could keep its default value

1 Like

That’s probably exactly what the fix will be. This will likely be fixed in 8.0.3, although I can’t guarantee so yet.

1 Like

@PGriffith, could you please provide a file with all json enums string to use in json files import for the properties names.

I’ve detected few errors in the doc.

Json enum doc mention :

  • Diagnostics instead of Diagnostic for priority
  • System instead of Auto for ackMode
  • Clamp_Off instead of No_Clamp for engLimitMode

https://docs.inductiveautomation.com/display/DOC80/Tag+Alarm+Properties
https://docs.inductiveautomation.com/display/DOC80/Tag+Properties

All wrong value are converted to None, and it seems trigger unexpected behaviors when creating instances of udt tags.

Hard to get all of them exhaustively, but:
engLimitMode: No_Clamp(0), Clamp_Low(1), Clamp_High(2), Clamp_Both(3)
deadbandMode: Absolute, Percent;
timestampSource: System(0), Value(1)
priority: Diagnostic, Low, Medium, High, Critical
ackMode: Unused(0), Auto(1), Manual(2)

You should be able to use the exact name as a string or the integer value (if specified) interchangeably.

1 Like

You can update
https://docs.inductiveautomation.com/display/DOC80/Tag+Properties

with TagGroupRate instead of TagGroup for the property executionMode

For posterity, the bug reported in this thread was fixed in the 8.0.3 nightly build that was uploaded today.

Additionally, the documentation typos that were mentioned have been corrected as well. Thank you for letting us know!

1 Like