From a2ce7319744f9f04244c3d5cee1c08e0312a1387 Mon Sep 17 00:00:00 2001 From: Dmytro Kozhevin Date: Thu, 2 Jan 2025 18:06:21 -0500 Subject: [PATCH] Propagate flag for updating Soroban costs to the relevant missions. The flag has been added to all the missions that generate Soroban load and don't use the nodes with the old image. While the fix is necessary only for 'invoke' load, it makes sense to have all the Soroban missions to use the proper costs. --- src/App/Program.fs | 6 ++++-- src/FSLibrary.Tests/Tests.fs | 3 ++- src/FSLibrary/MissionInMemoryMode.fs | 9 +++++++-- src/FSLibrary/MissionLoadGenerationWithTxSetLimit.fs | 3 ++- src/FSLibrary/MissionProtocolUpgradeWithLoad.fs | 3 ++- src/FSLibrary/MissionSorobanCatchupWithPrevAndCurr.fs | 6 ++++-- src/FSLibrary/MissionSorobanConfigUpgrades.fs | 1 + src/FSLibrary/MissionSorobanInvokeHostLoad.fs | 3 ++- src/FSLibrary/MissionSorobanLoadGeneration.fs | 3 ++- src/FSLibrary/StellarCoreCfg.fs | 7 +++++++ src/FSLibrary/StellarCoreSet.fs | 6 ++++-- src/FSLibrary/StellarMissionContext.fs | 3 ++- src/FSLibrary/StellarNetworkData.fs | 3 ++- 13 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/App/Program.fs b/src/App/Program.fs index 9eacce0c..1e40a42c 100644 --- a/src/App/Program.fs +++ b/src/App/Program.fs @@ -579,7 +579,8 @@ let main argv = tag = None numRuns = None enableTailLogging = true - catchupSkipKnownResultsForTesting = true } + catchupSkipKnownResultsForTesting = true + updateSorobanCosts = None } let nCfg = MakeNetworkCfg ctx [] None use formation = kube.MakeEmptyFormation nCfg @@ -716,7 +717,8 @@ let main argv = tag = mission.Tag numRuns = mission.NumRuns enableTailLogging = true - catchupSkipKnownResultsForTesting = mission.CatchupSkipKnownResultsForTesting } + catchupSkipKnownResultsForTesting = mission.CatchupSkipKnownResultsForTesting + updateSorobanCosts = None } allMissions.[m] missionContext diff --git a/src/FSLibrary.Tests/Tests.fs b/src/FSLibrary.Tests/Tests.fs index 98367997..c3992890 100644 --- a/src/FSLibrary.Tests/Tests.fs +++ b/src/FSLibrary.Tests/Tests.fs @@ -118,7 +118,8 @@ let ctx : MissionContext = tag = None numRuns = None enableTailLogging = true - catchupSkipKnownResultsForTesting = false } + catchupSkipKnownResultsForTesting = false + updateSorobanCosts = None } let netdata = __SOURCE_DIRECTORY__ + "/../../../data/public-network-data-2024-08-01.json" let pubkeys = __SOURCE_DIRECTORY__ + "/../../../data/tier1keys.json" diff --git a/src/FSLibrary/MissionInMemoryMode.fs b/src/FSLibrary/MissionInMemoryMode.fs index e768cd46..5db70be9 100644 --- a/src/FSLibrary/MissionInMemoryMode.fs +++ b/src/FSLibrary/MissionInMemoryMode.fs @@ -13,7 +13,11 @@ open StellarCoreHTTP let runInMemoryMode (context: MissionContext) = let coreSet = - MakeLiveCoreSet "core" { CoreSetOptions.GetDefault context.image with dumpDatabase = false } + MakeLiveCoreSet + "core" + { CoreSetOptions.GetDefault context.image with + dumpDatabase = false + updateSorobanCosts = Some(true) } let coreSetWithCaptiveCore = MakeLiveCoreSet @@ -25,7 +29,8 @@ let runInMemoryMode (context: MissionContext) = validate = false localHistory = false quorumSet = CoreSetQuorum(CoreSetName "core") - deprecatedSQLState = true } + deprecatedSQLState = true + updateSorobanCosts = Some(true) } let context = { context.WithSmallLoadgenOptions with diff --git a/src/FSLibrary/MissionLoadGenerationWithTxSetLimit.fs b/src/FSLibrary/MissionLoadGenerationWithTxSetLimit.fs index dfc58fc3..a337d0db 100644 --- a/src/FSLibrary/MissionLoadGenerationWithTxSetLimit.fs +++ b/src/FSLibrary/MissionLoadGenerationWithTxSetLimit.fs @@ -17,7 +17,8 @@ let loadGenerationWithTxSetLimit (context: MissionContext) = "core" { CoreSetOptions.GetDefault context.image with invariantChecks = AllInvariantsExceptBucketConsistencyChecks - dumpDatabase = false } + dumpDatabase = false + updateSorobanCosts = Some(true) } let context = { context.WithSmallLoadgenOptions with diff --git a/src/FSLibrary/MissionProtocolUpgradeWithLoad.fs b/src/FSLibrary/MissionProtocolUpgradeWithLoad.fs index a10d9cb1..11f98ef9 100644 --- a/src/FSLibrary/MissionProtocolUpgradeWithLoad.fs +++ b/src/FSLibrary/MissionProtocolUpgradeWithLoad.fs @@ -18,7 +18,8 @@ let protocolUpgradeWithLoad (context: MissionContext) = "core" { CoreSetOptions.GetDefault context.image with invariantChecks = AllInvariantsExceptBucketConsistencyChecks - dumpDatabase = false } + dumpDatabase = false + updateSorobanCosts = Some(true) } let context = { context.WithSmallLoadgenOptions with diff --git a/src/FSLibrary/MissionSorobanCatchupWithPrevAndCurr.fs b/src/FSLibrary/MissionSorobanCatchupWithPrevAndCurr.fs index 2fcf9932..ba186ae3 100644 --- a/src/FSLibrary/MissionSorobanCatchupWithPrevAndCurr.fs +++ b/src/FSLibrary/MissionSorobanCatchupWithPrevAndCurr.fs @@ -19,7 +19,8 @@ let sorobanCatchupWithPrevAndCurr (context: MissionContext) = "core" { CoreSetOptions.GetDefault context.image with invariantChecks = AllInvariantsExceptBucketConsistencyChecks - emptyDirType = DiskBackedEmptyDir } + emptyDirType = DiskBackedEmptyDir + updateSorobanCosts = Some(true) } let quorumSet = CoreSetQuorum(CoreSetName("core")) @@ -30,7 +31,8 @@ let sorobanCatchupWithPrevAndCurr (context: MissionContext) = { CoreSetOptions.GetDefault context.image with nodeCount = 1 quorumSet = quorumSet - catchupMode = CatchupComplete } + catchupMode = CatchupComplete + updateSorobanCosts = Some(true) } let context = { context.WithMediumLoadgenOptions with diff --git a/src/FSLibrary/MissionSorobanConfigUpgrades.fs b/src/FSLibrary/MissionSorobanConfigUpgrades.fs index 6bce2f6f..58e50684 100644 --- a/src/FSLibrary/MissionSorobanConfigUpgrades.fs +++ b/src/FSLibrary/MissionSorobanConfigUpgrades.fs @@ -26,6 +26,7 @@ let sorobanConfigUpgrades (context: MissionContext) = invariantChecks = AllInvariantsExceptBucketConsistencyChecks emptyDirType = DiskBackedEmptyDir quorumSet = quorumSet + updateSorobanCosts = Some(true) nodeCount = 5 } let context = diff --git a/src/FSLibrary/MissionSorobanInvokeHostLoad.fs b/src/FSLibrary/MissionSorobanInvokeHostLoad.fs index 058cc405..3ed85f8d 100644 --- a/src/FSLibrary/MissionSorobanInvokeHostLoad.fs +++ b/src/FSLibrary/MissionSorobanInvokeHostLoad.fs @@ -17,7 +17,8 @@ let sorobanInvokeHostLoad (context: MissionContext) = "core" { CoreSetOptions.GetDefault context.image with invariantChecks = AllInvariantsExceptBucketConsistencyChecks - emptyDirType = DiskBackedEmptyDir } + emptyDirType = DiskBackedEmptyDir + updateSorobanCosts = Some(true) } let context = { context.WithMediumLoadgenOptions with diff --git a/src/FSLibrary/MissionSorobanLoadGeneration.fs b/src/FSLibrary/MissionSorobanLoadGeneration.fs index 9f5ceb97..70f8d9bd 100644 --- a/src/FSLibrary/MissionSorobanLoadGeneration.fs +++ b/src/FSLibrary/MissionSorobanLoadGeneration.fs @@ -25,7 +25,8 @@ let sorobanLoadGeneration (context: MissionContext) = numTxs = rate * 2000 skipLowFeeTxs = true maxFeeRate = Some 100000000 - enableTailLogging = false } + enableTailLogging = false + updateSorobanCosts = Some(true) } let fullCoreSet = FullPubnetCoreSets context true true diff --git a/src/FSLibrary/StellarCoreCfg.fs b/src/FSLibrary/StellarCoreCfg.fs index 8f81227f..506cc5ae 100644 --- a/src/FSLibrary/StellarCoreCfg.fs +++ b/src/FSLibrary/StellarCoreCfg.fs @@ -151,6 +151,7 @@ type StellarCoreCfg = automaticMaintenanceCount: int accelerateTime: bool generateLoad: bool + updateSorobanCosts: bool option manualClose: bool invariantChecks: InvariantChecksSpec unsafeQuorum: bool @@ -253,6 +254,10 @@ type StellarCoreCfg = t.Add("ARTIFICIALLY_ACCELERATE_TIME_FOR_TESTING", self.accelerateTime) |> ignore t.Add("ARTIFICIALLY_GENERATE_LOAD_FOR_TESTING", self.generateLoad) |> ignore + if self.updateSorobanCosts.IsSome then + t.Add("UPDATE_SOROBAN_COSTS_DURING_PROTOCOL_UPGRADE_FOR_TESTING", self.updateSorobanCosts.Value) + |> ignore + if self.network.missionContext.peerFloodCapacityBytes.IsSome then t.Add("PEER_FLOOD_READING_CAPACITY_BYTES", self.network.missionContext.peerFloodCapacityBytes.Value) |> ignore @@ -484,6 +489,7 @@ type NetworkCfg with automaticMaintenanceCount = if opts.performMaintenance then 50000 else 0 accelerateTime = opts.accelerateTime generateLoad = true + updateSorobanCosts = opts.updateSorobanCosts manualClose = false invariantChecks = opts.invariantChecks unsafeQuorum = opts.unsafeQuorum @@ -522,6 +528,7 @@ type NetworkCfg with automaticMaintenanceCount = if c.options.performMaintenance then 50000 else 0 accelerateTime = c.options.accelerateTime generateLoad = true + updateSorobanCosts = c.options.updateSorobanCosts manualClose = false invariantChecks = c.options.invariantChecks unsafeQuorum = c.options.unsafeQuorum diff --git a/src/FSLibrary/StellarCoreSet.fs b/src/FSLibrary/StellarCoreSet.fs index be788698..5dafd2b0 100644 --- a/src/FSLibrary/StellarCoreSet.fs +++ b/src/FSLibrary/StellarCoreSet.fs @@ -172,7 +172,8 @@ type CoreSetOptions = inMemoryMode: bool addArtificialDelayUsec: int option deprecatedSQLState: bool - surveyPhaseDuration: int option } + surveyPhaseDuration: int option + updateSorobanCosts: bool option } member self.WithWaitForConsensus(w: bool) = { self with initialization = { self.initialization with waitForConsensus = w } } @@ -206,7 +207,8 @@ type CoreSetOptions = inMemoryMode = false addArtificialDelayUsec = None deprecatedSQLState = false - surveyPhaseDuration = None } + surveyPhaseDuration = None + updateSorobanCosts = None } type CoreSet = { name: CoreSetName diff --git a/src/FSLibrary/StellarMissionContext.fs b/src/FSLibrary/StellarMissionContext.fs index caebd1ff..01e01170 100644 --- a/src/FSLibrary/StellarMissionContext.fs +++ b/src/FSLibrary/StellarMissionContext.fs @@ -110,4 +110,5 @@ type MissionContext = // server disconnection. Our solution for now is to just disable tail logging on // those missions. enableTailLogging: bool - catchupSkipKnownResultsForTesting: bool } + catchupSkipKnownResultsForTesting: bool + updateSorobanCosts: bool option } diff --git a/src/FSLibrary/StellarNetworkData.fs b/src/FSLibrary/StellarNetworkData.fs index c6d10f23..f6f7226a 100644 --- a/src/FSLibrary/StellarNetworkData.fs +++ b/src/FSLibrary/StellarNetworkData.fs @@ -556,7 +556,8 @@ let FullPubnetCoreSets (context: MissionContext) (manualclose: bool) (enforceMin // sync before all the nodes are online. syncStartupDelay = Some(30) invariantChecks = AllInvariantsExceptBucketConsistencyChecks - dumpDatabase = false } + dumpDatabase = false + updateSorobanCosts = context.updateSorobanCosts } // Sorted list of known geolocations. // We can choose an arbitrary geolocation such that the distribution follows that of the given data