Automatic Error Fixing for High-Availability Applications
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing software components, especially web services, often fail to handle intermittent faults correctly due to unreliable networks, leading to high chances of encountering error-inducing inputs, which can cause program crashes and are not effectively managed by programmers.
Innovation Solution
The implementation of automatic error fixing techniques that involve obtaining output from a remote computer function, applying a fixer routine to the input arguments to produce new arguments, and using the output from these new arguments as the corresponding output from the original input, thereby preventing crashes and ensuring program continuity.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If programmers manually handle faults in web services, then some error cases can be addressed, but the majority of error-inducing inputs cause program crashes due to incorrect fault handling
Solution Approach 1:
The system implements self-service by automatically detecting faults, generating candidate fixes, and applying corrections without human intervention. The automatic fault handler monitors program execution, identifies error-inducing inputs, and applies fixes from a generated repertoire of corrections, enabling the system to handle its own faults independently.
Solution Approach 2:
The invention introduces an intermediary component—the automatic fault handler—that sits between the web service and error-inducing inputs. This handler intercepts faults, processes them through a learned repertoire of fixes, and applies appropriate corrections, mediating between the unreliable network environment and the vulnerable program.
2Reliability
If retry mechanisms are used for network failures, then some intermittent faults can be recovered, but other error types such as division by zero or missing data cannot be handled
Solution Approach 1:
The system applies parameter changes by modifying input parameters to correct faults. The automatic fault handler generates and applies transformations such as changing null values to default values, correcting malformed inputs, adjusting numeric parameters, and modifying string inputs to resolve diverse error types including division by zero and missing data issues.
Solution Approach 2:
The invention achieves universality by creating a multi-functional fault handling system that can address multiple error types through a single unified mechanism. The learned repertoire of fixes encompasses various correction strategies that can handle network failures, division errors, missing data, and other fault types, making the system adaptable to diverse error conditions.
3Reliability
If extensive fault handling code is implemented, then program reliability improves, but code complexity and maintenance difficulty increase
Solution Approach 1:
The invention extracts fault handling logic from the main program body into a separate automatic fault handler component. This extraction removes complex fault handling code from the core application logic, isolating it in a dedicated module that learns and applies fixes independently, thereby simplifying the overall program structure while maintaining high reliability.
Solution Approach 2:
The system performs preliminary action by pre-learning a repertoire of fixes from historical fault data before actual faults occur. This advance preparation creates a library of correction strategies that can be quickly applied when faults occur, eliminating the need for complex real-time decision-making code and simplifying the fault handling structure.
Data Source
AI summary
Output is obtained from a remote computer function on a first set of arguments. Responsive to determining that the output exhibits an error, a fixer routine, other than a retry, is applied to the arguments to produce new arguments. Output is obtained from the remote computer function on the new arguments. In a case where the output from the remote computer function on the new arguments is acceptable, the output from the remote computer function on the new arguments is used as a corresponding output from the remote computer function on the first set of arguments. These steps can advantageously be carried out without modifying program code of the remote computer function and without access to the program code of the remote computer function; for example, by a wrapper which black-box wraps the remote computer function.


