Table of Contents

General Feature Release 10.6.9 – Preview

Important

We are still working on this release. Some release notes may still be modified or moved to a later release. Check back soon for updates!

Tip

Prerequisites

Before you upgrade to this DataMiner version:

Highlights

No highlights have been selected yet.

New features

Automation: Added support for running scripts in separate SLAutomation.ScriptRunner processes by SolutionId [ID 45557]

To help prevent DLL version conflicts between solutions, scripts can now run their C# code in separate SLAutomation.ScriptRunner child processes grouped by the script's SolutionId tag.

When a script has a SolutionId, DataMiner will create a runner process for that SolutionId (or reuse an existing one), and execute the script code in that process instead of the main SLAutomation process.

When you update a script that uses SolutionId, you can send an InvalidateScriptRunnerMessage to force creation of a new runner process on the next execution, ensuring the latest DLLs are loaded. A maximum of 10 runner processes can exist at the same time per SolutionId, and 50 runner processes in total.

Runner processes are automatically stopped after they have been idle for one hour. In the SLNetClientTest tool, you can view the current runners via Advanced > Automation... > Script Runners Overview.

Changes

Enhancements

Security enhancements [ID 45582] [ID 45646]

A number of security enhancements have been made.

'DataMiner Agent Minimum Requirements' BPA test: Enhanced time server check on hybrid clusters [ID 45661]

When the 'DataMiner Agent Minimum Requirements' BPA test checked the time server settings on hybrid clusters (i.e., clusters that include DaaS Agents as well as self-managed Agents), the existing checks were too strict. DaaS Agents always use VM Time as time server, whereas self-managed Agents typically use the local domain controller as time server.

From now on, the BPA test will compare the server times of all Agents in the cluster:

  • If the server times differ from 1 to 5 seconds, this will be flagged as a warning.
  • If the server times differ more than 5 seconds, this will be flagged as an issue.

APIGateway: gRPC connections that go through the Azure Cloud Relay service will now buffer event messages [ID 45671]

From now on, gRPC connections that go through the Azure Cloud Relay service will buffer event messages until the client confirms they have been received.

This will allow those connections to survive a temporary outage of the Azure Cloud Relay service, for example when restarting or deploying a new version.

SLLogCollector: Extra logging and progress updates while files are being archived [ID 45650]

In some cases, SLLogCollector can get stuck while archiving files.

To improve visibility during archiving, SLLogCollector will now log which file is currently being archived and update the busy message with the number of files copied so far.

SLLogCollector: Users can now choose whether to use the 'Output pending calls' option [ID 45722]

Up to now, when you opened the SLLogCollector, the Output pending calls option would automatically be selected when any of the running processes have runtime errors linked to elements. Users would not have any control over this option. From now on, they will.

If you want SLLogCollector to collect all pending calls for a number of the specific elements, do the following:

  1. Select the Output pending calls option.

  2. Click Load elements, and select all elements of which you want the pending calls to be collected.

    Elements with runtime errors will be automatically selected.

Note
  • The Output pending calls option will still automatically be selected when any of the running processes have runtime errors linked to elements.
  • Clearing the Output pending calls option will only hide the element selection grid. The current selection will not be cleared, so when you select the Output pending calls option again, everything is restored without any need to reload the elements.

Automation: Improved save logic for automation scripts [ID 45836]

A number of enhancements have been made to the save logic of automation scripts:

  • A per-script execution reference is now kept, so deletion of an in-use script DLL is deferred until all script executions have ended.
  • When a script is updated while another instance is still running, a new DLL is created as before, while the old DLL is kept until the running instance finishes.
  • Local save logic no longer deletes DLL files that were triggered by its own file-change event.
  • A newly saved script now waits until its (re)compilation is complete before it is executed.

ConfigureIIS.bat script will now ensure a dedicated Application Pool for the API application [ID 45842]

The ConfigureIIS.bat script will now ensure a dedicated Application Pool for the API application. This will avoid needless restarts of the API when files running under the same DefaultAppPool would change inside WebPages.

This new application pool is called DataMiner WebAPI AppPool. it is solely intended to serve as pool for the web API, and will not recycle periodically.

CloudFeed DxM has been upgraded to Microsoft .NET 10 [ID 45849]

The CloudFeed DxM has been upgraded to Microsoft .NET 10.

SLLogCollector will now automatically be configured to include a memory dump of SLPort and SLSNMPManager when a runtime error was detected in SLProtocol [ID 45865]

From now on, when you open the SLLogCollector tool, the tool will automatically be configured to include a memory dump of the SLPort and SLSNMPManager processes when a runtime error was detected in SLProtocol.

DOM: FilterElement<T> select extensions moved to the Skyline.DataMiner.Net.Apps.ManagerStore.Select namespace [ID 45902]

When you use the DOM helper method Read(IQuery<DomInstance>, SelectedFields<DomInstance>) for a select read, you can pass either an IQuery<T> object or a FilterElement<T> object.

Up to now, the extension method that allowed FilterElement<T> to be passed was located in the Skyline.DataMiner.Net.Messages namespace, which is often not imported in scripts. As a result, this could lead to confusing syntax errors where the filter appeared to be incorrectly converted to an IQuery.

Equivalent extension methods have now been added in the Skyline.DataMiner.Net.Apps.ManagerStore.Select namespace, which also contains SelectedFields<T>. The old extension methods have been converted to regular static methods so that already compiled code remains compatible with newer SLNetTypes versions.

DxMs upgraded [ID 45944]

The following DataMiner Extension Modules (DxMs), which are included in the DataMiner upgrade package, have been upgraded to the indicated versions:

  • DataMiner DataAPI 1.4.6

For detailed information about the changes included in those versions, refer to the DxM release notes.

DOM: Server-side support for string list FieldDescriptors [ID 46051]

When using DOM in scripts, ad hoc data sources, etc., from now on, it will be possible to specify a List<string> type on a normal FieldDescriptor. Up to now, only single fields were allowed. Now, multiple string values will also be supported.

Fixes

Problem when multiple Agents in a DMS synchronized with Azure Entra simultaneously [ID 44546]

Up to now, when multiple Agents in a DMS synchronized with Azure Entra simultaneously, in some cases, data could get corrupted due to simultaneous requests being launched to the Entra API from one of those Agents. As a result, users and/or groups could get lost.

Problem with SLPort when sending a large message over a WebSocket connection [ID 45625]

Up to now, when a large message (e.g., a message with a size of 400 KB) was sent over a WebSocket connection, in some cases, an internal buffer issue could cause the SLPort process to stop unexpectedly.

Automation: Problem with dependency order when recompiling script libraries [ID 45673]

Up to now, when a script library was updated, the dependency order was always assumed to be correct. However, in cases where libraries were loaded in a different order, a library could be recompiled before one of its dependencies.

For example, when Library A depended on Library B, and Library B was recompiled after Library A, then Library A would remain linked to an older version of Library B. This would cause an issue when, after the DataMiner Agent was restarted, the outdated DLLs were removed. Library A would then reference a DLL file that no longer existed.

From now on, the recompilation flow will ensure that libraries are recompiled in the correct dependency order, preventing references to outdated dependency versions.

Protocol object outside of QAction run would incorrectly not be notified when the element was stopped [ID 45749]

When an SLProtocol or SLProtocolExt object that was passed as argument in the QAction method had been stored and reused when the QAction was already finished, up to now, this object would not be notified when the element was stopped.

This could lead to issues. For example, when a separate thread that was running in SLScripting when the element was stopped made calls on the SLProtocol object, the SLScripting process could crash as the connection with the SLProtocol process was no longer valid.

Also, calling protocol.IsActive would incorrectly indicate that the element was still active.

Problem when using the 'Get parameter table by alias' data source against a STaaS database [ID 45766]

The Get parameter table by alias data source retrieves a parameter table from the indexing database using the specified alias.

Up to now, this data source would only check whether the DataMiner System included an indexing database. It would not check the type of the database. As it currently only supports Elasticsearch and OpenSearch, up to now, exceptions would be thrown when it was used to retrieve data from a STaaS database.

From now on, the Get parameter table by alias data source will only be available when the DataMiner System includes an indexing database of type Elasticsearch or OpenSearch.

Automatic alarm grouping: Memory leak caused by alarm duplication on element restart [ID 45831]

When an element was frequently stopped and restarted, up to now, alarms would accumulate as duplicates in the internal alarm grouping counters, causing a memory leak in the SLAnalytics process. Alarms would incorrectly not be removed from the element's alarm counter when the element stopped, and were re-added as new entries each time the element restarted.

From now on, alarms will be properly removed from the element alarm counter when an element stops. An additional safeguard has also been added to prevent duplicate alarm entries from being inserted into the counter if the same alarm tree already exists.

Problem occurring while SL* services were being shut down would prevent DataMiner from starting up again [ID 45839]

Up to now, while the SL* services were being shut down, in some cases, an access violation crash could occur.

As a result, DataMiner could fail to start up again.

Reconnecting a WMI connection could cause the SLProtocol process to stop unexpectedly [ID 45851]

Up to now, in some cases, reconnecting a WMI connection could cause the SLProtocol process to stop unexpectedly.

In addition, opening StreamViewer would incorrectly show all items in the tree structure as Undefined.

From now on, reconnecting a WMI connection will no longer cause SLProtocol to stop unexpectedly, and StreamViewer will correctly show the group and action executing the WMI query.

Problem with SLProtocol when a queued QAction finished after an element had been stopped [ID 45882]

Up to now, when an element was stopped while queued QActions were still running, in some cases, one of those QActions could finish after SLProtocol had already cleaned up its internal objects.

As a result, when that QAction thread then tried to update element metrics, it would attempt to access an object that had already been deleted, causing the SLProtocol process to crash.

When DataMiner was stopped, the SLAnalytics process could get stuck while being stopped [ID 45910]

When the DataMiner software was stopped, in some cases, the SLAnalytics process could get stuck while being stopped.

Smart-serial client connection state incorrectly shown as undefined [ID 45931]

Up to now, when an element with a smart-serial connection acted as a client, in some cases, the Connection State column in the Communication Info table on the General parameters page would incorrectly show Undefined.

From now on, that column will correctly show the actual connection state, e.g., Connected.

StorageModule DxM would fail to start because of a WebSocket issue [ID 45933]

Because of a WebSocket issue, in some rare cases, the StorageModule DxM would fail to start. As a result, DataMiner would not be able to start up.

Problem with SLDataMiner when SLWatchdog requested element statistics while an element was being stopped [ID 45945]

In some rare cases, SLDataMiner could stop unexpectedly when SLWatchdog requested statistics about the number of active elements while an element was being stopped.

STaaS: Page size would incorrectly be ignored when retrieving DOM instances from a STaaS database [ID 45952]

When DOM instances were retrieved from a STaaS database, up to now, the page size would incorrectly be ignored.

SLAutomation could stop unexpectedly when Engine methods were used from different threads [ID 45955]

In some cases, SLAutomation could stop unexpectedly when automation scripts used Engine methods from different threads at the same time.

This was caused by non-thread-safe access to cached element information, e.g., when engine.FindElement and engine.CreateExtraDummy were called concurrently.

Access to that cache has now been made thread safe.

Note

The Engine object itself is still not thread safe. Scripts should not use the same Engine instance from more than one thread at a time.

SLSNMPManager process could stop working unexpectedly when it received a malformed SNMP packet [ID 45993]

Up to now, the SLSNMPManager process could stop working unexpectedly when, while using SNMP++, it received a malformed SNMP packet containing an integer type with length zero.

BrokerGateway could stop unexpectedly on startup because of concurrent semaphore access [ID 46009]

In some cases, BrokerGateway could stop unexpectedly during startup when multiple threads tried to create a semaphore with the same key at the same time. This could cause the semaphore to be released more than once, which made BrokerGateway crash.

Invalid matrix 'columntypes' definition could cause SLProtocol to stop unexpectedly [ID 46011]

Up to now, when a matrix parameter had fewer columntypes defined in its options than there were dimensions, SLProtocol could stop unexpectedly when protocol.SendToDisplay was called on that matrix parameter.

From now on, missing matrix outputs that are not covered by columntypes will be handled correctly.

Service card reports could show incorrect alarm counts on clustered databases [ID 46048]

Up to now, on clustered databases (Cassandra Cluster or STaaS), alarm counts in the Reports section of a service card could be duplicated by the number of DataMiner Agents involved in that service.

From now on, those alarm counts will be calculated correctly when a service includes elements hosted on multiple Agents.

Advanced search syntax