The compiler currently treats every view in a recursive fragment as a recursive variable (a stream passed to the recursive closure). However, only a subset of these variables are actually used to close the recursive feedback loop. Other variables are passed as _ to the closure and are not assigned a PID. DBSP ends up creating Z-1 operators whose output is disconnected for such streams. Since they don't have a PID, checkpointing fails for them.
There are two possible solutions:
- Such streams don't need to be declared as recursive variables.
- If we insist on making them variables, we need to assign persistent ids to them.
The compiler currently treats every view in a recursive fragment as a recursive variable (a stream passed to the recursive closure). However, only a subset of these variables are actually used to close the recursive feedback loop. Other variables are passed as
_to the closure and are not assigned a PID. DBSP ends up creating Z-1 operators whose output is disconnected for such streams. Since they don't have a PID, checkpointing fails for them.There are two possible solutions: