eclipse-vertx/vert.x · warning
425 Unordered Collection (WebDAV, RFC3648)
Error message
425 Unordered Collection (WebDAV, RFC3648)
What it means
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.
Source
Thrown at vertx-core/src/main/java/io/vertx/core/http/HttpResponseExpectation.java:260
/** * 422 Unprocessable Entity (WebDAV, RFC4918) */ HttpResponseExpectation SC_UNPROCESSABLE_ENTITY = status(422); /** * 423 Locked (WebDAV, RFC4918) */ HttpResponseExpectation SC_LOCKED = status(423); /** * 424 Failed Dependency (WebDAV, RFC4918) */ HttpResponseExpectation SC_FAILED_DEPENDENCY = status(424); /** * 425 Unordered Collection (WebDAV, RFC3648) */ HttpResponseExpectation SC_UNORDERED_COLLECTION = status(425); /** * 426 Upgrade Required (RFC2817) */ HttpResponseExpectation SC_UPGRADE_REQUIRED = status(426); /** * 428 Precondition Required (RFC6585) */ HttpResponseExpectation SC_PRECONDITION_REQUIRED = status(428); /** * 429 Too Many Requests (RFC6585) */ HttpResponseExpectation SC_TOO_MANY_REQUESTS = status(429); /** * 431 Request Header Fields Too Large (RFC6585)
View on GitHub (pinned to fb308bd8c3)
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.
Example fix
// before
Future.all(send("/a"), send("/b"), send("/c")); // unordered -> 425
// after
send("/a").compose(v -> send("/b")).compose(v -> send("/c")); Defensive patterns
Strategy: retry
Validate before calling
null
Type guard
boolean is425(HttpClientResponse resp) { return resp.statusCode() == 425; } Try / catch
sendOrdered().onFailure(err -> {
if (isCauseStatus(err, 425)) resendInOrder();
}); Prevention
- 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
When it happens
Trigger: 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.
Common situations: Early-data (TLS 1.3 0-RTT) replay protections; clients retrying requests in parallel to ordered-collection endpoints; middleware that reorders requests.
Related errors
- 423 Locked (WebDAV, RFC4918)
- 424 Failed Dependency (WebDAV, RFC4918)
- 421 Misdirected Request
- 422 Unprocessable Entity (WebDAV, RFC4918)
- 426 Upgrade Required (RFC2817)
AI-assisted analysis of eclipse-vertx/vert.x@fb308bd8c3 (2026-09-06).
Data as JSON: /api/errors/1717efcc3f81d525.
Report an issue: GitHub.