When doing sets from automation we noticed that from time to time we get failures.
(Code: 0x80131500) Skyline.DataMiner.Net.Exceptions.DataMinerException: Set Parameter ('_512_13':63001/) Failed: 0x80004005
at Skyline.DataMiner.Automation.ScriptDummy.SetParameter(Int32 pid, String idx, Object value)
at Skyline.DataMiner.Automation.ScriptDummy.SetParameter(Int32 pid, Object value)
at Skyline.DataMiner.Automation.Element.SetParameter(Int32 pid, Object value)
at Script.ClearInterface(Engine engine, Element eElement, String sCVlanID, String interface, Boolean vlanPVID)
at Script.Run(Engine engine)
What can be the reason for the set to fail?
Michiel,
It's always good to start by understanding the expected behavior of an action when getting an exception.
I assume you are executing the following method from your automation script:
myElement.SetParameter(...);
where myElement is of type Element
This will try to set the value in a parameter with a specific value. In order to verify if this set was done correctly, DataMiner will check if that value is reflected in the corresponding read param.
When this could not be done after 50 retries with a 10s delay in between, the exception will be thrown.
Before we blame the check, we need to verify the use case: what are we trying to achieve with the set?
Imagine you want to configure an equipment:
- Automation sets a param on the Element representing the equipment
- This set will trigger a logical flow defined in the driver used by the Element to configure the Equipment
- The equipment itself might even take some time to have everything applied and e.g. send an "DONE" event back to the element
- This event might then in turn update the displayed values (the "read" params) with the new configuration values as they exist in the equipment.
So this means that, just like Jorge mentioned, the delay between the actual set and the update in the read param is caused by the logical flow in the driver. And this delay could be perfectly normal: it could just take a longer time to e.g. reconfigure the entire equipment. (Imagine a restart command)
Solution:
- Disable the automatic check and create your own in the automation script for the items that apply.
- This will give you the freedom to define your own timeout / retry system based on the use-case.
- Verify the logical flow of the driver
- does it make sense that it takes so long to update the read or is something wrong (an error, a design mistake ...)
Hi Michiel,
I saw a similar questions in the past:
Set Parameter in Automation Script failed
Is the option 'After executing a SET command, check if the read parameter or property has been set to the new value' enabled?
Check the protocol stack, element may busy processing another group.
Hi
Miguel, thanks for your reply.
I would like to know why the system is so slow from time to time, which leads to more than only these errors. It looks like the automation script does not get a response in time to confirm the set has been processed. I would prefer to increase the timeout time instead, otherwise, we need to implement our own validation which could also put extra load on the system to retrieve the parameter’s value for validation.