@@ -22,8 +22,6 @@ let private smallNetworkSize = 10
2222
2323let private searchThresholdMs = 100
2424
25- let private protocolMaxBlockTimeMs = 5000
26-
2725let private timeoutsFor ( targetMs : int ) : int = max 500 ( targetMs / 5 )
2826
2927let private mixedPregenLedgerMultiplier = 15
@@ -315,7 +313,7 @@ let minBlockTimeTest (context: MissionContext) (baseLoadGen: LoadGen) (setupCfg:
315313 formation.ManualClose coreSets
316314 formation.WaitUntilSynced coreSets
317315 formation.UpgradeProtocolToLatest coreSets
318- formation.UpgradeMaxTxSetSize coreSets ( classicTxRateForLimits * 10 )
316+ formation.UpgradeMaxTxSetSize coreSets ( max ( classicTxRateForLimits * mixedPregenLedgerMultiplier ) 100 )
319317
320318 if isMixedPregenMode baseLoadGen.mode then
321319 upgradeMixedPregenSorobanLimits formation coreSets baseLoadGen
@@ -363,34 +361,26 @@ let minBlockTimeTest (context: MissionContext) (baseLoadGen: LoadGen) (setupCfg:
363361 txs = fixedTxRate * 300
364362 txrate = fixedTxRate }
365363
366- // Both the SCP upgrade (which runs a small arming loadgen) and
367- // the measurement load can fail when the network is still
368- // degraded from a previous iteration; either case is an SLA
369- // miss, not a crash.
370- try
371- applySCPUpgrade targetMs
372- formation.clearMetrics allNodes
364+ applySCPUpgrade targetMs
365+ formation.clearMetrics allNodes
373366
367+ // A loadgen failure is not an SLA signal — it usually means the
368+ // requested TPS is too high for the network, or that loadgen
369+ // itself lost a tx in the pipeline. Treating it as "SLA missed"
370+ // would mislead the binary search, so fail the mission loudly.
371+ try
374372 if isMixedPregenMode baseLoadGen.mode then
375373 withOverlayOnlyMode
376374 formation
377375 allNodes
378376 ( fun () -> formation.RunMultiLoadgen activeLoadGenNodes loadGen)
379377 else
380378 formation.RunMultiLoadgen activeLoadGenNodes loadGen
379+ with e -> failwithf " Loadgen failed at T=%d ms; TPS might be too high (%s )" targetMs e.Message
381380
382- formation.CheckNoErrorsAndPairwiseConsistency()
383- formation.EnsureAllNodesInSync allNodes
384- checkLedgerAgeSLA formation allNodes targetMs
385- with e ->
386- LogInfo " Run errored at T=%d ms: %s " targetMs e.Message
387- false
388-
389- if context.maxBlockTimeMs > protocolMaxBlockTimeMs then
390- failwithf
391- " --max-block-time-ms=%d exceeds the protocol cap (%d ms); validators will reject such upgrades"
392- context.maxBlockTimeMs
393- protocolMaxBlockTimeMs
381+ formation.CheckNoErrorsAndPairwiseConsistency()
382+ formation.EnsureAllNodesInSync allNodes
383+ checkLedgerAgeSLA formation allNodes targetMs
394384
395385 if context.minBlockTimeMs >= context.maxBlockTimeMs then
396386 failwithf
0 commit comments