Skip to content

ExceptionHandler for send requests and proxy responses in HttpProxy/ReverseProxy #114

@fbuetler

Description

@fbuetler

Describe the feature

In case any interceptor fails with an exception, it is handled as a 502.

We propose to introduce an exceptionHandler in the HttpProxy to customize this behavior, analogously it is done in the HttpServerRequest, HttpServerResponse and many others.

Relevant code:

    proxy.sendRequest()
      .recover(throwable -> {
        log.trace("Error in sending the request", throwable);
        return Future.succeededFuture(proxyRequest.release().response().setStatusCode(502));
      })
      .compose(proxy::sendProxyResponse)
      .recover(throwable -> {
        log.trace("Error in sending the response", throwable);
        return proxy.response().release().setStatusCode(502).send();
      });

(Source: https://github.com/eclipse-vertx/vertx-http-proxy/blob/4.5.13/src/main/java/io/vertx/httpproxy/impl/ReverseProxy.java#L78-L87)

Use cases

When applying interceptors, the proxy may want to return status codes that differ to the hard-coded 502.

Contribution

I volunteer to implement this feature.

We propose to add the following methods to HttpProxy and ReverseProxy:

  HttpProxy requestExceptionHandler(Handler<Throwable> handler);
  HttpProxy responseExceptionHandler(Handler<Throwable> handler);

Alternatively, only exceptionHandler may be added that is to be used on both request and responses.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions