Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8225763: Inflater and Deflater should implement AutoCloseable #19675

Closed
wants to merge 34 commits into from

Conversation

jaikiran
Copy link
Member

@jaikiran jaikiran commented Jun 12, 2024

Can I please get a review of this enhancement which proposes to enhance java.util.zip.Deflater/Inflater classes to now implement AutoCloseable?

The actual work for this was done a few years back when we discussed the proposed approaches and then I raised a RFR. At that time I couldn't take this to completion. The current changes in this PR involve the implementation that was discussed at that time and also have implemented the review suggestions from that time. Here are those previous discussions and reviews:

https://mail.openjdk.org/pipermail/core-libs-dev/2019-June/061079.html
https://mail.openjdk.org/pipermail/core-libs-dev/2019-July/061177.html
https://mail.openjdk.org/pipermail/core-libs-dev/2019-July/061229.html

To summarize those discussions, we had concluded that:

  • Deflater and Inflater will implement the AutoCloseable interface
  • In the close() implementation we will invoke the end() method (end() can be potentially overridden by subclasses).
  • close() will be specified and implemented to be idempotent. Calling close() a second time or more will be a no-op.
  • Calling end() and then close(), although uncommon, will also support idempotency and that close() call will be a no-op.
  • However, calling close() and then end() will not guarantee idempotency and depending on the implementing subclass, the end() may throw an exception.

New tests have been included as part of these changes and they continue to pass along with existing tests in tier1, tier2 and tier3. When I had originally added these new tests, I hadn't used junit. I can convert them to junit if that's preferable.

I'll file a CSR shortly.


Progress

  • Change must be properly reviewed (1 review required, with at least 1 Reviewer)
  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change requires CSR request JDK-8343768 to be approved

Issues

  • JDK-8225763: Inflater and Deflater should implement AutoCloseable (Enhancement - P4)
  • JDK-8343768: Inflater and Deflater should implement AutoCloseable (CSR)

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/19675/head:pull/19675
$ git checkout pull/19675

Update a local copy of the PR:
$ git checkout pull/19675
$ git pull https://git.openjdk.org/jdk.git pull/19675/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 19675

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

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/19675.diff

Using Webrev

Link to Webrev Comment

@jaikiran
Copy link
Member Author

/csr needed

@bridgekeeper
Copy link

bridgekeeper bot commented Jun 12, 2024

👋 Welcome back jpai! A progress list of the required criteria for merging this PR into master 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

openjdk bot commented Jun 12, 2024

@jaikiran This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

After integration, the commit message for the final commit will be:

8225763: Inflater and Deflater should implement AutoCloseable

Reviewed-by: lancea, rriggs, alanb, smarks

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been 18 new commits pushed to the master branch:

  • 06ff4c1: 8347146: Convert IncludeLocalesPluginTest to use JUnit
  • db76f47: 8347720: [BACKOUT] Portable implementation of FORBID_C_FUNCTION and ALLOW_C_FUNCTION
  • e6902cf: 8323740: java.lang.ExceptionInInitializerError when trying to load XML classes in wrong order
  • a01e92c: 8347724: Replace SIZE_FORMAT in jfr directory
  • d002933: 8347286: (fs) Remove some extensions from java/nio/file/Files/probeContentType/Basic.java
  • d532019: 8347143: [aix] Fix strdup use in os::dll_load
  • dfd215b: 8347376: tools/jlink/runtimeImage/JavaSEReproducibleTest.java and PackagedModulesVsRuntimeImageLinkTest.java failed after JDK-8321413
  • a49f833: 8346045: Cleanup of security library tests calling Security Manager APIs
  • 56c7800: 8347381: Upgrade jQuery UI to version 1.14.1
  • 1c64a45: 8347501: Make static-launcher fails after JDK-8346669
  • ... and 8 more: https://git.openjdk.org/jdk/compare/c1d322fff42720146dfb3846bd7d8514b1bdf383...master

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added the csr Pull request needs approved CSR before integration label Jun 12, 2024
@openjdk
Copy link

openjdk bot commented Jun 12, 2024

@jaikiran has indicated that a compatibility and specification (CSR) request is needed for this pull request.

@jaikiran please create a CSR request for issue JDK-8225763 with the correct fix version. This pull request cannot be integrated until the CSR request is approved.

@openjdk
Copy link

openjdk bot commented Jun 12, 2024

@jaikiran The following label will be automatically applied to this pull request:

  • core-libs

When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command.

@openjdk openjdk bot added the core-libs core-libs-dev@openjdk.org label Jun 12, 2024
@openjdk openjdk bot added the rfr Pull request is ready for review label Jun 12, 2024
@mlbridge
Copy link

mlbridge bot commented Jun 12, 2024

@Override
public void close() {
synchronized (zsRef) {
// check if already closed
Copy link
Member

Choose a reason for hiding this comment

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

Should we comment // in case subclasses override the closed check in end() instead? Otherwise the duplicate comments and checks are confusing.

Copy link
Member Author

Choose a reason for hiding this comment

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

Hello Chen, we want the close() to be idempotent irrespective of whether or not end() is overridden. That check in close() and the code comment on that line is to indicate that. If the comment is adding to confusion, I can remove it - I don't think it's a must to have it to understand the check.

Copy link
Member

Choose a reason for hiding this comment

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

I mean, we have updated the default implementation of end() to be idempotent. It now just appears confusing to readers that close() seems to perform redundant checks for idempotence until they realize subclasses can override end() to make it non-idempotent.

My suggestion is that our comment should say why we have this check here even though there's already an identical check in end().

Copy link
Member Author

Choose a reason for hiding this comment

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

My suggestion is that our comment should say why we have this check here even though there's already an identical check in end().

I now see what you mean. I'll update this appropriately tomorrow.

@Override
public void close() {
synchronized (zsRef) {
// check if already closed
Copy link
Member

Choose a reason for hiding this comment

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

Same remark, we should mention subclass override close risk

@@ -0,0 +1,286 @@
/*
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.

Same for InflaterClose.java.

Copy link
Member Author

Choose a reason for hiding this comment

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

Hello Chen, these tests were actually introduced in a RFR back in 2019, so the original year is correct. I've now converted these tests to junit and updated the PR and updated the copyright years as well.

@stuart-marks
Copy link
Member

Hi Jai, thanks for picking this up. Several points of discussion here. Nothing fatal, but as I said in 2019 :-) just a few wrinkles to iron out. I looked mainly at Deflater, but I think the issues also all apply to Inflater too.

  1. class specification

I think the class specification needs to be clearer about the positioning of end() and close(). The end() method has done the real work of "closing" since the classes were introduced. We're retrofitting them to to have a close() method that's essentially just a synonym for end(), and it's still perfectly legal for clients and subclasses to call end() instead of close(). I think we need to say that close() is present mainly to support AutoCloseable and try-with-resources.

  1. end() specification

I don't think that "may throw an exception" is strong enough. Also, on these classes (not subclasses) end() is idemopotent, isn't it? If so, this should be specified. The end() specs need to say something like, closes and releases resources, etc., henceforth operations will throw an exception (which? -- see below) but that subsequent calls to end() do nothing.

  1. Which exceptions on closed Deflater/Inflater?

Oddly, it doesn't seem to be specified anywhere what exceptions are thrown if operations are attempted on a closed object. And the implementation actually throws NPE??!? Ideally we should specify what exception is thrown in this circumstance, but NPE seems wrong. Maybe we want to change the behavior to throw a different exception type. IllegalStateException seems like a reasonable candidate.

  1. close() specification

The 2019 discussion kind of assumed that we want close() to be idempotent. I'm not sure this is necessary. Alan said the implementation might need to be "heroic" but Peter Levart's arrangement (carried through here, apparently) isn't terribly bad. And @liach suggests more comments on this code, quite reasonably... but the comment begs the question, why do we need to avoid calling end() more than once? I'm rethinking the need for close() to be idempotent. Maybe close() should simply call end(). It would simplify the implementation and the specs -- the implSpec would simply say that it calls the end() method.

This would only be a problem if a) some arrangement of TWR ends up calling close() twice, which apparently it doesn't; b) there is a subclass; and c) the subclass's end() method is not idempotent. As far as I can tell we haven't found any example of any of these. It thus seems to me that having extra logic in close() to avoid calling end() more than once is solving a non-problem. It also fits more closely to the model of "close() is simply a synonym for end()".

@bridgekeeper
Copy link

bridgekeeper bot commented Jul 15, 2024

@jaikiran This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration!

@jaikiran
Copy link
Member Author

Please keep open, I'm running some experiments for the proposed alternative and I'll update this PR shortly.

@bridgekeeper
Copy link

bridgekeeper bot commented Aug 12, 2024

@jaikiran This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration!

@bridgekeeper
Copy link

bridgekeeper bot commented Sep 9, 2024

@jaikiran This pull request has been inactive for more than 8 weeks and will now be automatically closed. If you would like to continue working on this pull request in the future, feel free to reopen it! This can be done using the /open pull request command.

@bridgekeeper bridgekeeper bot closed this Sep 9, 2024
@jaikiran
Copy link
Member Author

jaikiran commented Nov 7, 2024

/open

@openjdk openjdk bot reopened this Nov 7, 2024
@openjdk
Copy link

openjdk bot commented Nov 7, 2024

@jaikiran This pull request is now open

@jaikiran
Copy link
Member Author

jaikiran commented Nov 7, 2024

Thank you Stuart for your inputs.

class specification

I think the class specification needs to be clearer about the positioning of end() and close(). The end() method has done the real work of "closing" since the classes were introduced. We're retrofitting them to to have a close() method that's essentially just a synonym for end(), and it's still perfectly legal for clients and subclasses to call end() instead of close(). I think we need to say that close() is present mainly to support AutoCloseable and try-with-resources.

I've now updated the class level javadoc of both Inflater and Deflater to be more explicit on the purpose of close() method and how it relates to the end() method.

end() specification

I don't think that "may throw an exception" is strong enough. Also, on these classes (not subclasses) end() is idemopotent, isn't it? If so, this should be specified. The end() specs need to say something like, closes and releases resources, etc., henceforth operations will throw an exception (which? -- see below) but that subsequent calls to end() do nothing.

I've updated both the end() and close() method javadocs. It now states that end() is idempotent and at the same time states that calling several other methods on a closed Inflater/Deflater will throw a specific exception (noted below). I copied over the sentence which states "Several other methods defined..." from an existing Java SE API.

Which exceptions on closed Deflater/Inflater?

Oddly, it doesn't seem to be specified anywhere what exceptions are thrown if operations are attempted on a closed object. And the implementation actually throws NPE??!? Ideally we should specify what exception is thrown in this circumstance, but NPE seems wrong. Maybe we want to change the behavior to throw a different exception type. IllegalStateException seems like a reasonable candidate.

Yes, it is indeed odd that it's throwing a NullPointerException when ensuring the Inflater/Deflater is open. I have changed that part to throw an IllegalStateException and make a mention of this exception in the end() method specification. Clearly, changing NullPointerException to IllegalStateException is a change in behaviour of public APIs and ideally should be done separately. But, given the context that it gets thrown only from an instance that's already closed (and thus of no real use), I think the chances of this change severly impacting applications is very limited. So, in my opinion, it's perhaps OK to include this change of exception type as part of this change and have it recorded through the same CSR that we use for this current enhancement. Do let me know if we should do that change separately.

close() specification

The 2019 discussion kind of assumed that we want close() to be idempotent. I'm not sure this is necessary. Alan said the implementation might need to be "heroic" but Peter Levart's arrangement (carried through here, apparently) isn't terribly bad. And @liach suggests more comments on this code, quite reasonably... but the comment begs the question, why do we need to avoid calling end() more than once? I'm rethinking the need for close() to be idempotent. Maybe close() should simply call end(). It would simplify the implementation and the specs -- the implSpec would simply say that it calls the end() method.

I ran various corpus experiments. Based on that what I have noticed is that, in that corpus, there are extremely few (less than 10) classes which override end() of either the Inflater or Deflater class. Furthermore, all these implementations have implemented their end() in a manner that calling it more than once will act as a no-op for subsequent invocations. So I think, like you note, we should just specify that close() calls end() and stop trying to prevent end() being called more than once. Given this, I've now updated the PR to do just that and also updated the new tests to match this specification updates.

tier testing is currently in progress for this current state of the PR. If the current state of the PR looks reasonable, then I'll focus on the CSR text for these changes.

* @since 24
*/
@Override
public void close() {
Copy link
Contributor

Choose a reason for hiding this comment

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

Can/should this method be final? The real/original cleanup method is end and if both close() and end() are overriddable, there may be some confusion about which to implement.

Copy link
Member Author

Choose a reason for hiding this comment

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

Hello Roger, I think that's a good idea. At least until there is a real reason for close() to be overridden by subclasses. I went back and checked the mailing list discussions (linked in this PR description) and I don't think marking close() as final has been suggested or rejected before. I will give others a chance to provide their inputs before I do this change.

Copy link
Member

Choose a reason for hiding this comment

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

I agree with marking these close methods as final as long as the previous corpus search did not find any user-defined close method in subclasses.

Copy link
Member Author

Choose a reason for hiding this comment

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

Hello Chen, corpus analysis shows that there are no subclasses of Inflater/Deflater which have a close() method.

Copy link
Member

Choose a reason for hiding this comment

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

Great news! Feel free to make their close final.

Copy link
Member Author

Choose a reason for hiding this comment

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

I have updated the PR to follow Roger's suggestion of marking this new close() method on Inflater and Deflater classes as final.

* @since 24
*/
@Override
public void close() {
Copy link
Contributor

Choose a reason for hiding this comment

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

Ditto, should this be final to be clear about what should be overridden to perform cleanup.

Copy link
Member Author

Choose a reason for hiding this comment

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

Done.

Copy link
Contributor

Choose a reason for hiding this comment

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

Inflater/Deflater date from JDK 1.1 so I think there is some risk to adding a final no-arg close method. I understand that a corpus analysis has been done, and the intention of making it final is for subclasses to know which method to override, but it doesn't take from the possibility that it might break subclasses developed years ago. If it goes ahead as reviewed, then we'll to do some outreach and be prepared to back out this change in the event that breakage is reported before GA.

Copy link
Member Author

Choose a reason for hiding this comment

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

Hello Alan,

If it goes ahead as reviewed, then we'll to do some outreach and be prepared to back out this change in the event that breakage is reported before GA.

I agree that if the final close() causes issues, then backing this change out and reconsidering a non-final close() would be the right thing to do. Once/if this gets integrated into 24, I will work with the outreach team to have this change noted in their EA mails.

Copy link
Contributor

Choose a reason for hiding this comment

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

Adding a final close method is both source and binary incompatible so I don't think the CSR can be approved without more justification. So I think the issues of introducing a non-final close should be examined again.

Copy link
Member Author

@jaikiran jaikiran Dec 2, 2024

Choose a reason for hiding this comment

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

Hello Alan, I've now reverted the change which had marked this new close() method on Inflater and Deflater as final. With this update to this PR, this method is no longer final. Given this change, one additional sentence has been added to the Inflater/Deflater class level javadoc, in @apiNote section providing guidance to the subclasses on which method to override for cleaning up resources they hold:

Subclasses should override {@linkplain #end()} to clean up the resources acquired by the subclass.

No other changes have been done.

Requesting your and other's inputs if this updated change looks reasonable.

@tmccombs
Copy link

tmccombs commented Jan 7, 2025

Please keep open

@@ -799,6 +812,8 @@ public int getAdler() {
* and therefore cannot return the correct value when it is greater
* than {@link Integer#MAX_VALUE}.
*
* @throws IllegalStateException if the Deflater is closed
Copy link
Contributor

Choose a reason for hiding this comment

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

Copy link
Member Author

Choose a reason for hiding this comment

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

Done - I've updated the PR to fix this and the other places that were introduced in this PR to follow that style guide.

@@ -829,6 +845,8 @@ public long getBytesRead() {
* and therefore cannot return the correct value when it is greater
* than {@link Integer#MAX_VALUE}.
*
* @throws IllegalStateException if the Deflater is closed
Copy link
Contributor

Choose a reason for hiding this comment

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

Ditto @throws throws should follow @return

@@ -646,6 +660,8 @@ public long getBytesRead() {
* and therefore cannot return the correct value when it is greater
* than {@link Integer#MAX_VALUE}.
*
* @throws IllegalStateException if the Inflater is closed
Copy link
Contributor

Choose a reason for hiding this comment

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

Ditto @throws should follow @return

Copy link
Contributor

@LanceAndersen LanceAndersen left a comment

Choose a reason for hiding this comment

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

Overall looks good Jai.

Roger is right on moving the @throws IAE further down

Copy link
Contributor

@RogerRiggs RogerRiggs left a comment

Choose a reason for hiding this comment

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

Thanks for the updates.

@openjdk openjdk bot added ready Pull request is ready to be integrated and removed csr Pull request needs approved CSR before integration labels Jan 14, 2025
@jaikiran
Copy link
Member Author

Thank you all for the reviews and the inputs. The CSR has been approved. I'll go ahead and integrate this shortly.

@@ -49,29 +49,33 @@
* thrown.
* <p>
* This class deflates sequences of bytes into ZLIB compressed data format.
* The input byte sequence is provided in either byte array or byte buffer,
* The input byte sequence is provided in either byte array or {@link ByteBuffer},
Copy link
Contributor

Choose a reason for hiding this comment

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

We should probably fix this sentence to say "in either a byte array or ...".

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed.

* To release resources used by the {@code Deflater}, applications must close the
* {@code Deflater} by calling either the {@link #end()} or the {@link #close()} method.
* After the {@code Deflater} has been closed, subsequent calls to several methods
* of the {@code Deflater} will throw an {@link IllegalStateException}.
Copy link
Contributor

Choose a reason for hiding this comment

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

This paragraph uses the definite article but there isn't a specific Deflater to speak of, and it's not a singleton. The first sentence of this paragraph might be better if re-worded "To release the resources used a Deflater, an application must close it by invoking its end() or close() method".

Copy link
Member Author

Choose a reason for hiding this comment

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

I have reworded the sentence to follow your input. Addtionally, I've removed the second sentence, since as you note, relevant methods on the Inflater/Deflater (as part of this PR) already have been updated to state that they throw an IllegalStateException if the Inflater/Deflater is already closed.

* Closes and releases the resources held by this {@code Deflater}
* and discards any unprocessed input.
* <p>
* If this method is invoked multiple times, the second and subsequent calls do nothing.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this could be clearer if you replace this sentence with "If the Deflater is already closed then invoking this method has no effect."

Copy link
Member Author

Choose a reason for hiding this comment

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

Done.

* This class implements {@link AutoCloseable} to facilitate its usage with
* {@code try}-with-resources statement. The {@linkplain Deflater#close() close() method} simply
* calls {@code end()}. Subclasses should override {@linkplain #end()} to clean up the
* resources acquired by the subclass.
Copy link
Contributor

Choose a reason for hiding this comment

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

I wonder if the note for subclasses should move to the end method as implSpec, it looks out of place in the class API note.

Copy link
Member

Choose a reason for hiding this comment

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

I believe an @implSpec only restricts the implementation of this immediate method, such as those seen on default methods, and has no impact on the overrides. If we need to specify something for overrides to abide to, I believe they usually stay in the API specification itself.

Copy link
Member Author

Choose a reason for hiding this comment

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

I wonder if the note for subclasses should move to the end method as implSpec, it looks out of place in the class API note.

Stuart, in his inputs here #19675 (comment) and here #19675 (comment) had noted that it would be useful to add this guidance to subclasses. But I see that he wasn't fully convinced whether it must be a apiNote or something else. Given what you note about moving this detail for subclasses to a @implSpec on the end() method, I have now updated the PR accordingly.

Copy link
Member Author

Choose a reason for hiding this comment

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

Hello Chen,

I believe an @implSpec only restricts the implementation of this immediate method, such as those seen on default methods, and has no impact on the overrides.

Based on the details about these tags here https://openjdk.org/jeps/8068562, I think the @implSpec is the most relevant one for this text:

Interface implementors or class subclassers use the information here in order to decide whether it is sensible or necessary to override a particular method

@openjdk openjdk bot removed the ready Pull request is ready to be integrated label Jan 14, 2025
Copy link
Contributor

@AlanBateman AlanBateman left a comment

Choose a reason for hiding this comment

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

Thanks for the updates, looks good now.

@openjdk openjdk bot added the ready Pull request is ready to be integrated label Jan 14, 2025
Copy link
Contributor

@LanceAndersen LanceAndersen left a comment

Choose a reason for hiding this comment

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

Latest Updates look good Jai

@jaikiran
Copy link
Member Author

Thank you all for the reviews. tier1, tier2 and tier3 tests pass with this change. I'll now go ahead and integrate this.

@jaikiran
Copy link
Member Author

/integrate

@openjdk
Copy link

openjdk bot commented Jan 15, 2025

Going to push as commit 36b7abd.
Since your change was applied there have been 26 commits pushed to the master branch:

  • d6d45c6: 8303884: jlink --add-options plugin does not allow GNU style options to be provided
  • 0ee6ba9: 8347596: Update HSS/LMS public key encoding
  • ec2aaaa: 8326236: assert(ce != nullptr) failed in Continuation::continuation_bottom_sender
  • 02d2493: 8347613: Remove leftover doPrivileged call in Currency test: CheckDataVersion.java
  • 10d08db: 8346142: [perf] scalability issue for the specjvm2008::xml.validation workload
  • 9b1bed0: 8290043: serviceability/attach/ConcAttachTest.java failed "guarantee(!CheckJNICalls) failed: Attached JNI thread exited without being detached"
  • 2de71d0: 8347129: cpuset cgroups controller is required for no good reason
  • 4c30933: 8346971: [ubsan] psCardTable.cpp:131:24: runtime error: large index is out of bounds
  • 06ff4c1: 8347146: Convert IncludeLocalesPluginTest to use JUnit
  • db76f47: 8347720: [BACKOUT] Portable implementation of FORBID_C_FUNCTION and ALLOW_C_FUNCTION
  • ... and 16 more: https://git.openjdk.org/jdk/compare/c1d322fff42720146dfb3846bd7d8514b1bdf383...master

Your commit was automatically rebased without conflicts.

@openjdk openjdk bot added the integrated Pull request has been integrated label Jan 15, 2025
@openjdk openjdk bot closed this Jan 15, 2025
@openjdk openjdk bot removed ready Pull request is ready to be integrated rfr Pull request is ready for review labels Jan 15, 2025
@openjdk
Copy link

openjdk bot commented Jan 15, 2025

@jaikiran Pushed as commit 36b7abd.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

@jaikiran jaikiran deleted the 8225763 branch January 15, 2025 01:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core-libs core-libs-dev@openjdk.org integrated Pull request has been integrated
Development

Successfully merging this pull request may close these issues.

7 participants