apache/hadoop · error · NoVersionAttributeException

Change detection policy requires %s

Error message

Change detection policy requires %s

What it means

Error "Change detection policy requires %s" thrown in apache/hadoop.

Source

Thrown at hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/ChangeTracker.java:213

  /**
   * Process the response from the server for validation against the
   * change policy.
   * @param copyObjectResponse response of a copy operation
   * @throws PathIOException raised on failure
   * @throws RemoteFileChangedException if the remote file has changed.
   */
  public void processResponse(final CopyObjectResponse copyObjectResponse)
      throws PathIOException {
    // ETag (sometimes, depending on encryption and/or multipart) is not the
    // same on the copied object as the original.  Version Id seems to never
    // be the same on the copy.  As such, there isn't really anything that
    // can be verified on the response, except that a revision ID is present
    // if required.
    String newRevisionId = policy.getRevisionId(copyObjectResponse);
    LOG.debug("Copy result {}: {}", policy.getSource(), newRevisionId);
    if (newRevisionId == null && policy.isRequireVersion()) {
      throw new NoVersionAttributeException(uri, String.format(
          "Change detection policy requires %s",
          policy.getSource()));
    }
  }

  /**
   * Process an exception generated against the change policy.
   * If the exception indicates the file has changed, this method throws
   * {@code RemoteFileChangedException} with the original exception as the
   * cause.
   * @param e the exception
   * @param operation the operation performed when the exception was
   * generated (e.g. "copy", "read").
   * @throws RemoteFileChangedException if the remote file has changed.
   */
  public void processException(SdkException e, String operation) throws
      RemoteFileChangedException {
    if (e instanceof AwsServiceException) {

View on GitHub (pinned to 2add963021)

Solutions

  1. Set fs.s3a.change.detection.source (etag or versionid) so the change detection policy has the attribute it requires.

When it happens

Trigger: Thrown at hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/ChangeTracker.java:213 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/6ff931596f2a5c66. Report an issue: GitHub.