Description
Problem
We need to introduce a gradual rollout mechanism for routing transactions between mirrorEvmTxProcessor.execute(params, estimatedGas)
and transactionExecutionService.execute(params, estimatedGas, gasUsedCounter)
. Currently, the routing is determined by the mirrorNodeEvmProperties.isModularizedServices()
flag, which acts as a switch.
To enable a progressive deployment strategy, we will introduce a percentage-based configuration that allows for gradual adoption of the new execution flow.
Solution
Current Flow
HederaEvmTransactionProcessingResult result;
if (!mirrorNodeEvmProperties.isModularizedServices()) {
result = mirrorEvmTxProcessor.execute(params, estimatedGas);
} else {
result = transactionExecutionService.execute(params, estimatedGas, gasUsedCounter);
}
Introduce a new configuration flag:
(Example) mirrorNodeEvmProperties.transactionExecutionSplitPercentage (double, range 0.0 - 1.0)
This percentage will define the probability of using the new flow (transactionExecutionService.execute).
Example Configuration
- transactionExecutionSplitPercentage = 0.2 → 80% of requests go to the old flow, 20% to the new.
- transactionExecutionSplitPercentage = 0.5 → 50% of requests go to each.
- transactionExecutionSplitPercentage = 1.0 → 100% of requests use the new flow.
Alternatives
No response
Metadata
Metadata
Assignees
Labels
Type
Projects
Status