{"record":{"id":"2296755fcc16f89e","repo":"eclipse-vertx/vert.x","slug":"410-gone","errorCode":null,"errorMessage":"410 Gone","messagePattern":"410 Gone","errorType":"http","errorClass":null,"httpStatus":410,"severity":"error","filePath":"vertx-core/src/main/java/io/vertx/core/http/HttpResponseExpectation.java","lineNumber":200,"sourceCode":"  /**\n   * 407 Proxy Authentication Required\n   */\n  HttpResponseExpectation SC_PROXY_AUTHENTICATION_REQUIRED = status(407);\n\n  /**\n   * 408 Request Timeout\n   */\n  HttpResponseExpectation SC_REQUEST_TIMEOUT = status(408);\n\n  /**\n   * 409 Conflict\n   */\n  HttpResponseExpectation SC_CONFLICT = status(409);\n\n  /**\n   * 410 Gone\n   */\n  HttpResponseExpectation SC_GONE = status(410);\n\n  /**\n   * 411 Length Required\n   */\n  HttpResponseExpectation SC_LENGTH_REQUIRED = status(411);\n\n  /**\n   * 412 Precondition Failed\n   */\n  HttpResponseExpectation SC_PRECONDITION_FAILED = status(412);\n\n  /**\n   * 413 Request Entity Too Large\n   */\n  HttpResponseExpectation SC_REQUEST_ENTITY_TOO_LARGE = status(413);\n\n  /**\n   * 414 Request-URI Too Long","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/eclipse-vertx/vert.x/blob/fb308bd8c3f12c79f4ae89bef67fadf6c80d036e/vertx-core/src/main/java/io/vertx/core/http/HttpResponseExpectation.java#L182-L218","documentation":"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.","triggerScenarios":"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'.","commonSituations":"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.","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"],"exampleFix":"// before\nwebClient.get(443, \"api.example.com\", \"/v1/items/\" + id).send(); // 410\n// after\nwebClient.get(443, \"api.example.com\", \"/v2/items/\" + id).send();","handlingStrategy":"fallback","validationCode":"// Track known-retired endpoint versions in config\nif (DEPRECATED_PATHS.contains(path)) { useReplacement(path); }","typeGuard":"boolean isGone(Throwable t) {\n  return t instanceof VertxHttpResponseException\n    && ((VertxHttpResponseException) t).getResponse().statusCode() == 410;\n}","tryCatchPattern":"if (isGone(t)) { useFallbackResourceOrEndpoint(); } else { throw t; }","preventionTips":["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"],"tags":["http","resource-not-found","deprecated","vertx"],"backgroundTag":"resource-not-found","analyzedSha":"fb308bd8c3f12c79f4ae89bef67fadf6c80d036e","analyzedAt":"2026-09-06T11:37:12.241Z","contentChangedAt":"2026-09-06T11:37:12.241Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}