Diffusion 6.12 update boosts real-time data, metrics & control
DiffusionData has released Diffusion 6.12, introducing a range of enhancements aimed at improving development speed, optimising resource usage, and delivering consistent real-time data performance.
Grethe Brown, Chief Executive Officer at DiffusionData, said, "As a company, we've always been driven by the insights of our community, ensuring our solution directly aligns with client needs. By listening closely to evolving requirements, we've introduced enhancements to our framework that addresses real-world developer challenges while boosting operational efficiency."
"These improvements are designed to accelerate productivity, reduce complexity, and create tangible business value. The ongoing feedback from our customers fuels continuous innovation in Diffusion, enabling our clients to deliver better outcomes and stay competitive."
Set operation enhancements
The 6.12 release includes key changes to the 'Set' operation within Topic Views. These changes now allow output structures, whether objects, arrays, or roots, to be emptied before copying in selected data.
This feature can simplify efforts to reduce large datasets to only necessary items. New special values, called empty_object and empty_array (or $O and $A), can be used for this purpose. For instance, set(, $O) clears the entire output, while set(/pointer, $O) targets only a specific structure.
The update also introduces a "set to pointer" capability, enabling data to be copied directly to the same pointer location in the output. This is particularly relevant for repopulating structures after they are cleared. Additionally, full objects or arrays can be copied, not just scalar values, which is beneficial for restructuring higher-level data components.
Metrics and alerts
A new metric notifications feature has been added. Users can now configure alerts to be triggered and written to topics when defined criteria are met, such as memory utilisation thresholds being exceeded.
Session authentication
Session lifecycles have been adjusted through the introduction of a new "$ExpiryTime" session property, giving authenticators the ability to determine when a session should automatically close, specified in milliseconds. If not set, sessions will not expire automatically.
Clients now have access to a re-authenticate method, replacing changePrincipal, which allows them either to switch principals or re-authenticate with the same one, updating session properties if needed.
The getSessionProperties function allows clients to review their fixed session properties, including expiry time. Administrators have the ability to forcibly close another client's session using the revokeAuthentication command.
As a result of these introductions, session management covers automatic expiry, refreshing via re-authentication, and administrative revocation as necessary.
Topic view specification and string matching
With this version, topic view inserts can now be located at any point in a specification, instead of being required at the end. This allows more flexibility as inserts can be interspersed with other transformations.
The update also includes regular expression support in the form of a new matches or =~ operator. This enables advanced string comparisons when using topic view process conditionals, allowing developers greater flexibility and precision in data matching scenarios.
Session lock and subscription control
A new API in the ClientControl feature enables control clients to query session locks, with methods that return details on all current session locks or a specific named session lock.
The SubscriptionControl feature is now cluster-aware, so subscribe and unsubscribe session commands will apply to all sessions in a cluster, rather than only those on the same server as the control client. This change removes the need for control clients to separately connect to each server within a cluster during session management.
Permissions and topic access
The SELECT_TOPIC permission requirement has been expanded. Now, a session must have SELECT_TOPIC permission on all paths that a topic selector could match, not just the prefix. Previously, permission granted at the top-level path allowed access to all branches below, preventing selective access control.
The updated model allows for permissions to be granted or revoked at more granular levels, and for full path patterns, permissions must exist at all matching paths. This is intended to prevent unauthorised access via advanced regular expressions and supports more secure and flexible topic access management.
Journal configuration
The Journal feature now comes with simplified configuration. It is set in the Server.xml file, and an example block with the feature disabled is issued. A sample configuration file in the Diffusion ./etc installation folder shows all configurable actions, with all actions initially disabled.
Subscription scopes
With this release, when multiple components share a Diffusion connection, subscriptions can be assigned to named scopes. Consequently, unsubscribing within one scope does not affect subscriptions created with a different scope. New methods now accept a scope parameter, and legacy methods will assign all such subscriptions to a default scope, making it possible to localise subscriptions as needed.
Other technical updates
From version 6.12 onwards, both the Diffusion server and Java Client require Java 17. Connections from older clients remain supported, although the latest Java Client must be used to access all new features. The JavaScript Client and Console expand browser support to include Safari, and the Dotnet SDK client can use a custom URL path with the ISessionFactory Open and OpenAsync APIs using new attributes for server host, port, secure transport, and request path.