Remove redundant fields from LedgerNodeInfo

CHANGELOG_BEGIN

[DAML Studio] as the `parent` and `rolledbackBy` fields of `LedgerNodeInfo` are not used within the code base, they have been removed.

CHANGELOG_END
This commit is contained in:
Carl Pulley 2022-06-29 16:35:42 +02:00 committed by GitHub
parent c47b52334c
commit 5c026163a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 139 deletions

View File

@ -527,10 +527,6 @@ final class Conversions(
nodeInfo.consumedBy
.map(eventId => builder.setConsumedBy(convertEventId(eventId)))
nodeInfo.rolledbackBy
.map(nodeId => builder.setRolledbackBy(convertNodeId(eventId.transactionId, nodeId)))
nodeInfo.parent
.map(eventId => builder.setParent(convertEventId(eventId)))
nodeInfo.node match {
case rollback: Node.Rollback =>

View File

@ -156,11 +156,6 @@ object ScenarioLedger {
* node exists. Consumption under a rollback
* is not included here even for contracts created
* under a rollback node.
* @param rolledbackBy The nearest ancestor rollback node, provided such a
* node exists.
* @param parent If the node is part of a sub-transaction, then
* this is the immediate parent, which must be an
* 'NodeExercises' node.
*/
final case class LedgerNodeInfo(
node: Node,
@ -170,8 +165,6 @@ object ScenarioLedger {
disclosures: Map[Party, Disclosure],
referencedBy: Set[EventId],
consumedBy: Option[EventId],
rolledbackBy: Option[NodeId],
parent: Option[EventId],
) {
/** 'True' if the given 'View' contains the given 'Node'. */
@ -415,8 +408,6 @@ object ScenarioLedger {
disclosures = Map.empty,
referencedBy = Set.empty,
consumedBy = None,
rolledbackBy = None,
parent = None,
)
ledgerData.copy(nodeInfos = ledgerData.nodeInfos + (eventId -> newLedgerNodeInfo))
@ -458,28 +449,6 @@ object ScenarioLedger {
ledgerData
}
def parentUpdates(historicalLedgerData: LedgerData): LedgerData =
richTr.transaction.transaction.fold[LedgerData](historicalLedgerData) {
case (ledgerData, (nodeId, exerciseNode: Node.Exercise)) =>
exerciseNode.children.foldLeft[LedgerData](ledgerData) {
case (updatedLedgerData, childNodeId) =>
updatedLedgerData.updateLedgerNodeInfo(EventId(trId.id, childNodeId))(
ledgerNodeInfo => ledgerNodeInfo.copy(parent = Some(EventId(trId.id, nodeId)))
)
}
case (ledgerData, (nodeId, rollbackNode: Node.Rollback)) =>
rollbackNode.children.foldLeft[LedgerData](ledgerData) {
case (updatedLedgerData, childNodeId) =>
updatedLedgerData.updateLedgerNodeInfo(EventId(trId.id, childNodeId))(
ledgerNodeInfo => ledgerNodeInfo.copy(parent = Some(EventId(trId.id, nodeId)))
)
}
case (ledgerData, (_, _: Node)) =>
ledgerData
}
def consumedByUpdates(ledgerData: LedgerData): LedgerData = {
var ledgerDataResult = ledgerData
@ -492,19 +461,6 @@ object ScenarioLedger {
ledgerDataResult
}
def rolledbackByUpdates(ledgerData: LedgerData): LedgerData = {
var ledgerDataResult = ledgerData
for ((nodeId, rollbackNodeId) <- richTr.transaction.transaction.rolledbackBy) {
ledgerDataResult = ledgerDataResult.updateLedgerNodeInfo(EventId(trId.id, nodeId)) {
ledgerNodeInfo =>
ledgerNodeInfo.copy(rolledbackBy = Some(rollbackNodeId))
}
}
ledgerDataResult
}
def activeContractAndKeyUpdates(ledgerData: LedgerData): LedgerData = {
ledgerData.copy(
activeContracts =
@ -563,12 +519,8 @@ object ScenarioLedger {
// Update ledger data with any new created in and referenced by information
cachedLedgerData = processor.createdInAndReferenceByUpdates(cachedLedgerData)
// Update ledger data with any new parent information
cachedLedgerData = processor.parentUpdates(cachedLedgerData)
// Update ledger data with any new consumed by information
cachedLedgerData = processor.consumedByUpdates(cachedLedgerData)
// Update ledger data with any new rolled back by information
cachedLedgerData = processor.rolledbackByUpdates(cachedLedgerData)
// Update ledger data with any new active contract information
cachedLedgerData = processor.activeContractAndKeyUpdates(cachedLedgerData)
// Update ledger data with any new disclosure information

View File

@ -488,38 +488,6 @@ sealed abstract class HasTxNodes {
rollbackEnd = (consumedByMap, _, _) => consumedByMap,
)
/** Keys are nodes under a rollback and values are the "nearest" (i.e. most recent) rollback node.
*/
final def rolledbackBy: Map[NodeId, NodeId] = {
val rolledbackByMapUpdate
: ((Map[NodeId, NodeId], Seq[NodeId]), NodeId) => (Map[NodeId, NodeId], Seq[NodeId]) = {
case ((rolledbackMap, rollbackStack @ (rollbackNode +: _)), nodeId) =>
(rolledbackMap + (nodeId -> rollbackNode), rollbackStack)
case (state, _) =>
state
}
foldInExecutionOrder[(Map[NodeId, NodeId], Seq[NodeId])]((HashMap.empty, Vector.empty))(
exerciseBegin =
(state, nodeId, _) => (rolledbackByMapUpdate(state, nodeId), ChildrenRecursion.DoRecurse),
rollbackBegin = { case ((rolledbackMap, rollbackStack), nodeId, _) =>
((rolledbackMap, nodeId +: rollbackStack), ChildrenRecursion.DoRecurse)
},
leaf = (state, nodeId, _) => rolledbackByMapUpdate(state, nodeId),
exerciseEnd = (state, _, _) => state,
rollbackEnd = {
case ((rolledbackMap, _ +: rollbackStack), _, _) =>
(rolledbackMap, rollbackStack)
case _ =>
throw new IllegalStateException(
"Impossible case: rollbackBegin should already have pushed to the rollback stack"
)
},
)._1
}
/** Return the expected contract key inputs (i.e. the state before the transaction)
* for this transaction or an error if the transaction contains a
* duplicate key error or has an inconsistent mapping for a key. For

View File

@ -676,14 +676,13 @@ class TransactionSpec
}
}
"consumedBy and rolledbackBy" - {
"consumedBy" - {
"non-consuming transaction with no rollbacks" - {
"no nodes" in {
val builder = TransactionBuilder()
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe Map.empty
}
"one node" - {
@ -696,7 +695,6 @@ class TransactionSpec
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe Map.empty
}
"with global contracts" in {
@ -709,7 +707,6 @@ class TransactionSpec
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe Map.empty
}
}
@ -725,7 +722,6 @@ class TransactionSpec
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe Map.empty
}
"create and non-consuming exercise nodes" - {
@ -739,7 +735,6 @@ class TransactionSpec
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe Map.empty
}
"with global contracts" in {
@ -751,14 +746,13 @@ class TransactionSpec
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe Map.empty
}
}
}
}
"consuming transaction with no rollbacks" - {
"one excercise" - {
"one exercise" - {
"with local contracts" in {
val builder = TransactionBuilder()
val parties = Seq("Alice")
@ -770,7 +764,6 @@ class TransactionSpec
transaction.consumedBy shouldBe
Map(cid0 -> exerciseId0)
transaction.rolledbackBy shouldBe Map.empty
}
"with global contracts" in {
@ -783,7 +776,6 @@ class TransactionSpec
transaction.consumedBy shouldBe
Map(cid0 -> exerciseId0)
transaction.rolledbackBy shouldBe Map.empty
}
}
@ -802,7 +794,6 @@ class TransactionSpec
transaction.consumedBy shouldBe
Map(cid0 -> exerciseId0, cid1 -> exerciseId1)
transaction.rolledbackBy shouldBe Map.empty
}
"with global contracts" in {
@ -817,7 +808,6 @@ class TransactionSpec
transaction.consumedBy shouldBe
Map(cid0 -> exerciseId0, cid1 -> exerciseId1)
transaction.rolledbackBy shouldBe Map.empty
}
}
}
@ -834,13 +824,11 @@ class TransactionSpec
builder.add(createNode1)
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true))
val rollbackId = builder.add(builder.rollback())
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId)
builder.add(exercise(builder, createNode1, parties, true), rollbackId)
val transaction = builder.build()
transaction.consumedBy shouldBe
Map(cid0 -> nodeId0)
transaction.rolledbackBy shouldBe
Map(nodeId1 -> rollbackId)
}
"with global contracts" in {
@ -851,19 +839,17 @@ class TransactionSpec
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true))
val rollbackId = builder.add(builder.rollback())
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId)
builder.add(exercise(builder, createNode1, parties, true), rollbackId)
val transaction = builder.build()
transaction.consumedBy shouldBe
Map(cid0 -> nodeId0)
transaction.rolledbackBy shouldBe
Map(nodeId1 -> rollbackId)
}
}
"multiple rollbacks" - {
"sequential rollbacks" - {
"with local wontracts" in {
"with local contracts" in {
val builder = TransactionBuilder()
val parties = Seq("Alice")
val (_, createNode0) = create(builder, parties, Some("key0"))
@ -872,14 +858,12 @@ class TransactionSpec
builder.add(createNode0)
builder.add(createNode1)
val rollbackId0 = builder.add(builder.rollback())
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
val rollbackId1 = builder.add(builder.rollback())
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe
Map(nodeId0 -> rollbackId0, nodeId1 -> rollbackId1)
}
"with global contracts" in {
@ -889,14 +873,12 @@ class TransactionSpec
val (_, createNode1) = create(builder, parties, Some("key1"))
val rollbackId0 = builder.add(builder.rollback())
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
val rollbackId1 = builder.add(builder.rollback())
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe
Map(nodeId0 -> rollbackId0, nodeId1 -> rollbackId1)
}
}
@ -911,14 +893,12 @@ class TransactionSpec
builder.add(createNode0)
builder.add(createNode1)
val rollbackId0 = builder.add(builder.rollback())
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
val rollbackId1 = builder.add(builder.rollback(), rollbackId0)
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe
Map(nodeId0 -> rollbackId0, nodeId1 -> rollbackId1)
}
"with global contracts" in {
@ -928,14 +908,12 @@ class TransactionSpec
val (_, createNode1) = create(builder, parties, Some("key1"))
val rollbackId0 = builder.add(builder.rollback())
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
val rollbackId1 = builder.add(builder.rollback(), rollbackId0)
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe
Map(nodeId0 -> rollbackId0, nodeId1 -> rollbackId1)
}
}
@ -951,16 +929,14 @@ class TransactionSpec
builder.add(createNode1)
builder.add(createNode2)
val rollbackId0 = builder.add(builder.rollback())
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
val rollbackId1 = builder.add(builder.rollback(), rollbackId0)
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
val rollbackId2 = builder.add(builder.rollback(), rollbackId0)
val nodeId2 = builder.add(exercise(builder, createNode2, parties, true), rollbackId2)
builder.add(exercise(builder, createNode2, parties, true), rollbackId2)
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe
Map(nodeId0 -> rollbackId0, nodeId1 -> rollbackId1, nodeId2 -> rollbackId2)
}
"with global contracts" in {
@ -971,16 +947,14 @@ class TransactionSpec
val (_, createNode2) = create(builder, parties, Some("key2"))
val rollbackId0 = builder.add(builder.rollback())
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
val rollbackId1 = builder.add(builder.rollback(), rollbackId0)
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
val rollbackId2 = builder.add(builder.rollback(), rollbackId0)
val nodeId2 = builder.add(exercise(builder, createNode2, parties, true), rollbackId2)
builder.add(exercise(builder, createNode2, parties, true), rollbackId2)
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe
Map(nodeId0 -> rollbackId0, nodeId1 -> rollbackId1, nodeId2 -> rollbackId2)
}
}
@ -996,16 +970,14 @@ class TransactionSpec
builder.add(createNode1)
builder.add(createNode2)
val rollbackId0 = builder.add(builder.rollback())
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
val rollbackId1 = builder.add(builder.rollback(), rollbackId0)
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
val rollbackId2 = builder.add(builder.rollback(), rollbackId1)
val nodeId2 = builder.add(exercise(builder, createNode2, parties, true), rollbackId2)
builder.add(exercise(builder, createNode2, parties, true), rollbackId2)
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe
Map(nodeId0 -> rollbackId0, nodeId1 -> rollbackId1, nodeId2 -> rollbackId2)
}
"with global contracts" in {
@ -1016,16 +988,14 @@ class TransactionSpec
val (_, createNode2) = create(builder, parties, Some("key2"))
val rollbackId0 = builder.add(builder.rollback())
val nodeId0 = builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
builder.add(exercise(builder, createNode0, parties, true), rollbackId0)
val rollbackId1 = builder.add(builder.rollback(), rollbackId0)
val nodeId1 = builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
builder.add(exercise(builder, createNode1, parties, true), rollbackId1)
val rollbackId2 = builder.add(builder.rollback(), rollbackId1)
val nodeId2 = builder.add(exercise(builder, createNode2, parties, true), rollbackId2)
builder.add(exercise(builder, createNode2, parties, true), rollbackId2)
val transaction = builder.build()
transaction.consumedBy shouldBe Map.empty
transaction.rolledbackBy shouldBe
Map(nodeId0 -> rollbackId0, nodeId1 -> rollbackId1, nodeId2 -> rollbackId2)
}
}
}