Dynamic Software Updating Function Retirement via Collector Thread

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing dynamic software updating (DSU) systems fail to efficiently retire older versions of software applications without synchronization overhead, especially in multi-threaded environments where multiple versions coexist concurrently.

Innovation Solution

A method and system utilizing reference counters and a collector-thread to monitor and retire dynamically updatable functions by tracking active calls across multiple execution threads, allowing for the deletion of older versions without synchronization, and enabling indirect calls to the most recent version through a pointer system.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a lockstep system is used to ensure all threads migrate to the newer version before retiring the older version, then system consistency is maintained, but update time and productivity are reduced due to synchronization overhead

Engineering Contradiction:
Improvesystem consistencyVSAvoidupdate speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system divides the update process into independent per-thread tracking units. Each thread's version execution state is monitored separately through individual counters, allowing parallel progression rather than forced sequential migration. This segmentation enables threads to retire old versions at different times based on their own execution pace, eliminating global synchronization barriers while maintaining overall system consistency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a collector thread as an intermediary that periodically checks counter values without blocking execution threads. This intermediary approach allows the system to monitor version usage across all threads and coordinate retirement decisions without requiring threads to synchronize at specific points, thus maintaining consistency while avoiding synchronization overhead.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If multiple versions of the same module execute concurrently in a multiple-version system, then productivity is improved through parallel updates, but device complexity increases due to version management overhead

Engineering Contradiction:
Improveparallel update capabilityVSAvoidversion management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent extracts the version tracking logic from the main execution flow and places it in a separate collector thread that periodically checks counter values. This extraction removes the complexity of version management from individual execution threads, allowing them to focus solely on their computational tasks while the collector thread handles the coordination of version retirement across the system.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

Each execution thread automatically increments its own counter when calling a function version, and the collector thread uses these self-maintained counters to determine retirement timing. This self-service approach to version tracking eliminates the need for complex centralized version management mechanisms, reducing overall system complexity while enabling parallel version execution.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS10564955B2Method to manage multiple versions of parts of a software application and to retire older versions in a dynamically updatable software system
Publication Date: 2020.02.18 HUAWEI TECH CO LTD
  • US10564955B2 patent drawing
  • US10564955B2 patent drawing
  • US10564955B2 patent drawing

AI summary

An embodiment method for retiring a dynamically updatable function includes receiving, by a collector-thread, a registration of the function, wherein the registration indicates to the collector-thread addresses of memory locations for counters that count a number of calls currently being made to a previous version of the function by a plurality of execution threads; reading, by the collector-thread, values of the counters; and when the values of all the counters are zero, deleting, by the collector-thread, the function from a storage medium on a device previously executing the previous version of the function.