apache / apache/texera

Refactor amber engine to stop depending on amber/web internals

Open
#5,424 0 comments 0 reactions 1 assignee Claimed by @Yicong-Huang View on GitHub
Dominant language
Scala
Stars
314
Forks
187
Avg merge
1d 21h
Merged PRs (30d)
214

Description

### Task Summary

Four files under `amber/src/main/scala/org/apache/texera/amber/` (the engine) import classes from `org.apache.texera.web.*`, violating the engine-vs-web layering:

- `amber/clustering/ClusterListener.scala` — imports `web.SessionState`, `web.model.websocket.response.ClusterStatusUpdateEvent`, `web.service.{WorkflowExecutionService, WorkflowService}`, `web.storage.ExecutionStateStore.updateWorkflowState`
- `amber/engine/architecture/controller/Controller.scala` — imports `web.SessionState`, `web.model.websocket.response.RegionUpdateEvent`
- `amber/engine/architecture/scheduling/RegionExecutionCoordinator.scala` — imports `web.SessionState`, `web.model.websocket.event.RegionStateEvent`, `web.resource.dashboard.user.workflow.WorkflowExecutionsResource`
- `amber/engine/architecture/pythonworker/PythonWorkflowWorker.scala` — imports `web.resource.pythonvirtualenvironment.PveManager`

The engine actors push WebSocket events directly through web's `SessionState` plumbing and reach into web-side resources. Correct shape is the engine exposing an event stream / interface that web subscribes to, and web-resident utilities like `PveManager` moving to the engine side if the engine genuinely owns the lifecycle.

This is a prerequisite for #5423: once these leaks are gone, upgrading the web layer's Dropwizard version no longer forces the engine to recompile against new web types.

Part of #5423.

### Task Type

- [x] Refactor / Cleanup

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.