[BUG-13226]System.tag.configure error

I was using system.tag.configure to alter some existing UDT tags to a different type based on a dataset that represented the tag folder and tag quantity. Most of the tags were created with no issue, however there were somewhere between 2-5 in each group of about 45 tags that were unable to be created and had a quality in the returned status list of Error_Exception. The error for one of the tag edits from the logs and the script are both pasted below. This is using b2019031502. Once I deleted the offending tags and ran the script with the tags nonexistent the tags were created fine.

Script:

pcsDataset = system.tag.readBlocking(['[NC21-SITE]Configuration/Device Quantities/PCS/Inverters'])[0].value
rowCount = pcsDataset.getRowCount()
for row in range(rowCount):
	pcsNum = pcsDataset.getValueAt(row,'PCS')
	invQty = pcsDataset.getValueAt(row,'Inverter Quantity')
	print 'PCS =',pcsNum
	print 'Inverter Quantity -',invQty
	basePath = '[NC21-SITE]PCSs/PCS '+str(pcsNum)+'/Inverters'
	tagList = []
	for invNum in range(1,invQty+1):
		deviceName = 'PCS '+str(pcsNum)+' Smart Logger'
		offset = ((invNum - 1) * 25) + 51000
		parameters = {'InverterID':invNum,
					'Offset':offset,
					'DeviceName':deviceName,
					'UnitId':'1'}
		tagName = 'Inverter '+str(invNum)
		tagType = 'UdtInstance'
		typeID = 'Inverters/INV SMRT LOG V2'
		tagDict = {'name':tagName,
					'accessRights':'Read_Write',
					'tagType':tagType,
					'typeID':typeID,
					'parameters':parameters}
		tagList.append(tagDict)
	smartLoggerDeviceName = 'PCS '+str(pcsNum)+' Smart Logger'
	totalInverters = invQty
	smartLoggerUnitID = '1'
	smartLoggerParameters = {'DeviceName':smartLoggerDeviceName,
							'TotalInverters':totalInverters,
							'UnitId':smartLoggerUnitID}
	smartLoggerTagDict = {'name':'Smart Logger',
						'tagType':'UdtInstance',
						'typeId':'Smart Logger/SMRT LOG V2',
						'accessRights':'Read_Write',
						'parameters':smartLoggerParameters}
	tagList.append(smartLoggerTagDict)
	print basePath
	print len(tagList)
	system.tag.configure(basePath,tagList)

Error from gateway logs:

provider	19Mar2019 14:35:02
	Error processing edit for tag path '[NC21-SITE]PCSs/PCS 8/Inverters/Inverter 7': Error_Exception

provider	19Mar2019 14:35:02
	Error encountered processing tag edit

java.util.ConcurrentModificationException: null
at java.base/java.util.HashMap$HashIterator.nextNode(Unknown Source)
at java.base/java.util.HashMap$ValueIterator.next(Unknown Source)
at com.inductiveautomation.ignition.gateway.tags.subscriptions.ProviderSubscriptionManagerImpl$SubscriptionNode.registerSourceNode(ProviderSubscriptionManagerImpl.java:457)
at com.inductiveautomation.ignition.gateway.tags.subscriptions.ProviderSubscriptionManagerImpl.register(ProviderSubscriptionManagerImpl.java:169)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.applyPropertyChangesToTag(BasicTagDefinition.java:652)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.FolderNode.applyPropertyChangesToTag(FolderNode.java:303)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractComplexTagNode.applyPropertyChangesToTag(AbstractComplexTagNode.java:121)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractComplexTagDefinitionNode.applyPropertyChangesToTag(AbstractComplexTagDefinitionNode.java:119)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractTopLevelUdtTag.applyPropertyChangesToTag(AbstractTopLevelUdtTag.java:284)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.UdtInstanceNode.applyPropertyChangesToTag(UdtInstanceNode.java:68)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.managePropertyChanges(BasicTagDefinition.java:622)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.startPropModel(BasicTagDefinition.java:401)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.activate(BasicTagDefinition.java:738)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.onValidityChanged(BasicTagDefinition.java:697)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.refreshValidity(BasicTagDefinition.java:447)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.setInheritedConfiguration(BasicTagDefinition.java:466)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.onValidityChanged(TypesFolder.java:446)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.setValidityState(TypesFolder.java:430)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.refreshValidity(TypesFolder.java:358)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.setSuperType(TypesFolder.java:297)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.TypesFolder$AbstractTypeNode.notifyParentTypeChanged(TypesFolder.java:275)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractComplexTagDefinitionNode.applyPropertyChangesToTag(AbstractComplexTagDefinitionNode.java:121)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.AbstractTopLevelUdtTag.applyPropertyChangesToTag(AbstractTopLevelUdtTag.java:284)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.complex.UdtInstanceNode.applyPropertyChangesToTag(UdtInstanceNode.java:68)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.managePropertyChanges(BasicTagDefinition.java:622)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.lambda$new$0(BasicTagDefinition.java:92)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.TagPropertyModel.dispatchPropertiesChanged(TagPropertyModel.java:81)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.TagPropertyModel.onPropertiesChanged(TagPropertyModel.java:42)
at com.inductiveautomation.ignition.gateway.tags.runtime.nodes.BasicTagDefinition.configureTag(BasicTagDefinition.java:533)
at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processNewTag(TagEvaluationManagerImpl.java:391)
at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEditInternal(TagEvaluationManagerImpl.java:282)
at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEdit(TagEvaluationManagerImpl.java:236)
at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.saveTagConfigInternal(TagProviderImpl.java:574)
at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.lambda$saveTagConfigsAsync$9(TagProviderImpl.java:534)
at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.lambda$exec$2(TagProviderImpl.java:315)
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)

Thanks for reporting this. I think we’ve tracked it down, probably won’t get merged in tonight, but hopefully by tomorrow night.

Any word on if this has been fixed yet?

This issue was fixed in the build that was uploaded today (4/1). Please let us know if you continue to see this behavior after upgrading.

1 Like