Fix change tracker count desync on error (#1555)

* Add TS types

* Ensure changeTracker works after exceptions

Wraps all code between before/after change calls in try/finally blocks
This commit is contained in:
filtered
2024-11-16 08:03:21 +11:00
committed by GitHub
parent 8af016ffc1
commit dde0291add
4 changed files with 83 additions and 65 deletions

View File

@@ -1573,10 +1573,7 @@ export class ComfyApp {
api.addEventListener('execution_start', ({ detail }) => {
this.lastExecutionError = null
this.graph.nodes.forEach((node) => {
// @ts-expect-error
if (node.onExecutionStart)
// @ts-expect-error
node.onExecutionStart()
if (node.onExecutionStart) node.onExecutionStart()
})
})
@@ -2408,8 +2405,8 @@ export class ComfyApp {
}
}
const innerNodes = outerNode['getInnerNodes']
? outerNode['getInnerNodes']()
const innerNodes = outerNode.getInnerNodes
? outerNode.getInnerNodes()
: [outerNode]
for (const node of innerNodes) {
if (node.isVirtualNode) {
@@ -2427,8 +2424,8 @@ export class ComfyApp {
for (const outerNode of graph.computeExecutionOrder(false)) {
const skipNode = outerNode.mode === 2 || outerNode.mode === 4
const innerNodes =
!skipNode && outerNode['getInnerNodes']
? outerNode['getInnerNodes']()
!skipNode && outerNode.getInnerNodes
? outerNode.getInnerNodes()
: [outerNode]
for (const node of innerNodes) {
if (node.isVirtualNode) {
@@ -2894,7 +2891,6 @@ export class ComfyApp {
for (let nodeNum in this.graph.nodes) {
const node = this.graph.nodes[nodeNum]
const def = defs[node.type]
// @ts-expect-error
// Allow primitive nodes to handle refresh
node.refreshComboInNode?.(defs)