Database Replay Dispatcher Connection Pool Deadlock

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current workload replay systems fail to account for connection pooling, leading to deadlocks and delayed replay when using connection pools, especially in systems with multiple dispatchers and different database instances.

Innovation Solution

Implement a dispatcher that manages database connections by determining whether commands are ready to be executed based on captured workload information and replay database state, allowing only a specified percentage or number of connections to be used by commands not yet ready, and holding commands until the database advances to a state where they can be executed.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If all database connections are allocated to commands regardless of readiness, then connection utilization is maximized, but deadlocks occur and replay integrity is compromised

Engineering Contradiction:
Improveconnection utilizationVSAvoidreplay integrity
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system checks command readiness status before allocating connections, performing preliminary validation to ensure only ready commands receive connections. This prevents deadlocks by avoiding allocation of connections to commands that cannot yet execute, while maintaining high connection utilization by promptly allocating connections to ready commands.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system continuously monitors command readiness status and adjusts connection allocation dynamically based on this feedback. The dispatcher checks whether commands are ready to be executed against the current database state, and only allocates connections when readiness conditions are met, ensuring both high utilization and replay integrity.

Inventive Principle:
Principle #23Feedback

2Reliability

If commands are held until database state is ready, then replay consistency is maintained, but connection availability decreases

Engineering Contradiction:
Improvereplay consistencyVSAvoidconnection availability
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system holds commands only until the necessary database state is reached, not indefinitely. Once the database state is ready, connections are immediately allocated. This partial holding approach maintains replay consistency while minimizing connection unavailability, as connections are released as soon as their associated commands can execute.

Inventive Principle:
Principle #16Partial or excessive action

3Adaptability or versatility

If multiple dispatchers use connection pools independently, then system scalability is improved, but deadlocks increase due to lack of coordination

Engineering Contradiction:
Improvesystem scalabilityVSAvoiddeadlock frequency
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The dispatcher acts as an intermediary between commands and connection pools, coordinating connection allocation across multiple dispatchers. By checking command readiness and managing connection allocation centrally at the dispatcher level, the system enables multiple dispatchers to scale while preventing deadlocks through coordinated resource management.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8438144B2Transactionally consistent database replay in an environment with connection pooling
Publication Date: 2013.05.07 ORACLE INT CORP
  • US8438144B2 patent drawing
  • US8438144B2 patent drawing
  • US8438144B2 patent drawing

AI summary

A method, apparatus, and computer-readable medium is provided for replaying captured workload data in a database environment with connection pools. A replay system includes a dispatcher that manages a connection pool. In one aspect, the dispatcher selects available connections for sending database commands that are ready to be executed against a database, but prevents from being sent, or holds, commands that are not ready to be executed against the database. Commands may be stored at the dispatcher until the database advances to a state that allows the commands to be executed. In another aspect, the dispatcher may use an available connection to send a command to a database instance even though the command is not ready to be executed, as long as at least a threshold number or percentage of connections remains available.