apache/druid · error
OpenLineage event dropped: all [%d] attempts to POST to [%s]
Error message
OpenLineage event dropped: all [%d] attempts to POST to [%s] returned non-2xx status [%d]
What it means
Like the exception variant, but here every retry of the OpenLineage POST completed and received a non-2xx HTTP status. The event is dropped (at-most-once) and the final status code is reported in the warning.
Source
Thrown at extensions-contrib/openlineage-emitter/src/main/java/org/apache/druid/extensions/openlineage/OpenLineageRequestLogger.java:526
MAX_SEND_RETRIES + 1,
transportUrl
);
}
finally {
post.releaseConnection();
}
}
// All attempts exhausted — delivery guarantee is at-most-once.
if (lastException != null) {
log.warn(
lastException,
"OpenLineage event dropped: all [%d] attempts to POST to [%s] failed with an exception",
MAX_SEND_RETRIES + 1,
transportUrl
);
} else {
log.warn(
"OpenLineage event dropped: all [%d] attempts to POST to [%s] returned non-2xx status [%d]",
MAX_SEND_RETRIES + 1,
transportUrl,
lastStatusCode
);
}
}
private void putLongStat(ObjectNode node, String targetKey, Map<String, Object> stats, String... sourceKeys)
{
for (String key : sourceKeys) {
Object val = stats.get(key);
if (val instanceof Number) {
node.put(targetKey, ((Number) val).longValue());
return;
}
}
}View on GitHub (pinned to 9b90983fd2)
Solutions
- Read lastStatusCode in the warning: 404 → fix URL path; 401/403 → configure auth; 429 → slow down or raise limits; 5xx → check collector health
- Verify the transportUrl points at the lineage ingest endpoint (e.g. http://host:5000/api/v1/lineage)
- If 413, reduce event/SQL facet size (see SQL facet truncation) or raise collector body limit
- Test the exact payload against the endpoint with curl to reproduce the status code
Example fix
// before transportUrl = "http://marquez:5000" // returns 404 // after transportUrl = "http://marquez:5000/api/v1/lineage"
Defensive patterns
Strategy: retry
Validate before calling
int code = curlStatus(transportUrl); // expect 2xx before enabling emission
if (code < 200 || code >= 300) { log.warn("OpenLineage endpoint returned %d", code); } Try / catch
try { logger.emit(event); } catch (Exception e) { /* check logged lastStatusCode; 4xx means fix config, 5xx retry later */ } Prevention
- Use the full lineage ingest path (/api/v1/lineage)
- Configure auth if the collector requires it
- Back off on 429; reduce payload on 413
When it happens
Trigger: The OpenLineage endpoint consistently responds with 4xx/5xx — e.g. 404 for a wrong path, 401/403 for auth-protected collectors, 413 for oversized payloads, 429 rate limiting, or 5xx server errors on every attempt.
Common situations: Wrong URL path (missing /api/v1/lineage); API key/token required but not configured; event payload too large for the collector; collector rate limiting bursts of lineage events.
Related errors
- OpenLineage event dropped: all [%d] attempts to POST to [%s]
- druid.request.logging.transportUrl must be set when transpor
- Failed to configure TLS for OpenLineage HTTP transport
- Could not create user[%s] due to concurrent update contentio
- Failed to get object summaries from S3 bucket[%s], prefix[%s
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/e66a4ae167ced208.
Report an issue: GitHub.