Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -142,16 +142,16 @@ public BlockProcessingResult processBlock(
final Blockchain blockchain,
final MutableWorldState worldState,
final Block block,
final Optional<BlockAccessList> blockAccessList) {
final Optional<BlockAccessList> blockAccessList,
final PreprocessingFunction preprocessingBlockFunction) {
final BlockProcessingResult blockProcessingResult =
super.processBlock(
protocolContext,
blockchain,
worldState,
block,
blockAccessList,
new ParallelTransactionPreprocessing(transactionProcessor, executor, balConfiguration));

preprocessingBlockFunction);
if (blockProcessingResult.isFailed()) {
// Fallback to non-parallel processing if there is a block processing exception .
LOG.info(
Expand All @@ -166,6 +166,23 @@ public BlockProcessingResult processBlock(
return blockProcessingResult;
}

@Override
public BlockProcessingResult processBlock(
final ProtocolContext protocolContext,
final Blockchain blockchain,
final MutableWorldState worldState,
final Block block,
final Optional<BlockAccessList> blockAccessList) {

return super.processBlock(
protocolContext,
blockchain,
worldState,
block,
blockAccessList,
new ParallelTransactionPreprocessing(transactionProcessor, executor, balConfiguration));
}

public static class ParallelBlockProcessorBuilder
implements ProtocolSpecBuilder.BlockProcessorBuilder {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,18 +216,21 @@ public Optional<TransactionProcessingResult> getProcessingResult(
miningBeneficiaryAccount.incrementBalance(reward);
}

final Wei miningBeneficiaryPostBalance = miningBeneficiaryAccount.getBalance();
transactionProcessingResult
.getPartialBlockAccessView()
.ifPresent(
partialBlockAccessView ->
partialBlockAccessView.accountChanges().stream()
.filter(
accountChanges -> accountChanges.getAddress().equals(miningBeneficiary))
.findFirst()
.ifPresent(
accountChanges ->
accountChanges.setPostBalance(miningBeneficiaryPostBalance)));
if (!reward.isZero()) {
final Wei miningBeneficiaryPostBalance = miningBeneficiaryAccount.getBalance();
transactionProcessingResult
.getPartialBlockAccessView()
.ifPresent(
partialBlockAccessView ->
partialBlockAccessView.accountChanges().stream()
.filter(
accountChanges ->
accountChanges.getAddress().equals(miningBeneficiary))
.findFirst()
.ifPresent(
accountChanges ->
accountChanges.setPostBalance(miningBeneficiaryPostBalance)));
}

blockAccumulator.importStateChangesFromSource(transactionAccumulator);

Expand Down
Loading
Loading