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
Hi Saddam,
It will be better if you open the element log file and see what it says there, I think what you provided was the Watchdog errors.
In the logs that you provided i saw this...
System.ArgumentException: Object of type 'Skyline.DataMiner.Scripting.SLProtocol' cannot be converted to type 'Skyline.DataMiner.Scripting.SLProtocolExt'.
This would actually be caused by using SLProtocol when something from SLProtocolExt was called.
SLProtocolExt is just an interface that inherits from SLProtocol so everything available in SLProtocol is also available in SLProtocolExt but not the other way around.
If you are using SLProtocolExt you should be ok, something else is probably going on, can you check the actually element log file?
Hi Geovanny,
The above logs are actually the Element’s logs and the element name is : DataMiner Watchdog Errors – Production which we have developed internally to notify us of any Watchdog RTEs occurrences.
The protocol does not complain about any issues with SLProtocolExt in development and we only see that issue occasionally during runtime. So I suspect that there is something happening when the HTTP response of the second Multithreaded timer comes back, which required the use SLProtocol.