HAKOM PowerTSM® Documentation
Breadcrumbs

Version Information

New Features

Fixed Bugs

TSM-8514 Fixed Batch-Plugin error, when the template is in a one-drive managed folder

There used to be an error, when attempting to run the batch plugin with a template located in a folder managed by one-drive. The error was related to the way one-drive stores file paths. This has now been fixed.

TSM-8553: SQL Server: Reduced Locking When Deleting Time Series

On SQL Server, deleting a time series took a brief exclusive lock on the whole FWT_TIMESERIES table. This was unnecessary and could cause avoidable blocking with concurrent queries, most noticeably when deleting large numbers of time series at once. The table lock has been removed. Referential integrity is unchanged. SQL Server only — Oracle and PostgreSQL were not affected.

TSM-8698: System.FormatException at HAKOM.Framework.Services.Formatting.HeaderBasedJsonOutputFormatter.WriteResponseHeaders

Requests with an Accept header containing multiple media types (e.g. */*, application/json) no longer fail with a System.FormatException.

TSM-8714: Fixed Several Database Connection Leaks

Database connections could accumulate over time because several code paths did not reliably release their connections. The following issues have been fixed:

  • API keys: Creating, deleting, and listing API keys leaked one database connection per request whenever the authorization data was not served from the cache.

  • Health checks: When a repository had an internal time unit mismatch with the database, every readiness probe leaked one database connection.

  • Data Interface SQL import: A failure while initializing the import source leaked a database connection and instead of reporting the root cause, reported a misleading NullReferenceException.

  • TSM App workbooks: A failure during initialization of the workbook data access could leak a database connection.

  • Additionally, several places where database readers were not deterministically closed have been hardened (listing of external identities, API key enumeration).

Furthermore, when saving time series data failed due to a lost database connection, the correct error message is now always reported.

TSM-8724: Improved Reliability When Saving Time Series Attributes.

Saving time-series attributes is now more robust: when several users or interfaces save attributes at the same time, the system coordinates these operations automatically, and saves that previously could abort with a database error ("deadlock") are now retried automatically. Under exceptionally high load, a save may be rejected after a short waiting time with a clear error message and can then simply be repeated. Please note for applications that save attributes within their own database transaction: if an error occurs during such a save, the entire transaction is now rolled back (previously only the failing step), so a save can no longer leave partially applied attribute changes behind.

TSM-8727: WebTSM Services: Requests Without an API Version No Longer Fail for Certain Request Types

Requests that did not state an API version were rejected with an error if they used a less common request type — most notably HEAD requests, which could wrongly report the service as faulty. WebTSM Services now automatically uses the latest API version in these cases, so such requests are processed normally.

TSM-8738: WebTSM Services: Fixed Incorrect Health Status Reported After Startup

Fixed an issue in WebTSM Services where the /health/live endpoint could report the service as healthy although its license was not valid. This occurred when several health checks arrived at the same time shortly after service startup, which could cause monitoring systems to treat an unusable service as operational. The license is now verified once during service startup, and all health checks consistently report that result.

TSM-8756 Error loading DLLs from the assembly cache

When multiple instances shared an assembly cache, formula time series could occasionallyfail with a FileNotFoundException because newly compiled assemblies were deleted by another instance while being written to the cache. Assemblies are now written to the cache atomically.

TSM- 8758: Quotation Bulk Delete Reports Failures and No Longer Times Out on Large Tables

Failed quotation deletions no longer answer 204 No Content: the DELETE endpoints now return an error naming the affected time series and, for timeouts, the BulkDeleteBlockSize and command timeout settings. The deletion was reworked so its cost no longer grows with the size of the archive table, which caused command timeouts on large installations.

TSM-8761: WebTSMServices - "No valid license for compressed data tables" after service start

Concurrent license verifications during service startup could invalidate the license check and leave the service permanently rejecting requests for compressed time series until restart. License verification is now thread-safe at its core.

TSM-8813: Saving data into versioned spontaneous time series

This issue only affected installations running on a Microsoft SQL Server database.

When new values are saved into a time series with irregular timestamps (a "spontaneous" time series) that already contains data, the system automatically continues the previously existing value at the end of the newly saved period, so the data after that point stays correct.

For versioned time series this did not work reliably on SQL Server: the continued value could be wrong, or could be taken from a different version of the time series.

This has been fixed — after saving, the previous value of the correct version is now continued as expected.

TSM-8845 TSM App: Editing a Simple Attribute Changed its Allowed Value to Numeric

Fixed an issue in the attribute UI where saving an edited simple attribute over an HTTP connection reset its allowed value to "Numeric". The originally configured allowed value is now preserved.

TSM-8854: Update TSM.App to allow Plugins to set the AttributeValidityType

Plugins can now set the AttributeValidity of requests manually. Furthermore, they can also read attributes from http connections using ColumnModels.