Ma77Ball opened a new pull request, #5150:
URL: https://github.com/apache/texera/pull/5150

   ### What changes were proposed in this PR?
   `StatisticsManager` declared its input/output stats maps as 
`mutable.Map.empty.withDefaultValue((0L, 0L))`. The resulting `Map.WithDefault` 
wrapper does not survive a Kryo round-trip (its inner map deserializes as 
null), so
   `chkpt.load(CP_STATE_KEY)` on a default-state `ControllerProcessor` throws 
`KryoException: NullPointerException`, blocking `Controller.loadFromCheckpoint` 
from ever rehydrating a checkpointed controller. This PR removes the wrapper 
and inlines `getOrElse(portId, (0L, 0L))` at the two write sites; behavior is 
unchanged.
   ### Any related issues, documentation, or discussions?
   closes: #4686 
   ### How was this PR tested?   
   Replaced the two existing `should be serializable` cases in `CheckpointSpec` 
with full save then load round-trips (controller + worker) that assert 
`restored.actorId == original.actorId`; the new tests reproduce the original 
NPE on `main` and pass after the fix. Verified locally with `sbt 
'WorkflowExecutionService / Test / testOnly 
org.apache.texera.amber.engine.faulttolerance.CheckpointSpec'` (3/3 pass).
   ### Was this PR authored or co-authored using generative AI tooling?
   Co-authored with Claude Opus 4.7 in compliance with ASF


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to