Commit Graph
100 Commits
Author SHA1 Message Date
Jakob Ackermann c59ac4cc55 [storybook] invalidate babel cache if needed (#32035)
* [storybook] invalidate babel cache if needed

* [storybook] defer import until after overriding env var

GitOrigin-RevId: 735e6c794cb61f72b7a5ccbe9d6ae310b577b727
2026-03-06 09:16:16 +00:00
Jakob Ackermann bb3e1286db [clsi] parse env var for download concurrency as int (#31959)
GitOrigin-RevId: dbd91315318e385d691a6b59efeb3bf22f559fa2
2026-03-06 09:12:25 +00:00
Jakob Ackermann 81b7121408 [clsi] initial implementation of compile from history (#31883)
* [clsi] initial implementation of compile from history

* [clsi] copy changes

* [saas-e2e] extend test case with nested folder

* [saas-e2e] add test case for tracked changes

* [web] fix accumulating changes from multiple chunks

* [web] optimize size check for compile request payload

* [clsi] deduplicate globalBlobs

* [clsi] add validation for request body details

* [clsi] add metrics for compile from history

* [clsi] download binary files concurrently

* [clsi] skip download of empty file blob

* [clsi] break down e2e compile time metric by compileFromHistory

GitOrigin-RevId: 0dadef93e89d8a172c35cb130a1042d9d1bec42a
2026-03-06 09:12:07 +00:00
Jakob Ackermann da50aee52c [web] disable buffering when downloading large files (#31874)
* [web] disable buffering when downloading large files

* [web] fix unit tests

GitOrigin-RevId: c8b0381962814fa62425364f03457600daf287ef
2026-03-06 09:10:32 +00:00
Jakob Ackermann 624a351aac [web] increase timeout for downloads from clsi (#31840)
* [web] increase timeout for downloads from clsi

* [web] detach request timeout from streaming timeout

* [web] align timeout for clsi-cache downloads with clsi downloads

* [web] destroy stream when bailing out early from aborted requests

GitOrigin-RevId: cc4cad9d684214b2eee0f5fc43513e430ceb0977
2026-03-06 09:09:50 +00:00
Jakob Ackermann bd51135d16 [docstore] remove fallback for update pipeline (#31791)
GitOrigin-RevId: b69a7b19b9ca09e2bb6404cb2ca941a43d8ae259
2026-03-06 09:07:59 +00:00
Jakob Ackermann eca31afb4a [clsi] remove unused endpoints for downloading output files (#31692)
GitOrigin-RevId: a0cac10f3585414779b026f38c2af2773c80082f
2026-03-06 09:06:33 +00:00
Jakob AckermannandBrian Gough 46f5af0987 [docstore] fix evaluating dollar based references (#31792)
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 8ffc1d1f930d0ac3c68cd59d8412932fea4229cd
2026-03-06 09:06:28 +00:00
Jakob Ackermann 9731f061af [monorepo] remove unused firejail profiles (#31790)
GitOrigin-RevId: ba4bac748014d5edf0cf2815af295c573502f144
2026-03-06 09:06:22 +00:00
Jakob AckermannandBrian Gough 84ed96522b [docstore] optimize op-log size using pipeline update (#31752)
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 2850d6b419df360768d8fe172f19e70baf7b4442
2026-02-24 09:07:23 +00:00
Jakob Ackermann 17e01526b4 [web] fix typo in i18n key (#31713)
* [web] fix typo in i18n key

* [web] sort locales

GitOrigin-RevId: 9736eae24cdbd7aabd995087de368c667b25b849
2026-02-24 09:07:18 +00:00
Jakob Ackermann 6c6e8d9a97 [monorepo] switch all output file reads to clsi-nginx (#31691)
* [monorepo] switch all output file reads to clsi-nginx

* [clsi-lb] allow gallery download requests

* [terraform] clsi: use nginx.conf from clsi service

* [clsi] fix flakey tests

* [clsi] replace alias with rewrite and root in nginx config

* [k8s] clsi-lb: expose download port on internal service

* [web] add explicit endpoint for downloading all output files

Serve the output.zip endpoint from clsi.

* [clsi] fix regex for latexqc submission ids

Previously, we only handled template submission ids.

GitOrigin-RevId: 6c3b21b01ec41ae767530b14aac31fbe3d640dd5
2026-02-24 09:07:12 +00:00
Jakob Ackermann f9ad6cf5d1 [monorepo] add eslint and prettier check to tools (#31720)
* [dependency-management] check eslint and prettier in Jenkins pipeline

* [npm-overrides-helper] check eslint and prettier in Jenkins pipeline

GitOrigin-RevId: 647f105babd536d0962ac2dbb3d6a0235ba73976
2026-02-24 09:06:12 +00:00
Jakob AckermannandBrian Gough d7514feafe [docstore] add metrics for writes to docs collection (#31741)
* [docstore] add metrics for writes to docs collection

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [docstore] fix import

* [docstore] use counter metric

* [docstore] add metric on lines delta

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 4662c5862315c800cb7b4d57bef60e08fbe7ba59
2026-02-24 09:05:35 +00:00
Jakob Ackermann 209f660435 [monorepo] remove endpoints for generating a fake error (#31679)
GitOrigin-RevId: d424881e6ebca157b81344705670021677f856de
2026-02-20 09:06:13 +00:00
Jakob Ackermann 03fd89fd77 [web] validate and parse email using EmailHelper when ratelimiting (#31622)
* [web] validate and parse email using EmailHelper when ratelimiting

* [web] use a fake email for rate-limiting ldap logins in Server Pro

GitOrigin-RevId: 27ea7724319e06c4d64ac81e1155dcab558da99c
2026-02-19 09:06:18 +00:00
Jakob Ackermann cb0266035d [web] remove unnecessary filtering of rootFolder (#31585)
11 years ago, the db.projects collection was storing doc lines in the
file-tree/rootFolder. Any operations on the project that did not need
those lines were benefitting from excluding all those entries from the
file-tree. These days, the verbose exclusions are not useful anymore and
merely add load on mongo.

REF: 9805c6a9ff
GitOrigin-RevId: 89f544688934c1ed1ca98877ffbe8baefe66c126
2026-02-19 09:06:13 +00:00
Jakob Ackermann 5b5e5a3d51 [document-updater] remove_deleted_docs: add option to run on single doc (#31595)
* [document-updater] remove_deleted_docs: use promisified RedisManager

* [document-updater] remove_deleted_docs: log all getDoc details

* [document-updater] remove_deleted_docs: add option to run on single doc

GitOrigin-RevId: e2b73defd1d99d14578ce573d0e05c31073ab739
2026-02-18 09:05:42 +00:00
Jakob Ackermann 06668fd6a8 [document-updater] add more context to docs without historyId in redis (#31570)
GitOrigin-RevId: 99cf9629d5393e980b14e096377122acf46ff5ed
2026-02-17 09:05:22 +00:00
Jakob Ackermann ddeafa1d7c [web] fallback to clsi-cache from regular output file download (#31555)
* [web] fallback to clsi-cache from regular output file download

* [web] add comment on req.params assignment

GitOrigin-RevId: 9d0c2e0a8e12d322aa5754c732a38f19adeac716
2026-02-17 09:05:08 +00:00
Jakob AckermannandJessica Lawshe 7c70b749d4 [monorepo] remove PII and variables from error messages (#31508)
* [monorepo] remove PII and variables from error messages

Exclusions:
- scripts
- tests
- fuzzing
- SplitTestManager (messages are sent to admin frontend)
- Group setup (we may want an error per unique tuple)
- sharejs (unused types; text type errors are shadowed already)
- history-v1 error messages that are used by the ErrorRecorder
- errors that flag issues with configuration/call signatures

I've used these search terms for finding unwanted error messages:
- new Error(`
- new Error\(\n\s+` (regex search)
- new OError(`
- new OError\(\n\s+` (regex search)

* [web] throw NotFoundError from ProjectLocator

* [github-sync] fix OError.tag call in script

Co-authored-by: Jessica Lawshe <jessica.lawshe@overleaf.com>

* [templates] revert changes to test client

---------

Co-authored-by: Jessica Lawshe <jessica.lawshe@overleaf.com>
GitOrigin-RevId: 736857a4fc5d9bfb0f8cb03e0f004eda87e5a220
2026-02-17 09:05:04 +00:00
Jakob AckermannandEric Mc Sween dbf6401f22 [monorepo] move retries from the outside to the per-test level (#31528)
* [monorepo] move retries from the outside to the per-test level

* [web] increase hookTimeout in CI

* [monorepo] consolidate test retries

- do not retry unit tests
- only retry in ci, optionally locally with "RETRIES=3 make test..."
- add retries for web

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>

---------

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
GitOrigin-RevId: 86e45edcfb087d18e0e957ad6df9a6105dcd5770
2026-02-16 09:06:48 +00:00
Jakob Ackermann df8190ec8c [logger] fix rendering of log context in testLogRecorder (#31522)
- use the processed context
- use the 'err' serializer for the 'error' field

GitOrigin-RevId: d1215e5af1f32bb1d9b5593e2644bea593daabda
2026-02-13 09:05:53 +00:00
Jakob Ackermann c5bc4a1259 [clsi] tweak logging for clsi-cache (#31452)
* [clsi] tweak logging for clsi-cache

- Use `clsi-cache` identifier on log line
- Add shard to context
- Record nFiles on "too many entries for tar" error

* [clsi] do not trip clsi-cache circuit breaker on ENOENT errors

These can happen when an output/compile-dir is purged while we download
files.

GitOrigin-RevId: ffa73ef312bce5232ef72e3b81966bb6e14d2255
2026-02-11 09:06:09 +00:00
Jakob Ackermann 0b7876d227 [web] throw if ALLOWED_IMAGE_NAMES is not defined in SaaS (#31172)
* [monorepo] use ALLOWED_IMAGE_NAMES from production

* [web] add ALLOWED_IMAGE_NAMES to CI env

* [web] throw if ALLOWED_IMAGE_NAMES is not defined in SaaS

* [e2e] update references to ALLOWED_IMAGE_NAMES

* [web] check for ALLOWED_IMAGE_NAMES from the settings-check module

GitOrigin-RevId: 43a7343e80521e3f7e496fb771593b4c22df7d1e
2026-02-10 09:06:54 +00:00
Jakob Ackermann a1a248cf9b [object-persistor] lazy load all the persistor implementations (#31431)
GitOrigin-RevId: ca8a5a7d6402810b01351c89318cb2c5ed0b7385
2026-02-10 09:06:46 +00:00
Jakob Ackermann ff8b394e51 [monorepo] fix package-lock.json (#31377)
GitOrigin-RevId: 84324a8965ac3810553afde570bb3aca52326001
2026-02-09 09:07:22 +00:00
Jakob Ackermann 8f173d7dc7 [web] integrate example project with clsi-cache (#31365)
* [web] integrate example project with clsi-cache

* [web] make prettier happy

* [e2e] gracefully handle initial compile from cache

GitOrigin-RevId: c7730a511e889749399ce660d692cad6e57dd5b3
2026-02-09 09:05:59 +00:00
Jakob Ackermann 1e9f917fe1 [web] add optional pub/sub based sync mechanism for system messages (#31328)
* [web] add optional pub/sub based sync mechanism for system messages

* [web] refactor lazy creation of redis connection

GitOrigin-RevId: 5f69428b8e8dac59aad73e8f16cd25625f2daae4
2026-02-06 09:06:12 +00:00
Jakob Ackermann 50f049ac7c [web] run prettier/eslint as node user locally (#31355)
GitOrigin-RevId: 2dd6c69eabe8223b8c9fba05dd1f4d81ddb6a481
2026-02-06 09:05:49 +00:00
Jakob AckermannandRebeka fd647002f5 [monorepo] enable caching for eslint and prettier (#30967)
* [monorepo] enable caching for eslint/prettier/stylelint

* [monorepo] speed up prettier by swapping --list-different for --check

--list-different will print each file that it processes. We have a lot
of files in the monorepo. Using --check only prints mismatching files.

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>

* [monorepo] explicitly configure prettier cache-location

This is the default location. Prettier will only discover that location
if the top level node_modules folder is writable, which is not the case
in CI. We create the .cache folder outside of docker, writable to node
inside docker.

The proper fix would be in prettier, to only check for write access in
the cache folder. Something to raise/upstream another day.

* [monorepo] run top-level format/format_fix in a single container

With the cache in place, it is much faster to use a single container.
As there is a single shared cache file, concurrent processes may see a
partially (re-)written cache file and bail out.

- all in a single container: 24s
- previous with -j4: 41s
- previous with -j8: failed due to corrupted cache file

---------

Co-authored-by: Rebeka <rebeka.dekany@overleaf.com>
GitOrigin-RevId: 7850a3a980ae6c836393d97fe56a6316ffc3fa18
2026-02-06 09:05:44 +00:00
Jakob Ackermann 49c1c65dd8 [e2e] e2e_test_setup: perform health check on all the services (#31311)
* [e2e] e2e_test_setup: perform health check on all the services

* [monorepo] install curl in nginx-proxy

GitOrigin-RevId: 0d04e2b1012e8b0349cdb297b43a303797fb1968
2026-02-05 09:05:53 +00:00
Jakob AckermannandBrian Gough 28a7aa5e19 [web] deactivate_projects: spread archiving jobs over the cron interval (#31212)
* [web] deactivate_projects: spread archiving jobs over the cron interval

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [web] deactivate_projects: stop processing after graceful shutdown

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [web] deactivate_projects: exit w/ code 1 when aborting due to max-time

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [web] deactivate_projects: adjust bail out for timeout

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [web] deactivate_projects: handle small number of projects better

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* add comment about use of --maxTime option

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: c62c66725233d391fd2c8d86ce95275cea88f36c
2026-02-04 09:05:59 +00:00
Jakob Ackermann 5829a7fe43 [web] integrate clsi-cache into download pdf from project dashboard (#31138)
* [monorepo] fix downloads from non-sharded clsi-cache

* [web] check some compile from cache options server-side

* [web] integrate clsi-cache into download pdf from project dashboard

* [web] remove frontend tests for server-side validation

* [web] remove unused fetch mock

* [web] use helper that adds polyfill for AbortSignal.any()

* [web] upgrade fetch-mock to fix leaking AbortSignal

* [web] do not add an extra timeout to clsi-cache request

The web backend service has a low timeout already.

GitOrigin-RevId: a90984b92f5d4f24005db5a09f2c5d2424436886
2026-02-02 09:06:13 +00:00
Jakob Ackermann 774d8434d8 [web] fix preparing clsi-cache when cloning project (#31169)
* [web] fix preparing clsi-cache when cloning project

* [monorepo] fix downloads from non-sharded clsi-cache

* [web] gracefully handle missing imageName when creating template

GitOrigin-RevId: 8647d1bb95edbedcd43cb6f9d9bc475f56e402c8
2026-02-02 09:06:08 +00:00
Jakob Ackermann 9970dd907a [e2e] use plain pdf.js for extracting PDF text (#31125)
* [monorepo] also cycle ssl_proxy to avoid hitting circuit break in nginx

* [e2e] use plain pdf.js for extracting PDF text

* [monorepo] manually download canvas binding for MacOS

GitOrigin-RevId: dbadbbaa0e121953c06ab4be9241bf361997865e
2026-02-02 09:05:29 +00:00
Jakob AckermannandAntoine Clausse 6a68007a07 [e2e] ensure user registration runs in a fresh session (#31164)
* [e2e] ensure user registration runs in a fresh session

* [e2e] align session key in Server Pro and SaaS

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>

---------

Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>
GitOrigin-RevId: cc322217dc5a631c2795f477edaa90da8b83959e
2026-02-02 09:04:59 +00:00
Jakob Ackermann 3ddc20e424 [server-ce] run npm install on minimal set of source files (#31111)
GitOrigin-RevId: 389acfb3e23533f5361f2cc0274b440d785a7179
2026-01-29 09:06:39 +00:00
Jakob Ackermann 8eba220693 [clsi] remove initial vs recompile flag from clsi-perf metric (#31052)
GitOrigin-RevId: 75d101b355b291206386b0e6838571894af17a48
2026-01-28 09:06:43 +00:00
Jakob AckermannandBrian Gough 86b29819c2 [document-updater] add missing await (#31034)
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: f0602801ce80ca617027004ad36f71c1e6cdcdd2
2026-01-27 09:06:59 +00:00
Jakob Ackermann d5936d8566 [document-updater] trigger graceful shutdown on unhandled error (#31027)
GitOrigin-RevId: dde99528bfbc1d33f392a52fa8eaf5d4e82266b3
2026-01-27 09:06:54 +00:00
Jakob AckermannandDaniel Kontsek 0ee8b25298 [k8s] clsi-cache: migrate to StatefulSet (#30886)
* [k8s] clsi-cache: migrate to StatefulSet

* clsi-cache: optimize ILB services for GKE subsetting

Update the new clsi-cache internal load balancer services
to use optimal settings for GKE subsetting (NEG backends):

- set allocateLoadBalancerNodePorts: false (not needed with NEGs)
- set externalTrafficPolicy: Local (preserve source IP, keep traffic in zone)
- add trafficDistribution: PreferClose (zone affinity)

These settings ensure traffic from CLSI VMs stays within the same zone
when possible, reducing latency and cross-zone network costs.

* [k8s] clsi-cache: add missing resource paths

* [clsi] exclude readOnly clsi-cache shards

---------

Co-authored-by: Daniel Kontsek <daniel.kontsek@overleaf.com>
GitOrigin-RevId: 34f18b319a0e859ff149a135131c95a44bc674d6
2026-01-27 09:05:50 +00:00
Jakob Ackermann 866e67cef1 [k8s] clsi-cache tweaks (#30949)
* [k8s] clsi-cache: switch parent-app label to 'clsi-cache-legacy'

* [k8s] clsi-cache: add service account from kustomization.yaml

* [k8s] clsi-cache: consolidate on a single array of CLSI_CACHE_INSTANCES

* [clsi-cache] make prettier happy

GitOrigin-RevId: 4082a71df591904cfe437c4bde74759ddd83634c
2026-01-23 09:06:15 +00:00
Jakob Ackermann 4be9ecbe14 [e2e] enable --notablescan for Server Pro and SaaS E2E tests (#30839)
* [e2e] enable --notablescan for Server Pro and SaaS E2E tests

* [server-ce] remove --notablescan override when downgrading

GitOrigin-RevId: 41eb6060e066b8a531d9e815802f1b4464bf5102
2026-01-20 09:06:51 +00:00
Jakob Ackermann 935801eabc [document-updater] check for flushed docs when fetching historyId (#30838)
* [document-updater] check for flushed docs when fetching historyId

* [document-updater] use doc version key for discovering all docs

GitOrigin-RevId: 122c6786b473c0836a7215ded4fae2819f908cd7
2026-01-20 09:06:47 +00:00
Jakob Ackermann 914362611e Revert "[e2e] enable --notablescan for Server Pro and SaaS E2E tests (#30677)" (#30833)
This reverts commit f08812899647bc8e4bc0c0d14d3250eb0b9f5c59.

GitOrigin-RevId: 7484cc5d5de6af0a5e4083fed4e8cacd9e1e643f
2026-01-20 09:05:49 +00:00
Jakob Ackermann 3786471135 [e2e] enable --notablescan for Server Pro and SaaS E2E tests (#30677)
* [e2e] enable --notablescan for Server Pro and SaaS E2E tests

* [web] fix query for expiring projects of E2E test users

* [web] check for --notablescan in e2e test setup

GitOrigin-RevId: f08812899647bc8e4bc0c0d14d3250eb0b9f5c59
2026-01-19 09:07:18 +00:00
Jakob AckermannandEric Mc Sween 3f9a7cf463 [clsi] consolidate metrics for clsi-perf (#30746)
* [clsi] remove all clsi-perf/health-check metrics

* [clsi] always emit E2E compile time metric

* [clsi] do not collect metrics for clsi-cache-template compiles

* [clsi] fix unit tests: request.metricsOpts always exists

* [clsi] use a gauge for the e2e compile time metric of clsi-perf

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>

* [clsi] remove metrics for binary file downloads from clsi-perf

---------

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
GitOrigin-RevId: 7995512e57c802086350e3d1a0ec5213ecdf0a05
2026-01-19 09:06:34 +00:00
Jakob Ackermann 14a7e935b8 [web] override timeout for a specific template (#30711)
* [web] override timeout for a specific template

* [web] fix junit integration for vitest

* [web] consolidate on JUNIT_ROOT_SUITE_NAME

* [web] fix unit test

GitOrigin-RevId: 3ba865e4b9c090c7bf8e07dc3d81e9bcee20d821
2026-01-15 14:19:33 +00:00
Jakob Ackermann 95f0dac343 [clsi-cache] add sharded disk layout (#30763)
* [clsi-cache] remove old DiskCrawler

* [clsi-cache] use helpers for populating state during initial crawl

* [clsi-cache] use path helpers everywhere

* [clsi-cache] create project folder as part of the initial crawl

* [clsi-cache] add sharded disk layout

* [k8s] clsi-cache: switch clsi-cache-zone-b-shard-0 to new disk layout

* [clsi-cache] tweak logging context

* [monorepo] add bin/format_project_key util

* [k8s] clsi-cache: use a single nginx config file

GitOrigin-RevId: bb49146502cc6201eef210efae33355321efd77b
2026-01-15 14:19:28 +00:00
Jakob AckermannandBrian Gough 023f39ded9 [clsi] try harder at sending files off to a working clsi-cache shard (#30673)
* [clsi] try harder at sending files off to a working clsi-cache shard

* [clsi] use a crc for generating a stable sequence of shards to try

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [clsi] gradually migrate to crc based shard assigment

* [clsi] tweak selecting clsi-cache shard from crc

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [clsi] bump rollout dates of new clsi-cache shard change

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: 9386e170503b405580e4d0a8641832f3fcb1fa83
2026-01-15 09:05:26 +00:00
9cc2a7f1e0 [clsi-cache] cache templates in GCS and create entries on-demand (#30614)
* [clsi-cache] cache templates in GCS and create entries on-demand

* [clsi-cache] add missing return

Co-authored-by: Daniel Kontsek <daniel.kontsek@overleaf.com>

* [clsi-cache] update build scripts

* [web] fix unit tests

* [web] run prettier (again)

* [clsi-cache] drop 1xx prefix from submissionId

* [clsi-cache] add bestEffortRmDir helper

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

---------

Co-authored-by: Daniel Kontsek <daniel.kontsek@overleaf.com>
Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: e4bd7dca5611f16d9a6e76f2e7cf83e5819fa610
2026-01-13 09:07:17 +00:00
Jakob Ackermann 18cff6e1ac [object-persistor] import ProjectKey helper from history-v1 (#30600)
GitOrigin-RevId: c72aa4bf91569904a2072c74d6ed2f3c764d97bb
2026-01-13 09:06:55 +00:00
Jakob Ackermann 292230b1db [web] inline trivial mongo queries when creating project from template (#30601)
GitOrigin-RevId: 7aefee892d491b1ec191d07bf1871317b897dec8
2026-01-13 09:06:47 +00:00
Jakob Ackermann 72ad614b25 [web] remove fallback for old clsi-server-id persistence (#30528)
GitOrigin-RevId: bd29aa1f77d61b5ff0c2c0a7d6fa893509c89e37
2026-01-13 09:06:43 +00:00
Jakob Ackermann 425e7b1e5b [web] enable mongo notablescan in CI (#29501)
* [monorepo] record ERROR/FATAL log messages in junit report

* [web] put SaaS specific code behind feature flag

* [web] use split test cache for getting user assignments

The unit tests needed updating as they did not replicate any of the
 mongo filtering. The acceptance tests cover this logic.

* [web] make better use of existing indexes

* [web] avoid col-scan in tests of notifications module

* [web] remove cleanup of empty feedbacks collection

* [web] add assertion for reason of rejected request in launchpad test

* [web] add missing indexes

* [web] enable mongo notablescan

* [web] make emailNotifications tests compatible with notablescan

GitOrigin-RevId: b888f2feeb3a0e915f068ae1c4ea23ec17821221
2026-01-13 09:06:38 +00:00
Jakob Ackermann 32ad596e54 [clsi] minor fixes for clsi-cache (#30551)
* [clsi] fix circuit breaker for clsi-cache

* [clsi] enable ts-check for CLSICacheHandler

* [clsi] limit the number of .blg files in clsi-cache to 50

* [clsi-cache] limit the number of files per job to 100

* [clsi-cache] explain early registration of buildId

* [clsi-cache] lock down downloads via nginx to project folder

GitOrigin-RevId: 081d0c40b08db3a384c4d765b71a50b973f42151
2026-01-07 09:06:30 +00:00
Jakob Ackermann 3586b37491 [web] Remove clsi-cache-prompt/survey, split-tests and events (#29510)
* [web] Remove clsi-cache-prompt/survey and split-tests

* [web] Remove initial 50/50 clsi-cache split-test

* [web] Remove synctex-downloaded-from-cache event

* [web] Remove fallback-to-clsi-cache event

* [saas-e2e] fix tests with clsi-cache enabled

GitOrigin-RevId: b5cf2ab073dc866fe398b81fd5afe46422134c80
2025-11-05 09:06:59 +00:00
Jakob Ackermann 5140fff347 [clsi] gracefully handle fast exit of synctex/wordcount containers (#29505)
* [clsi] gracefully handle fast exit of synctex/wordcount containers

* [clsi] do not change container options in-place for logging

GitOrigin-RevId: 0b685310a3c72f8f46125fefaa30c1ddb19e7b07
2025-11-05 09:06:40 +00:00
Jakob Ackermann 6691c5dc05 [monorepo] enable mongo notablescan for all services but web (#29497)
* [migrations] make old migrations compatible with --notablescan in mongo

Re-running the migration for db.users.emails.reversedHostname on all
Server Pro/CE users will not be harmfull.

* [monorepo] enable mongo notablescan for all services but web

GitOrigin-RevId: e2a710c9de08de9ac2aa9df1f3082d5f1c33ea05
2025-11-05 09:06:35 +00:00
Jakob Ackermann 78d7178c08 [web] fix gallery templates e2e tests (#29508)
GitOrigin-RevId: ba8a1ddfd56b3221db92e2869e0852fd4c7a4348
2025-11-05 09:06:20 +00:00
Jakob Ackermann a80b69abe5 [web] move free compiles up one bracket (#29411)
GitOrigin-RevId: 613b703d677d91110cd6dcf085e9291008e05f5c
2025-11-03 09:05:23 +00:00
Jakob Ackermann 3a206074f2 [web] move premium compiles up one bracket (#29410)
GitOrigin-RevId: 53423f855b2c215f6cc926b480422b2ce3477a74
2025-10-31 09:06:32 +00:00
Jakob Ackermann 49667a605b [web] tweak Jenkins pipeline following move to faster CI VMs (#29188)
* [web] tweak Jenkins pipeline following move to faster CI VMs

The webpack build time has been reduced by about 30%. Adjust the sleep
statement for delaying the webpack build accordingly.

Push the production docker image layers from the parallel steps already.
Use a shared "scratch" tag to avoid generating cruft per branch/build.

* [web] avoid sharing the cypress/downloads folder in CI

GitOrigin-RevId: 52fdf420ec04fd26e3823ff9fca8c52f7a7764d7
2025-10-30 09:07:43 +00:00
Jakob Ackermann d056ee5b74 [web] enable compileFromClsiCache independent of clsi-cache-prompt (#29366)
The split test is active now and .active is only set in the dev-env.

GitOrigin-RevId: ed4a379e2144c2a08497eb0cf42ef16077f7ad27
2025-10-29 09:06:04 +00:00
Jakob Ackermann 28c1c7db37 [clsi-cache] add circuit breaker to clsi-cache requests (#29339)
Stage timeouts:
- frontend waits 5s
- web/clsi waits 4s
- clsi-cache waits 3s
This should ensure that the frontend can receive a valid response after
any of the backend requests failed.

The circuit breaker will remain closed for TIMEOUT + jitter of 0-3 times
the TIMEOUT of the respective service. This should avoid the bulk of
traffic to fail and occasionally issue retries without hammering the
instances while down.

Also do not try the next backend when the abort signal has expired.

GitOrigin-RevId: d612125616a9e416beff2f4c6d7f30066b5b9d6d
2025-10-29 09:05:34 +00:00
Jakob Ackermann 45ad16445f [web] do not show clsi-cache prompts/survey in free projects (#29302)
GitOrigin-RevId: fe60952e14503884570d3e27fb274fbb7c6b6620
2025-10-24 08:05:46 +00:00
Jakob Ackermann f3f6a8a8e0 [web] add clsi-cache prompts (#29281)
* [web] add clsi-cache prompts

* [web] add new editor variant to segmentation

* [web] add tests for useNewEditorVariant

* [web] adjust start of using clsi-cache in split-test

GitOrigin-RevId: c9c5b1eff2ceefb65ef82516d9074cb971cb4c48
2025-10-24 08:05:42 +00:00
Jakob Ackermann 02391c6c51 [clsi] prepare for clsi-cache survey (#29274)
* [clsi] add stats and timings to compile response from clsi-cache

* [clsi] set downloadedFromCache when previously downloaded for synctex

Assumption: every compile will emit an output.log. When the output.log
is missing, but the output.synctex.gz exists, it must have been
downloaded from the cache.
GitOrigin-RevId: 41ea34880931e3c43dda3bc9eb26c0d02054894d
2025-10-23 08:05:43 +00:00
Jakob AckermannandMathias Jakobsen 93526bec96 [web] pre-populate clsi-cache ahead of showing survey (#29221)
* [web] pre-populate clsi-cache ahead of showing survey

* [web] tweak variant checks

Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>

---------

Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
GitOrigin-RevId: 749a7a1c3b21ef2e46bc86a74631e004069c5806
2025-10-21 08:06:25 +00:00
Jakob Ackermann db1966b0aa [monorepo] switch from cypress-reports to reports (#29183)
* [monorepo] switch from cypress-reports to reports

* [saas-e2e] collect junit reports from new editor tests

* [saas-e2e] simplify setup for semaphore variable in Jenkins pipeline

We do not retry pipelines anymore.

* [saas-e2e] put new editor tests into their own namespace

GitOrigin-RevId: 1869310bf58f0b5b0081dcae2f16ec1a267caec6
2025-10-21 08:06:13 +00:00
Jakob Ackermann 72b8f9b9d2 [server-ce] test: align build Jenkins triggers with saas-e2e (#29198)
GitOrigin-RevId: 55e35ca7f45d2b732aefa04560d5df95d8e8c034
2025-10-20 08:05:54 +00:00
Jakob Ackermann a4e29d5380 [monorepo] don't fight with prettier, do not run on json files (#29135)
I've tried a lots of variants for the ignore rule. It does not work.

GitOrigin-RevId: 08bf3df1d2629dcfc6eccc98df098ce094466d5b
2025-10-20 08:05:11 +00:00
Jakob Ackermann ad3e8bd65d [web] fix clearing of clsi persistence during migration to new key (#29172)
GitOrigin-RevId: 1d9e6eb87f8f27792fdc866e7dcc29b47e1b2547
2025-10-17 08:06:06 +00:00
Jakob Ackermann 706971ef41 [web] shard compile server persistence by compileBackendClass (#29156)
* [web] shard compile server persistence by compileBackendClass

* [web] make prettier happy

GitOrigin-RevId: d7cf8bde07e7110053d9d7531c007111af5cc46b
2025-10-17 08:06:02 +00:00
Jakob Ackermann fbea855690 [web] switch dark compiles to n4 (#29133)
* [clsi-perf] run compiles on any backend with prefix clsi_compile

* [clsi-lb] add n4 backend

* [terraform] clsi: add n4 instances

* [web] switch dark compiles to n4

* [terraform] clsi: remove c4d instances

* [terraform] clsi: scale up n4 instances

GitOrigin-RevId: 8f2d98ef6c3c503366c92c4f148a8dd7394cebd2
2025-10-16 08:07:21 +00:00
Jakob Ackermann af2c470c2c [web] fix docker image tag for branch builds (#29109)
GitOrigin-RevId: 07e9b6a615622a0d6b9dbc2fbc43434752cc2a9b
2025-10-16 08:06:11 +00:00
Jakob Ackermann 0182ad0046 [monorepo] compute IMAGE_CACHE lazily (#29087)
GitOrigin-RevId: de287c89c1cea858d0609265945266be19d7ea26
2025-10-15 08:07:47 +00:00
Jakob Ackermann 15a6e8ba04 [monorepo] use content hash as docker image cache key (#29046)
* [monorepo] remove docker-repos flag from build scripts

* [monorepo] use content hash as docker image cache key

* [packer] jenkins-worker: populate build cache for all services

* [v1] adopt smarter docker caching

* [latexqc] adopt smarter docker caching

* [monorepo] refresh docker cache in Jenkins

* [packer] jenkins-worker: increase disk size

* [monorepo] run jenkins_docker_build_cache as Jenkins user for v1

* [monorepo] define MONOREPO at the top of all the Makefiles

* [monorepo] add --build-arg BUILDKIT_INLINE_CACHE=1 everywhere

GitOrigin-RevId: 8110c6e68727a52ea80f3ec71711d30e17d69499
2025-10-15 08:06:41 +00:00
Jakob Ackermann ca498ed047 [server-ce] trigger Server Pro E2E tests for all web module changes (#29056)
The rake deploy:app task is expecting a build for all web changes.
Triggering a few extra Server Pro E2E test runs is cheaper than making
the rake task smarter.

GitOrigin-RevId: a8380417d4a323b3d2a008eeb6ee26bc0ad151d9
2025-10-15 08:06:10 +00:00
Jakob Ackermann ddb99b72bf [monorepo] fixes for Jenkins (#29027)
* [packer] jenkins-worker: pull TL2017 for clsi

* [tpdsworker] add stub file for test/setup.js

* [linked-url-proxy] update package-lock.json

* [packer] jenkins: discover common Jenkinsfiles from jobs and libraries

* [linked-url-proxy] fix mocharc path for mocha-multi-reporters

* [linked-url-proxy] install prettier and eslint inside docker

* [linked-url-proxy] make prettier happy

* [linked-url-proxy] add patch for mocha-multi-reporters

* [clsi] pull TL2017

* [monorepo] add bind mount for reports folder for unit tests

GitOrigin-RevId: d0d3d92f963c15549125a298ca4fd50d8a0e83da
2025-10-14 08:05:48 +00:00
Jakob Ackermann fd0d21fbbd [monorepo] migrate build scripts to Jenkins (#29019)
* [monorepo] migrate build scripts to Jenkins

* [fraud-dash] fix integration with monorepo

GitOrigin-RevId: 6a30ec5ea68a1eae9b663faf9ccdc741ec7f9cf8
2025-10-13 08:07:11 +00:00
Jakob Ackermann 2390823a30 [monorepo] run Jenkins cleanup in parallel (#29015)
GitOrigin-RevId: 5e0df1cec874950b91edf86a2ca40b358366a897
2025-10-13 08:06:58 +00:00
Jakob Ackermann 0ca3813a00 [libraries] align test setup (#29009)
* [libraries] move all the unit tests into test/unit

* [settings] remove empty test file

* [mongo-utils] remove test setup as there are no tests

* [libraries] ensure that all libraries with tests have test/setup.js

* [monorepo] remove test step from Cloud build for libraries without tests

GitOrigin-RevId: b9a0a8a3330db7d8646c7a272b03fbb8c5e44bc0
2025-10-13 08:06:53 +00:00
Jakob Ackermann d7623b576f [monorepo] refactor retries in Jenkins to step level (#29008)
* [monorepo] refactor retries in Jenkins to step level

Change the junit reports to use step specific file names. The [hash]
template option was neat in getting unique file names, but results in
duplicate test reports on retry.

* [patches] add support for .cjs config files for mocha-multi-reporters

GitOrigin-RevId: 3a749441470b5ba633e71319589606cfbe860952
2025-10-13 08:06:37 +00:00
Jakob Ackermann dd3c1b686e [document-updater] fix test after other async/await work (#28944)
GitOrigin-RevId: 7338f340924b3355dac39a86c40327a2964c3020
2025-10-09 08:08:02 +00:00
Jakob Ackermann d648c96603 [document-updater] migrate HistoryManager to async/await (#28789)
shouldFlushHistoryOps has a default value for 'threshold', which keeps
the exports simpler and still lets the unit tests override it.

GitOrigin-RevId: 1c6d4a2778052b5af40e2e338589a230ac2f4646
2025-10-09 08:07:36 +00:00
Jakob Ackermann b0b9733a42 [document-updater] migrate ProjectFlusher to async/await (#28796)
GitOrigin-RevId: 24f61d6c0fab5d65b962cc7031ce0b8c84d5a915
2025-10-09 08:07:31 +00:00
Jakob Ackermann 3913008e02 [web] convert GeoIpLookup to async/await (#28802)
GitOrigin-RevId: 38ad8af970a0674a514bf5ed0dacb8becd7c1f72
2025-10-09 08:06:00 +00:00
Jakob AckermannandEric Mc Sween e03ca5a3a8 [server-ce] tests: migrate host-admin to ESM, zod and npm-workspaces (#28838)
* [server-ce] tests: migrate host-admin to ESM, zod and npm-workspaces

* [server-ce] test: use import.meta.dirname

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>

* [server-ce] test: fix zod schema for docker compose endpoint

---------

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
GitOrigin-RevId: d490948693f341210c0ab5c2947db7c9a17775ef
2025-10-07 08:07:06 +00:00
Jakob Ackermann c621d0f318 [git-bridge] migrate pipeline to Jenkins (#28763)
* [git-bridge] migrate pipeline to Jenkins

* [terraform] remove cloud build trigger for git-bridge

GitOrigin-RevId: fdf842a561c00a609f2de0cab894a761900322c6
2025-10-07 08:06:48 +00:00
Jakob Ackermann c3c04acfea [web] add junit integration for Jenkins (#28788)
* [web] add junit integration for Jenkins

* [web] integrate junit test report for writefull into Jenkins

* [web] put all the junit test results into namespaces

GitOrigin-RevId: ba1ff07b5ea7bcfa97bb4d6bf7fa9e5291ab7b0f
2025-10-02 08:06:25 +00:00
Jakob Ackermann 5fe9d3d6e9 [monorepo] migrate monorepo checks to Jenkins (#28765)
GitOrigin-RevId: ebc3db95cebe99226f8de0f66c1830eb5d78e26c
2025-10-01 08:06:28 +00:00
Jakob Ackermann 7488c80b36 [web] bring back initial compile from cache (#28771)
GitOrigin-RevId: 0021eb3a3cb242195369e4f6abf67653e551e362
2025-10-01 08:06:12 +00:00
Jakob Ackermann e05ec0321b [server-pro] extend hotfix 5.5.5: avoid creating user_files directory (#28738)
* [WIP] restore 100_make_overleaf_data_dirs.sh

* [WIP] patch for hotfix 5.5.5

* Revert "[WIP] patch for hotfix 5.5.5"

This reverts commit cc83a526ecd86ed7b1a0e061b074d2fb15d4d672.

* Revert "[WIP] restore 100_make_overleaf_data_dirs.sh"

This reverts commit e9b0597fe8451e9ef1deaf7ed31790f7d7fc996e.

* [server-pro] extend hotfix 5.5.5: avoid creating user_files directory

* [server-ce] run binary files migration in CI

GitOrigin-RevId: ac5bb86df92b441201c69dfac6b302058b501d8e
2025-09-29 08:07:01 +00:00
Jakob Ackermann a51ba7a7d5 [server-ce] tests: add junit integration for Jenkins (#28732)
GitOrigin-RevId: b4c96ad71a02bf57c184a8031f475e3d1548c58a
2025-09-29 08:06:46 +00:00
Jakob Ackermann 2db902bdd2 [monorepo] remove debug logging for mongo containers (#28716)
GitOrigin-RevId: 5034cadca5933c6c29c190aa171f52b71216ec6d
2025-09-29 08:06:37 +00:00
Jakob Ackermann c1446b9d34 [real-time] reduce delay in test for faster CI VM (#28721)
GitOrigin-RevId: 34da567ca7101a8f5070e2bd20aba4f87b231b5b
2025-09-29 08:06:19 +00:00
Jakob Ackermann 3b232ca419 [server-pro] add caching to docker build (#27887)
GitOrigin-RevId: 26a5f8b66f710afec3aedb5e55d205095d6e0a7d
2025-09-29 08:05:41 +00:00
9b2fcbe960 [monorepo] optimize Jenkins build triggers for services (#28477)
Co-authored-by: Andrew Rumble <andrew.rumble@overleaf.com>
Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
GitOrigin-RevId: ea7d6c435d4a81a0f42ea9b608a0cc79087cdffd
2025-09-24 08:06:43 +00:00