We have an HTTP protocol with two multi-threaded timers where one of them runs first and updates the table (Status column) and the other timer would then scan the table for the new status that belongs to it to run the row.
We occasionally see the following exceptions in the logs and they clear once we restart the element. Pid 1001 is the index column of the multi-threaded timer table. QA 1006 is the QAction that parses the response of the second timer.
We use SLProtocolExt in all QAs instead of SLProtocl.
2021/06/09 09:24:54.963|SLProtocol - 3624 - Dataminer Watchdog Errors - Production|97156|CQAction::RunWrapped|DBG|-1|Script 1006 triggered by parameter 1001 from element 'Dataminer Watchdog Errors - Production' threw an unhandled exception. Please check the element log-file.
2021/06/09 09:24:54.963|SLProtocol - 3624 - Dataminer Watchdog Errors - Production|97156|CQAction::Run|ERR|-1|QAction [1006] triggered by [pid=1001/idx=0/pk=1/user=] failed. (0x800402DA)
Input: new =
Input: old = (2) ~ 0 (1) ~ 0 HTTP/1.1 200 OK ~ 1 (1) ~ 0 <?xml version='1.0' encoding='UTF-8'?>
<results preview='0'>
<meta>
<fieldOrder>
<field groupby_rank="0">_time</field>
<field groupby_rank="1">host</field>
<field groupby_rank="2">issue</field>
<field>count</field>
</fieldOrder>
</meta>
<result offset='0'>
<field k='_time'>
<value><text>2021-06-07T00:16:01.000+00:00</text></value>
</field>
<field k='host'>
<value h='1'><text>CHIV3DMAP06a</text></value>
</field>
<field k='issue'>
<value><text>HALFOPEN RTE</text></value>
</field>
<field k='count'>
<value><text>4</text></value>
</field>
</result>
<result offset='1'>
<field k='_time'>
<value><text>2021-06-07T00:24:23.000+00:00</text></value>
</field>
<field k='host'>
<value h='1'><text>CHIV4DMAP06b</text></value>
</field>
<field k='issue'>
<value><text>HALFOPEN RTE</text></value>
</field>
<field k='count'>
<value><text>1</text></value>
</field>
</result>
<result offset='2'>
<field k='_time'>
<value><text>2021-06-07T00:24:38.... (34573 chars)
Input: extra = <NULL>2021/06/09 09:25:00.970|SLManagedScripting.exe|ManagedInterop|ERR|-1|148|Exception during execution:
Cookie: 41
Content 1: VT_ARRAY|VT_VARIANT (7)
0 VT_I4 : 1001
1 VT_I4 : 22833
2 VT_I4 : 129
3 VT_BSTR : Dataminer Watchdog Errors - Production
4 VT_BSTR : ...
Content 2: VT_ARRAY|VT_VARIANT (6)
0 VT_I4 : 0
1 VT_BSTR : 1
2 VT_EMPTY
3 VT_EMPTY
4 VT_R8 : -1.000000... .
System.ArgumentException: Object of type 'Skyline.DataMiner.Scripting.SLProtocol' cannot be converted to type 'Skyline.DataMiner.Scripting.SLProtocolExt'.
at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast)
at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at CManagedScript.Run(CManagedScript* , Int32 iCookie, IUnknown* pILog, IUnknown* pProtocol, tagVARIANT* varParameters, tagVARIANT* varRowInfo, tagVARIANT* pvarReturn)
InnerException:
No InnerExcpetion
2021/06/09 09:25:00.971|SLProtocol - 3624 - Dataminer Watchdog Errors - Production|89660|CQAction::RunWrapped|DBG|-1|Script 1006 triggered by parameter 1001 from element 'Dataminer Watchdog Errors - Production' threw an unhandled exception. Please check the element log-file.
2021/06/09 09:25:00.971|SLProtocol - 3624 - Dataminer Watchdog Errors - Production|89660|CQAction::Run|ERR|-1|QAction [1006] triggered by [pid=1001/idx=0/pk=1/user=] failed. (0x800402DA)
Input: new =
Input: old =
Input: extra = <NULL>2021/06/09 09:25:06.987|SLManagedScripting.exe|ManagedInterop|ERR|-1|190|Exception during execution:
Cookie: 41
Content 1: VT_ARRAY|VT_VARIANT (7)
0 VT_I4 : 1001
1 VT_I4 : 22833
2 VT_I4 : 129
3 VT_BSTR : Dataminer Watchdog Errors - Production
4 VT_BSTR : ...
Content 2: VT_ARRAY|VT_VARIANT (6)
0 VT_I4 : 0
1 VT_BSTR : 1
2 VT_EMPTY
3 VT_EMPTY
4 VT_R8 : -1.000000... .
System.ArgumentException: Object of type 'Skyline.DataMiner.Scripting.SLProtocol' cannot be converted to type 'Skyline.DataMiner.Scripting.SLProtocolExt'.
at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast)
at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at CManagedScript.Run(CManagedScript* , Int32 iCookie, IUnknown* pILog, IUnknown* pProtocol, tagVARIANT* varParameters, tagVARIANT* varRowInfo, tagVARIANT* pvarReturn)
InnerException:
No InnerExcpetion
2021/06/09 09:25:06.988|SLProtocol - 3624 - Dataminer Watchdog Errors - Production|89748|CQAction::RunWrapped|DBG|-1|Script 1006 triggered by parameter 1001 from element 'Dataminer Watchdog Errors - Production' threw an unhandled exception. Please check the element log-file.
2021/06/09 09:25:06.988|SLProtocol - 3624 - Dataminer Watchdog Errors - Production|89748|CQAction::Run|ERR|-1|QAction [1006] triggered by [pid=1001/idx=0/pk=1/user=] failed. (0x800402DA)
Input: new =
Input: old =
Input: extra = <NULL>
QA 1006 Run method code:
public void Run(SLProtocolExt protocol)
{
try
{
var rowKey = protocol.RowKey();
var result = protocol.OldRow();if (result == null) return;
....
Is this a software-related issue or we need to change to use SLProtocol instead of SLProtocolExt?
That seems to be a software issue. In the background it is first checking the type of object to be created: either SLProtocolExt if found or defaults to SLProtocol if not found. That object is then being used to invoke the Run method (or entrypoint) of the QAction.
Since it's trying to do this with the SLProtocol object, it means that somewhere it's failing to detect that it should have been SLProtocolExt.
The next time this issue happens, would it be possible to provide us with a memory dump? This can easily be done by opening a remote desktop session to the DMA where the element is running and execute C:\Skyline DataMiner\Tools\SLLogCollector\SL_LogCollector.exe . In that tool enable the checkbox "Include memory dump" and then select the process "SLScripting" and then select to either "Upload to Skyline" or save it somewhere and provide it afterwards to us. Click on the "Start" button and it will take the necessary items.
If possible then also provide the protocol driver to your Skyline contact, that makes it a bit more easy to understand what it's trying to run.
To avoid the software issue from happening, the best workaround is to use SLProtocol object instead of SLProtocolExt.
Besides the software issue, if you're not using any of the extra items of SLProtocolExt then the preference should be to use SLProtocol as that one is not using as much memory as SLProtocolExt