Concurrent Object Cache Reference Counting via Copying

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In distributed computing systems with concurrent access to shared resources, existing methods for updating reference counts and managing object types lead to concurrency errors and inefficiencies, as they require exclusive locking of objects, causing delays and overhead in session management.

Innovation Solution

Implementing a status indicator and reference counting mechanism that allows concurrent access by using a session reference count and subtype reference count, enabling efficient updates by cloning object types within sessions and managing cache operations to reduce locking times and memory overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If exclusive locking is used to update reference counters, then data integrity is maintained, but user waiting time increases and system efficiency decreases

Engineering Contradiction:
Improvedata integrityVSAvoiduser waiting time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent creates a copy of the object when the reference counter reaches zero, allowing the original object to be updated without blocking concurrent access. The copy mechanism enables versioning where readers can access the old version while writers update the new version, eliminating the need for exclusive locks and reducing user waiting time while maintaining data integrity through controlled version transitions.

Inventive Principle:
Principle #26Copying

2Reliability

If exclusive locking is used to prevent concurrency errors, then data consistency is ensured, but system throughput decreases

Engineering Contradiction:
Improvedata consistencyVSAvoidsystem throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements dynamic reference counting where the locking behavior changes based on the reference counter value. When the counter is greater than zero, the object remains locked and reads are redirected to copies. When the counter reaches zero, the object is unlocked and a copy is created. This dynamic approach allows maximum parallelism when possible while ensuring consistency when updates are needed, significantly improving system throughput compared to static exclusive locking.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent segments the object lifecycle into distinct phases: active phase where the object is locked and being used, and copy phase where a duplicate is created for concurrent access. This segmentation allows different access patterns for different phases, enabling high throughput during active phase while maintaining consistency during transition to copy phase.

Inventive Principle:
Principle #1Segmentation

3Measurement precision

If reference counters are updated frequently, then object tracking accuracy is maintained, but memory overhead and processing overhead increase

Engineering Contradiction:
Improveobject tracking accuracyVSAvoidmemory overhead
Core Design Contradiction:
Measurement precisionVSQuantity of substance

Solution Approach 1:

Instead of maintaining a single object with frequent counter updates, the patent creates copies when needed, allowing the reference counter to be updated less frequently. The copy mechanism serves as a snapshot that preserves state without requiring continuous updates, reducing both memory overhead from maintaining multiple versions and processing overhead from frequent counter modifications.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS12124455B2Methods for updating reference count and shared objects in a concurrent system
Publication Date: 2024.10.22 OPEN TEXT CORP
  • US12124455B2 patent drawing
  • US12124455B2 patent drawing
  • US12124455B2 patent drawing

AI summary

Systems and methods for managing concurrent access to a shared resource in a distributed computing environment are provided. A reference counter counts is incremented for every use of an object subtype in a session and decremented for every release of an object subtype in a session. A session counter is incremented upon the first instance of fetching an object type into a session cache and decremented upon having no instances of the object type in use in the session. When both the reference counter and the session counter are zero, the object type may be removed from the cache.