Skip to content

feat(server-dashboard): add Oracle, MongoDB and Redis - #3732

Merged
datlechin merged 7 commits into
mainfrom
feat/3609-dashboard-oracle-mongo-redis
Oct 21, 2026
Merged

datlechin merged 7 commits into
mainfrom
feat/3609-dashboard-oracle-mongo-redis

Conversation

@datlechin

@datlechin datlechin commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Server Dashboard covers Oracle, MongoDB and Redis.
  • Oracle: sessions from V$SESSION with text from V$SQL; metrics from V$SYSMETRIC, or V$CON_SYSMETRIC in a pluggable database, and V$INSTANCE; slow queries are active calls over a second. Terminate: ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE. Cancel: ALTER SYSTEM CANCEL SQL, 18c and later.
  • MongoDB: operations from currentOp (own operations only without inprog), metrics from serverStatus, slow queries from the browsed database's system.profile. Cancel: killOp. No Terminate.
  • New DatabaseDriver.executeRead: dashboard reads run read-only, so a shell global an earlier MongoDB statement redefined cannot write.
  • Redis: clients from CLIENT LIST minus the dashboard's CLIENT ID, metrics from INFO, slow queries from SLOWLOG GET 20. Terminate: CLIENT KILL ID. Cancel: CLIENT UNBLOCK … ERROR, for a blocked client on 5.0 and later.
  • Redis driver: SLOWLOG GET returns a grid. OUTSIDEBLOCK <command> is held back, not queued, while the user's MULTI block is open; the dashboard sends every command that way. slowlog|get joins the curated cluster routing table.
  • Query classifier reads past OUTSIDEBLOCK as it reads past DB <n>, so OUTSIDEBLOCK FLUSHALL stays destructive.
  • MCP: get_server_dashboard (tools:read) now reads these three engines, and stop_server_session (tools:write, user approval) can cancel or kill a session on them. The tool description drops its engine list.
  • Tests changed on purpose: ServerDashboardViewModelTests.redisHasNoDashboard is replaced, and DashboardProviderSQLTests.callerExclusions gains the three engines' self-exclusion markers.

Not in this PR

  • Redis Cluster lists one primary's clients and metrics, the node keyless commands go to. Every node's clients need node addressing in the driver's console syntax.
  • The session grid has no client address or application column for any engine, so Redis addr and name are not shown.

Test plan

  • New suites: OracleDashboardProviderTests, MongoDBDashboardProviderTests, RedisDashboardProviderTests, RedisDashboardCommandTests (held back inside a MULTI block), plus classifier, routing, RedisServerInfo and duration cases.
  • Oracle 23.26 Free, PDB and root, by hand: every statement, CANCEL SQL (victim gets ORA-01013, stays connected), KILL SESSION (ORA-03113).
  • MongoDB 8.3 in mongosh: the three statements (own currentOp, server threads and monitoring hello left out), killOp interrupts a running find.
  • Redis 8.10: CLIENT LIST, SLOWLOG GET, CLIENT UNBLOCK on a BLPOP; check-redis-command-routing.sh passes.

Fixes #3609

@datlechin
datlechin enabled auto-merge (squash) October 21, 2026 00:57
@datlechin
datlechin merged commit db64423 into main Oct 21, 2026
8 checks passed
@datlechin
datlechin deleted the feat/3609-dashboard-oracle-mongo-redis branch October 21, 2026 11:14
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.

Server Dashboard for Oracle, MongoDB and Redis

1 participant