You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It's not clear what is mutating the ledger to cause this. We should investigate, and consider using immutable ledgers by default. If we use mutable ledgers only at creation and destruction time, and only allow ledger mutation when no immutable references are held via some kind of locking, then we should be able to mitigate this.
There are related concerns around all of our uses of ephemeral data. For example, the transaction pool is valid at a particular slot, and modifying it before we update it to the current slot also breaks invariants. We need to think much more carefully about how we handle mutable and ephemeral data, especially in the context of the concurrent async primitives we use.
The text was updated successfully, but these errors were encountered:
At present, the ledger can be mutated without notifying or updating other parts of the program that depend on the ledger state.
For example the ledger may be mutated during
Transaction_pool.apply
, causing the ledger to become inconsistent. This has manifested inIt's not clear what is mutating the ledger to cause this. We should investigate, and consider using immutable ledgers by default. If we use mutable ledgers only at creation and destruction time, and only allow ledger mutation when no immutable references are held via some kind of locking, then we should be able to mitigate this.
There are related concerns around all of our uses of ephemeral data. For example, the transaction pool is valid at a particular slot, and modifying it before we update it to the current slot also breaks invariants. We need to think much more carefully about how we handle mutable and ephemeral data, especially in the context of the concurrent async primitives we use.
The text was updated successfully, but these errors were encountered: