apache/beam · error · AttributeError
windows not accessible in this context
Error message
windows not accessible in this context
What it means
BeamBaseDoFnContext/Receiver raises this AttributeError when code accesses the `windows` property but the context has no windowed value attached. Beam contexts are only fully populated at certain phases of element processing (e.g. inside DoFn.process), so accessing context metadata outside that window is invalid.
Source
Thrown at sdks/python/apache_beam/runners/common.py:1953
@property
def element(self):
if self.windowed_value is None:
raise AttributeError('element not accessible in this context')
else:
return self.windowed_value.value
@property
def timestamp(self):
if self.windowed_value is None:
raise AttributeError('timestamp not accessible in this context')
else:
return self.windowed_value.timestamp
@property
def windows(self):
if self.windowed_value is None:
raise AttributeError('windows not accessible in this context')
else:
return self.windowed_value.windows
View on GitHub (pinned to 12126d8942)
Solutions
- Only access `self._context.windows` inside `DoFn.process()` where a windowed value is guaranteed.
- If you need windows elsewhere, carry the WindowedValue explicitly instead of reaching through the context.
- In tests, construct the context with a real windowed value (e.g. WindowedValue(elem, timestamp, [GlobalWindow()])).
Example fix
// before value = fn.setup_context.windows // after value = process_context.windows # inside process(), where windowed_value is set
Defensive patterns
Strategy: type-guard
Validate before calling
if getattr(ctx, 'windowed_value', None) is None:
raise RuntimeError('context.windows only available during process()') Type guard
def windows_accessible(ctx) -> bool:
return getattr(ctx, 'windowed_value', None) is not None Try / catch
try:
wins = ctx.windows
except AttributeError:
wins = [] # or defer: capture inside process() instead Prevention
- Only touch DoFn context properties inside process().
- Never store the context for later use; store the needed values instead.
- In tests, build contexts with real WindowedValues.
When it happens
Trigger: Accessing `context.windows` on a DoFnContext whose `windowed_value` is None — typically accessing context.windows outside of `process()` invocation, e.g. in setup/teardown, or holding a reference to the context and reading it after processing finished.
Common situations: Calling context.windows from a timer callback, from setup(), from a method captured/deferred, or in unit tests that construct a context without a windowed value.
Understand the failure class
Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.
Related errors
- element not accessible in this context
- timestamp not accessible in this context
- '%s' object has no attribute '%s'
- f"No inline provider found for {name}"
- Could not find coder for URN " + urn
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/9a5525c46e21f956.
Report an issue: GitHub.