Split Transaction Execution for Automatic Retry

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computing systems face challenges in automatically retrying failed transactions without involving the client, especially when transient errors occur, such as deadlocks or validation failures in optimistic concurrency control systems, leading to increased complexity and overhead in retry logic.

Innovation Solution

The system splits transaction execution into two phases: a modify phase for updating the database state and an output phase for generating data to be sent to the client, allowing automatic retries to be handled internally by the server, reducing the need for client interaction and minimizing exposure of failures to the client.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Extent of automation

If the server returns data to the client during transaction execution, then the client can receive results, but automatic retries become impossible without client interaction

Engineering Contradiction:
Improveautomatic retry capabilityVSAvoidclient interaction requirement
Core Design Contradiction:
Extent of automationVSEase of operation

Solution Approach 1:

The patent segments the transaction execution into distinct phases: a modify phase that executes database state changes, and a subsequent phase that generates and returns output data to the client. This segmentation allows the modify phase to be automatically retried by the server without client involvement, while the output phase only executes if the modify phase succeeds, thus resolving the contradiction between automation and client interaction requirements.

Inventive Principle:
Principle #1Segmentation

2Reliability

If client library implements automatic retry logic, then transaction failures can be handled, but overhead increases due to extra communication round trips

Engineering Contradiction:
Improvetransaction completionVSAvoidcommunication overhead
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent implements self-service by enabling the server to automatically detect transaction failures and execute retries without requiring the client library to implement retry logic. The server handles the entire retry process internally, eliminating the need for client-server communication round trips that would otherwise be required for retry coordination, thus reducing time loss while maintaining reliability.

Inventive Principle:
Principle #25Self-service

3Reliability

If the entire transaction is executed atomically, then data consistency is maintained, but the time window for conflicts increases

Engineering Contradiction:
Improvedata consistencyVSAvoidconflict window
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent divides the atomic transaction into a modify phase that changes database state and a separate output phase that generates results. By segmenting the transaction this way, the modify phase can be executed and committed more quickly, reducing the time window during which conflicts can occur, while still maintaining data consistency through the structured phase separation and server-managed retry mechanism.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10474645B2Automatically retrying transactions with split procedure execution
Publication Date: 2019.11.12 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10474645B2 patent drawing
  • US10474645B2 patent drawing
  • US10474645B2 patent drawing

AI summary

Running a transaction against a database that allows the transaction to be automatically retried when the transaction fails such that certain transaction failures that cause the transaction to be automatically retried are not visible to an entity that receives data as a result of the execution of the transaction. A first set of statements of a transaction is identified by identifying statements that will cause a change in the database state. A second set of statements is identified, that result in data being generated to be sent to the entity. The method further includes executing the first set of statements to change the database. The method further includes running the second set of statements separately from the first set of statements to generate data to be sent to the entity.