Asynchronous Transaction Monitoring via Task Object Correlation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Asynchronous transactions in distributed systems, such as those using the .NET framework, are difficult to monitor due to the lack of correlation between threads handling different parts of a business transaction.

Innovation Solution

The technology monitors asynchronous transactions by tracking data and transitions within the .NET framework, specifically through the use of task objects and continuation method calls, correlating asynchronous method calls with distributed business transactions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If asynchronous transactions are monitored in a distributed system with multiple threads, then monitoring coverage is improved, but thread correlation and transaction tracking become more difficult

Engineering Contradiction:
Improvemonitoring coverageVSAvoidthread correlation complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent introduces a correlation identifier as an intermediary element that is passed between threads during asynchronous method calls. This identifier acts as a mediator that connects the calling thread with the executed thread, enabling precise tracking of transaction flow across thread boundaries without requiring complex inter-thread communication mechanisms

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The monitoring system is segmented into distinct components: an instrumentation layer that injects monitoring code into asynchronous methods, a data collection layer that captures method call information, and a correlation layer that uses identifiers to link transaction segments across threads. This segmentation allows each component to handle specific aspects of monitoring independently, reducing overall system complexity

Inventive Principle:
Principle #1Segmentation

2Reliability

If traditional monitoring methods are used in .NET framework, then synchronous transactions can be tracked, but asynchronous transactions cannot be properly correlated

Engineering Contradiction:
Improvetransaction tracking accuracyVSAvoidasynchronous method support
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The monitoring system dynamically adapts to different execution contexts by detecting whether a method call is synchronous or asynchronous. For asynchronous calls, the system dynamically creates and manages task objects with correlation identifiers, while for synchronous calls it uses traditional tracking methods. This dynamic behavior allows the system to maintain reliability across both transaction types

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The monitoring framework implements a universal tracking mechanism that handles both synchronous and asynchronous transactions through a common interface. The correlation identifier system serves multiple functions: it acts as a transaction ID for synchronous calls and as a thread-linking key for asynchronous calls, making the monitoring system versatile across different execution models

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10165074B2Asynchronous custom exit points
Publication Date: 2018.12.25 CISCO TECHNOLOGY INC
  • US10165074B2 patent drawing
  • US10165074B2 patent drawing
  • US10165074B2 patent drawing

AI summary

The present technology may monitor an asynchronous transaction based on a custom exit point. Once an asynchronous method to be monitored has been identified, the transition framework may be tracked while executing the asynchronous method call. Within a .NET framework, monitoring may include tracking a task object, continuation method calls at the completion of a method, and tracking the continuation method as it executes other code. The asynchronous method may then be correlated within a business transaction using the returned task object data.