RFC (csr): 8221528: Introduce compatibility mode with VM option -XX:AllowRedefinitionToAddOrDeleteMethods
David Holmes
david.holmes at oracle.com
Thu Mar 28 07:40:25 UTC 2019
Hi Thomas,
On 28/03/2019 5:02 pm, Thomas Stüfe wrote:
> Hi Serguei,
>
> This is planned to be introduced in jdk 13?
>
> The only concern I have is that both paths (old and new behavior) should
> be well tested, and hiding the old behavior behind an optional switch
> may reduce its test coverage considerably.
The old behaviour is hardly ever used - I'm not even sure we currently
have a test that tries to use it - so it's already not "well tested" and
there's no intent here of increasing test coverage for the code we plan
to remove. The new path will be tested as we do have a test that expects
to get the error. And Serguei will of course have a simple test that
checks the flag with both values.
Cheers,
David
> Cheers, Thomas
>
> (p.s. html format does not work well with the OpenJDK mailing list
> archive, see
> https://mail.openjdk.java.net/pipermail/serviceability-dev/2019-March/027612.html)
>
> On Thu, Mar 28, 2019 at 1:57 AM serguei.spitsyn at oracle.com
> <mailto:serguei.spitsyn at oracle.com> <serguei.spitsyn at oracle.com
> <mailto:serguei.spitsyn at oracle.com>> wrote:
>
> Hi All,
>
> This is request for comments and potentially reviews for the
> following CSR:
> https://bugs.openjdk.java.net/browse/JDK-8221528
>
>
> *Problem*
>
> Now, the implementation of JVMTI RedefineClasses and
> RetransformClasses allows to
> add/delete private static and private final instance methods in the
> new class versions.
>
> It means that current implementation does not follow the JVM TI spec
> which explicitly states:
>
> "The redefinition must not add, remove or rename fields or methods,
> change the signatures
> of methods, change modifiers, or change inheritance."
>
> For details, please, see the spec:
>
> https://docs.oracle.com/en/java/javase/12/docs/specs/jvmti.html#RedefineClasses
> https://docs.oracle.com/en/java/javase/12/docs/specs/jvmti.html#RetransformClasses
>
> The decision was made to align the implementation with the spec.
> For reference, please, see the
> https://bugs.openjdk.java.net/browse/JDK-8192936.
>
> This decision is going to cause some inconveniences to the customers.
>
>
> *Solution*
>
> The solution is to introduce a compatibility mode with new
> command-line VM option:
> -XX:{+|-}AllowRedefinitionToAddOrDeleteMethods
>
> New option will enable old behavior and allow the JVM TI
> RedefineClasses and RetransformClasses
> to add/delete private static and private final instance methods in
> the new class versions.
> Without this option the old behavior will be disabled.
>
> New option is deprecated right away.
> The plan is to keep it for a couple of releases to allow customers
> (tool vendors)
> to remove dependency on old behavior from their tools.
>
> Thanks,
> Serguei
>
More information about the serviceability-dev
mailing list