apache/beam · error · UnsupportedOperationException

%s.verifyCompatibility() should never be called. It is a pri

Error message

%s.verifyCompatibility() should never be called. It is a private implementation detail of sdk utilities. This message indicates a bug in the Beam SDK.

What it means

IdentityWindowFn.verifyCompatibility() unconditionally throws UnsupportedOperationException. IdentityWindowFn is an internal Beam SDK utility used only within sdk utilities (e.g. to preserve windowing in transforms); it is not a real user-facing WindowFn, so compatibility checks on it indicate a bug in the Beam SDK itself.

Source

Thrown at sdks/java/core/src/main/java/org/apache/beam/sdk/util/IdentityWindowFn.java:83

  public Collection<BoundedWindow> assignWindows(WindowFn<T, BoundedWindow>.AssignContext c)
      throws Exception {
    // The window is provided by the prior WindowFn, which also provides the coder for them
    return Collections.singleton(c.window());
  }

  @Override
  public boolean isCompatible(WindowFn<?, ?> other) {
    throw new UnsupportedOperationException(
        String.format(
            "%s.isCompatible() should never be called."
                + " It is a private implementation detail of sdk utilities."
                + " This message indicates a bug in the Beam SDK.",
            getClass().getCanonicalName()));
  }

  @Override
  public void verifyCompatibility(WindowFn<?, ?> other) throws IncompatibleWindowException {
    throw new UnsupportedOperationException(
        String.format(
            "%s.verifyCompatibility() should never be called."
                + " It is a private implementation detail of sdk utilities."
                + " This message indicates a bug in the Beam SDK.",
            getClass().getCanonicalName()));
  }

  @Override
  public Coder<BoundedWindow> windowCoder() {
    // Safe because the prior WindowFn provides both the windows and the coder.
    // The Coder is _not_ actually a coder for an arbitrary BoundedWindow.
    return coder;
  }

  @Override
  public WindowMappingFn<BoundedWindow> getDefaultWindowMappingFn() {
    throw new UnsupportedOperationException(
        String.format(

View on GitHub (pinned to 12126d8942)

Solutions

  1. Report this as a Beam SDK bug with the pipeline/stack trace (the message explicitly says it indicates an SDK bug)
  2. Check the Beam version; upgrade to the latest patch release where the offending internal usage may be fixed
  3. Review custom PTransforms to ensure they do not apply IdentityWindowFn or call verifyCompatibility on it
  4. Reproduce with a minimal pipeline and open an issue on apache/beam
Defensive patterns

Strategy: try-catch

Validate before calling

if (windowFn instanceof IdentityWindowFn) { throw new IllegalStateException("IdentityWindowFn cannot be verified; internal SDK utility"); }

Type guard

boolean isIdentity = fn instanceof IdentityWindowFn;

Try / catch

try { windowFn.verifyCompatibility(other); } catch (UnsupportedOperationException e) { /* SDK bug: report with stack trace */ }

Prevention

When it happens

Trigger: Calling verifyCompatibility() on an IdentityWindowFn instance, typically when a pipeline validation pass compares window strategies and an IdentityWindowFn leaked into a user-visible WindowFn slot.

Common situations: Running a pipeline on a Beam version with an internal bug where IdentityWindowFn was incorrectly used as a real WindowFn; custom transforms that copy windowing internals and call verifyCompatibility.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/6de45a9a75638911. Report an issue: GitHub.