[debugger] ensure node is obsolete on backend

GitOrigin-RevId: 57f6cef040bc082c477d72f1f0e2d46ecebf4bd1
This commit is contained in:
Egor Ushakov
2025-09-18 18:12:41 +00:00
committed by intellij-monorepo-bot
parent bbe5b4a516
commit 64f0dc35bf
@@ -187,10 +187,11 @@ internal fun computeContainerChildren(
}
val addNextChildrenCallbackHandler = AddNextChildrenCallbackHandler(this@channelFlow)
var isObsolete = false
val xCompositeBridgeNode = object : XCompositeNode {
@Volatile
var obsolete = false
override fun isObsolete(): Boolean {
return isObsolete
return obsolete
}
override fun addChildren(children: XValueChildrenList, last: Boolean) {
@@ -222,20 +223,18 @@ internal fun computeContainerChildren(
}
}
xValueContainer.computeChildren(xCompositeBridgeNode)
// mark xCompositeBridgeNode as obsolete when the channel collection is canceled
launch {
try {
awaitCancellation()
}
finally {
isObsolete = true
for (event in rawEvents) {
send(event.convertToRpcEvent(parentCs, session))
}
}
for (event in rawEvents) {
send(event.convertToRpcEvent(parentCs, session))
try {
xValueContainer.computeChildren(xCompositeBridgeNode)
awaitClose()
}
finally {
xCompositeBridgeNode.obsolete = true
}
}
}