{"record":{"id":"1717efcc3f81d525","repo":"eclipse-vertx/vert.x","slug":"425-unordered-collection-webdav-rfc3648","errorCode":null,"errorMessage":"425 Unordered Collection (WebDAV, RFC3648)","messagePattern":"425 Unordered Collection \\(WebDAV, RFC3648\\)","errorType":"http","errorClass":null,"httpStatus":425,"severity":"warning","filePath":"vertx-core/src/main/java/io/vertx/core/http/HttpResponseExpectation.java","lineNumber":260,"sourceCode":"  /**\n   * 422 Unprocessable Entity (WebDAV, RFC4918)\n   */\n  HttpResponseExpectation SC_UNPROCESSABLE_ENTITY = status(422);\n\n  /**\n   * 423 Locked (WebDAV, RFC4918)\n   */\n  HttpResponseExpectation SC_LOCKED = status(423);\n\n  /**\n   * 424 Failed Dependency (WebDAV, RFC4918)\n   */\n  HttpResponseExpectation SC_FAILED_DEPENDENCY = status(424);\n\n  /**\n   * 425 Unordered Collection (WebDAV, RFC3648)\n   */\n  HttpResponseExpectation SC_UNORDERED_COLLECTION = status(425);\n\n  /**\n   * 426 Upgrade Required (RFC2817)\n   */\n  HttpResponseExpectation SC_UPGRADE_REQUIRED = status(426);\n\n  /**\n   * 428 Precondition Required (RFC6585)\n   */\n  HttpResponseExpectation SC_PRECONDITION_REQUIRED = status(428);\n\n  /**\n   * 429 Too Many Requests (RFC6585)\n   */\n  HttpResponseExpectation SC_TOO_MANY_REQUESTS = status(429);\n\n  /**\n   * 431 Request Header Fields Too Large (RFC6585)","sourceCodeStart":242,"sourceCodeEnd":278,"githubUrl":"https://github.com/eclipse-vertx/vert.x/blob/fb308bd8c3f12c79f4ae89bef67fadf6c80d036e/vertx-core/src/main/java/io/vertx/core/http/HttpResponseExpectation.java#L242-L278","documentation":"SC_UNORDERED_COLLECTION is an HttpResponseExpectation constant for HTTP 425 (WebDAV, RFC3648). It is returned when a server requires requests in a collection to be processed in order and the client sent them out of order. Vert.x provides it so clients can assert or react to this status.","triggerScenarios":"Sending unordered requests to servers enforcing ordered collections (RFC3648), e.g. HTTP/2 early-data or replayed requests where ordering cannot be guaranteed, or batch writes to a collection that mandates sequencing.","commonSituations":"Early-data (TLS 1.3 0-RTT) replay protections; clients retrying requests in parallel to ordered-collection endpoints; middleware that reorders requests.","solutions":["Resend the request(s) in the required order (RFC3648 defines retry as the intended client behavior).","Serialize requests to ordered-collection endpoints instead of issuing them in parallel.","Disable 0-RTT/early data or mark requests as non-replayable if reordering/replay triggers 425.","Use the Early-Data: 1 header handling per RFC to let servers reject safely and retry after handshake."],"exampleFix":"// before\nFuture.all(send(\"/a\"), send(\"/b\"), send(\"/c\")); // unordered -> 425\n// after\nsend(\"/a\").compose(v -> send(\"/b\")).compose(v -> send(\"/c\"));","handlingStrategy":"retry","validationCode":"null","typeGuard":"boolean is425(HttpClientResponse resp) { return resp.statusCode() == 425; }","tryCatchPattern":"sendOrdered().onFailure(err -> {\n  if (isCauseStatus(err, 425)) resendInOrder();\n});","preventionTips":["Serialize requests to ordered-collection endpoints","Avoid parallel futures on ordering-sensitive resources","Disable 0-RTT early data for non-idempotent requests","Retry in order — RFC3648 expects clients to retry"],"tags":["http","webdav","ordering","vertx-http-client"],"backgroundTag":"http-error-status","analyzedSha":"fb308bd8c3f12c79f4ae89bef67fadf6c80d036e","analyzedAt":"2026-09-06T11:37:12.241Z","contentChangedAt":"2026-09-06T11:37:12.241Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}