eclipse-vertx/vert.x · error

410 Gone

Error message

410 Gone

What it means

SC_GONE is the HttpResponseExpectation constant for HTTP 410 Gone. Vert.x provides it for response validation; when the server answers 410 and this expectation is applied, the check fails with '410 Gone'. 410 means the resource was permanently removed and the server instructs clients to stop requesting that URI, unlike 404 which leaves the possibility it may return.

Source

Thrown at vertx-core/src/main/java/io/vertx/core/http/HttpResponseExpectation.java:200

  /**
   * 407 Proxy Authentication Required
   */
  HttpResponseExpectation SC_PROXY_AUTHENTICATION_REQUIRED = status(407);

  /**
   * 408 Request Timeout
   */
  HttpResponseExpectation SC_REQUEST_TIMEOUT = status(408);

  /**
   * 409 Conflict
   */
  HttpResponseExpectation SC_CONFLICT = status(409);

  /**
   * 410 Gone
   */
  HttpResponseExpectation SC_GONE = status(410);

  /**
   * 411 Length Required
   */
  HttpResponseExpectation SC_LENGTH_REQUIRED = status(411);

  /**
   * 412 Precondition Failed
   */
  HttpResponseExpectation SC_PRECONDITION_FAILED = status(412);

  /**
   * 413 Request Entity Too Large
   */
  HttpResponseExpectation SC_REQUEST_ENTITY_TOO_LARGE = status(413);

  /**
   * 414 Request-URI Too Long

View on GitHub (pinned to fb308bd8c3)

Solutions

  1. Update the code to call the replacement endpoint or API version
  2. Refresh or regenerate the expired/one-time URL before use
  3. Treat 410 as permanent: stop retrying and remove the resource from local caches/schedules
  4. Check the API changelog/migration guide for the resource's successor
  5. If you control the server and removal was unintended, restore the resource or correct the routing rule

Example fix

// before
webClient.get(443, "api.example.com", "/v1/items/" + id).send(); // 410
// after
webClient.get(443, "api.example.com", "/v2/items/" + id).send();
Defensive patterns

Strategy: fallback

Validate before calling

// Track known-retired endpoint versions in config
if (DEPRECATED_PATHS.contains(path)) { useReplacement(path); }

Type guard

boolean isGone(Throwable t) {
  return t instanceof VertxHttpResponseException
    && ((VertxHttpResponseException) t).getResponse().statusCode() == 410;
}

Try / catch

if (isGone(t)) { useFallbackResourceOrEndpoint(); } else { throw t; }

Prevention

When it happens

Trigger: Requesting a resource via Vert.x HttpClient/WebClient that the server has deliberately retired; the server responds 410 and the expectation validation fails with '410 Gone'.

Common situations: Using deprecated/expired API endpoints after a version migration, expired signed/one-time URLs (download links, share links), purged cache entries in services that mark tombstones as 410, documentation pointing at removed resources.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of eclipse-vertx/vert.x@fb308bd8c3 (2026-09-06). Data as JSON: /api/errors/2296755fcc16f89e. Report an issue: GitHub.