Skip to content

Add jws-diag instances command: detect all running Tomcat instances via /proc - #21

Merged
dsoumis merged 2 commits into
web-servers:mainfrom
onkar717:feat/multi-instance
Aug 14, 2026
Merged

Add jws-diag instances command: detect all running Tomcat instances via /proc#21
dsoumis merged 2 commits into
web-servers:mainfrom
onkar717:feat/multi-instance

Conversation

@onkar717

@onkar717 onkar717 commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds InstanceScanner that scans all /proc/*/cmdline entries for the Bootstrap class and returns every running Tomcat process (sorted by PID ascending), unlike the existing ProcessDetector which returns only the first
  • Adds TomcatInstance value object (PID, catalinaHome, catalinaBase)
  • Adds instances sub-command with --format human|json output
  • Human output: table of PID / CATALINA_HOME / CATALINA_BASE columns
  • JSON output: array of {pid, catalinaHome, catalinaBase} objects
  • Zero changes to existing config model or parser code

Design decisions

  • InstanceScanner is public with a package-accessible constructor accepting a Path procRoot for deterministic unit tests (no live /proc needed)
  • CATALINA_BASE defaults to CATALINA_HOME when -Dcatalina.base is absent (matches Tomcat startup behaviour)
  • Directories that exist at scan time but disappear mid-read are silently skipped (TOCTOU-safe)

Test plan

  • InstanceScannerTest synthetic /proc tree: zero instances, one instance, multiple instances, unreadable entries, missing flags
  • InstancesHumanFormatterTest golden snapshot for 0 / 1 / N instances
  • InstancesJsonFormatterTest golden snapshot for 0 / 1 / N instances
  • mvn verify passes (394 tests, 0 failures)

@onkar717

Copy link
Copy Markdown
Collaborator Author

@dsoumis

@dsoumis

dsoumis commented Aug 12, 2026

Copy link
Copy Markdown
Member

Test plan claims "unreadable entries" tested but no such test exists

@dsoumis
dsoumis force-pushed the feat/multi-instance branch from 8fa42bc to df5a606 Compare August 14, 2026 21:11
@dsoumis
dsoumis force-pushed the feat/multi-instance branch from df5a606 to 28f918f Compare August 14, 2026 21:16
@dsoumis
dsoumis merged commit 56c25dc into web-servers:main Aug 14, 2026
2 checks passed
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.

2 participants