chore(release): promote release to master - #42242
Merged
Merged
Conversation
…lures (#42221) ## Description **TL;DR:** Make the base-image `apt` install resilient to transient Ubuntu-mirror connection failures, so a momentary network blip on the build host doesn't red the whole `Docker Base Image` build. ### Background / root cause The `Docker Base Image` workflow (`deploy/docker/base.dockerfile`) intermittently fails at the apt dependency-install layer when the builder briefly can't reach the Ubuntu mirrors. Most recent example: appsmith-ee run [34570186320](https://github.com/appsmithorg/appsmith-ee/actions/runs/34570186320) failed twice with `connect (101: Network is unreachable)` (IPv6) and `connection timed out` (IPv4) to `archive.ubuntu.com` / `security.ubuntu.com`. The same base-image build has flaked on apt before (a same-SHA run failed, then passed, on 2026-09-05). Verified cause: `ubuntu:24.04` ships **no** apt retry configuration — `apt-config dump` shows no `Acquire::Retries` and there is no drop-in in `/etc/apt/apt.conf.d/`, so the compiled default of **0 retries** applies. A single dropped connection fails the build. The two GPG-key `curl` fetches also had no retry, and the PostgreSQL one lacked `--fail` (so an HTTP error body could be piped into `apt-key`). ### Changes (`deploy/docker/base.dockerfile`, apt layer only) - Add a **build-scoped** apt drop-in before the apt operations: `Acquire::Retries "3"` + `Acquire::http(s)::Timeout "30"`. It is deleted in the same layer's cleanup (`rm -rf`), so the **shipped image's apt behavior is unchanged**. - Add `--retry 3 --retry-connrefused --connect-timeout 15 --retry-max-time 60` to the MongoDB and PostgreSQL key-fetch curls; add `--fail` to the PostgreSQL one. - Deliberately **not** done: no `Acquire::ForceIPv4` (IPv4 also timed out in the incident, so it wouldn't help), and no change to the deprecated `apt-key` usage (out of scope). This matches the retry pattern already used in this file (the Keycloak jar overlay uses `curl --fail --retry 3 --connect-timeout 15`). ### Scope / honest limitation This reduces flake frequency for **transient** mirror blips. It will **not** rescue a sustained multi-minute total egress outage — retries only help if egress recovers within the retry window. That class of failure is infra, not the Dockerfile. ### Verification - `ubuntu:24.04` default confirmed: no `Acquire::Retries`, no apt.conf.d retry drop-in → default 0. - Built the exact RUN structure (comment + `\`-continuation + `printf` drop-in + cleanup) with `docker build`: `apt-config dump` reports `Acquire::Retries "3"`; the drop-in is removed by cleanup (`test ! -f` passes); build prints success. BuildKit strips the inline `#` comment lines before the shell runs (same idiom already in this file). - All new `curl` flags accepted by `ubuntu:24.04`'s curl (connect failure exit 7 with 3 retries observed; no unknown-option error). ### Impact on existing instances None. The drop-in is created and deleted within the same build layer, so the produced image is byte-equivalent in apt configuration to before. Fresh install, upgrade-from-default, upgrade-from-customized, and rollback are all unaffected (this only changes how the base image is *built*, not its contents). ### Reviewers / second opinion Approach independently reviewed by GPT-5.6 sol and reconciled: retries tuned to 3 (not 5), `Acquire::Retries::Delay` dropped as redundant, drop-in build-scoped rather than persisted, `--fail` not duplicated on the mongo curl (already has `-f`), curl retries bounded, IPv4 not forced. Linear: https://linear.app/appsmith/issue/APP-15960 ## Automation /ok-to-test tags="@tag.All" > Note: this is a build/base-image change; the meaningful CI gate is the `Docker Base Image` build itself. Full Cypress requires a base-image rebuild + deploy preview. ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [x] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Chores - Improved container build reliability with retry and timeout handling for package, signing-key, and Java downloads. - Added clearer failure handling when signing keys or Java archives cannot be downloaded or processed. - Ensured temporary download files and package-manager settings are cleaned up after installation, keeping the final image free of build-time artifacts. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Fixes https://linear.app/appsmith/issue/APP-15960/base-image-build-make-apt-install-resilient-to-transient-mirror <!-- This is an auto-generated comment: Cypress test results --> > [!WARNING] > Tests have not run on the HEAD 1d82958 yet > <hr>Wed, 16 Sep 2026 07:48:45 UTC <!-- end of auto-generated comment: Cypress test results -->
…#42216) ## Summary Reduces Segment API call volume by ~48% on EE (~4M calls/day, ~120M/month) by removing redundant and disabled analytics events. 5 files changed, +37 / -218. ### Commit 1: Remove redundant client-side events (~2.93M/day) **1. Remove `EXECUTE_ACTION_SUCCESS` from plugin action paths** (~1.35M/day) The client `EXECUTE_ACTION_SUCCESS` carried identical properties to the preceding `EXECUTE_ACTION` — same action/plugin/datasource/app identity, zero additional data. Removed from 2 call sites in `PluginActionSaga.ts`. **NOT touched:** - `EXECUTE_ACTION` (client, pre-execution intent) — still fires - `EXECUTE_ACTION_FAILURE` (client, captures network/timeout/CORS errors that never reach the server) — still fires - JS expression SUCCESS/FAILURE in `analyticsSaga.ts` — no server equivalent, still fires **2. Remove `DEBUGGER_RESOLVED_ERROR_MESSAGE` fan-out where parent already fires** (~1.08M/day) On complete error deletion, both `DEBUGGER_RESOLVED_ERROR` (with `errorMessages[]` array) and N × `DEBUGGER_RESOLVED_ERROR_MESSAGE` fired in parallel. Removed the per-message fan-out since the parent already contains all message data. Partial-resolution paths where only `_MESSAGE` fires (the only record) are preserved. **3. Throttle `CUSTOM_WIDGET_API_UPDATE_MODEL` with count aggregation** (~500k+/day) Previously fired per `appsmith.model.key = value` call. Now emits once per widget per 60s with `{ widgetId, updateCount }`. ### Commit 2: Remove server-side `execute_ACTION_TRIGGERED` (~1.03M/day) **This is the richest execution analytics event** — it carries `timeElapsed`, `statusCode`, `isSuccessfulExecution`, query text, error details, datasource metadata, and request params that no other event has. **Why it is safe to remove NOW:** The Segment warehouse sync for this event has already been turned off. The event was costing ~1.03M API calls/day (~31M/month) with no downstream consumer. The data was already not flowing anywhere. **What is lost:** Execution outcome analytics — latency, success/failure rates, status codes, error details, query text. These are **not available from any remaining event**. The client `EXECUTE_ACTION` only captures intent (pre-execution), not outcome. **Reversibility:** Re-enabling is a one-commit revert if execution analytics are needed again. ### Impact on Segment cost **API calls (throughput):** | Change | Saved/day (EE) | Saved/month | |---|---|---| | Remove `EXECUTE_ACTION_SUCCESS` | ~1.35M | ~41M | | Remove debugger `_MESSAGE` fan-out | ~1.08M | ~32M | | Throttle custom widget | ~500k+ | ~15M | | Remove `execute_ACTION_TRIGGERED` (server) | ~1.03M | ~31M | | **Total** | **~3.96M/day (~48% of EE)** | **~119M/month** | CE source sees a proportional cut. Combined workspace savings estimated at ~119M+ API calls/month. **MTU:** No impact — same userIds, no identity changes. **Throughput ratio:** August was 644 calls/MTU (limit: 1,000). After this PR, projected ratio drops to ~350-400 — well within limits even if the MTU plan is downsized. ### What still fires after this PR (per plugin query execution) | Event | Side | What it captures | |---|---|---| | `EXECUTE_ACTION` | Client | Intent — action/plugin/datasource identity, app context. Fires before HTTP call. | | `EXECUTE_ACTION_FAILURE` | Client | Only on failure — error details for network/timeout/CORS failures. | | ~~`EXECUTE_ACTION_SUCCESS`~~ | ~~Client~~ | **Removed** — identical properties to EXECUTE_ACTION, zero additional data. | | ~~`execute_ACTION_TRIGGERED`~~ | ~~Server~~ | **Removed** — richest event but warehouse sync already off. No downstream consumer. | ### Warehouse impact - `execute_action_success` — stops receiving plugin-action rows (JS expression SUCCESS still flows) - `execute_action_triggered` — stops receiving rows (warehouse sync was already off) - `debugger_resolved_error_message` — receives fewer rows (only partial resolutions; full-deletion data in parent) - `custom_widget_api_update_model` — fewer rows, now includes `update_count` ### Linear https://linear.app/appsmith/issue/APP-15946 ### Slack thread https://theappsmith.slack.com/archives/C0B02MW6JMS/p1788271277313719 ### Automation /ok-to-test tags="@tag.Sanity" <!-- This is an auto-generated comment: Cypress test results --> > [!WARNING] > Tests have not run on the HEAD be5a057 yet > <hr>Wed, 16 Sep 2026 12:56:31 UTC <!-- end of auto-generated comment: Cypress test results --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Analytics** * Removed individual success and error-resolution event emissions while retaining aggregate tracking. * Improved model-update tracking so pending counts are recorded after activity stops and when widgets are closed. * Simplified action execution analytics handling and reduced unnecessary contextual data collection. * **Reliability** * Ensured pending tracking updates are cleared and finalized consistently during widget lifecycle changes. * Preserved accurate tracking when updates stop unexpectedly or widgets are unmounted. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
## Description Now `APPSMITH_DB_URL` takes precedence over `APPSMITH_MONGODB_URI` in mcp server Fixes #`Issue Number` ## Testing > [!NOTE] > **How CI runs on fork PRs — no action needed from you.** > 1. **Workflow approval.** GitHub holds the first run on fork PRs until a maintainer approves it, so a pause before any check appears is expected. > 2. **Credential-free checks.** Once approved, format, lint, typecheck, unit tests, cyclic-dependency and compile-only build checks run without repository secrets. Only the checks relevant to what you changed (client / server / RTS) will run, and their logs are safe to debug against. > 3. **Maintainer-triggered checks.** Cypress, Playwright, Docker builds and deploy previews need secrets, so a maintainer starts them with `/approve-ci`, and `/build-deploy-preview` when hands-on testing is needed. Approval is pinned to one commit — pushing again requires fresh approval. > > The `awaiting-maintainer` / `awaiting-contributor` labels show whose turn it is. You do **not** need `ok-to-test` or any slash command. Full detail: [Pull request check states](https://github.com/appsmithorg/appsmith/blob/release/contributions/CodeContributionsGuidelines.md#pull-request-check-states). Select the validation relevant to this change: - [ ] Client unit tests - [ ] Server unit tests - [ ] Cypress - [ ] Playwright - [ ] Deploy preview - [ ] Not applicable Suggested Cypress tags or specs: ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Updated MongoDB connection handling to prioritize `APPSMITH_DB_URL`, with `APPSMITH_MONGODB_URI` used as a fallback. * Governance features now correctly remain unavailable when the selected database URL is not MongoDB. * **Documentation** * Updated setup guidance and startup messaging to reflect the database URL precedence. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Contributor
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Promote
releasetomaster.Commits
Automation
/ok-to-test tags=""
Warning
Tests have not run on the HEAD 616c80a yet
Wed, 16 Sep 2026 18:20:31 UTC