-
Notifications
You must be signed in to change notification settings - Fork 24
feat: per-origin HTTP concurrency limiter for COG layers #557
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
48 commits
Select commit
Hold shift + click to select a range
98437f1
docs: spec for coalescing tile fetches through deck.gl getTileData
kylebarron 163bdf4
docs(spec): per-origin concurrency limiter (gating only)
kylebarron fb20134
feat(geotiff): Semaphore primitive with signal-aware acquire
kylebarron 93a391b
feat(geotiff): ConcurrencyLimiter interface + PerOriginSemaphore
kylebarron d9d8612
feat(geotiff): limitFetch helper
kylebarron 7282713
feat(geotiff): export ConcurrencyLimiter type and PerOriginSemaphore …
kylebarron c09b508
feat(geotiff): concurrencyLimiter option on GeoTIFF.fromUrl
kylebarron 62a13f1
feat(deck.gl-geotiff): default PerOriginSemaphore + fetchGeoTIFF option
kylebarron 9fdc43f
feat(deck.gl-geotiff): COGLayer.concurrencyLimiter prop + default
kylebarron c71dcd8
feat(deck.gl-geotiff): MultiCOGLayer.concurrencyLimiter prop + default
kylebarron 46a763e
docs(geotiff): docstrings on Semaphore internals (PR #557 review)
kylebarron ee60fef
refactor(geotiff): limitFetch → LimiterMiddleware class (PR #557 review)
kylebarron db6b69f
cleaner
kylebarron e413fc9
feat(geotiff): dynamic priority on ConcurrencyLimiter / Semaphore
kylebarron 8d58e10
feat(geotiff): thread getPriority through GeoTIFF.fromUrl + fetchGeoTIFF
kylebarron 8afac6e
feat(deck.gl-geotiff): MosaicLayer passes distance-from-viewport-cent…
kylebarron 85c5e46
feat(examples/naip-mosaic): thread getPriority through getCachedGeoTIFF
kylebarron d1abbf0
fix(examples/naip-mosaic): actually install the limiter so priority c…
kylebarron b99a551
feat(deck.gl-geotiff): MosaicLayer concurrencyLimiter prop
kylebarron 5515739
feat(geotiff): gate header fetches through the concurrency limiter
kylebarron a4b9777
refactor(examples/naip-mosaic): forward MosaicLayer opts straight to …
kylebarron 4c6703b
docs(spec): cover dynamic priority + LimiterMiddleware + MosaicLayer
kylebarron 6134596
Merge remote-tracking branch 'origin/main' into kyle/getTileData-coal…
kylebarron 13ce197
feat(geotiff): export GeoTIFFFromUrlOptions; fix stale gating docstring
kylebarron acd46d6
fix(deck.gl-geotiff): address PR #557 review round 2
kylebarron 6d8d241
fix(geotiff): thread signal into getTileSize header reads
kylebarron 45d13c8
options object
kylebarron 7e881b3
fix(deck.gl-geotiff): drop debounceTime from MosaicLayer
kylebarron 7b18d1b
shorter comment
kylebarron 860abac
refactor(deck.gl-geotiff): simplify COG layer AbortController to fina…
kylebarron 0d57f73
refactor(deck.gl-geotiff): extract createGetPriorityCallback helper
kylebarron 7ba675b
refactor(deck.gl-geotiff): extract openCogSources helper
kylebarron eb4a2b3
remove comment
kylebarron 10638e7
Merge remote-tracking branch 'origin/main' into kyle/getTileData-coal…
kylebarron 2668b82
fix(geotiff): gate via source wrapper so abort-while-queued works
kylebarron e5c3e5c
test(geotiff): abort a queued fromUrl header read end-to-end
kylebarron c7d2d18
fix(deck.gl-geotiff): don't forward undefined maxRequests from Mosaic…
kylebarron 1c7b382
refactor(deck.gl-geotiff): omit undefined when forwarding TileLayerProps
kylebarron 63eecbf
cleaner comment
kylebarron a655b4b
concise
kylebarron 92e65ca
concsie
kylebarron 3d825a5
concise
kylebarron db7cff3
concise
kylebarron 07efc3e
move up abort signal check
kylebarron 26435d1
doc comment
kylebarron 1316bc8
fix(deck.gl-geotiff,geotiff): address round-2 review nits
kylebarron 369a280
cleaner options
kylebarron 38dd4d5
concise
kylebarron File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
217 changes: 217 additions & 0 deletions
217
dev-docs/specs/2026-05-19-concurrency-limiter-design.md
Large diffs are not rendered by default.
Oops, something went wrong.
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
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
12 changes: 12 additions & 0 deletions
12
packages/deck.gl-geotiff/src/default-concurrency-limiter.ts
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| import { PerOriginSemaphore } from "@developmentseed/geotiff"; | ||
|
|
||
| /** | ||
| * Shared default concurrency limiter for every COGLayer / MultiCOGLayer that | ||
| * doesn't override its `concurrencyLimiter` prop. A single module-level | ||
| * `PerOriginSemaphore({ maxRequests: 6 })` so two layers fetching from the | ||
| * same origin (e.g. the same S3 bucket) share *one* HTTP/1.1 connection | ||
| * pool. The cap matches Chrome's default per-origin HTTP/1.1 limit. | ||
| */ | ||
| export const DEFAULT_CONCURRENCY_LIMITER = new PerOriginSemaphore({ | ||
| maxRequests: 6, | ||
| }); |
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.