Skip to content

Backport rewrite delete file fix (#10020) to iceberg 1.5 - #277

Open
jiang95-dev wants to merge 2 commits into
linkedin:openhouse-1.5.2from
jiang95-dev:lejiang/backport-mor
Open

jiang95-dev wants to merge 2 commits into
linkedin:openhouse-1.5.2from
jiang95-dev:lejiang/backport-mor

Conversation

@jiang95-dev

@jiang95-dev jiang95-dev commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Backport the fix from iceberg #10020. This is needed because we ran into the same issue in production.

Testing Done

gradle build.

Comment thread .palantir/revapi.yml
Comment on lines +1021 to +1030
"1.5.2.21":
com.linkedin.iceberg:iceberg-api:
- code: "java.class.defaultSerializationChanged"
old: "class org.apache.iceberg.PartitionSpec"
new: "class org.apache.iceberg.PartitionSpec"
justification: "Serialization across versions is not supported"
- code: "java.class.defaultSerializationChanged"
old: "class org.apache.iceberg.Schema"
new: "class org.apache.iceberg.Schema"
justification: "Serialization across versions is not supported"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am unfamiliar with .palantir revapi

What is this checking?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RevAPI is the Java API/ABI compatibility check run by the API Binary Compatibility Checks CI job (./gradlew revapi). It compares the current iceberg-api JAR with the last published 1.5.2 baseline.

This backport adds public ID-remapping APIs to Schema and PartitionSpec. Because both classes are Serializable and do not declare an explicit serialVersionUID, those additions change the JVM-computed default serialization ID. RevAPI reports this as java.class.defaultSerializationChanged, so these entries acknowledge the two expected changes.

@mkuchenbecker

Copy link
Copy Markdown

what version are we backporting from?

@mkuchenbecker

Copy link
Copy Markdown

Its unclear from your commits what is backported vs fix forward. I might backport and commit merge conflicts, then update forward with new commits.

Adapt field ID reassignment to preserve initial and write defaults, add regression coverage, and accept the expected metadata schema serialization changes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jiang95-dev

Copy link
Copy Markdown
Collaborator Author

what version are we backporting from?

1.6.0

@jiang95-dev

Copy link
Copy Markdown
Collaborator Author

Its unclear from your commits what is backported vs fix forward. I might backport and commit merge conflicts, then update forward with new commits.

Currently there are 2 commits. First for backport. Second for fix forward.

} else {
newFields.add(Types.NestedField.required(newIds.get(i), field.name(), type, field.doc()));
}
newFields.add(Types.NestedField.from(field).withId(newIds.get(i)).ofType(type).build());

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there no more differentiation or is it implicit with the from?

@mkuchenbecker

mkuchenbecker commented Sep 21, 2026

Copy link
Copy Markdown
  1. One comment on a potential behaviour change.
  2. Can you verify that "Backport rewrite delete file fix (#10020) to iceberg 1." was a clean cherry pick? What were the commands run and were there conflict before the commit was made.
    Ideally you cherry pick -x to preserve the original commit, and commit as-is with any merge conflicts. Then you update code. That there are updates but no conflicts makes me think the backport wasn't clean.

A +1 response to this comment to indicate it actually was clean I'll take vs redoing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants