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
- Update the code to call the replacement endpoint or API version
- Refresh or regenerate the expired/one-time URL before use
- Treat 410 as permanent: stop retrying and remove the resource from local caches/schedules
- Check the API changelog/migration guide for the resource's successor
- 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
- Treat 410 as permanent — never retry the same URI
- Subscribe to API deprecation notices and migrate early
- Regenerate one-time URLs before each use
- Purge local caches when a 410 is received
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
- only '\n' is allowed after '\r': <seq>
- only ' ' and '\t' are allowed after '\n': <seq>
- 408 Request Timeout
- 409 Conflict
- 411 Length Required
AI-assisted analysis of eclipse-vertx/vert.x@fb308bd8c3 (2026-09-06).
Data as JSON: /api/errors/2296755fcc16f89e.
Report an issue: GitHub.