ci-server-engineer/.claude/skills/class-object-engineering/tasks/opcdbg-checks.md
cliu 2fd32fbf22 R1.05 V14: OPCJEXE does not answer opcdbg performance requests
Re-checked on the shared R1.05 test server: OPCEXE1 answers at once,
OPCJEXE never does (attached, nothing logged); the waiting debugger was
stopped. opcdbg-checks.md, ISS-157, progress and r105-verification
updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:11:51 +11:00

59 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
task: Check PROCESS Service with opcdbg (database check, classes, objects, performance)
version: R1.05 (first written for R1.03)
source: IM 36K10L10-01EN 4th ed. (Feb. 2026) §4; practiced on the test system with CI-Eng-Sample 2026-09-30
status: verified on R1.03 (read-only actions and Reset class). On R1.05 (2026-10-09, read-only) the database check and the OPCEXE1 performance main info gave the same prompts and output layout; the Java executor statistics did not answer to piped input (ISS-157, awaiting user verification); the other actions were not re-run
---
# PROCESS Service checks with `opcdbg`
`opcdbg` is interactive. Answers can be piped in, one per line, in Bash; always add a time-out
and end with `-1` lines, because on end of input it repeats the last prompt forever. `opcdbg 0
<menu>` starts in a menu on node 0 (this node). Times are printed in **GMT**.
Only the actions below are read-only. Do not use insert/modify/delete, *Database repair*,
*Reset* (utilities) or *Modify attribute value* without the user's approval.
| Check | Command (Bash) | Output |
|---|---|---|
| Database consistency | `printf '5\n-1\n-1\n' \| timeout 60 opcdbg 0 5` | Counts per store (trigger groups, classes, sources, code, objects, signals, attributes), then checks; warnings such as `No compiled code found for class (cls_id = …)` |
| Class details | `printf '2\n5\nN\n<CLASS>\n-1\n-1\n' \| timeout 20 opcdbg 0` | Language, priority, modified/compiled times, cls_id, objects derived / reset, hidden |
| Class by id (from a warning) | `printf '2\n5\nI\n<sec>\n<seq>\n-1\n-1\n' \| timeout 20 opcdbg 0` | Same; `Compiled at : 0` = never compiled |
| Object details | `printf '3\n4\nN\n<object>\n-1\n-1\n' \| timeout 20 opcdbg 0` | Priority, control item id, times, cls_id/obj_id |
| Object status | `printf '3\n18\n<object>\n-1\n-1\n' \| timeout 20 opcdbg 0` | Total runs, executor (`Running in : 1, OPCEXE1`) |
| Object signals / attributes | `3` then `14` / `12`, object name | Signal → item id; attribute → type (LOCAL/GLOBAL) |
| Executor statistics | `printf '0\nOPCEXE1\n1\n-1\n-1\n' \| timeout 20 opcdbg 0 4` | Active classes/objects/trigger groups/items, number of executions; times stay 0 unless `STATISTICS = YES` in `opc.sup` |
Executor names on R1.03 and R1.05 (same `opc.sup`): `OPCEXE1`…`OPCEXE4` (Traditional,
priority ranges 0–249 … 750–999) and `OPCJEXE` (Java). The prompt's default `OPCEXE` does
not exist.
**The Java executor `OPCJEXE` does not answer** the performance request (R1.05, re-checked
2026-10-09, V14): `opcdbg 0 4` with `OPCJEXE` waits forever, while the same input for `OPCEXE1`
returns at once (main info: active classes, objects, trigger groups, items, executions).
`OPCJEXE` was attached (`durwfp` 0) and nothing was logged in `umhlog.log`. The waiting debugger
stays as a process: stop it (`taskkill /pid <pid> /f`) — it changes nothing. For Java objects use
the object status (`3`, `18`) instead (ISS-157). Not checked on R1.03.
Easier for names: the datasets `OBJECT_SIGNAL_DF` (object:signal → item name) and
`OBJECT_ATTR_VAL` / `CLASS_ATTR_VAL` (attribute values) via `dssqld -e` with a filter — see
`traditional-class.md` §3.
## Dumps
*Utilities* 3 / 4 (`printf '3\nclasses.qli\n4\nobjects.qli\n-1\n-1\n' | timeout 30 opcdbg 0 5`)
write all class sources / objects to files in the current folder. The format is an old one
(`NAME,"description",priority` then source lines starting with `- `) and **`dssqld -i` rejects
it** (`DSS-E-UNK_DS_NM`, ISS-027). To move classes and objects to another system, export
`CLASS_DF` and `OBJECT_DF` with `dssqld -e` instead (task `load-class-object.md`; migration in
`knowledge/manuals/IM36K10J10-01EN.md` §5.6).
## Observed on the test systems
R1.05 test server (2026-10-09): the database check read every store and reported no
warning; `OPCEXE1` main info listed active classes, objects, trigger groups and items and the
execution count, with all times 0 (`STATISTICS = NO`, as on R1.03).
R1.03: the database check reported one warning for a class `SINUS` (not from this repo) that was
never compiled; everything else was consistent. A class like that is harmless but can be
compiled or removed by its owner.