Request for Review (XXL): 7104647: Adding a diagnostic command framework

Mandy Chung mandy.chung at oracle.com
Wed Dec 7 14:04:48 PST 2011



On 12/7/2011 1:30 PM, Frederic Parain wrote:
>
>> The execute method doesn't throw any exception other than
>> IAE. What happens if the specified command execution fails
>> in the target VM? If no exception is thrown, how does the
>> caller detect if the command succeeds or not and handle it
>> gracefully? It seems that this mechanism should provide
>> a way to detect if a command succeeds or fails programmatically
>> rather than burying the error message in the returned string.
>
> This changeset contains the framework, and the framework
> only throws NPE or IAE. However, a diagnostic command
> impementation is free to throw any other exception. If such
> an exception is thrown, it is simply printed on the output
> stream if the command has been invoked through the attachAPI,
> or it is propagated like any other exception through JMX
> if the command has been invoked from the HotSpotDiagnosticMXBean.
>

What happens when HotSpotDiagnosticMXBean is called locally within the 
same process but through JMX MBeanServer?

I still think you might need DiagnosticCommandException (something like 
that).

>
>> L133: do you need to check if command == null and throw NPE?
>> or NPE will be thrown somewhere?
>
> The native code is protected against null commands, it will
> throw the NPE.

Ok.  It's still good to add the null check to make this more explicit - 
you can use the java.util.Objects.requireNonNull method.

>
>> L158, 172: this should never happen unless the hotspot/jdk is
>> mismatched. But would it better to throw an exception with
>> an informative message to help diagnostic in case the mismatch
>> does happen?
>
> If a mismatch is detected, the implementation now throws an
> UnsupportedOperationException("Diagnostic commands are not supported 
> by this VM").
>

That's better.

Thanks
Mandy


More information about the serviceability-dev mailing list