Fault Isolation Using Dual Code Paths
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Software updates that improve performance often introduce new errors, leading to frustrating recurring faults in software systems, particularly in complex programs like storage servers, where increasing complexity increases the likelihood of faults.
Innovation Solution
Implementing a fault-isolation mechanism with two code paths: a default code path for optimal performance and a safe code path for fault-prone scenarios, where entities involved in faults are quarantined to prevent repeated errors, using hierarchical quarantine criteria and release mechanisms to minimize disruption.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If the complexity of the software program is increased to improve performance, then the performance is improved, but the likelihood of faults increases
Solution Approach 1:
The patent segments the code into multiple distinct code paths (e.g., optimized path and safe path) that can be selectively executed. This allows the system to use complex optimized code for normal operations while having simpler fallback code available, thus maintaining high performance while reducing fault impact.
Solution Approach 2:
The patent changes the execution parameter by selecting different code paths based on fault detection. When a fault is detected in the optimized code path, the system switches to an alternative code path with different execution characteristics, effectively changing the runtime behavior to balance performance and reliability.
2Productivity
If a single code path is used for optimal performance, then the performance is optimized, but the system becomes vulnerable to recurring faults
Solution Approach 1:
The code is segmented into multiple independent code paths that perform the same function. The optimized code path handles normal operations at high performance, while alternative code paths are prepared for fault scenarios. This segmentation allows fault isolation without sacrificing performance for typical workloads.
Solution Approach 2:
Alternative code paths are prepared in advance as a cushion against potential faults in the optimized code path. When a fault occurs, the system can immediately switch to the pre-prepared alternative path, minimizing service disruption and maintaining reliability while preserving performance optimization benefits.
3Reliability
If multiple code paths are implemented for fault isolation, then the reliability is improved, but the device complexity increases
Solution Approach 1:
Multiple code paths are designed to be multi-functional, where each path can handle various operations and the same code path can serve multiple purposes. This universality reduces the need for entirely separate code paths for each function, thereby limiting the increase in overall system complexity while maintaining fault isolation capabilities.
Solution Approach 2:
The code paths are designed to be dynamically selectable rather than statically fixed. The system can adaptively choose which code path to execute based on runtime conditions and fault detection, making the complexity management more flexible and allowing the same code structure to handle multiple scenarios without requiring all paths to be always active.
Data Source
AI summary
Techniques are provided for isolating faults in a software program by providing at least two code paths that are capable of performing the same operation. When a fault occurs while the one of the code paths is being used to perform an operation, data that indicates the circumstances under which the fault occurred is stored. For example, a fault-recording mechanism may store data that indicates the entities that were involved in the failed operation. Because they were involved in an operation that experienced a fault, one or more of those entities may be “quarantined”. When subsequent requests arrive to perform the operation, a check may be performed to determine whether the requested operation involves any of the quarantined entities. If the requested operation involves a quarantined entity, a different code path is used to perform the operation, rather than the code path from which the entity is quarantined.


