Returns a tibble (data.frame) of ALL flows with both their raw (most recent log) status and effective (cascade-aware) status. A flow is considered "poisoned" if any upstream dependency has a more recent ERROR/FATAL log than the flow's own last SUCCESS log — meaning the flow ran successfully before the upstream broke.
Arguments
- conn
A connection object from
pl_connect().- since
Optional
POSIXctor ISO 8601 string. If provided, only considers log entries created after this timestamp.
Value
A data.frame with columns:
flow(character): flow nametype(character): flow typeschedule(character): schedule stringraw_status(character): most recent log status (NAif never logged)raw_status_time(character): timestamp of most recent logeffective_status(character):"SUCCESS","ERROR","FATAL","POISONED", orNAif never loggedpoisoned_by(list-column): character vector of upstream flow names that caused poisoningdepends_on(list-column): character vector of direct upstream flow namesis_root(logical):TRUEif the flow has no upstream dependencies
Details
Poisoning rule: A downstream flow is poisoned if:
It has at least one upstream flow with an ERROR or FATAL log.
The downstream's last SUCCESS log is MORE RECENT than that upstream failure. (i.e., the downstream ran successfully after the upstream had already broken.)
The downstream itself is not already ERROR or FATAL.
If the downstream has never logged, effective_status is NA (unknown),
regardless of upstream status.
Examples
if (FALSE) { # \dontrun{
conn <- pl_connect()
dag <- pl_get_dag(conn)
dag
} # }