@@ -545,21 +545,37 @@ instance FromJSON PartialNodeConfiguration where
545545 spArgs = SnapshotPolicyArgs (SnapshotFrequency sf) sn
546546 return $ Just $ LedgerDbConfiguration spArgs DefaultQueryBatchSize V2InMemory deprecatedOpts
547547 Just ledgerDB -> flip (withObject " LedgerDB" ) ledgerDB $ \ o -> do
548- ldbSnapInterval <- (getLast . (Last mTopLevelSnapInterval <> ) . Last <$> snapInterval o) .!= UseDefault
549- ldbSnapNum <- (getLast . (Last mTopLevelSnapNum <> ) . Last <$> snapNum o) .!= UseDefault
550- ldbSnapOffset <- (fmap Override <$> o .:? " SlotOffset" ) .!= UseDefault
551- ldbSnapRateLimit<- (fmap (Override . secondsToDiffTime) <$> o .:? " RateLimit" ) .!= UseDefault
552- ldbSnapMinDelay <- o .:? " MinDelay"
553- ldbSnapMaxDelay <- o .:? " MaxDelay"
554- ldbSnapDelayRange <-
555- case (ldbSnapMinDelay, ldbSnapMaxDelay) of
556- (Just minDelay, Just maxDelay) ->
557- if minDelay <= maxDelay then
558- pure (Override (SnapshotDelayRange (secondsToDiffTime minDelay) (secondsToDiffTime maxDelay)))
559- else fail $ " Invalid ledger snapshot delay range, MinDelay > MaxDelay: "
560- <> show minDelay <> " > " <> show maxDelay
561- -- use the default delay range if either min or max is unspecified
562- _ -> pure UseDefault
548+ -- Parse snapshot options from the "Snapshots" sub-object if present,
549+ -- otherwise fall back to the LedgerDB object for backward compatibility.
550+ let parseSnapshotOpts s = do
551+ sInterval <- (getLast . (Last mTopLevelSnapInterval <> ) . Last <$> snapInterval s) .!= UseDefault
552+ sNum <- (getLast . (Last mTopLevelSnapNum <> ) . Last <$> snapNum s) .!= UseDefault
553+ sOffset <- (fmap Override <$> s .:? " SlotOffset" ) .!= UseDefault
554+ sRateLimit <- (fmap (Override . secondsToDiffTime) <$> s .:? " RateLimit" ) .!= UseDefault
555+ sMinDelay <- s .:? " MinDelay"
556+ sMaxDelay <- s .:? " MaxDelay"
557+ sDelayRange <-
558+ case (sMinDelay, sMaxDelay) of
559+ (Just minDelay, Just maxDelay) ->
560+ if minDelay <= maxDelay then
561+ pure (Override (SnapshotDelayRange (secondsToDiffTime minDelay) (secondsToDiffTime maxDelay)))
562+ else fail $ " Invalid ledger snapshot delay range, MinDelay > MaxDelay: "
563+ <> show minDelay <> " > " <> show maxDelay
564+ -- use the default delay range if either min or max is unspecified
565+ _ -> pure UseDefault
566+ let sf = SnapshotFrequencyArgs {
567+ sfaInterval = unsafeNonZero . unSlotNo <$> sInterval
568+ , sfaOffset = sOffset
569+ , sfaRateLimit = sRateLimit
570+ , sfaDelaySnapshotRange = sDelayRange
571+ }
572+ pure $ SnapshotPolicyArgs (SnapshotFrequency sf) sNum
573+
574+ mSnapshotsVal <- o .:? " Snapshots"
575+ spArgs <- case mSnapshotsVal of
576+ Nothing -> parseSnapshotOpts o
577+ Just sv -> flip (withObject " Snapshots" ) sv parseSnapshotOpts
578+
563579 qsize <- (fmap RequestedQueryBatchSize <$> o .:? " QueryBatchSize" ) .!= DefaultQueryBatchSize
564580 backend <- o .:? " Backend" .!= " V2InMemory"
565581 selector <- case backend of
@@ -574,13 +590,6 @@ instance FromJSON PartialNodeConfiguration where
574590 lsmPath :: Maybe FilePath <- o .:? " LSMDatabasePath"
575591 pure $ V2LSM lsmPath
576592 _ -> fail $ " Malformed LedgerDB Backend: " <> backend
577- let sf = SnapshotFrequencyArgs {
578- sfaInterval = unsafeNonZero . unSlotNo <$> ldbSnapInterval
579- , sfaOffset = ldbSnapOffset
580- , sfaRateLimit = ldbSnapRateLimit
581- , sfaDelaySnapshotRange = ldbSnapDelayRange
582- }
583- spArgs = SnapshotPolicyArgs (SnapshotFrequency sf) ldbSnapNum
584593 pure $ Just $ LedgerDbConfiguration spArgs qsize selector deprecatedOpts
585594
586595 parseByronProtocol v = do
0 commit comments