Debugging Streaming Applications via Tuple Flow Control

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging streaming applications is challenging due to their fast in-memory processing and lack of capabilities to replay data or return to a previous state, making it difficult to identify and correct errors, and standard debugging methods are not intuitive or effective for these applications.

Innovation Solution

A streams debug controller that leverages the consistent region framework to create a debug region, allowing users to manipulate the tuple flow, suspend it, and replay data, enabling efficient debugging by defining a subgraph for debugging and controlling the tuple flow within a streaming application without affecting other data flows.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If standard debugging methods are used on streaming applications, then debugging capability is provided, but debugging effectiveness is poor due to fast in-memory processing and inability to replay data

Engineering Contradiction:
Improvedebugging capabilityVSAvoiddebugging effectiveness
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The patent divides the streaming application into debug regions and non-debug regions. Debug regions are specific subgraphs where debugging operations can be applied, allowing selective debugging without affecting the entire application. This segmentation enables targeted debugging of problematic areas while maintaining fast processing in other regions.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements preliminary actions by suspending tuple flow before debugging operations and restoring it afterward. The system also performs preliminary data capture and state preservation, allowing developers to replay data and examine application state at specific points before errors occur, rather than trying to debug fast-moving streams in real-time.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If tuple flow is suspended for debugging, then error identification is enabled, but processing time is increased

Engineering Contradiction:
Improveerror identificationVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the application graph into debug regions where tuple flow can be suspended for debugging and non-debug regions that continue processing normally. This allows error identification in specific problematic areas without stopping the entire streaming application, minimizing overall processing time impact.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system applies debugging actions partially by suspending tuple flow only in specific debug regions and only when debugging is actively requested, rather than suspending the entire application. This partial action enables error identification while maintaining processing continuity in other parts of the system.

Inventive Principle:
Principle #16Partial or excessive action

3Measurement precision

If debug region is established to mark subgraph, then debugging precision is improved, but device complexity is increased

Engineering Contradiction:
Improvedebugging precisionVSAvoidsystem complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent introduces debug regions as marked subgraphs within the streaming application. These regions are defined by specifying entry and exit points, creating clearly bounded areas for debugging. This segmentation improves debugging precision by allowing targeted examination of specific computational paths while maintaining a manageable level of complexity through localized debugging zones.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a debug controller as an intermediary component that manages debugging operations. This mediator handles the complexity of suspending and resuming tuple flow, capturing and replaying data, and coordinating with the job control plane, thereby isolating the complexity from the main application logic and providing a clean interface for developers.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Ease of operation

If tuple flow manipulation is allowed, then debugging control is enhanced, but performance overhead is incurred

Engineering Contradiction:
Improvedebugging controlVSAvoidperformance
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent segments tuple flow manipulation to occur only within debug regions rather than affecting the entire streaming application. This allows enhanced debugging control in specific areas while maintaining normal high-performance processing in non-debug regions, minimizing overall performance overhead.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system implements periodic action by suspending tuple flow temporarily only when debugging operations are actively requested, then resuming it immediately afterward. This periodic suspension rather than continuous suspension allows debugging control when needed while maintaining high productivity during normal operation, reducing overall performance overhead.

Inventive Principle:
Principle #19Periodic action

Data Source

PatentUS10956306B2Debugging streaming applications using debug regions
Publication Date: 2021.03.23 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10956306B2 patent drawing
  • US10956306B2 patent drawing
  • US10956306B2 patent drawing

AI summary

A method for debugging a streaming application is provided. The method may include establishing, by a processor, a debug region in the streaming application to mark a subgraph for debugging. The method may further include receiving a tuple flow suspension notification from a job control plane. The method may also include displaying a plurality of debugging options for debugging a streaming application on a graphical user interface based on the received tuple flow suspension notification. The method may further include determining a debugging option from the displayed plurality of debugging options based on a user selection on the graphical user interface. The method may also include translating the determined debugging option into a format compatible with the job control plane. The method may further include transmitting the translated debugging option to the job control plane.