@@ -347,20 +347,18 @@ allowed`, which is the guard doing its job rather than a bug.
347347
348348## Notes and limits
349349
350- - ** Use one page at a time.** This is a correctness limit, not a speed one: in
351- the underlying engine, dropping a page while a second one is alive aborts the
352- process with a V8 fatal (` heap->isolate() == Isolate::TryGetCurrent() ` ), because
353- each page owns its own isolate and the realm is destroyed without entering it.
354- One page is completely stable; two is not. Reported upstream as
355- [ #756 ] ( https://github.com/h4ckf0r0day/obscura/issues/756 ) . Until it is fixed,
356- treat this as suited to tests, reports and sequential scraping — not to a pool
357- of concurrent pages.
358- - All browser work also runs on one service thread, so concurrent requests queue
359- behind each other. That part is only a throughput limit, and the design is not
360- forced: pages are pinned to a thread because an isolate cannot move between
361- threads, but a pool of service threads with each browser pinned to one would
362- work. It is not worth building until the isolate lifecycle above is fixed —
363- more live isolates is precisely what triggers the abort.
350+ - ** Several pages can be open at once.** Older builds aborted the process with a
351+ V8 fatal (` heap->isolate() == Isolate::TryGetCurrent() ` ) when a page was dropped
352+ while another was alive
353+ ([ #756 ] ( https://github.com/h4ckf0r0day/obscura/issues/756 ) ). Upstream fixed
354+ that in [ #824 ] ( https://github.com/h4ckf0r0day/obscura/pull/824 ) , and with
355+ obscura v0.2.5 three live pages, closed in any order, and two browsers side
356+ by side all run cleanly.
357+ - All browser work runs on one service thread, so concurrent requests queue
358+ behind each other. That is a throughput limit, not a correctness one, and the
359+ design is not forced: pages are pinned to a thread because an isolate cannot
360+ move between threads, but a pool of service threads with each browser pinned
361+ to one would work.
364362- Every call has a deadline. A wedged page raises a catchable CFML error rather
365363 than hanging the request.
366364- A page handle is ` Send ` , so it is safe to keep in ` application ` scope and to
0 commit comments