Skip to content

8363889: Update sun.print.PrintJob2D to use Disposer#440

Open
rm-gh-8 wants to merge 1 commit intoopenjdk:pr/439from
rm-gh-8:JDK-8363889-V25
Open

8363889: Update sun.print.PrintJob2D to use Disposer#440
rm-gh-8 wants to merge 1 commit intoopenjdk:pr/439from
rm-gh-8:JDK-8363889-V25

Conversation

@rm-gh-8
Copy link
Copy Markdown
Contributor

@rm-gh-8 rm-gh-8 commented Mar 31, 2026

Backporting JDK-8363889: Update sun.print.PrintJob2D to use Disposer.

This PR refactors PrintJob2D to use a delegate pattern with Disposer-based cleanup as a replacement for relying on finalize(), so that when the PrintJob2D object becomes unreachable, the Disposer can call end() on the delegate to release resources.

This is a prerequisite for JDK-8378417 which will be added as a dependent PR (#441) for parity with Oracle JDK.

Ran related tests on linux-x64, linux-aarch64, macos-aarch64 and windows-x64:

make test TEST=test/jdk/java/awt/PrintJob

Results attached;

windows-x64-specific-test.log
macos-aarch64-specific-test.log
linux-x64-specific-test.log
linux-aarch64-specific-test.log


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • JDK-8363889 needs maintainer approval

Integration blocker

 ⚠️ Dependency #439 must be integrated first

Issue

  • JDK-8363889: Update sun.print.PrintJob2D to use Disposer (Enhancement - P4 - Requested)

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk25u-dev.git pull/440/head:pull/440
$ git checkout pull/440

Update a local copy of the PR:
$ git checkout pull/440
$ git pull https://git.openjdk.org/jdk25u-dev.git pull/440/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 440

View PR using the GUI difftool:
$ git pr show -t 440

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/jdk25u-dev/pull/440.diff

Using Webrev

Link to Webrev Comment

@bridgekeeper
Copy link
Copy Markdown

bridgekeeper bot commented Mar 31, 2026

👋 Welcome back rmesde! A progress list of the required criteria for merging this PR into pr/439 will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk
Copy link
Copy Markdown

openjdk bot commented Mar 31, 2026

❗ This change is not yet ready to be integrated.
See the Progress checklist in the description for automated requirements.

@openjdk openjdk bot changed the title Backport d1e362e9a8aae7f2c095510633624ed90a1d3b78 8363889: Update sun.print.PrintJob2D to use Disposer Mar 31, 2026
@openjdk
Copy link
Copy Markdown

openjdk bot commented Mar 31, 2026

This backport pull request has now been updated with issue from the original commit.

@openjdk openjdk bot added backport Port of a pull request already in a different code base clean Identical backport; no merge resolution required labels Mar 31, 2026
@rm-gh-8 rm-gh-8 marked this pull request as ready for review March 31, 2026 17:10
@openjdk openjdk bot added the rfr Pull request is ready for review label Mar 31, 2026
@mlbridge
Copy link
Copy Markdown

mlbridge bot commented Mar 31, 2026

Webrevs

@rm-gh-8
Copy link
Copy Markdown
Contributor Author

rm-gh-8 commented Apr 1, 2026

/approval request for backport of JDK-8363889: Update sun.print.PrintJob2D to use Disposer.

This PR refactors PrintJob2D to use a delegate pattern with Disposer-based cleanup as a replacement for relying on finalize(), so that when the PrintJob2D object becomes unreachable, the Disposer can call end() on the delegate to release resources.

This is a prerequisite for JDK-8378417 which will be added as a dependent PR (#441) for parity with Oracle JDK.

Medium risk — while the refactoring is mechanically straightforward (moving code to a delegate with no logic changes), the switch from finalization to Disposer-based cleanup changes the timing and guarantees of resource cleanup. end() is now
synchronized on the PrintJobDelegate instance rather than PrintJob2D.

@openjdk
Copy link
Copy Markdown

openjdk bot commented Apr 1, 2026

@rm-gh-8
8363889: The approval request has been created successfully.

@openjdk openjdk bot added the approval Requires approval; will be removed when approval is received label Apr 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approval Requires approval; will be removed when approval is received backport Port of a pull request already in a different code base clean Identical backport; no merge resolution required rfr Pull request is ready for review

Development

Successfully merging this pull request may close these issues.

1 participant