Hi Ujwal,

On 8/3/2017 12:44 PM, Ujwal Vangapally 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.
There is no need for a separate indication of dumping all stack frames; a count of MAX_INTEGER
will have the same effect.

Even the specification in ThreadMXBean does not need to call out the special value for maxDepth as MAX_INTEGER as a special value. It just makes the spec more complicated.
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,
Still, with a sufficiently large maxDepth it is indistinguishable from the 'all frames' sentinel value.
The code is just more complicated than necessary as a result.

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".
Yes, it has the same effect as a very large maxDepth.
I followed same convention so that it will not affect getThreadInfo method with maxDepth argument.
fine, no need to change the native code, but the same result is achieved at the java level without
the adding the complexity in the implementation of ThreadImpl:489.

Roger

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.





Reply via email to