RFR(S): JDK-8059038 Create new launcher for SA tools
Dmitry Samersoff
dmitry.samersoff at oracle.com
Wed Jun 24 12:37:18 UTC 2015
Serguei,
Thank you for the review.
New webrev is here:
http://cr.openjdk.java.net/~dsamersoff/JDK-8059038/webrev.05/
I didn't change naming convention in SAGetoptTest.java and keep a_opt,
b_opt etc as it gives better readability. Other concerns are addressed.
BasicLauncherTest changed to use LingeredApp from testlib.
-Dmitry
On 2015-06-24 08:32, serguei.spitsyn at oracle.com wrote:
> Hi Dmitry,
>
> Some quick minor comments.
>
> hotspot_webrev/agent/src/share/classes/sun/jvm/hotspot/SAGetopt.java
>
> Formatting is wrong:
>
> 57 if (_optind >_argv.length) {
>
> 71 String[] ca = carg.split("=",2);
>
> 80 if (los.contains(ca[0]+"=")) {
>
>
> Need to use camel case for java method names:
>
> 55 private void extract_optarg(String opt) {
>
> 69 private String process_long_options(String carg, String[] longOptStr) {
>
>
> Need to use quotes for '-':
>
> 109 // End of option batch like -abc reached, expect option to start from -
>
> Example is:
>
> 133 // At this point carg[0] contains '-'
>
>
> Wrong indent at 87, 139, 120-121:
>
> 85 else {
> 86 // Mixed style options --file name
> 87 extract_optarg(ca[0]);
> 88 }
>
> 138 else {
> 139 ch = carg.charAt(_optopt);
> 140 }
>
> 119 if (longOptStr == null || longOptStr.length == 0) {
> 120 // No long options specified, stop options processing
> 121 return null;
> 122 }
>
>
>
> hotspot_webrev/agent/src/share/classes/sun/jvm/hotspot/SALauncher.java
>
> Uninitialized local:
>
> 128 String s;
>
> Need to use camel case:
>
> 126 String exe_or_pid = null;
>
>
> The main method is too long, I'd suggest to split with the sub-methods for:
> clhsdb, hsdb, jstack, jmap, jinfo
>
>
> jdk_webrev/test/sun/tools/jhsdb/BasicLauncherTest.java
>
> Wrong indent at 82, 85:
>
> 80 return toolProcess.exitValue();
> 81 } finally {
> 82 theApp.stopApp();
> 83 }
> 84 } catch (IOException | InterruptedException ex) {
> 85 throw new RuntimeException("Test ERROR " + ex, ex);
> 86 }
>
>
> I do not understand what is the need for nested try statements, just one
> try would be enough:
>
> 54 System.out.println("Starting LingeredApp");
> 55 try {
> 56 try {
> . . .
> 81 } finally {
> 82 theApp.stopApp();
> 83 }
> 84 } catch (IOException | InterruptedException ex) {
> 85 throw new RuntimeException("Test ERROR " + ex, ex);
> 86 }
>
> 98 try {
> 99 try {
> . . .
> 116 } finally {
> 117 theApp.stopApp();
> 118 }
> 119 } catch (Exception ex) {
> 120 throw new RuntimeException("Test ERROR " + ex, ex);
> 121 }
>
>
> Why do you catch exceptions and throw the RuntimeException's in the
> launch() methods
> but catch the IOException in main? Would it be better to catch any
> Exception?
>
> Too many empty lines:
>
> 88
> 89
> 90
>
>
> jdk_webrev/test/sun/tools/jhsdb/LingeredApp.java
>
> Too many empty lines:
>
> 275
> 276
>
> 369
>
>
> jdk_webrev/test/sun/tools/jhsdb/SAGetoptTest.java
>
> Need to use Java naming convention:
>
> 36 private static boolean a_opt;
> 37 private static boolean b_opt;
> 38 private static boolean c_opt;
> 39 private static boolean e_opt;
> 40 private static boolean mixed_opt;
> 41
> 42 private static String d_value;
> 43 private static String exe_value;
> 44 private static String core_value;
>
> Wrong indent 2 instead of 4:
>
> 70 if (s.equals("a")) {
> 71 a_opt = true;
> 72 continue;
> 73 }
> 74
> 75 if (s.equals("b")) {
> 76 b_opt = true;
> 77 continue;
> 78 }
> 79
> 80 if (s.equals("c")) {
> 81 c_opt = true;
> 82 continue;
> 83 }
> 84
> 85 if (s.equals("e")) {
> 86 e_opt = true;
> 87 continue;
> 88 }
> 89
> 90 if (s.equals("mixed")) {
> 91 mixed_opt = true;
> 92 continue;
> 93 }
>
>
> Thanks,
> Serguei
>
>
> On 6/23/15 7:06 AM, Dmitry Samersoff wrote:
>> Hi Everybody,
>>
>> Please review the changes:
>>
>> http://cr.openjdk.java.net/~dsamersoff/JDK-8059038/webrev.04/
>>
>> I'm about to file CCC request for it but would like to get internal
>> feedback before that.
>>
>> This fix is introducing native launcher jhsdb for serviceability agent.
>>
>> jhsdb
>>
>> will launch command line debugger clhsdb
>>
>> jhsdb jstack file core
>> jhsdb jmap file core
>> jhsdb jinfo file core
>>
>> will launch corresponding SA based utility.
>>
>>
>> -Dmitry
>>
>>
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
More information about the serviceability-dev
mailing list