Skip to content

Core: Remove deprecated methods and fields scheduled for 1.12.0 removal - #17700

Merged
huaxingao merged 2 commits into
apache:mainfrom
dramaticlly:1.12deprecation-core-misc-removals
Aug 19, 2026
Merged

Core: Remove deprecated methods and fields scheduled for 1.12.0 removal#17700
huaxingao merged 2 commits into
apache:mainfrom
dramaticlly:1.12deprecation-core-misc-removals

Conversation

@dramaticlly

Copy link
Copy Markdown
Contributor

Removes the remaining core API marked for removal in 1.12.0 that has no callers left. Each item is an independent deletion; grouping them keeps the review to one pass over one module rather than nine tiny PRs.

RemovedReplacement
SystemProperties (class)SystemConfigs
ThreadPools.newWorkerPool(String), newWorkerPool(String, int)newExitingWorkerPool for long-lived pools, newFixedThreadPool for short-lived
ContentCache.invalidateAll()none — was best-effort and racy by design
TableProperties.MANIFEST_LISTS_ENABLED, MANIFEST_LISTS_ENABLED_DEFAULTnone — writing manifest lists is always enabled
AvroSchemaUtil.pruneColumns(Schema, Set, NameMapping)applyNameMapping + pruneColumns(Schema, Set)
SnapshotUtil.newFiles, newFilesBetweenSnapshotChanges with ancestorsBetween
TableScanUtil.hasDeletes(CombinedScanTask), hasEqDeletes(CombinedScanTask)the FileScanTask overloads
StandardEncryptionManager(String, int, KeyManagementClient), wrapKey, unwrapKeythe constructor taking encryption keys
ManifestFiles.read(ManifestFile, FileIO), readPaths(ManifestFile, FileIO), open(ManifestFile, FileIO)the overloads taking a specs map
BaseScan.io()table().io()

The only change that is not a pure deletion: BaseScan.io() was a protected helper, so its two subclass users are migrated to call table().io() directly — DataScan (1 site) and BaseDistributedDataScan (3 sites). No engine module subclasses used it.

AI Disclosure

Model: Claude Opus 5 (1M context)
Platform/Tool: Claude Code
Human Oversight: reviewed
Prompt Summary: split #16449 into smaller self-contained PRs; verify each group compiles and tests green standalone

@dramaticlly

Copy link
Copy Markdown
ContributorAuthor

@RussellSpitzer can you help check for ManifestFiles in #15575 and SnapshotUtil from #15656
@gaborkaszab can you help check the rest of core package class/method removal?

Comment threadcore/src/test/java/org/apache/iceberg/TestManifestReader.java Outdated
@nssaliannssalian added this to the Iceberg 1.12.0 milestone Aug 18, 2026
@uros-b

Copy link
Copy Markdown
Member

LGTM

@manuzhang

Copy link
Copy Markdown
Member

@dramaticlly Please include a Generated-by: <tool> token in the commit message

@nastra

Copy link
Copy Markdown
Contributor

@dramaticlly Please include a Generated-by: <tool> token in the commit message

@manuzhang I don't think we require this. Also our guidelines don't say that this must be included

@manuzhang

Copy link
Copy Markdown
Member

@nastra Sure, I'm referring to ai-generated-pr-disclosure, which is not a hard requirement, of course.

@nastra

Copy link
Copy Markdown
Contributor

@nastra Sure, I'm referring to ai-generated-pr-disclosure, which is not a hard requirement, of course.

ah interesting, I wasn't aware about this particular sentence. thanks for mentioning it

Removes the remaining core API marked for removal in 1.12.0 that has no
callers left:
- SystemProperties (class) -> SystemConfigs
- ThreadPools.newWorkerPool(String) and newWorkerPool(String, int) ->
newExitingWorkerPool or newFixedThreadPool depending on pool lifetime
- ContentCache.invalidateAll(), which was only best-effort and racy
- TableProperties.MANIFEST_LISTS_ENABLED and MANIFEST_LISTS_ENABLED_DEFAULT;
writing manifest lists is always enabled
- AvroSchemaUtil.pruneColumns(Schema, Set, NameMapping) -> applyNameMapping
plus pruneColumns(Schema, Set)
- SnapshotUtil.newFiles and newFilesBetween -> SnapshotChanges with
ancestorsBetween
- TableScanUtil.hasDeletes(CombinedScanTask) and hasEqDeletes(CombinedScanTask)
- StandardEncryptionManager(String, int, KeyManagementClient), wrapKey and
unwrapKey
- ManifestFiles.read(ManifestFile, FileIO), readPaths(ManifestFile, FileIO)
and open(ManifestFile, FileIO) -> the overloads taking a specs map
- BaseScan.io() -> table().io(); DataScan and BaseDistributedDataScan are
migrated to call table().io() directly
Generated-by: Claude Code
@dramaticlly
dramaticllyforce-pushed the 1.12deprecation-core-misc-removals branch from c82968a to 6fb59c3CompareAugust 18, 2026 21:02
@dramaticlly

Copy link
Copy Markdown
ContributorAuthor

@nastra Sure, I'm referring to ai-generated-pr-disclosure, which is not a hard requirement, of course.

Thanks @manuzhang , I rebased and update the commit to include Generated-by: Claude Code in commit 00b9087

@dramaticlly
dramaticllyforce-pushed the 1.12deprecation-core-misc-removals branch from 6fb59c3 to 5825f1aCompareAugust 18, 2026 23:05
@manuzhang

Copy link
Copy Markdown
Member

LGTM

@huaxingao
huaxingao merged commit 6fccfd9 into apache:mainAug 19, 2026
38 checks passed
@huaxingao

Copy link
Copy Markdown
Contributor

Thanks @dramaticlly for the PR! Thanks everyone for the review!

huaxingao pushed a commit that referenced this pull request Sep 1, 2026
…log message (#17812)
* Core: Remove ThreadPools.WORKER_THREAD_POOL_SIZE_PROP and correct manifest spec fallback removal version
Resolves the two remaining deprecation markers in iceberg-core that
promised action "in 1.12.0" but were missed by the removal PRs.
Remove ThreadPools.WORKER_THREAD_POOL_SIZE_PROP. The field was
deprecated in #5659 in favor of SystemConfigs.WORKER_THREAD_POOL_SIZE
and retargeted from 2.0.0 to 1.12.0 by #14392. It had no callers
anywhere in the repository outside its own declaration and no
references in the docs, and it was the only survivor of #14392's
13-file batch after #17700 removed the rest. The corresponding
java.field.removed break is recorded in .palantir/revapi.yml under the
1.11.0 baseline.
Correct the ManifestReader warning for the partition-spec-from-file-
metadata fallback to say 2.0.0 rather than 1.12.0. The fallback cannot
be honored in 1.12.0 because its only production caller is
BaseSnapshot:276, which passes a null spec map while serving
Snapshot.addedDeleteFiles(FileIO) and removedDeleteFiles(FileIO).
Those accessors are themselves already marked "@deprecated will be
removed in 2.0.0; use SnapshotChanges#builderFor(Table) instead", and
because they receive only a FileIO they structurally cannot supply a
spec map. The fallback must therefore outlive 1.12.0, and 2.0.0 aligns
its removal with that of its last caller.
* reword revapi change
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@dramaticlly@uros-b@manuzhang@nastra@huaxingao@nssalian