mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 09:17:43 +03:00
kvutils: Simpler constructors for common caching classes. (#7231)
* kvutils: Use `CachingDamlLedgerStateReader.apply`. * kvutils: Simplify the constructor of CachingCommitStrategy. CHANGELOG_BEGIN CHANGELOG_END
This commit is contained in:
parent
d33e130f47
commit
b707bc825d
@ -67,22 +67,17 @@ object BatchedSubmissionValidatorFactory {
|
||||
keySerializationStrategy: StateKeySerializationStrategy = DefaultStateKeySerializationStrategy,
|
||||
)(implicit executionContext: ExecutionContext)
|
||||
: (DamlLedgerStateReader with QueryableReadSet, CommitStrategy[LogResult]) = {
|
||||
val ledgerStateReader = new CachingDamlLedgerStateReader(
|
||||
val ledgerStateReader = CachingDamlLedgerStateReader(
|
||||
stateCache,
|
||||
cacheUpdatePolicy.shouldCacheOnRead,
|
||||
cacheUpdatePolicy,
|
||||
new LedgerStateReaderAdapter[LogResult](ledgerStateOperations),
|
||||
keySerializationStrategy,
|
||||
DamlLedgerStateReader.from(
|
||||
new LedgerStateReaderAdapter[LogResult](ledgerStateOperations),
|
||||
keySerializationStrategy,
|
||||
),
|
||||
)
|
||||
val commitStrategy = new CachingCommitStrategy(
|
||||
val commitStrategy = CachingCommitStrategy(
|
||||
stateCache,
|
||||
cacheUpdatePolicy.shouldCacheOnWrite,
|
||||
new LogAppendingCommitStrategy[LogResult](
|
||||
ledgerStateOperations,
|
||||
keySerializationStrategy,
|
||||
)
|
||||
cacheUpdatePolicy,
|
||||
ledgerStateOperations,
|
||||
keySerializationStrategy,
|
||||
)
|
||||
(ledgerStateReader, commitStrategy)
|
||||
}
|
||||
|
@ -8,14 +8,21 @@ import com.daml.ledger.participant.state.kvutils.DamlKvutils
|
||||
import com.daml.ledger.participant.state.kvutils.DamlKvutils.{DamlStateKey, DamlStateValue}
|
||||
import com.daml.ledger.participant.state.kvutils.export.SubmissionAggregator
|
||||
import com.daml.ledger.participant.state.v1.ParticipantId
|
||||
import com.daml.ledger.validator.CommitStrategy
|
||||
import com.daml.ledger.validator.caching.CachingDamlLedgerStateReader.StateCache
|
||||
import com.daml.ledger.validator.{
|
||||
CommitStrategy,
|
||||
LedgerStateOperations,
|
||||
LogAppendingCommitStrategy,
|
||||
StateKeySerializationStrategy
|
||||
}
|
||||
|
||||
import scala.concurrent.{ExecutionContext, Future}
|
||||
|
||||
class CachingCommitStrategy[Result](
|
||||
final class CachingCommitStrategy[Result](
|
||||
cache: Cache[DamlStateKey, DamlStateValue],
|
||||
shouldCache: DamlStateKey => Boolean,
|
||||
delegate: CommitStrategy[Result])(implicit executionContext: ExecutionContext)
|
||||
delegate: CommitStrategy[Result],
|
||||
)(implicit executionContext: ExecutionContext)
|
||||
extends CommitStrategy[Result] {
|
||||
override def commit(
|
||||
participantId: ParticipantId,
|
||||
@ -43,3 +50,17 @@ class CachingCommitStrategy[Result](
|
||||
)
|
||||
} yield result
|
||||
}
|
||||
|
||||
object CachingCommitStrategy {
|
||||
def apply[LogResult](
|
||||
stateCache: StateCache,
|
||||
cacheUpdatePolicy: CacheUpdatePolicy,
|
||||
ledgerStateOperations: LedgerStateOperations[LogResult],
|
||||
keySerializationStrategy: StateKeySerializationStrategy,
|
||||
)(implicit executionContext: ExecutionContext): CachingCommitStrategy[LogResult] =
|
||||
new CachingCommitStrategy(
|
||||
stateCache,
|
||||
cacheUpdatePolicy.shouldCacheOnWrite,
|
||||
new LogAppendingCommitStrategy(ledgerStateOperations, keySerializationStrategy),
|
||||
)
|
||||
}
|
||||
|
@ -10,7 +10,6 @@ import com.daml.ledger.validator.caching.CachingDamlLedgerStateReader.StateCache
|
||||
import com.daml.ledger.validator.{
|
||||
DamlLedgerStateReader,
|
||||
LedgerStateReader,
|
||||
RawToDamlLedgerStateReaderAdapter,
|
||||
StateKeySerializationStrategy
|
||||
}
|
||||
|
||||
@ -29,11 +28,12 @@ trait QueryableReadSet {
|
||||
* This is crucial for caching access to large frequently accessed state, for example
|
||||
* package state values (which are too expensive to deserialize from bytes every time).
|
||||
*/
|
||||
class CachingDamlLedgerStateReader(
|
||||
final class CachingDamlLedgerStateReader(
|
||||
val cache: StateCache,
|
||||
shouldCache: DamlStateKey => Boolean,
|
||||
keySerializationStrategy: StateKeySerializationStrategy,
|
||||
delegate: DamlLedgerStateReader)(implicit executionContext: ExecutionContext)
|
||||
delegate: DamlLedgerStateReader,
|
||||
)(implicit executionContext: ExecutionContext)
|
||||
extends DamlLedgerStateReader
|
||||
with QueryableReadSet {
|
||||
|
||||
@ -73,15 +73,16 @@ object CachingDamlLedgerStateReader {
|
||||
|
||||
type StateCache = Cache[DamlStateKey, DamlStateValue]
|
||||
|
||||
private[validator] def apply(
|
||||
def apply(
|
||||
cache: StateCache,
|
||||
cachingPolicy: CacheUpdatePolicy,
|
||||
ledgerStateOperations: LedgerStateReader,
|
||||
keySerializationStrategy: StateKeySerializationStrategy)(
|
||||
implicit executionContext: ExecutionContext): CachingDamlLedgerStateReader =
|
||||
keySerializationStrategy: StateKeySerializationStrategy,
|
||||
)(implicit executionContext: ExecutionContext): CachingDamlLedgerStateReader =
|
||||
new CachingDamlLedgerStateReader(
|
||||
cache,
|
||||
cachingPolicy.shouldCacheOnRead,
|
||||
keySerializationStrategy,
|
||||
new RawToDamlLedgerStateReaderAdapter(ledgerStateOperations, keySerializationStrategy))
|
||||
DamlLedgerStateReader.from(ledgerStateOperations, keySerializationStrategy),
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user