<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Consolas",serif;
        color:black;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="lightyellow" lang="DE" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Thanks, pushed:
</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><a href="http://hg.openjdk.java.net/jdk9/dev/jdk/rev/0b88eb2f451d"><span lang="EN-US">http://hg.openjdk.java.net/jdk9/dev/jdk/rev/0b88eb2f451d</span></a></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext"> Roger Riggs [mailto:Roger.Riggs@Oracle.com]
<br>
<b>Sent:</b> Mittwoch, 29. Juni 2016 23:22<br>
<b>To:</b> Langer, Christoph <christoph.langer@sap.com><br>
<b>Cc:</b> net-dev@openjdk.java.net; core-libs-dev@openjdk.java.net; nio-dev@openjdk.java.net<br>
<b>Subject:</b> Re: RFR 8158023: SocketExceptions contain too little information sometimes<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hi Christph,<br>
<br>
fine, push when ready.<o:p></o:p></p>
<div>
<p class="MsoNormal">On 6/29/2016 5:18 PM, Langer, Christoph wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi Roger,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>thanks for reviewing.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>As for:<o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>jni_util.c: line 216:<o:p></o:p></pre>
</blockquote>
<pre>There I don't create an extra String but the Exception Object to throw, similar to the old function JNU_ThrowByNameWithLastError.<o:p></o:p></pre>
</blockquote>
<p class="MsoNormal">I misread line 216, thinking the exception class was fixed.<br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>jni_util.h:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>   line 117-119, The original comment was just as informative as the<o:p></o:p></pre>
</blockquote>
<pre>I think you are right - I will restore the old comment.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>If no objections I consider this reviewed and will push it tomorrow with the reverted comment lines.<o:p></o:p></pre>
</blockquote>
<p class="MsoNormal">Yep,<br>
<br>
Thanks, Roger<br>
<br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Thanks<o:p></o:p></pre>
<pre>Christoph<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>-----Original Message-----<o:p></o:p></pre>
<pre>From: nio-dev [<a href="mailto:nio-dev-bounces@openjdk.java.net">mailto:nio-dev-bounces@openjdk.java.net</a>] On Behalf Of Roger<o:p></o:p></pre>
<pre>Riggs<o:p></o:p></pre>
<pre>Sent: Mittwoch, 29. Juni 2016 20:20<o:p></o:p></pre>
<pre>To: <a href="mailto:nio-dev@openjdk.java.net">nio-dev@openjdk.java.net</a><o:p></o:p></pre>
<pre>Subject: Re: RFR 8158023: SocketExceptions contain too little information<o:p></o:p></pre>
<pre>sometimes<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Hi Christoph,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Looking good, its unfortunate that the handling of mixed platform and<o:p></o:p></pre>
<pre>utf string require jni up calls to invoke java methods.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>jni_util.c: line 216:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>   You should not need to create an extra string; the string s is<o:p></o:p></pre>
<pre>non-null and ready to use.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>jni_util.h:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>   line 117-119, The original comment was just as informative as the<o:p></o:p></pre>
<pre>replacement.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>The rest looks fine.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Roger<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>On 6/28/16 4:45 PM, Langer, Christoph wrote:<o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre>Hi Paul,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Ok, you kind of got me convinced and it is also a quite simple<o:p></o:p></pre>
<pre>modification. I changed from “java.net.SocketException: ioctl<o:p></o:p></pre>
<pre>SIOCGSIZIFCONF failed: Bad file number” to “java.net.SocketException:<o:p></o:p></pre>
<pre>Bad file number (ioctl SIOCGSIZIFCONF failed)” like you suggested.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>The update is in place:<o:p></o:p></pre>
<pre><a href="http://cr.openjdk.java.net/~clanger/webrevs/8158023.3/">http://cr.openjdk.java.net/~clanger/webrevs/8158023.3/</a><o:p></o:p></pre>
<pre><a href="http://cr.openjdk.java.net/%7Eclanger/webrevs/8158023.3/"><http://cr.openjdk.java.net/%7Eclanger/webrevs/8158023.3/></a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Now I finally need a review…<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Best regards<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Christoph<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>*From:*Paul Benedict [<a href="mailto:pbenedict@apache.org">mailto:pbenedict@apache.org</a>]<o:p></o:p></pre>
<pre>*Sent:* Montag, 27. Juni 2016 18:15<o:p></o:p></pre>
<pre>*To:* Langer, Christoph <a href="mailto:christoph.langer@sap.com"><christoph.langer@sap.com></a><o:p></o:p></pre>
<pre>*Cc:* Kenji Kazumura <a href="mailto:kzr@jp.fujitsu.com"><kzr@jp.fujitsu.com></a>; Chris Hegarty<o:p></o:p></pre>
<pre><a href="mailto:chris.hegarty@oracle.com"><chris.hegarty@oracle.com></a>; <a href="mailto:nio-dev@openjdk.java.net">nio-dev@openjdk.java.net</a>;<o:p></o:p></pre>
<pre><a href="mailto:core-libs-dev@openjdk.java.net">core-libs-dev@openjdk.java.net</a>; <a href="mailto:net-dev@openjdk.java.net">net-dev@openjdk.java.net</a><o:p></o:p></pre>
<pre>*Subject:* Re: RFR 8158023: SocketExceptions contain too little<o:p></o:p></pre>
<pre>information sometimes<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Christoph, I didn't understand your explanation on your message<o:p></o:p></pre>
<pre>preference. Typically root cause information is printed last, not<o:p></o:p></pre>
<pre>first. Another reason not to change the ordering of the exception<o:p></o:p></pre>
<pre>message is that applications may be looking at existing strings. For<o:p></o:p></pre>
<pre>this example, if I may presume "Bad file number" is an existing<o:p></o:p></pre>
<pre>message, I would defer to the possibility applications may be exist<o:p></o:p></pre>
<pre>that test for that message condition.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Cheers,<o:p></o:p></pre>
<pre>Paul<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>On Mon, Jun 27, 2016 at 2:42 AM, Langer, Christoph<o:p></o:p></pre>
<pre><<a href="mailto:christoph.langer@sap.com">christoph.langer@sap.com</a> <a href="mailto:christoph.langer@sap.com"><mailto:christoph.langer@sap.com></a>> wrote:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>    Hi,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>    eventually here is the - hopefully final - version of this fix:<o:p></o:p></pre>
<pre>    <a href="http://cr.openjdk.java.net/~clanger/webrevs/8158023.3/">http://cr.openjdk.java.net/~clanger/webrevs/8158023.3/</a><o:p></o:p></pre>
<pre>    <a href="http://cr.openjdk.java.net/%7Eclanger/webrevs/8158023.3/"><http://cr.openjdk.java.net/%7Eclanger/webrevs/8158023.3/></a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>    Now I leave JNU_ThrowByNameWithLastError untouched and I've also<o:p></o:p></pre>
<pre>    added conversion to the new function<o:p></o:p></pre>
<pre>    JNU_ThrowByNameWithMessageAndLastError. I've replaced<o:p></o:p></pre>
<pre>    JNU_ThrowByNameWithLastError with<o:p></o:p></pre>
<pre>    JNU_ThrowByNameWithMessageAndLastError in the java/net coding<o:p></o:p></pre>
<pre>    where I think it is appropriate (mostly in occasions when a<o:p></o:p></pre>
<pre>    SocketException is thrown kind of generically). @Paul: thanks for<o:p></o:p></pre>
<pre>    your suggestion regarding the output format but I would still<o:p></o:p></pre>
<pre>    prefer an output like "java.net.SocketException: ioctl<o:p></o:p></pre>
<pre>    SIOCGSIZIFCONF failed: Bad file number" vs. "<o:p></o:p></pre>
<pre>    java.net.SocketException: Bad file number (ioctl SIOCGSIZIFCONF<o:p></o:p></pre>
<pre>    failed)" as I'm always handing down a message to the new throw<o:p></o:p></pre>
<pre>    routine.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>    Hoping for a review :)<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>    Best regards<o:p></o:p></pre>
<pre>    Christoph<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>    > -----Original Message-----<o:p></o:p></pre>
<pre>    > From: Kenji Kazumura [<a href="mailto:kzr@jp.fujitsu.com">mailto:kzr@jp.fujitsu.com</a>]<o:p></o:p></pre>
<pre>    > Sent: Mittwoch, 8. Juni 2016 02:51<o:p></o:p></pre>
<pre>    > To: Langer, Christoph <a href="mailto:christoph.langer@sap.com"><christoph.langer@sap.com></a><o:p></o:p></pre>
<pre>    > Cc: <a href="mailto:net-dev@openjdk.java.net">net-dev@openjdk.java.net</a> <a href="mailto:net-dev@openjdk.java.net"><mailto:net-dev@openjdk.java.net></a>;<o:p></o:p></pre>
<pre>    <a href="mailto:nio-dev@openjdk.java.net">nio-dev@openjdk.java.net</a> <a href="mailto:nio-dev@openjdk.java.net"><mailto:nio-dev@openjdk.java.net></a>; core-libs-<o:p></o:p></pre>
<pre>    > <a href="mailto:dev@openjdk.java.net">dev@openjdk.java.net</a> <a href="mailto:dev@openjdk.java.net"><mailto:dev@openjdk.java.net></a><o:p></o:p></pre>
<pre>    > Subject: Re: RFR 8158023: SocketExceptions contain too little<o:p></o:p></pre>
<pre>    information<o:p></o:p></pre>
<pre>    > sometimes<o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
<pre>    > Christoph,<o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
<pre>    > You should not remove conversion codes (platform string to Java<o:p></o:p></pre>
<pre>    String)<o:p></o:p></pre>
<pre>    > at JNU_ThrowByNameWithLastError,<o:p></o:p></pre>
<pre>    > and you have to add conversion codes at<o:p></o:p></pre>
<pre>    > JNU_ThrowByNameWithMessageAndLastError.<o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
<pre>    > It seems that you assume strerror returns only ascii characters,<o:p></o:p></pre>
<pre>    but actually<o:p></o:p></pre>
<pre>    > not.<o:p></o:p></pre>
<pre>    > It depends on the locale of your environment where java programs<o:p></o:p></pre>
<pre>    runs.<o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
<pre>    > -Kenji Kazumura<o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
<pre>    > In message<o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
</blockquote>
<pre><<a href="mailto:decc19cdab854bbeac7126cb8e236f1e@DEWDFE13DE11.global.corp.sap">decc19cdab854bbeac7126cb8e236f1e@DEWDFE13DE11.global.corp.sap</a><o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
</blockquote>
<pre><a href="mailto:decc19cdab854bbeac7126cb8e236f1e@DEWDFE13DE11.global.corp.sap"><mailto:decc19cdab854bbeac7126cb8e236f1e@DEWDFE13DE11.global.corp.sa<o:p></o:p></a></pre>
<pre><span class="MsoHyperlink"><a href="mailto:decc19cdab854bbeac7126cb8e236f1e@DEWDFE13DE11.global.corp.sap">p></a></span>><o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>    >    RFR 8158023: SocketExceptions contain too little information<o:p></o:p></pre>
<pre>    sometimes<o:p></o:p></pre>
<pre>    >    "Langer, Christoph"<o:p></o:p></pre>
<pre>    <<a href="mailto:christoph.langer@sap.com"><mailto:christoph.langer@sap.com></a><a href="mailto:christoph.langer@sap.com">christoph.langer@sap.com</a>> wrote:<o:p></o:p></pre>
<pre>    ><o:p></o:p></pre>
<pre>    > > Hi all,<o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre>    > > please review the following change:<o:p></o:p></pre>
<pre>    > > Webrev:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
</blockquote>
<pre><a href="http://cr.openjdk.java.net/%7Eclanger/webrevs/8158023.1/"><http://cr.openjdk.java.net/%7Eclanger/webrevs/8158023.1/></a><a href="http://cr.openjdk">http://cr.openjdk</a>.<o:p></o:p></pre>
<pre>java.net/~clanger/webrevs/8158023.1/<o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>    > > Bug: <a href="https://bugs.openjdk.java.net/browse/JDK-8158023">https://bugs.openjdk.java.net/browse/JDK-8158023</a><o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre>    > > During error analysis I stumbled over a place where I<o:p></o:p></pre>
<pre>    encountered a<o:p></o:p></pre>
<pre>    > SocketException which was thrown along with some strerror<o:p></o:p></pre>
<pre>    information as<o:p></o:p></pre>
<pre>    > message. I found it hard to find the originating code spot with<o:p></o:p></pre>
<pre>    that information.<o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre>    > > So I looked at the places where we throw exceptions, namely<o:p></o:p></pre>
<pre>    JNU_Throw...<o:p></o:p></pre>
<pre>    > and NET_Throw... functions and came up with the following<o:p></o:p></pre>
<pre>    enhancement:<o:p></o:p></pre>
<pre>    > > - NET_ThrowByNameWithLastError can go completely as it does<o:p></o:p></pre>
<pre>    not provide<o:p></o:p></pre>
<pre>    > any benefit over JNU_ThrowByNameWithLastError.<o:p></o:p></pre>
<pre>    > > - JNU_ThrowByNameWithLastError can be cleaned up.<o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre>    > > - I added JNU_ThrowByNameWithMessageAndLastError to print out<o:p></o:p></pre>
<pre>    a string<o:p></o:p></pre>
<pre>    > like message + ": " + last error.<o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre>    > > - I went over all places where NET_ThrowByNameWithLastError is<o:p></o:p></pre>
<pre>    used and<o:p></o:p></pre>
<pre>    > replaced it appropriately.<o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre>    > > Do you think this change is desirable/possible?<o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre>    > > Though it's mainly a net topic, I'm posting it to nio-dev and<o:p></o:p></pre>
<pre>    core-libs-dev as<o:p></o:p></pre>
<pre>    > well as JNU_Throw... code affects all.<o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre>    > > Best regards<o:p></o:p></pre>
<pre>    > > Christoph<o:p></o:p></pre>
<pre>    > ><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
</blockquote>
</blockquote>
<pre><o:p> </o:p></pre>
</blockquote>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>