Debugging Remote Vertex Code via Local Extraction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging failed vertex code in a distributed computing environment is inefficient, often requiring trial and error, and can be challenging due to the need to identify and reproduce issues on remote processing nodes, especially in large-scale big data solutions where resources and access may be limited.

Innovation Solution

The solution involves using an execution structure generated by a job compiler to detect and isolate failed vertex code, gathering it along with associated data and state onto a local test machine for debugging, allowing focused debugging without compromising security or wasting resources on functioning nodes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If conventional trial and error debugging techniques are used on remote processing nodes, then debugging can be performed, but time is wasted and resources are consumed on vertices that operated properly

Engineering Contradiction:
Improvedebugging timeVSAvoiddebugging efficiency
Core Design Contradiction:
Loss of timeVSProductivity

Solution Approach 1:

The patent extracts only the failed vertex code and its associated data/state from the distributed processing environment onto a local test machine, rather than debugging all vertices or maintaining full distributed setup. This extraction enables focused debugging of only the problematic component, eliminating waste of time and resources on functioning vertices.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The debugging process is segmented into identifying the specific failed vertex, extracting only that vertex's code and associated data/state, and debugging it in isolation on a local machine. This segmentation separates the debugging task from the entire distributed system, allowing efficient focus on the specific problem area.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If vertex code and data are gathered onto a local test machine for debugging, then focused debugging is enabled, but security concerns arise

Engineering Contradiction:
Improvedebugging accessibilityVSAvoidsecurity risk
Core Design Contradiction:
Ease of operationVSObject-affected harmful factors

Solution Approach 1:

The patent introduces a job compiler and execution structure as intermediaries that manage the extraction and transfer of vertex code and data to the local test machine. These intermediaries control what is gathered and how it is transferred, enabling debugging accessibility while maintaining security through structured, authorized access rather than direct exposure of sensitive data.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If processing nodes are quickly reclaimed upon completion, then resource efficiency is improved, but debugging capability is reduced

Engineering Contradiction:
Improveresource efficiencyVSAvoiddebugging capability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent performs preliminary extraction of the failed vertex code and its associated data/state from the processing node before the node is reclaimed or reused. This preliminary action ensures that the necessary debugging materials are preserved and transferred to the local test machine, maintaining debugging capability despite rapid node reclamation for resource efficiency.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10185647B2Debugging remote vertex code on test machine
Publication Date: 2019.01.22 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10185647B2 patent drawing
  • US10185647B2 patent drawing
  • US10185647B2 patent drawing

AI summary

The supporting of debugging of failed vertex code on a test machine. This debugging is made possible even though the vertex code failed while on a remote processing node, and is but one of multiple, and potentially innumerable vertices that run in a distributed environment. This represents a vast technical improvement over prior ad hoc methods for trying to debug a large distributed application, since time is not wasted on vertices that operated properly, but rather debugging is focused on the problem vertex. Even reproducing the failure is a huge technical step forward.