Skip to content

Commit f38272f

Browse files
committed
Initial support for parallel Soroban phase XDR.
I've tried to minimize the scope of the changes; specifically this doesn't contain any actual logic for the parallel execution (such as data dependency validation and building parallel stages). However, there is still some refactoring that needed to happen in order to support new, more complex tx sets.
1 parent f25405b commit f38272f

26 files changed

+2466
-1768
lines changed

Builds/VisualStudio/stellar-core.vcxproj

+4
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,7 @@ exit /b 0
657657
<ClCompile Include="..\..\src\transactions\ManageOfferOpFrameBase.cpp" />
658658
<ClCompile Include="..\..\src\transactions\ManageSellOfferOpFrame.cpp" />
659659
<ClCompile Include="..\..\src\transactions\MergeOpFrame.cpp" />
660+
<ClCompile Include="..\..\src\transactions\MutableTransactionResult.cpp" />
660661
<ClCompile Include="..\..\src\transactions\OfferExchange.cpp" />
661662
<ClCompile Include="..\..\src\transactions\OperationFrame.cpp" />
662663
<ClCompile Include="..\..\src\transactions\PathPaymentOpFrameBase.cpp" />
@@ -699,6 +700,7 @@ exit /b 0
699700
<ClCompile Include="..\..\src\transactions\test\SignatureUtilsTest.cpp" />
700701
<ClCompile Include="..\..\src\transactions\test\SorobanTxTestUtils.cpp" />
701702
<ClCompile Include="..\..\src\transactions\test\SponsorshipTestUtils.cpp" />
703+
<ClCompile Include="..\..\src\transactions\test\TransactionTestFrame.cpp" />
702704
<ClCompile Include="..\..\src\transactions\test\TxEnvelopeTests.cpp" />
703705
<ClCompile Include="..\..\src\transactions\test\TxResultsTests.cpp" />
704706
<ClCompile Include="..\..\src\transactions\TransactionBridge.cpp" />
@@ -1067,6 +1069,7 @@ exit /b 0
10671069
<ClInclude Include="..\..\src\transactions\ManageOfferOpFrameBase.h" />
10681070
<ClInclude Include="..\..\src\transactions\ManageSellOfferOpFrame.h" />
10691071
<ClInclude Include="..\..\src\transactions\MergeOpFrame.h" />
1072+
<ClInclude Include="..\..\src\transactions\MutableTransactionResult.h" />
10701073
<ClInclude Include="..\..\src\transactions\OfferExchange.h" />
10711074
<ClInclude Include="..\..\src\transactions\OperationFrame.h" />
10721075
<ClInclude Include="..\..\src\transactions\PathPaymentOpFrameBase.h" />
@@ -1082,6 +1085,7 @@ exit /b 0
10821085
<ClInclude Include="..\..\src\transactions\SponsorshipUtils.h" />
10831086
<ClInclude Include="..\..\src\transactions\test\SorobanTxTestUtils.h" />
10841087
<ClInclude Include="..\..\src\transactions\test\SponsorshipTestUtils.h" />
1088+
<ClInclude Include="..\..\src\transactions\test\TransactionTestFrame.h" />
10851089
<ClInclude Include="..\..\src\transactions\TransactionBridge.h" />
10861090
<ClInclude Include="..\..\src\transactions\TransactionFrame.h" />
10871091
<ClInclude Include="..\..\src\transactions\TransactionFrameBase.h" />

Builds/VisualStudio/stellar-core.vcxproj.filters

+12
Original file line numberDiff line numberDiff line change
@@ -1347,6 +1347,12 @@
13471347
<ClCompile Include="..\..\src\overlay\Hmac.cpp">
13481348
<Filter>overlay</Filter>
13491349
</ClCompile>
1350+
<ClCompile Include="..\..\src\transactions\test\TransactionTestFrame.cpp">
1351+
<Filter>transactions\tests</Filter>
1352+
</ClCompile>
1353+
<ClCompile Include="..\..\src\transactions\MutableTransactionResult.cpp">
1354+
<Filter>transactions</Filter>
1355+
</ClCompile>
13501356
</ItemGroup>
13511357
<ItemGroup>
13521358
<ClInclude Include="..\..\lib\util\cpptoml.h">
@@ -2345,6 +2351,12 @@
23452351
<ClInclude Include="..\..\src\overlay\Hmac.h">
23462352
<Filter>overlay</Filter>
23472353
</ClInclude>
2354+
<ClInclude Include="..\..\src\transactions\test\TransactionTestFrame.h">
2355+
<Filter>transactions\tests</Filter>
2356+
</ClInclude>
2357+
<ClInclude Include="..\..\src\transactions\MutableTransactionResult.h">
2358+
<Filter>transactions</Filter>
2359+
</ClInclude>
23482360
</ItemGroup>
23492361
<ItemGroup>
23502362
<None Include="..\..\AUTHORS" />

src/herder/HerderImpl.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1351,7 +1351,7 @@ HerderImpl::triggerNextLedger(uint32_t ledgerSeqToTrigger,
13511351
// our first choice for this round's set is all the tx we have collected
13521352
// during last few ledger closes
13531353
auto const& lcl = mLedgerManager.getLastClosedLedgerHeader();
1354-
TxSetPhaseTransactions txPhases;
1354+
PerPhaseTransactionList txPhases;
13551355
txPhases.emplace_back(mTransactionQueue.getTransactions(lcl.header));
13561356

13571357
if (protocolVersionStartsFrom(lcl.header.ledgerVersion,
@@ -1416,7 +1416,7 @@ HerderImpl::triggerNextLedger(uint32_t ledgerSeqToTrigger,
14161416
upperBoundCloseTimeOffset = nextCloseTime - lcl.header.scpValue.closeTime;
14171417
lowerBoundCloseTimeOffset = upperBoundCloseTimeOffset;
14181418

1419-
TxSetPhaseTransactions invalidTxPhases;
1419+
PerPhaseTransactionList invalidTxPhases;
14201420
invalidTxPhases.resize(txPhases.size());
14211421

14221422
auto [proposedSet, applicableProposedSet] =

src/herder/TransactionQueue.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -867,11 +867,11 @@ TransactionQueue::isBanned(Hash const& hash) const
867867
});
868868
}
869869

870-
TxSetTransactions
870+
TxFrameList
871871
TransactionQueue::getTransactions(LedgerHeader const& lcl) const
872872
{
873873
ZoneScoped;
874-
TxSetTransactions txs;
874+
TxFrameList txs;
875875

876876
uint32_t const nextLedgerSeq = lcl.ledgerSeq + 1;
877877
int64_t const startingSeq = getStartingSequenceNumber(nextLedgerSeq);

src/herder/TransactionQueue.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class TransactionQueue
143143

144144
bool isBanned(Hash const& hash) const;
145145
TransactionFrameBaseConstPtr getTx(Hash const& hash) const;
146-
TxSetTransactions getTransactions(LedgerHeader const& lcl) const;
146+
TxFrameList getTransactions(LedgerHeader const& lcl) const;
147147
bool sourceAccountPending(AccountID const& accountID) const;
148148

149149
virtual size_t getMaxQueueSizeOps() const = 0;

0 commit comments

Comments
 (0)