JDK-8185003 JMX: Add a version of ThreadMXBean.dumpAllThreads with a maxDepth argument
Hohensee, Paul
hohensee at amazon.com
Thu Aug 3 17:58:09 UTC 2017
What do people think of the idea of extending this RFE to include adding versions of dumpAllThreads that are duals of the existing getThreadInfo(long[], …) methods? And also add
getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
as the dual of the proposed
dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
Paul
On 8/3/17, 9:44 AM, "serviceability-dev on behalf of Ujwal Vangapally" <serviceability-dev-bounces at openjdk.java.net on behalf of ujwal.vangapally at oracle.com> wrote:
Thanks for the review Roger, please see my comments inline.
On 8/3/2017 8:23 PM, Roger Riggs wrote:
> Hi Ujwal,
>
> (Reviewer, but not specifically servicability).
>
> Comments,
>
> java/lang/management/ThreadMXBean.java:
>
> 809: It may be useful to state that the behavior is the same as {@link
> #dumpAllThreads} except that the depth is limited.
>
> 828: Do not duplicate specification of the meaning of maxDepth =
> MAX_VALUE, either put the entire spec
> in the @param or in the description. Duplication creates an
> opportunity for disagreement or a maintenance issue when updating.
>
> 833: terminate the {@code maxDepth} before "is negative".
>
> As Erik comments, there should be a space after "," everywhere; both
> to be consistent with existing style and the style guide.
will make changes to doc as suggested.
>
> sun/management/ThreadImpl.java:
>
> 484: Since the native code is going to check maxDepth, why is it
> checked here also?
> -or- remove the check in native
As maxDepth value should not be negative for dumpAllThreads
sun/management/ThreadImpl.java: 484: throws IllegalArgumentException.
Check on native side can be removed but having it might help in
enforcing the convention of using only -1 for dumping all the stack frames
otherwise any negative number can be passed to dump all the frames.
> 490: This could be simpler to not translate maxDepth to -1,
> Here and in the native code, passing MAX_INTEGER would dump the
> entire stack, there is no need to special case it
>
> services/threadService.cpp:
> 565: checking count >= maxDepth is a sufficient test if to dump all
> frames, passing MAX_INTEGER is used
> and it will dump zero should a negative number get this far.
>
currently getThreadInfo method accepts maxDepth argument and it uses the
translation of maxDepth to "-1" as it's implementation detail for
printing all stack frames,
As getThreadInfo also uses services/threadService.cpp: 565:
(dump_stack_at_safepoint) expecting it to print all stack trace elements
when maxDepth is given as "-1".
I followed same convention so that it will not affect getThreadInfo
method with maxDepth argument.
> Thanks, Roger
>
Thanks,
Ujwal
> On 8/3/2017 10:18 AM, Ujwal Vangapally wrote:
>> kindly use the below link for accessing webrev
>>
>> http://cr.openjdk.java.net/~uvangapally/webrev/2017/8185003/webrev.01/
>>
>> previously shared link is no longer accessible hence providing this
>> new link.
>>
>> Thanks,
>>
>> Ujwal.
>>
>>
>> On 8/3/2017 3:08 PM, Ujwal Vangapally wrote:
>>> Hi,
>>>
>>> kindly review the changes made.
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8185003
>>>
>>> webrev:
>>> http://cr.openjdk.java.net/~uvangapally/webrev/2017/8185003/webrev.00/
>>>
>>> CSR: https://bugs.openjdk.java.net/browse/JDK-8185705
>>>
>>> Thanks,
>>>
>>> Ujwal.
>>>
>>
>
More information about the serviceability-dev
mailing list