<@ULVA73B9P> what happened here? I have not seen this error before, is this error on the prefect clo...
j
@Marvin what happened here? I have not seen this error before, is this error on the prefect cloud side? File "/usr/local/lib/python3.11/site-packages/prefect/results.py", line 547, in get raise MissingResult("The result was not persisted and is no longer available.") prefect.exceptions.MissingResult: The result was not persisted and is no longer available.
m
thought for 187.0 seconds
Short answer: this isn’t a Prefect Cloud outage. That exception is raised by the engine when something tries to read a flow/task result that wasn’t persisted to result storage, so Prefect can’t retrieve it anymore. Why it happens - You’re reading a result outside the original run process (e.g., calling `state.result()`/`.get()` from another process, service, or time) and the producing task/flow did not persist its result. - The worker/process that computed the result is gone (worker restart/crash, retry/resume, different work pool/infra, subflow on another worker), so the in‑memory result is no longer available and Prefect falls back to looking in result storage — which isn’t there unless you persisted it. - Less commonly: a configured result store is unreachable or the object was deleted. How to avoid it - Persist the results you’ll need later: - At the task level:
Copy code
from prefect import task

    @task(persist_result=True)
    def compute(...):
        ...
- At the flow level (to persist the flow’s return value):
Copy code
from prefect import flow

    @flow(persist_result=True)
    def my_flow(...):
        ...
- Use a shared result storage when runs span multiple workers/containers:
Copy code
from prefect import flow, task
  from prefect.filesystems import RemoteFileSystem

  result_store = RemoteFileSystem(basepath="<s3://my-bucket/prefect-results/>")  # or GCS/Azure/NFS

  @task(persist_result=True, result_storage=result_store)
  def t(x): 
      return x + 1

  @flow(persist_result=True, result_storage=result_store)
  def f():
      return t(1)
Make sure the workers have credentials and network access to that store. - If you frequently need persisted results, consider setting a profile/setting so results persist by default, or set
persist_result=True
on the decorators you use most. See docs for details. When you do NOT need persistence - Within a single flow run on the same worker with the default task runner, upstream results are passed in‑memory and do not need persistence. If you still see this error in that scenario, it usually indicates the process crashed/restarted or you’re crossing a process/infra boundary (e.g., subflows on different workers). Docs - Results, persistence, and storage: Prefect 3.x: Results To help pinpoint your case, could you share: - Where this error shows up (worker logs, downstream task, external client calling `state.result()`/`.get()`)? - Your Prefect version, flow/task decorators (any `persist_result`/`result_storage` set?), and your worker/work pool/infrastructure. - Whether you’re using subflows, retries, or a non-default task runner (e.g.,
ProcessPoolTaskRunner
).