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]
