This is an automated email from the ASF dual-hosted git repository.

linxinyuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/texera.git


The following commit(s) were added to refs/heads/master by this push:
     new ec4c035180 fix: Bump scikit-learn from 1.3.2 to 1.5.0 in /core/amber 
(#2898)
ec4c035180 is described below

commit ec4c035180857fb146c169a60980be5980082792
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
AuthorDate: Tue Sep 30 16:55:45 2025 -0700

    fix: Bump scikit-learn from 1.3.2 to 1.5.0 in /core/amber (#2898)
    
    Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from
    1.3.2 to 1.5.0.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/scikit-learn/scikit-learn/releases";>scikit-learn's
    releases</a>.</em></p>
    <blockquote>
    <h2>Scikit-learn 1.5.0</h2>
    <p>We're happy to announce the 1.5.0 release.</p>
    <p>You can read the release highlights under <a
    
href="https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_5_0.html";>https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_5_0.html</a>
    and the long version of the change log under <a
    
href="https://scikit-learn.org/stable/whats_new/v1.5.html";>https://scikit-learn.org/stable/whats_new/v1.5.html</a></p>
    <p>This version supports Python versions 3.9 to 3.12.</p>
    <p>You can upgrade with pip as usual:</p>
    <pre><code>pip install -U scikit-learn
    </code></pre>
    <p>The conda-forge builds can be installed using:</p>
    <pre><code>conda install -c conda-forge scikit-learn
    </code></pre>
    <h2>Scikit-learn 1.4.2</h2>
    <p>We're happy to announce the 1.4.2 release.</p>
    <p>This release only includes support for numpy 2.</p>
    <p>This version supports Python versions 3.9 to 3.12.</p>
    <p>You can upgrade with pip as usual:</p>
    <pre><code>pip install -U scikit-learn
    </code></pre>
    <h2>Scikit-learn 1.4.1.post1</h2>
    <p>We're happy to announce the 1.4.1.post1 release.</p>
    <p>You can see the changelog here: <a
    
href="https://scikit-learn.org/stable/whats_new/v1.4.html#version-1-4-1-post1";>https://scikit-learn.org/stable/whats_new/v1.4.html#version-1-4-1-post1</a></p>
    <p>This version supports Python versions 3.9 to 3.12.</p>
    <p>You can upgrade with pip as usual:</p>
    <pre><code>pip install -U scikit-learn
    </code></pre>
    <p>The conda-forge builds can be installed using:</p>
    <pre><code>conda install -c conda-forge scikit-learn
    </code></pre>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/b51d0c9648241d1fd53dc9151689f62a61633a3d";><code>b51d0c9</code></a>
    trigger whell builder [cd build]</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/919ae9bf72554a180baa3d8f4537b49c730b7580";><code>919ae9b</code></a>
    MAINT Reoder what's new for 1.5 (<a
    
href="https://redirect.github.com/scikit-learn/scikit-learn/issues/29039";>#29039</a>)</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/0ac28ade871ca71a89a71c834a7b47829b075829";><code>0ac28ad</code></a>
    DOC Release highlights 1.5 (<a
    
href="https://redirect.github.com/scikit-learn/scikit-learn/issues/29007";>#29007</a>)</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/729b54d5af208432f788ae7945842f0cf597bd36";><code>729b54d</code></a>
    test py3.12 against numpy 2 [cd build]</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/1e50434f18275bb8727c2a2e24cb953db143d8a5";><code>1e50434</code></a>
    set version</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/ffbe4ab45bd9a113737231721fa2f55a70f3d0ab";><code>ffbe4ab</code></a>
    DOC remove obsolete SVM example (<a
    
href="https://redirect.github.com/scikit-learn/scikit-learn/issues/27108";>#27108</a>)</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/4647729e5ee8c46e4fedace2d3c50c37f0a6693d";><code>4647729</code></a>
    DOC Fix time complexity of MLP (<a
    
href="https://redirect.github.com/scikit-learn/scikit-learn/issues/28592";>#28592</a>)</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/9bd7047b4a6c673bcfd2911997f124e265f8ad57";><code>9bd7047</code></a>
    FIX convergence criterion of MeanShift (<a
    
href="https://redirect.github.com/scikit-learn/scikit-learn/issues/28951";>#28951</a>)</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/b79420f1c2e82d814dec8026e96421751bfc9c96";><code>b79420f</code></a>
    FIX add long long for int32/int64 windows compat in NumPy 2.0 (<a
    
href="https://redirect.github.com/scikit-learn/scikit-learn/issues/29029";>#29029</a>)</li>
    <li><a
    
href="https://github.com/scikit-learn/scikit-learn/commit/37f544db78503ed1a50da02cbb4f1a4e466fb0a7";><code>37f544d</code></a>
    DOC replace pandas with Polars in
    examples/gaussian_process/plot_gpr_co2.py (...</li>
    <li>Additional commits viewable in <a
    
href="https://github.com/scikit-learn/scikit-learn/compare/1.3.2...1.5.0";>compare
    view</a></li>
    </ul>
    </details>
    <br />
    
    
    [![Dependabot compatibility
    
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=scikit-learn&package-manager=pip&previous-version=1.3.2&new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the
    [Security Alerts page](https://github.com/Texera/texera/network/alerts).
    
    </details>
    
    ---------
    Signed-off-by: dependabot[bot] <[email protected]>
    Signed-off-by: PJ Fanning <[email protected]>
    Co-authored-by: dependabot[bot] 
<49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PJ Fanning <[email protected]>
    Co-authored-by: Xinyuan Lin <[email protected]>
---
 core/amber/operator-requirements.txt               |  2 +-
 .../ics/amber/engine/e2e/DataProcessingSpec.scala  |  3 +++
 .../edu/uci/ics/amber/engine/e2e/PauseSpec.scala   |  3 +++
 .../user/user-quota/user-quota.component.html      | 23 +++++++++-------------
 .../user/user-quota/user-quota.component.scss      |  4 ++--
 .../computing-unit-selection.component.ts          |  2 +-
 .../computing-unit-status.service.ts               |  7 ++++++-
 deployment/computing-unit-master.dockerfile        | 11 +++++++++--
 8 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/core/amber/operator-requirements.txt 
b/core/amber/operator-requirements.txt
index c13923241e..231ce34703 100644
--- a/core/amber/operator-requirements.txt
+++ b/core/amber/operator-requirements.txt
@@ -21,4 +21,4 @@ praw==7.6.1
 pillow==10.2.0
 pybase64==1.3.2
 torch==2.4.1
-scikit-learn==1.4.0
+scikit-learn==1.5.0
diff --git 
a/core/amber/src/test/scala/edu/uci/ics/amber/engine/e2e/DataProcessingSpec.scala
 
b/core/amber/src/test/scala/edu/uci/ics/amber/engine/e2e/DataProcessingSpec.scala
index 3d6616af8e..2cf6e53feb 100644
--- 
a/core/amber/src/test/scala/edu/uci/ics/amber/engine/e2e/DataProcessingSpec.scala
+++ 
b/core/amber/src/test/scala/edu/uci/ics/amber/engine/e2e/DataProcessingSpec.scala
@@ -59,6 +59,9 @@ class DataProcessingSpec
 
   override def beforeAll(): Unit = {
     system.actorOf(Props[SingleNodeListener](), "cluster-info")
+    // These test cases access postgres in CI, but occasionally the jdbc 
driver cannot be found during CI run.
+    // Explicitly load the JDBC driver to avoid flaky CI failures.
+    Class.forName("org.postgresql.Driver")
   }
 
   override def afterAll(): Unit = {
diff --git 
a/core/amber/src/test/scala/edu/uci/ics/amber/engine/e2e/PauseSpec.scala 
b/core/amber/src/test/scala/edu/uci/ics/amber/engine/e2e/PauseSpec.scala
index 1cae358e3f..bd4164798d 100644
--- a/core/amber/src/test/scala/edu/uci/ics/amber/engine/e2e/PauseSpec.scala
+++ b/core/amber/src/test/scala/edu/uci/ics/amber/engine/e2e/PauseSpec.scala
@@ -50,6 +50,9 @@ class PauseSpec
 
   override def beforeAll(): Unit = {
     system.actorOf(Props[SingleNodeListener](), "cluster-info")
+    // These test cases access postgres in CI, but occasionally the jdbc 
driver cannot be found during CI run.
+    // Explicitly load the JDBC driver to avoid flaky CI failures.
+    Class.forName("org.postgresql.Driver")
   }
 
   override def afterAll(): Unit = {
diff --git 
a/core/gui/src/app/dashboard/component/user/user-quota/user-quota.component.html
 
b/core/gui/src/app/dashboard/component/user/user-quota/user-quota.component.html
index 5df5793baf..51a1dcbf69 100644
--- 
a/core/gui/src/app/dashboard/component/user/user-quota/user-quota.component.html
+++ 
b/core/gui/src/app/dashboard/component/user/user-quota/user-quota.component.html
@@ -66,20 +66,6 @@
             <p class="info-content">{{ formatSize(this.totalQuotaSize) }}</p>
           </div>
         </div>
-        <nz-card
-          class="section-title"
-          [style.backgroundColor]="backgroundColor">
-          <h2
-            class="page-title"
-            [style.color]="textColor">
-            Diagram
-          </h2>
-        </nz-card>
-        <div class="charts-grid">
-          <div id="sizePieChart"></div>
-          <div id="datasetLineChart"></div>
-          <div id="workflowLineChart"></div>
-        </div>
       </nz-tab>
       <nz-tab nzTitle="Result Cache">
         <nz-collapse>
@@ -124,6 +110,15 @@
           </nz-collapse-panel>
         </nz-collapse>
       </nz-tab>
+      <nz-tab
+        nzTitle="Diagrams"
+        nzForceRender="true">
+        <div class="charts-grid">
+          <div id="sizePieChart"></div>
+          <div id="datasetLineChart"></div>
+          <div id="workflowLineChart"></div>
+        </div>
+      </nz-tab>
     </nz-tabset>
   </div>
 </div>
diff --git 
a/core/gui/src/app/dashboard/component/user/user-quota/user-quota.component.scss
 
b/core/gui/src/app/dashboard/component/user/user-quota/user-quota.component.scss
index d5b32caba8..6efa34ba61 100644
--- 
a/core/gui/src/app/dashboard/component/user/user-quota/user-quota.component.scss
+++ 
b/core/gui/src/app/dashboard/component/user/user-quota/user-quota.component.scss
@@ -49,7 +49,8 @@
   display: flex;
   flex-wrap: wrap;
   justify-content: center;
-  padding-top: 40px;
+  height: 70vh;
+  overflow-y: auto;
 
   > div {
     display: flex;
@@ -59,7 +60,6 @@
     background: #fff;
     box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
     padding: 10px;
-    height: 100%;
 
     &:hover {
       box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
diff --git 
a/core/gui/src/app/workspace/component/power-button/computing-unit-selection.component.ts
 
b/core/gui/src/app/workspace/component/power-button/computing-unit-selection.component.ts
index cde1da2742..cc42b86325 100644
--- 
a/core/gui/src/app/workspace/component/power-button/computing-unit-selection.component.ts
+++ 
b/core/gui/src/app/workspace/component/power-button/computing-unit-selection.component.ts
@@ -188,7 +188,7 @@ export class ComputingUnitSelectionComponent implements 
OnInit {
 
   /**
    * Registers a subscription to listen for workflow metadata changes;
-   * Calls `onComputingUnitChange` when the `wid` changes;
+   * Calls `selectComputingUnit` when the `wid` changes;
    * The wid can change by time because of the workspace rendering;
    */
   private registerWorkflowMetadataSubscription(): void {
diff --git 
a/core/gui/src/app/workspace/service/computing-unit-status/computing-unit-status.service.ts
 
b/core/gui/src/app/workspace/service/computing-unit-status/computing-unit-status.service.ts
index b5c840c866..4604e52c6f 100644
--- 
a/core/gui/src/app/workspace/service/computing-unit-status/computing-unit-status.service.ts
+++ 
b/core/gui/src/app/workspace/service/computing-unit-status/computing-unit-status.service.ts
@@ -51,6 +51,7 @@ export class ComputingUnitStatusService implements OnDestroy {
   private readonly REFRESH_INTERVAL_MS = 2000;
   private refreshSubscription: Subscription | null = null;
   private currentConnectedCuid?: number;
+  private currentConnectedWid?: number;
   private selectedUnitPoll?: Subscription;
 
   constructor(
@@ -148,19 +149,23 @@ export class ComputingUnitStatusService implements 
OnDestroy {
       });
   }
 
+  //
   /**
    * Select a computing unit **by its CUID** and emit the updated selection.
    */
   public selectComputingUnit(wid: number | undefined, cuid: number): void {
     const trySelect = (unit: DashboardWorkflowComputingUnit) => {
       // open websocket if needed
-      if (isDefined(wid) && this.currentConnectedCuid !== cuid) {
+      const shouldReconnect = this.currentConnectedCuid !== cuid || 
this.currentConnectedWid !== wid;
+      if (isDefined(wid) && shouldReconnect) {
         if (this.workflowWebsocketService.isConnected) {
           this.workflowWebsocketService.closeWebsocket();
           this.workflowStatusService.clearStatus();
         }
+
         this.workflowWebsocketService.openWebsocket(wid, 
this.userService.getCurrentUser()?.uid, cuid);
         this.currentConnectedCuid = cuid;
+        this.currentConnectedWid = wid;
         this.selectedUnitSubject.next(unit);
         this.startPollingSelectedUnit(cuid);
       }
diff --git a/deployment/computing-unit-master.dockerfile 
b/deployment/computing-unit-master.dockerfile
index 167bf1bccc..0f10729527 100644
--- a/deployment/computing-unit-master.dockerfile
+++ b/deployment/computing-unit-master.dockerfile
@@ -84,9 +84,16 @@ RUN curl -O 
https://cran.r-project.org/src/base/R-4/R-${R_VERSION}.tar.gz && \
     pip3 install -r /tmp/requirements.txt && \
     pip3 install -r /tmp/operator-requirements.txt && \
     pip3 install -r /tmp/r-requirements.txt
+# Install R packages, pinning arrow to 14.0.2.1 explicitly
 RUN Rscript -e "options(repos = c(CRAN = 'https://cran.r-project.org')); \
-                install.packages(c('coro', 'arrow', 'dplyr'), \
-                                 Ncpus = parallel::detectCores())"
+                install.packages(c('coro', 'dplyr'), \
+                                 Ncpus = parallel::detectCores())" && \
+    Rscript -e "options(repos = c(CRAN = 'https://cran.r-project.org')); \
+                if (!requireNamespace('remotes', quietly=TRUE)) \
+                  install.packages('remotes'); \
+                remotes::install_version('arrow', version='14.0.2.1', \
+                  repos='https://cran.r-project.org', upgrade='never'); \
+                cat('R arrow version: ', 
as.character(packageVersion('arrow')), '\n')"
 ENV LD_LIBRARY_PATH=/usr/local/lib/R/lib:$LD_LIBRARY_PATH
 
 # Copy the built texera binary from the build phase

Reply via email to