The GitHub Actions job "Required Checks" on texera.git/gh-readonly-queue/main/pr-7674-256c2d10471a5182358fd6783c4680adbfc5e2c0 has succeeded. Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).
Head commit for run: 1c4662b7cff853bdb06414f973956a09dd156448 / Xinyuan Lin <[email protected]> refactor(amber): collapse the single-subclass ReplayLogger hierarchy into one class (#7674) ### What changes were proposed in this PR? Collapses the two-file `ReplayLogger` hierarchy into one concrete class. #7452 removed `EmptyReplayLogger`, which left the abstract base with a single subclass and no declared-type site anywhere: | `ReplayLogger` | Subclasses | Declared-type sites | | --- | ---: | --- | | before #7452 | 2 | 1 — `EmptyReplayLoggerSpec.scala:125`, itself deleted by #7452 | | on `main` today | 1 | 0 | ``` ReplayLogManager.scala:109 private val replayLogger = new ReplayLoggerImpl() -> infers the concrete class ReplayLoggerImpl.scala:31 class ReplayLoggerImpl extends ReplayLogger -> the only subclass ReplayLogger.scala:28 abstract class ReplayLogger -> nothing else refers to it ``` So the base declared three abstract methods that exactly one class implemented and that no call site dispatched through. Dropping it removes `extends ReplayLogger`, one `override` keyword that no longer overrides anything, and one of the two files. The three method bodies move across untouched — no behaviour change. **Naming.** The surviving class takes the plain `ReplayLogger` name. With the base gone there is no abstraction left for an `...Impl` suffix to distinguish it from, and the suffix would advertise an interface that no longer exists. `ReplayLogManagerImpl` is unaffected — it does sit beside a real `ReplayLogManager` trait in the same package. ``` before after ReplayLogger.scala abstract class ReplayLogger ReplayLogger.scala class ReplayLogger ReplayLoggerImpl.scala class ReplayLoggerImpl (deleted) extends ReplayLogger ``` The rename touches one production call site (`ReplayLogManager.scala:109`) and the `new ReplayLoggerImpl()` constructions plus test names in `LogreplayPrimitivesSpec`. It also fixes a stale `@param channel` in the Scaladoc, whose parameter has been called `channelId` all along. ### Any related issues, documentation, discussions? Closes #7673 ### How was this PR tested? Existing tests only — this is a structural change with no behaviour change, and `LogreplayPrimitivesSpec` already covers the class by constructing it directly, so it pins all three methods across the refactor. Its only edits are the type name. Locally, from the repo root with Java 17: - `sbt "WorkflowExecutionService/Test/compile"` — success. - `sbt "WorkflowExecutionService/testOnly *LogreplayPrimitivesSpec *EmptyReplayLogManagerImplSpec *ReplayLogGeneratorSpec"` — all green. - `sbt scalafmtCheckAll "scalafixAll --check"` — clean. Verification, re-runnable by a reviewer: ``` git grep -rn ReplayLoggerImpl # empty — no Impl name survives git grep -nw ReplayLogger -- '*.scala' | grep -v Spec # 2 hits: the class, and its one call site ``` ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Claude Opus 5) Report URL: https://github.com/apache/texera/actions/runs/31999952631 With regards, GitHub Actions via GitBox
