docs(troubleshooting): document the browser_info / browser_url_vars support diagnostics #9

Merged
allan merged 5 commits from docs/support-diagnostics into main 2026-09-27 20:51:21 +00:00
Collaborator

The frontend sends two input tables - browser_info and, when the page URL has parameters, browser_url_vars - with the startup service and with the services that execute customer-provided code: the hook scripts (pre/post edit and approve hooks) and the dynamic cell dropdown programs. They are available in those services as work.browser_info / work.browser_url_vars, so a support ticket can be diagnosed from the job log without asking the user follow-up questions, and a hook can adapt to its context. Other services do not receive the tables.

browser_info - a single row: url (the DC page URL, not the embedding document), referrer, timezone (IANA), tz_offset (minutes, positive west of UTC), locale, dc_version, adapter_version, browser, browser_version, platform, user_agent.

browser_url_vars - the page URL parameters as one row per parameter (name, value), so a SAS program reads a parameter by name rather than parsing the url string. Parameters from both the search string and the hash query string (Angular routes carry them after the #) are included; on a name collision the hash value wins. The table is sent only when the page URL has at least one parameter.

The recipient services: public/startupservice, editors/getdata, editors/getdynamiccolvals, editors/stagedata, editors/loadfile, editors/restore, auditors/postdata.

Also notes that the values are client supplied (diagnostics hints, not a security boundary), how to see the tables with debug on (the debug value depends on the path - &_debug=131 on the Compute API and SAS 9, &_debug=128 on the Viya web JES path with runAsTask, which is what the frontend sends there; mpeinit writes both to the job log, with example output), and that a directly-called service or an older frontend has neither table.

Also documents that editors/loadfile is reached through the adapter's multipart file upload, which carries no input tables, so in practice that service (and the post edit hook it runs) does not receive them - it is on the recipient list for completeness.

mkdocs build passes; headings, tables and the example log render verified in the output HTML. Companion to dc/dc #326.

The frontend sends two input tables - `browser_info` and, when the page URL has parameters, `browser_url_vars` - with the startup service and with the services that execute customer-provided code: the [hook scripts](macros.md) (pre/post edit and approve hooks) and the dynamic cell dropdown programs. They are available in those services as `work.browser_info` / `work.browser_url_vars`, so a support ticket can be diagnosed from the job log without asking the user follow-up questions, and a hook can adapt to its context. Other services do not receive the tables. **browser_info** - a single row: `url` (the DC page URL, not the embedding document), `referrer`, `timezone` (IANA), `tz_offset` (minutes, positive west of UTC), `locale`, `dc_version`, `adapter_version`, `browser`, `browser_version`, `platform`, `user_agent`. **browser_url_vars** - the page URL parameters as one row per parameter (`name`, `value`), so a SAS program reads a parameter by name rather than parsing the `url` string. Parameters from both the search string and the hash query string (Angular routes carry them after the `#`) are included; on a name collision the hash value wins. The table is sent only when the page URL has at least one parameter. The recipient services: `public/startupservice`, `editors/getdata`, `editors/getdynamiccolvals`, `editors/stagedata`, `editors/loadfile`, `editors/restore`, `auditors/postdata`. Also notes that the values are client supplied (diagnostics hints, not a security boundary), how to see the tables with debug on (the debug value depends on the path - `&_debug=131` on the Compute API and SAS 9, `&_debug=128` on the Viya web JES path with `runAsTask`, which is what the frontend sends there; `mpeinit` writes both to the job log, with example output), and that a directly-called service or an older frontend has neither table. Also documents that `editors/loadfile` is reached through the adapter's multipart file upload, which carries no input tables, so in practice that service (and the post edit hook it runs) does not receive them - it is on the recipient list for completeness. `mkdocs build` passes; headings, tables and the example log render verified in the output HTML. Companion to dc/dc #326.
hermes added 1 commit 2026-09-24 20:29:37 +00:00
Every service call carries a single-row browser_info input table, readable
by any service or hook script as work.browser_info and dumped to the job log
when debug is on. Document its columns and how to see it, so a support ticket
can be answered from the log without follow-up questions.
hermes added 1 commit 2026-09-25 00:26:23 +00:00
The support diagnostics are now sent only where they can be used: the
startup service and the services that execute customer-provided code
(hook scripts, dynamic cell dropdown programs) - not with every service
call. The page's URL parameters arrive as a new browser_url_vars table,
one row per parameter, so a SAS developer reads a parameter by name
rather than parsing the url string.
hermes changed title from docs(troubleshooting): document the browser_info support diagnostics to docs(troubleshooting): document the browser_info / browser_url_vars support diagnostics 2026-09-25 00:42:05 +00:00
hermes added 1 commit 2026-09-25 07:55:54 +00:00
The adapter sends _debug=128 (not 131) on the Viya web JES path when
runAsTask is enabled, which is what the frontend uses there. Document
that value alongside 131, and note that editors/loadfile is reached
through the multipart file upload, which carries no input tables.
hermes added 1 commit 2026-09-27 20:20:12 +00:00
hermes added 1 commit 2026-09-27 20:47:54 +00:00
allan merged commit aff6806bb9 into main 2026-09-27 20:51:21 +00:00
allan deleted branch docs/support-diagnostics 2026-09-27 20:51:21 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dc/docs.datacontroller.io#9