Skip to content

Fixes the 100-call limit for creating zip files.#1

Open
karantza wants to merge 2 commits into
MagicFun1241:masterfrom
karantza:fix/handle-exhaustion
Open

Fixes the 100-call limit for creating zip files.#1
karantza wants to merge 2 commits into
MagicFun1241:masterfrom
karantza:fix/handle-exhaustion

Conversation

@karantza
Copy link
Copy Markdown

Instead of a single incrementing counter to handle zip handle slots, which can run out, we instead scan the array to find the first free slot, and reserve it in a threadsafe way. Can now handle 100 simultaneous zips, rather than 100 TOTAL zips.

This was noticed in a project where a webserver endpoint was generating zips in memory; it would fail (looking like OOM) after 100 calls. It was just running out of handles. This fixes it, with a unit test to verify.

I added some locking around it to ensure that in a multithreaded environment we don't double-grab the same slot. The old code wasn't threadsafe anyway, so I'm not sure that it makes a huge difference, but it seemed prudent. There's more room here now for a race condition to cause a slot to be double-claimed.

(Also I just realized my formatter removed a bunch of whitespace; oops. Let me know if you'd like a cleaner version of the PR.)

karantza added 2 commits May 18, 2026 14:15
…ots, which can run out, we instead scan the array to find the first free slot, and reserve it in a threadsafe way. Can now handle 100 simultaneous zips, rather than 100 TOTAL zips.
@karantza karantza force-pushed the fix/handle-exhaustion branch from fd3aef6 to e39ccd4 Compare May 18, 2026 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant