• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

decentraland / atlas-server / 39825659993
94%

Build:
DEFAULT BRANCH: master
Ran 22 Oct 2026 05:53PM UTC
Jobs 1
Files 43
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Oct 2026 05:46PM UTC coverage: 93.105% (+0.7%) from 92.376%
39825659993

push

github

web-flow
fix: serve filtered tiles, bound the response cache and add timeouts (#149)

## What was wrong

- With `atlas-redirect-to-s3` on, `/v1|v2/tiles` returned the 301 before
reading `x1/y1/x2/y2/include/exclude`, so a filtered prd request
downloaded the full 38 MB map.
- The tiles were uploaded to S3 as plain JSON (38 MB per refresh and per
client download), with `Access-Control-*` written as object metadata (S3
serves that as `x-amz-meta-*`, not CORS).
- The tiles response cache was an unbounded `Map` keyed by the full URL
(host + junk params), cached 503s and 301s, and ran the handler once per
concurrent miss.
- `createFeaturesComponent` had no registered apps, so flags were never
cached: every cache miss fetched `dapps.json` (10s timeout) and a
failure silently disabled the redirect.
- The redirect URLs were set from the S3 cache at boot and never cleared
when an upload failed, so clients could be redirected to stale files.
- No timeout on Postgres queries, S3 requests or signatures-server
rentals requests.

## What changed

- The S3 redirect (now a 302) is decided per request and only when no
filter actually applies (a full numeric bounding box, or include/exclude
with a valid field); filtered requests are served from memory.
- v1/v2 tiles are uploaded gzip-compressed with `ContentEncoding: gzip`
(~3 MB). The boot read gunzips gzip objects and still reads the old
plain ones. Metadata dropped, `console.log` replaced with the logger.
- `cacheWrapper`: holds only 200s from memory, keyed on the normalized
effective filter, cleared when `getLastUpdatedAt` changes, LRU-capped at
128 entries / 64M body chars, shares in-flight misses.
- Features component registers `dapps`, so flags are preloaded and
refreshed in the background.
- Redirect URLs are set only after the whole upload (v1, v2, timestamp)
succeeds, and cleared on failure.
- `PG_COMPONENT_QUERY_TIMEOUT=60000`, S3 `requestTimeout` 60s /
`connectionTimeout` 5s, rentals fetch `timeout: 30000` plus a 30s... (continued)

1344 of 1474 branches covered (91.18%)

Branch coverage included in aggregate %.

321 of 331 new or added lines in 7 files covered. (96.98%)

2 existing lines in 2 files now uncovered.

4530 of 4835 relevant lines covered (93.69%)

1094.63 hits per line

Uncovered Changes

Lines Coverage ∆ File
10
89.47
1.37% src/modules/rentals/component.ts

Coverage Regressions

Lines Coverage ∆ File
1
89.47
1.37% src/modules/rentals/component.ts
1
89.8
-0.56% src/modules/s3/component.ts
Jobs
ID Job ID Ran Files Coverage
1 39825659993.1 22 Oct 2026 05:53PM UTC 86
93.35
GitHub Action Run
Source Files on build 39825659993
  • Tree
  • List 43
  • Changed 33
  • Source Changed 6
  • Coverage Changed 33
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #39825659993
  • 5f4a70d0 on github
  • Prev Build on master (#39821345489)
  • Next Build on master (#39959757456)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc