Visitar URL original
ServerPlugin.registerAPI still hands third-party plugins a raw PathHandler, so their routes answer every HTTP method · Issue #10296 · ArcadeData/arcadedb · GitHub
Skip to content

ServerPlugin.registerAPI still hands third-party plugins a raw PathHandler, so their routes answer every HTTP method #10296

Closed

Description

@robfrank

Follow-up from #10157.

Gap

#10157 makes every plugin this repository ships (ha-raft, mcp, metrics) declare its HTTP routes with their method through the new com.arcadedb.server.http.PluginRoutes, so an undeclared method is answered 405 + Allow before the handler runs.

ServerPlugin.registerAPI(HttpServer, PathHandler) itself was left unchanged, for compatibility: a third-party plugin built against it still receives the raw PathHandler, and a route it adds with addExactPath/addPrefixPath still answers EVERY method. The server now only names such a route at WARNING at startup (PluginPathHandler) and exposes it through HttpServer.getUnrestrictedPluginRoutes(); it still serves it.

Entry point

ServerPlugin.registerAPI(HttpServer, PathHandler) as called from HttpServer.setupRoutes() for an out-of-tree plugin.

Why out of scope for #10157

Closing it at the type level means changing a public SPI signature (hand plugins a PluginRoutes, or refuse raw registrations), which breaks every external plugin at compile or start time. That is a breaking-API decision for a release boundary, not something to slip into a severity-critical bug fix.

Options

  1. Add registerAPI(HttpServer, PluginRoutes) as the primary overload, deprecate the PathHandler one, remove it in a later release.
  2. Keep the signature, but refuse (fail the plugin's start) a raw registration behind a setting whose default flips in a later release.

Activity

  1. added this to the 26.11.1 milestone on Oct 18, 2026
  2. added
    enhancementNew feature or request
    serverCore server: HTTP API, users, security enforcement
    on Oct 18, 2026
  3. self-assigned this
    on Oct 18, 2026
  4. added a commit that references this issue on Oct 18, 2026
  5. robfrank commented on Oct 18, 2026

    @robfrank
    CollaboratorAuthor

    Fixed in #10311 (option 1 from this issue). ServerPlugin gets a new registerAPI(HttpServer, PluginRoutes) overload, so a plugin declares each route together with its HTTP methods. The old registerAPI(HttpServer, PathHandler) still works but is deprecated for removal, and the server logs a warning naming any plugin that still uses it. The built-in plugins (HA Raft, MCP, Prometheus) now use the new overload.

    Still open:


    ❤️ Thanks for helping make ArcadeDB better! ArcadeDB is free and open source, sustained by its community. If it's useful to you or your company, please consider becoming a sponsor to keep development going.

  6. removed
    in progressThe team is actively working on this issue
    on Oct 18, 2026
  7. added a commit that references this issue on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestsecurityserverCore server: HTTP API, users, security enforcementseverity:minorCosmetic, documentation, edge case, or a workaround exists

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions