RFR 4613913: Four EventRequest methods are invokable on deleted request
David Holmes
david.holmes at oracle.com
Fri Mar 30 00:12:50 UTC 2018
Daniil,
Even as far back as 2007 there was concern that changing the current
behaviour might break existing code. That has to be an even bigger
concern now!
Further the spec is sloppy here:
" Once the eventRequest is deleted, no operations (for example,
EventRequest.setEnabled(boolean)) are permitted."
This is too loose. What is an "operation"? Is a query like isEnabled()
really an "operation"? I would not consider it so. And if we can delete
requests why is there no "isDeleted" query? The spec seems incomplete
and too vague.
To me this something that should have been clarified in the spec first
and then the implementation brought into alignment. But that should have
happened many years ago. Changing this now seems risky to me.
This change in long standing behaviour also requires a CSR request if it
is to proceed.
David
-----
On 30/03/2018 8:36 AM, Daniil Titov wrote:
> Hi Serguei,
>
> Please review a new version of the fix that has these places corrected.
>
> Webreb: http://cr.openjdk.java.net/~dtitov/4613913/webrev.03
> Bug: https://bugs.openjdk.java.net/browse/JDK-4613913
>
> Thanks!
>
> Best regards,
> Daniil
>
> On 3/29/18, 11:46 AM, "serguei.spitsyn at oracle.com" <serguei.spitsyn at oracle.com> wrote:
>
> Hi Daniil,
>
> It looks good in general.
> One minor comment is that it would be nice to make a cleanup
> (as we already discussed) for all places like this:
>
> 202 if (isEnabled() || deleted) {
> 203 throw invalidState();
> 204 }
>
> As the isEnabled() now checks for deleted and throws the invalidState()
> then we can simplify these fragments to be:
>
> 202 if (isEnabled()) {
> 203 throw invalidState();
> 204 }
>
>
> Thanks,
> Serguei
>
>
> On 3/29/18 10:27, Daniil Titov wrote:
> > Please review the changes that ensure that no operation on deleted com.sun.jdi.request.EventRequest objects are permitted as per JDI specification for com.sun.jdi.request.EventRequestManager.deleteEventRequest(com.sun.jdi.request.EventRequest) method. The fix makes the following 4 methods in class com.sun.tools.jdi. EventRequestManagerImpl$EventRequestImpl to throw com.sun.jdi.request.InvalidRequestStateException if the request is deleted:
> > - getProperty()
> > - putProperty(Object, Object)
> > - suspendPolicy()
> > - isEnabled()
> >
> > Bug: https://bugs.openjdk.java.net/browse/JDK-4613913
> > Webrev: http://cr.openjdk.java.net/~dtitov/4613913/webrev.02/
> >
> > Best regards,
> > Daniil
> >
> >
>
>
>
>
More information about the serviceability-dev
mailing list