Xiao-zhen-Liu commented on code in PR #4158:
URL: https://github.com/apache/texera/pull/4158#discussion_r2715387174


##########
amber/src/test/scala/org/apache/texera/amber/engine/e2e/DataProcessingSpec.scala:
##########
@@ -340,4 +352,205 @@ class DataProcessingSpec
     )
     executeWorkflow(workflow)
   }
+
+  // MATERIALIZED ExecutionMode tests - each operator should be a region
+  "Engine" should "execute headerlessCsv workflow with MATERIALIZED mode" in {

Review Comment:
   The first 4 test cases are all 1-operator workflows, and will execute with 
exactly the same behavior under pipelined mode. Consider removing redundant 
test cases.



##########
amber/src/main/scala/org/apache/texera/amber/engine/architecture/scheduling/CostBasedScheduleGenerator.scala:
##########
@@ -477,6 +482,29 @@ class CostBasedScheduleGenerator(
     )
   }
 
+  /** Constructs a baseline fully materialized region plan (one operator per 
region) and evaluates its cost. */
+  def materializedSearch(): SearchResult = {

Review Comment:
   This is not actually doing a search, so the name is misleading. You can call 
it something like `getFullyMaterializedSearchState`



##########
frontend/src/app/workspace/component/left-panel/settings/settings.component.ts:
##########
@@ -33,43 +33,51 @@ import { GuiConfigService } from 
"../../../../common/service/gui-config.service"
   styleUrls: ["./settings.component.scss"],
 })
 export class SettingsComponent implements OnInit {
-  settingsForm!: FormGroup;
-  currentDataTransferBatchSize!: number;
-  isSaving: boolean = false;
+  settingsForm: FormGroup;
 
   constructor(
     private fb: FormBuilder,
     private workflowActionService: WorkflowActionService,
     private workflowPersistService: WorkflowPersistService,
     private userService: UserService,
-    private notificationService: NotificationService,
-    private config: GuiConfigService
-  ) {}
-
-  ngOnInit(): void {
-    this.currentDataTransferBatchSize =
-      
this.workflowActionService.getWorkflowContent().settings.dataTransferBatchSize 
||
-      this.config.env.defaultDataTransferBatchSize;
-
+    private notificationService: NotificationService
+  ) {
     this.settingsForm = this.fb.group({
-      dataTransferBatchSize: [this.currentDataTransferBatchSize, 
[Validators.required, Validators.min(1)]],
+      dataTransferBatchSize: [
+        
this.workflowActionService.getWorkflowContent().settings.dataTransferBatchSize,
+        [Validators.required, Validators.min(1)],
+      ],
+      executionMode: 
[this.workflowActionService.getWorkflowContent().settings.executionMode],
     });
+  }
 
-    this.settingsForm.valueChanges.pipe(untilDestroyed(this)).subscribe(value 
=> {
-      if (this.settingsForm.valid) {
-        this.confirmUpdateDataTransferBatchSize(value.dataTransferBatchSize);
-      }
-    });
+  ngOnInit(): void {
+    this.settingsForm
+      .get("dataTransferBatchSize")!
+      .valueChanges.pipe(untilDestroyed(this))
+      .subscribe((batchSize: number) => {
+        if (this.settingsForm.get("dataTransferBatchSize")!.valid) {
+          this.confirmUpdateDataTransferBatchSize(batchSize);
+        }
+      });
+
+    this.settingsForm
+      .get("executionMode")!
+      .valueChanges.pipe(untilDestroyed(this))
+      .subscribe((mode: ExecutionMode) => {
+        this.updateExecutionMode(mode);
+      });
 
     this.workflowActionService
       .workflowChanged()
       .pipe(untilDestroyed(this))
       .subscribe(() => {
-        this.currentDataTransferBatchSize =
-          
this.workflowActionService.getWorkflowContent().settings.dataTransferBatchSize 
||
-          this.config.env.defaultDataTransferBatchSize;
+        console.log("workflow changed", 
this.workflowActionService.getWorkflowContent().settings.executionMode);

Review Comment:
   Is this needed?



##########
common/workflow-core/src/main/scala/org/apache/texera/amber/core/workflow/WorkflowSettings.scala:
##########
@@ -21,5 +21,6 @@ package org.apache.texera.amber.core.workflow
 
 case class WorkflowSettings(
     dataTransferBatchSize: Int,
-    outputPortsNeedingStorage: Set[GlobalPortIdentity] = Set.empty
+    outputPortsNeedingStorage: Set[GlobalPortIdentity] = Set.empty,
+    executionMode: ExecutionMode

Review Comment:
   I think it would be safer if there is also a default value here, and you 
would not have to modify `customWorkflowSettings`.



-- 
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