ouroboros-consensus-0.1.0.0: Consensus layer for the Ouroboros blockchain protocol
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Description

Types used throughout the implementation: handle, state, environment, types, trace types, etc.

Synopsis

Documentation

newtype ChainDbHandle m blk Source #

A handle to the internal ChainDB state

Constructors

CDBHandle (StrictTVar m (ChainDbState m blk)) 

getEnv :: forall m blk r. (IOLike m, HasCallStack) => ChainDbHandle m blk -> (ChainDbEnv m blk -> m r) -> m r Source #

Check if the ChainDB is open, if so, executing the given function on the ChainDbEnv, otherwise, throw a CloseDBError.

getEnv1 :: (IOLike m, HasCallStack) => ChainDbHandle m blk -> (ChainDbEnv m blk -> a -> m r) -> a -> m r Source #

Variant 'of getEnv for functions taking one argument.

getEnv2 :: (IOLike m, HasCallStack) => ChainDbHandle m blk -> (ChainDbEnv m blk -> a -> b -> m r) -> a -> b -> m r Source #

Variant 'of getEnv for functions taking two arguments.

getEnvSTM :: forall m blk r. (IOLike m, HasCallStack) => ChainDbHandle m blk -> (ChainDbEnv m blk -> STM m r) -> STM m r Source #

Variant of getEnv that works in STM.

getEnvSTM1 :: (IOLike m, HasCallStack) => ChainDbHandle m blk -> (ChainDbEnv m blk -> a -> STM m r) -> a -> STM m r Source #

Variant of getEnv1 that works in STM.

data ChainDbState m blk Source #

Constructors

ChainDbOpen !(ChainDbEnv m blk) 
ChainDbClosed 

Instances

Instances details
Generic (ChainDbState m blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (ChainDbState m blk) :: Type -> Type #

Methods

from :: ChainDbState m blk -> Rep (ChainDbState m blk) x #

to :: Rep (ChainDbState m blk) x -> ChainDbState m blk #

(IOLike m, LedgerSupportsProtocol blk) => NoThunks (ChainDbState m blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (ChainDbState m blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (ChainDbState m blk) = D1 ('MetaData "ChainDbState" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "ChainDbOpen" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ChainDbEnv m blk))) :+: C1 ('MetaCons "ChainDbClosed" 'PrefixI 'False) (U1 :: Type -> Type))

data ChainDbEnv m blk Source #

Constructors

CDB 

Fields

  • cdbImmutableDB :: !(ImmutableDB m blk)
     
  • cdbVolatileDB :: !(VolatileDB m blk)
     
  • cdbLgrDB :: !(LgrDB m blk)
     
  • cdbChain :: !(StrictTVar m (AnchoredFragment (Header blk)))

    Contains the current chain fragment.

    INVARIANT: the anchor point of this fragment is the tip of the ImmutableDB. This implies that this fragment never contains any blocks that are stored in the immutable DB.

    Note that this fragment might be shorter than k headers when the whole chain is shorter than k or in case of corruption of the VolatileDB.

    Note that this fragment might also be longer than k headers, because the oldest blocks from the fragment might not yet have been copied from the VolatileDB to the ImmutableDB.

    The anchor point of this chain should be the most recent "immutable" block according to the protocol, i.e., a block that cannot be rolled back.

    Note that the "immutable" block isn't necessarily at the tip of the ImmutableDB, but could temporarily still be on the in-memory chain fragment. When the background thread that copies blocks to the ImmutableDB has caught up, the "immutable" block will be at the tip of the ImmutableDB again.

    Note that the "immutable" block might be less than k blocks from our tip in case the whole chain is shorter than k or in case of corruption of the VolatileDB.

    Note that the "immutable" block will never be more than k blocks back, as opposed to the anchor point of cdbChain.

  • cdbIterators :: !(StrictTVar m (Map IteratorKey (m ())))

    The iterators.

    This maps the IteratorKeys of each open Iterator to a function that, when called, closes the iterator. This is used when closing the ChainDB: the open file handles used by iterators can be closed, and the iterators themselves are closed so that it is impossible to use an iterator after closing the ChainDB itself.

  • cdbReaders :: !(StrictTVar m (Map ReaderKey (ReaderHandle m blk)))

    The readers.

    A reader is open iff its ReaderKey is this Map.

    INVARIANT: the readerPoint of each reader is withinFragmentBounds of the current chain fragment (retrieved cdbGetCurrentChain, not by reading cdbChain directly).

  • cdbTopLevelConfig :: !(TopLevelConfig blk)
     
  • cdbInvalid :: !(StrictTVar m (WithFingerprint (InvalidBlocks blk)))

    See the docstring of InvalidBlocks.

    The Fingerprint changes every time a hash is added to the map, but not when hashes are garbage-collected from the map.

  • cdbNextIteratorKey :: !(StrictTVar m IteratorKey)
     
  • cdbNextReaderKey :: !(StrictTVar m ReaderKey)
     
  • cdbCopyLock :: !(StrictMVar m ())

    Lock used to ensure that copyToImmutableDB is not executed more than once concurrently.

    Note that copyToImmutableDB can still be executed concurrently with all others functions, just not with itself.

  • cdbTracer :: !(Tracer m (TraceEvent blk))
     
  • cdbTraceLedger :: !(Tracer m (LedgerDB' blk))
     
  • cdbRegistry :: !(ResourceRegistry m)

    Resource registry that will be used to (re)start the background threads, see cdbBgThreads.

  • cdbGcDelay :: !DiffTime

    How long to wait between copying a block from the VolatileDB to ImmutableDB and garbage collecting it from the VolatileDB

  • cdbGcInterval :: !DiffTime

    Minimum time between two garbage collections. Is used to batch garbage collections.

  • cdbKillBgThreads :: !(StrictTVar m (m ()))

    A handle to kill the background threads.

  • cdbChunkInfo :: !ChunkInfo
     
  • cdbCheckIntegrity :: !(blk -> Bool)
     
  • cdbCheckInFuture :: !(CheckInFuture m blk)
     
  • cdbBlocksToAdd :: !(BlocksToAdd m blk)

    Queue of blocks that still have to be added.

  • cdbFutureBlocks :: !(StrictTVar m (FutureBlocks blk))

    Blocks from the future

    Blocks that were added to the ChainDB but that were from the future according to CheckInFuture, without exceeding the clock skew (inFutureExceedsClockSkew). Blocks exceeding the clock skew are considered to be invalid (InFutureExceedsClockSkew) and will be added cdbInvalid.

    Whenever a block is added to the ChainDB, we first trigger chain selection for all the blocks in this map so that blocks no longer from the future can get adopted. Note that when no blocks are added to the ChainDB, we will not actively trigger chain selection for the blocks in this map.

    The number of blocks from the future is bounded by the number of upstream peers multiplied by the max clock skew divided by the slot length.

Instances

Instances details
Generic (ChainDbEnv m blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (ChainDbEnv m blk) :: Type -> Type #

Methods

from :: ChainDbEnv m blk -> Rep (ChainDbEnv m blk) x #

to :: Rep (ChainDbEnv m blk) x -> ChainDbEnv m blk #

(IOLike m, LedgerSupportsProtocol blk) => NoThunks (ChainDbEnv m blk) Source #

We include blk in showTypeOf because it helps resolving type families (but avoid including m because we cannot impose Typeable m as a constraint and still have it work with the simulator)

Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (ChainDbEnv m blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (ChainDbEnv m blk) = D1 ('MetaData "ChainDbEnv" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "CDB" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "cdbImmutableDB") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ImmutableDB m blk)) :*: S1 ('MetaSel ('Just "cdbVolatileDB") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (VolatileDB m blk))) :*: (S1 ('MetaSel ('Just "cdbLgrDB") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LgrDB m blk)) :*: (S1 ('MetaSel ('Just "cdbChain") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictTVar m (AnchoredFragment (Header blk)))) :*: S1 ('MetaSel ('Just "cdbIterators") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictTVar m (Map IteratorKey (m ()))))))) :*: ((S1 ('MetaSel ('Just "cdbReaders") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictTVar m (Map ReaderKey (ReaderHandle m blk)))) :*: (S1 ('MetaSel ('Just "cdbTopLevelConfig") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (TopLevelConfig blk)) :*: S1 ('MetaSel ('Just "cdbInvalid") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictTVar m (WithFingerprint (InvalidBlocks blk)))))) :*: (S1 ('MetaSel ('Just "cdbNextIteratorKey") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictTVar m IteratorKey)) :*: (S1 ('MetaSel ('Just "cdbNextReaderKey") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictTVar m ReaderKey)) :*: S1 ('MetaSel ('Just "cdbCopyLock") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictMVar m ())))))) :*: (((S1 ('MetaSel ('Just "cdbTracer") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Tracer m (TraceEvent blk))) :*: S1 ('MetaSel ('Just "cdbTraceLedger") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Tracer m (LedgerDB' blk)))) :*: (S1 ('MetaSel ('Just "cdbRegistry") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ResourceRegistry m)) :*: (S1 ('MetaSel ('Just "cdbGcDelay") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DiffTime) :*: S1 ('MetaSel ('Just "cdbGcInterval") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DiffTime)))) :*: ((S1 ('MetaSel ('Just "cdbKillBgThreads") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictTVar m (m ()))) :*: (S1 ('MetaSel ('Just "cdbChunkInfo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ChunkInfo) :*: S1 ('MetaSel ('Just "cdbCheckIntegrity") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (blk -> Bool)))) :*: (S1 ('MetaSel ('Just "cdbCheckInFuture") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (CheckInFuture m blk)) :*: (S1 ('MetaSel ('Just "cdbBlocksToAdd") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (BlocksToAdd m blk)) :*: S1 ('MetaSel ('Just "cdbFutureBlocks") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StrictTVar m (FutureBlocks blk)))))))))

Exposed internals for testing purposes

data Internal m blk Source #

Constructors

Internal 

Fields

Iterator-related

newtype IteratorKey Source #

We use this internally to track iterators in a map (cdbIterators) in the ChainDB state so that we can remove them from the map when the iterator is closed.

We store them in the map so that the ChainDB can close all open iterators when it is closed itself.

Constructors

IteratorKey Word 

Instances

Instances details
Enum IteratorKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Eq IteratorKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Ord IteratorKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Show IteratorKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

NoThunks IteratorKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Reader-related

newtype ReaderKey Source #

We use this internally to track reader in a map (cdbReaders) in the ChainDB state so that we can remove them from the map when the reader is closed.

We store them in the map so that the ChainDB can close all open readers when it is closed itself and to update the readers in case we switch to a different chain.

Constructors

ReaderKey Word 

Instances

Instances details
Enum ReaderKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Eq ReaderKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Ord ReaderKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Show ReaderKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

NoThunks ReaderKey Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

data ReaderHandle m blk Source #

Internal handle to a Reader without an explicit b (blk, Header blk, etc.) parameter so Readers with different' bs can be stored together in cdbReaders.

Constructors

ReaderHandle 

Fields

  • rhSwitchFork :: Point blk -> AnchoredFragment (Header blk) -> STM m ()

    When we have switched to a fork, all open Readers must be notified.

  • rhClose :: m ()

    When closing the ChainDB, we must also close all open Readers, as they might be holding on to resources.

    Call rhClose will release the resources used by the Reader.

    NOTE the Reader is not removed from cdbReaders. (That is done by closeAllReaders).

data ReaderState m blk b Source #

b corresponds to the BlockComponent that is being read.

Constructors

ReaderInit

The Reader is in its initial state. Its ReaderRollState is RollBackTo genesisPoint.

This is equivalent to having a ReaderInImmutableDB with the same ReaderRollState and an iterator streaming after genesis. Opening such an iterator has a cost (index files will have to be read). However, in most cases, right after opening a Reader, the user of the Reader will try to move it forward, moving it from genesis to a more recent point on the chain. So we incur the cost of opening the iterator while not even using it.

Therefore, we have this extra initial state, that avoids this cost. When the user doesn't move the Reader forward, an iterator is opened.

ReaderInImmutableDB !(ReaderRollState blk) !(Iterator m blk (Point blk, b))

The Reader is reading from the ImmutableDB.

Note that the iterator includes 'Point blk' in addition to b, as it is needed to keep track of where the iterator is.

INVARIANT: for all ReaderInImmutableDB rollState immIt: the predecessor of the next block streamed by immIt must be the block identified by readerRollStatePoint rollState. In other words: the iterator is positioned on readerRollStatePoint rollState.

ReaderInMem !(ReaderRollState blk)

The Reader is reading from the in-memory current chain fragment.

Instances

Instances details
Generic (ReaderState m blk b) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (ReaderState m blk b) :: Type -> Type #

Methods

from :: ReaderState m blk b -> Rep (ReaderState m blk b) x #

to :: Rep (ReaderState m blk b) x -> ReaderState m blk b #

StandardHash blk => NoThunks (ReaderState m blk b) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (ReaderState m blk b) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (ReaderState m blk b) = D1 ('MetaData "ReaderState" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "ReaderInit" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ReaderInImmutableDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ReaderRollState blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Iterator m blk (Point blk, b)))) :+: C1 ('MetaCons "ReaderInMem" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ReaderRollState blk)))))

data ReaderRollState blk Source #

Similar to ReaderState.

Constructors

RollBackTo !(Point blk)

We don't know at which point the user is, but the next message we'll send is to roll back to this point.

RollForwardFrom !(Point blk)

We know that the reader is at this point and the next message we'll send is to roll forward to the point after this point on our chain.

Instances

Instances details
StandardHash blk => Eq (ReaderRollState blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

StandardHash blk => Show (ReaderRollState blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (ReaderRollState blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (ReaderRollState blk) :: Type -> Type #

Methods

from :: ReaderRollState blk -> Rep (ReaderRollState blk) x #

to :: Rep (ReaderRollState blk) x -> ReaderRollState blk #

StandardHash blk => NoThunks (ReaderRollState blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (ReaderRollState blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (ReaderRollState blk) = D1 ('MetaData "ReaderRollState" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "RollBackTo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Point blk))) :+: C1 ('MetaCons "RollForwardFrom" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Point blk))))

readerRollStatePoint :: ReaderRollState blk -> Point blk Source #

Get the point the ReaderRollState should roll back to or roll forward from.

Invalid blocks

type InvalidBlocks blk = Map (HeaderHash blk) (InvalidBlockInfo blk) Source #

Hashes corresponding to invalid blocks. This is used to ignore these blocks during chain selection.

data InvalidBlockInfo blk Source #

In addition to the reason why a block is invalid, the slot number of the block is stored, so that whenever a garbage collection is performed on the VolatileDB for some slot s, the hashes older or equal to s can be removed from this map.

Instances

Instances details
LedgerSupportsProtocol blk => Eq (InvalidBlockInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

LedgerSupportsProtocol blk => Show (InvalidBlockInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (InvalidBlockInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (InvalidBlockInfo blk) :: Type -> Type #

LedgerSupportsProtocol blk => NoThunks (InvalidBlockInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (InvalidBlockInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (InvalidBlockInfo blk) = D1 ('MetaData "InvalidBlockInfo" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "InvalidBlockInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "invalidBlockReason") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (InvalidBlockReason blk)) :*: S1 ('MetaSel ('Just "invalidBlockSlotNo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SlotNo)))

Future blocks

type FutureBlocks blk = Map (HeaderHash blk) (Header blk) Source #

Blocks from the future for which we still need to trigger chain selection.

See cdbFutureBlocks for more info.

Blocks to add

data BlocksToAdd m blk Source #

FIFO queue used to add blocks asynchronously to the ChainDB. Blocks are read from this queue by a background thread, which processes the blocks synchronously.

Instances

Instances details
NoThunks (BlocksToAdd m blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

data BlockToAdd m blk Source #

Entry in the BlocksToAdd queue: a block together with the TMVars used to implement AddBlockPromise.

Constructors

BlockToAdd 

newBlocksToAdd :: IOLike m => Word -> m (BlocksToAdd m blk) Source #

Create a new BlocksToAdd with the given size.

addBlockToAdd :: (IOLike m, HasHeader blk) => Tracer m (TraceAddBlockEvent blk) -> BlocksToAdd m blk -> blk -> m (AddBlockPromise m blk) Source #

Add a block to the BlocksToAdd queue. Can block when the queue is full.

getBlockToAdd :: IOLike m => BlocksToAdd m blk -> m (BlockToAdd m blk) Source #

Get the oldest block from the BlocksToAdd queue. Can block when the queue is empty.

Trace types

data TraceEvent blk Source #

Trace type for the various events of the ChainDB.

Instances

Instances details
(HasHeader blk, Eq (Header blk), LedgerSupportsProtocol blk, InspectLedger blk) => Eq (TraceEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Methods

(==) :: TraceEvent blk -> TraceEvent blk -> Bool #

(/=) :: TraceEvent blk -> TraceEvent blk -> Bool #

(HasHeader blk, Show (Header blk), LedgerSupportsProtocol blk, InspectLedger blk) => Show (TraceEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Methods

showsPrec :: Int -> TraceEvent blk -> ShowS #

show :: TraceEvent blk -> String #

showList :: [TraceEvent blk] -> ShowS #

Generic (TraceEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceEvent blk) :: Type -> Type #

Methods

from :: TraceEvent blk -> Rep (TraceEvent blk) x #

to :: Rep (TraceEvent blk) x -> TraceEvent blk #

type Rep (TraceEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceEvent blk) = D1 ('MetaData "TraceEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (((C1 ('MetaCons "TraceAddBlockEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceAddBlockEvent blk))) :+: C1 ('MetaCons "TraceReaderEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceReaderEvent blk)))) :+: (C1 ('MetaCons "TraceCopyToImmutableDBEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceCopyToImmutableDBEvent blk))) :+: (C1 ('MetaCons "TraceGCEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceGCEvent blk))) :+: C1 ('MetaCons "TraceInitChainSelEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceInitChainSelEvent blk)))))) :+: ((C1 ('MetaCons "TraceOpenEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceOpenEvent blk))) :+: (C1 ('MetaCons "TraceIteratorEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceIteratorEvent blk))) :+: C1 ('MetaCons "TraceLedgerEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceEvent blk))))) :+: (C1 ('MetaCons "TraceLedgerReplayEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceLedgerReplayEvent blk))) :+: (C1 ('MetaCons "TraceImmutableDBEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceEvent blk))) :+: C1 ('MetaCons "TraceVolatileDBEvent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceEvent blk)))))))

data NewTipInfo blk Source #

Information about the new tip of the current chain.

NOTE: the fields of this record are intentionally lazy to prevent the forcing of this information in case it doesn't have to be traced. However, this means that the tracer processing this message must not hold on to it, otherwise it leaks memory.

Constructors

NewTipInfo 

Fields

  • newTipPoint :: RealPoint blk

    The new tip of the current chain.

  • newTipEpoch :: EpochNo

    The epoch of the new tip.

  • newTipSlotInEpoch :: Word64

    The slot in the epoch, i.e., the relative slot number, of the new tip.

  • newTipTrigger :: RealPoint blk

    The new tip of the current chain (newTipPoint) is the result of performing chain selection for a trigger block (newTipTrigger). In most cases, we add a new block to the tip of the current chain, in which case the new tip is the trigger block.

    However, this is not always the case. For example, with our current chain being A and having a disconnected C lying around, adding B will result in A -> B -> C as the new chain. The trigger B /= the new tip C.

Instances

Instances details
StandardHash blk => Eq (NewTipInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Methods

(==) :: NewTipInfo blk -> NewTipInfo blk -> Bool #

(/=) :: NewTipInfo blk -> NewTipInfo blk -> Bool #

StandardHash blk => Show (NewTipInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Methods

showsPrec :: Int -> NewTipInfo blk -> ShowS #

show :: NewTipInfo blk -> String #

showList :: [NewTipInfo blk] -> ShowS #

Generic (NewTipInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (NewTipInfo blk) :: Type -> Type #

Methods

from :: NewTipInfo blk -> Rep (NewTipInfo blk) x #

to :: Rep (NewTipInfo blk) x -> NewTipInfo blk #

type Rep (NewTipInfo blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (NewTipInfo blk) = D1 ('MetaData "NewTipInfo" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "NewTipInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "newTipPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)) :*: S1 ('MetaSel ('Just "newTipEpoch") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 EpochNo)) :*: (S1 ('MetaSel ('Just "newTipSlotInEpoch") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64) :*: S1 ('MetaSel ('Just "newTipTrigger") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)))))

data TraceAddBlockEvent blk Source #

Trace type for the various events that occur when adding a block.

Constructors

IgnoreBlockOlderThanK (RealPoint blk)

A block with a BlockNo more than k back than the current tip was ignored.

IgnoreBlockAlreadyInVolatileDB (RealPoint blk)

A block that is already in the Volatile DB was ignored.

IgnoreInvalidBlock (RealPoint blk) (InvalidBlockReason blk)

A block that is know to be invalid was ignored.

AddedBlockToQueue (RealPoint blk) Word

The block was added to the queue and will be added to the ChainDB by the background thread. The size of the queue is included.

BlockInTheFuture (RealPoint blk) SlotNo

The block is from the future, i.e., its slot number is greater than the current slot (the second argument).

AddedBlockToVolatileDB (RealPoint blk) BlockNo IsEBB

A block was added to the Volatile DB

TryAddToCurrentChain (RealPoint blk)

The block fits onto the current chain, we'll try to use it to extend our chain.

TrySwitchToAFork (RealPoint blk) (ChainDiff (HeaderFields blk))

The block fits onto some fork, we'll try to switch to that fork (if it is preferable to our chain).

StoreButDontChange (RealPoint blk)

The block doesn't fit onto any other block, so we store it and ignore it.

AddedToCurrentChain [LedgerEvent blk] (NewTipInfo blk) (AnchoredFragment (Header blk)) (AnchoredFragment (Header blk))

The new block fits onto the current chain (first fragment) and we have successfully used it to extend our (new) current chain (second fragment).

SwitchedToAFork [LedgerEvent blk] (NewTipInfo blk) (AnchoredFragment (Header blk)) (AnchoredFragment (Header blk))

The new block fits onto some fork and we have switched to that fork (second fragment), as it is preferable to our (previous) current chain (first fragment).

AddBlockValidation (TraceValidationEvent blk)

An event traced during validating performed while adding a block.

ChainSelectionForFutureBlock (RealPoint blk)

Run chain selection for a block that was previously from the future. This is done for all blocks from the future each time a new block is added.

Instances

Instances details
(HasHeader blk, Eq (Header blk), LedgerSupportsProtocol blk, InspectLedger blk) => Eq (TraceAddBlockEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

(HasHeader blk, Show (Header blk), LedgerSupportsProtocol blk, InspectLedger blk) => Show (TraceAddBlockEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (TraceAddBlockEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceAddBlockEvent blk) :: Type -> Type #

type Rep (TraceAddBlockEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceAddBlockEvent blk) = D1 ('MetaData "TraceAddBlockEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (((C1 ('MetaCons "IgnoreBlockOlderThanK" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk))) :+: (C1 ('MetaCons "IgnoreBlockAlreadyInVolatileDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk))) :+: C1 ('MetaCons "IgnoreInvalidBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (InvalidBlockReason blk))))) :+: (C1 ('MetaCons "AddedBlockToQueue" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word)) :+: (C1 ('MetaCons "BlockInTheFuture" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SlotNo)) :+: C1 ('MetaCons "AddedBlockToVolatileDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BlockNo) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IsEBB)))))) :+: ((C1 ('MetaCons "TryAddToCurrentChain" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk))) :+: (C1 ('MetaCons "TrySwitchToAFork" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ChainDiff (HeaderFields blk)))) :+: C1 ('MetaCons "StoreButDontChange" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk))))) :+: ((C1 ('MetaCons "AddedToCurrentChain" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LedgerEvent blk]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NewTipInfo blk))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AnchoredFragment (Header blk))) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AnchoredFragment (Header blk))))) :+: C1 ('MetaCons "SwitchedToAFork" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LedgerEvent blk]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NewTipInfo blk))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AnchoredFragment (Header blk))) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AnchoredFragment (Header blk)))))) :+: (C1 ('MetaCons "AddBlockValidation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceValidationEvent blk))) :+: C1 ('MetaCons "ChainSelectionForFutureBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)))))))

data TraceReaderEvent blk Source #

Constructors

NewReader

A new reader was created.

ReaderNoLongerInMem (ReaderRollState blk)

The reader was in the ReaderInMem state but its point is no longer on the in-memory chain fragment, so it has to switch to the ReaderInImmutableDB state.

ReaderSwitchToMem

The reader was in the ReaderInImmutableDB state and is switched to the ReaderInMem state.

Fields

ReaderNewImmIterator

The reader is in the ReaderInImmutableDB state but the iterator is exhausted while the ImmutableDB has grown, so we open a new iterator to stream these blocks too.

Fields

Instances

Instances details
StandardHash blk => Eq (TraceReaderEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

StandardHash blk => Show (TraceReaderEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (TraceReaderEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceReaderEvent blk) :: Type -> Type #

type Rep (TraceReaderEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceReaderEvent blk) = D1 ('MetaData "TraceReaderEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) ((C1 ('MetaCons "NewReader" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ReaderNoLongerInMem" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ReaderRollState blk)))) :+: (C1 ('MetaCons "ReaderSwitchToMem" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (WithOrigin SlotNo))) :+: C1 ('MetaCons "ReaderNewImmIterator" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (WithOrigin SlotNo)))))

data TraceCopyToImmutableDBEvent blk Source #

Constructors

CopiedBlockToImmutableDB (Point blk)

A block was successfully copied to the ImmutableDB.

NoBlocksToCopyToImmutableDB

There are no block to copy to the ImmutableDB.

Instances

Instances details
StandardHash blk => Eq (TraceCopyToImmutableDBEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

StandardHash blk => Show (TraceCopyToImmutableDBEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (TraceCopyToImmutableDBEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceCopyToImmutableDBEvent blk) :: Type -> Type #

type Rep (TraceCopyToImmutableDBEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceCopyToImmutableDBEvent blk) = D1 ('MetaData "TraceCopyToImmutableDBEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "CopiedBlockToImmutableDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point blk))) :+: C1 ('MetaCons "NoBlocksToCopyToImmutableDB" 'PrefixI 'False) (U1 :: Type -> Type))

data TraceGCEvent blk Source #

Constructors

ScheduledGC SlotNo Time

A garbage collection for the given SlotNo was scheduled to happen at the given time.

PerformedGC SlotNo

A garbage collection for the given SlotNo was performed.

Instances

Instances details
Eq (TraceGCEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Methods

(==) :: TraceGCEvent blk -> TraceGCEvent blk -> Bool #

(/=) :: TraceGCEvent blk -> TraceGCEvent blk -> Bool #

Show (TraceGCEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (TraceGCEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceGCEvent blk) :: Type -> Type #

Methods

from :: TraceGCEvent blk -> Rep (TraceGCEvent blk) x #

to :: Rep (TraceGCEvent blk) x -> TraceGCEvent blk #

type Rep (TraceGCEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceGCEvent blk) = D1 ('MetaData "TraceGCEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "ScheduledGC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SlotNo) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Time)) :+: C1 ('MetaCons "PerformedGC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SlotNo)))

data TraceValidationEvent blk Source #

Constructors

InvalidBlock (ExtValidationError blk) (RealPoint blk)

A point was found to be invalid.

InvalidCandidate (AnchoredFragment (Header blk))

A candidate chain was invalid.

ValidCandidate (AnchoredFragment (Header blk))

A candidate chain was valid.

CandidateContainsFutureBlocks

Candidate contains headers from the future which do no exceed the clock skew.

Fields

  • (AnchoredFragment (Header blk))

    Candidate chain containing headers from the future

  • [Header blk]

    Headers from the future, not exceeding clock skew

CandidateContainsFutureBlocksExceedingClockSkew

Candidate contains headers from the future which exceed the clock skew, making them invalid.

Fields

  • (AnchoredFragment (Header blk))

    Candidate chain containing headers from the future

  • [Header blk]

    Headers from the future, exceeding clock skew

Instances

Instances details
(HasHeader blk, Eq (Header blk), LedgerSupportsProtocol blk) => Eq (TraceValidationEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

(Show (Header blk), LedgerSupportsProtocol blk) => Show (TraceValidationEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (TraceValidationEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceValidationEvent blk) :: Type -> Type #

type Rep (TraceValidationEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceValidationEvent blk) = D1 ('MetaData "TraceValidationEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) ((C1 ('MetaCons "InvalidBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ExtValidationError blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk))) :+: C1 ('MetaCons "InvalidCandidate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AnchoredFragment (Header blk))))) :+: (C1 ('MetaCons "ValidCandidate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AnchoredFragment (Header blk)))) :+: (C1 ('MetaCons "CandidateContainsFutureBlocks" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AnchoredFragment (Header blk))) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Header blk])) :+: C1 ('MetaCons "CandidateContainsFutureBlocksExceedingClockSkew" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AnchoredFragment (Header blk))) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Header blk])))))

data TraceInitChainSelEvent blk Source #

Constructors

InitChainSelValidation (TraceValidationEvent blk)

An event traced during validation performed while performing initial chain selection.

Instances

Instances details
(HasHeader blk, Eq (Header blk), LedgerSupportsProtocol blk) => Eq (TraceInitChainSelEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

(Show (Header blk), LedgerSupportsProtocol blk) => Show (TraceInitChainSelEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (TraceInitChainSelEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceInitChainSelEvent blk) :: Type -> Type #

type Rep (TraceInitChainSelEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceInitChainSelEvent blk) = D1 ('MetaData "TraceInitChainSelEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "InitChainSelValidation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TraceValidationEvent blk))))

data TraceOpenEvent blk Source #

Constructors

OpenedDB

The ChainDB was opened.

Fields

  • (Point blk)

    Immutable tip

  • (Point blk)

    Tip of the current chain

ClosedDB

The ChainDB was closed.

Fields

  • (Point blk)

    Immutable tip

  • (Point blk)

    Tip of the current chain

OpenedImmutableDB

The ImmutableDB was opened.

Fields

  • (Point blk)

    Immutable tip

  • ChunkNo

    Chunk number of the immutable tip

OpenedVolatileDB

The VolatileDB was opened.

OpenedLgrDB

The LedgerDB was opened.

Instances

Instances details
StandardHash blk => Eq (TraceOpenEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

StandardHash blk => Show (TraceOpenEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (TraceOpenEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceOpenEvent blk) :: Type -> Type #

Methods

from :: TraceOpenEvent blk -> Rep (TraceOpenEvent blk) x #

to :: Rep (TraceOpenEvent blk) x -> TraceOpenEvent blk #

type Rep (TraceOpenEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceOpenEvent blk) = D1 ('MetaData "TraceOpenEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) ((C1 ('MetaCons "OpenedDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point blk))) :+: C1 ('MetaCons "ClosedDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point blk)))) :+: (C1 ('MetaCons "OpenedImmutableDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ChunkNo)) :+: (C1 ('MetaCons "OpenedVolatileDB" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OpenedLgrDB" 'PrefixI 'False) (U1 :: Type -> Type))))

data TraceIteratorEvent blk Source #

Constructors

UnknownRangeRequested (UnknownRange blk)

An unknown range was requested, see UnknownRange.

StreamFromVolatileDB (StreamFrom blk) (StreamTo blk) [RealPoint blk]

Stream only from the VolatileDB.

StreamFromImmutableDB (StreamFrom blk) (StreamTo blk)

Stream only from the ImmutableDB.

StreamFromBoth (StreamFrom blk) (StreamTo blk) [RealPoint blk]

Stream from both the VolatileDB and the ImmutableDB.

BlockMissingFromVolatileDB (RealPoint blk)

A block is no longer in the VolatileDB because it has been garbage collected. It might now be in the ImmutableDB if it was part of the current chain.

BlockWasCopiedToImmutableDB (RealPoint blk)

A block that has been garbage collected from the VolatileDB is now found and streamed from the ImmutableDB.

BlockGCedFromVolatileDB (RealPoint blk)

A block is no longer in the VolatileDB and isn't in the ImmutableDB either; it wasn't part of the current chain.

SwitchBackToVolatileDB

We have streamed one or more blocks from the ImmutableDB that were part of the VolatileDB when initialising the iterator. Now, we have to look back in the VolatileDB again because the ImmutableDB doesn't have the next block we're looking for.

Instances

Instances details
StandardHash blk => Eq (TraceIteratorEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

StandardHash blk => Show (TraceIteratorEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Generic (TraceIteratorEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

Associated Types

type Rep (TraceIteratorEvent blk) :: Type -> Type #

type Rep (TraceIteratorEvent blk) Source # 
Instance details

Defined in Ouroboros.Consensus.Storage.ChainDB.Impl.Types

type Rep (TraceIteratorEvent blk) = D1 ('MetaData "TraceIteratorEvent" "Ouroboros.Consensus.Storage.ChainDB.Impl.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (((C1 ('MetaCons "UnknownRangeRequested" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (UnknownRange blk))) :+: C1 ('MetaCons "StreamFromVolatileDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (StreamFrom blk)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (StreamTo blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RealPoint blk])))) :+: (C1 ('MetaCons "StreamFromImmutableDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (StreamFrom blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (StreamTo blk))) :+: C1 ('MetaCons "StreamFromBoth" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (StreamFrom blk)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (StreamTo blk)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RealPoint blk]))))) :+: ((C1 ('MetaCons "BlockMissingFromVolatileDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk))) :+: C1 ('MetaCons "BlockWasCopiedToImmutableDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk)))) :+: (C1 ('MetaCons "BlockGCedFromVolatileDB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RealPoint blk))) :+: C1 ('MetaCons "SwitchBackToVolatileDB" 'PrefixI 'False) (U1 :: Type -> Type))))