RFR: 8036128 Remove deprecated VM flag UseVMInterruptibleIO
Karen Kinnear
karen.kinnear at oracle.com
Thu Mar 13 16:31:56 UTC 2014
Frederic,
The updated webrev looks great - and now that Michael McMahon has retested Solaris 10
to find out that we still have this behavior - we still need the os::connect changes.
Could you add one comment to that code please, perhaps the one currently
in PlainSocketImp.c - which references the 6343810 bug and the fact that this
occurs for blocking sockets for Solaris 10 still. I don't need to re-review.
Based on your testing and Staffan's comments, sounds like we are good with jstat -
since we didn't document how to extend your options.
If anyone wants to know how to do that, I have a description and a sample file.
So - all set - and many thanks,
Karen
On Mar 10, 2014, at 11:25 AM, frederic parain wrote:
> Karen,
>
> my answers are in-lined below.
>
> On 07/03/2014 20:02, Karen Kinnear wrote:
>> Frederic,
>>
>> This looks great. And thank you so much.
>>
>> 2. os::connect
>> The change to RESTARTABLE confuses me. I expected to see the current two step handling
>> in case of an EINTR (see 6343810 - at the very end it describes why this is Solaris-specific).
>> Or are you removing that because this will only be used internally and in debug mode and not
>> from the JDK soon?
>
> Thank you for catching that. As far as I understand it, the two steps
> handling was there to support non-blocking sockets, which are not used
> by JVM code, and of the os::connect() is not used by JDK code anymore.
> However, I've restored the initial two-steps handling and added comments
> to explain the semantic of the different errno values. The previous
> behavior of os::connect() is now preserved.
> The new webrev is here:
>
> http://cr.openjdk.java.net/~fparain/8036128/webrev.01/
>
>> 3. jstat
>> I didn't see this in your tested list - and I believe that the way this works is dynamic, so you are probably
>> ok, but - since you removed perfcounters
>> - what happens if your ~/.jvmstat/jstat_options was referencing this data?
>> and you run jstat -options and then try to dump these options?
>
> I tested with jcmd (jcmd PerfCounter.print <vmid>) and didn't noticed
> anything wrong. However, I don't how to use jvmstat/jstat to read
> performance counters. This feature is not documented in jstat web
> page:
>
> http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html
>
> Thanks,
>
> Fred
>
>> David - I asked Frederic to put this flag in the obsolete_jvm_flags - that is our current deprecation mechanism -
>> i.e. for all the flags we are deprecating in JDK9, they should have obsoleted_in: 9, accept_until: 10. So the mechanism isn't
>> obsolete - it triggers a warning mechanism. We can rename it and rework it to not mention HSX, but we still
>> need to deprecate product flags even without HSX. Can we remove really old entries? Yes. Should we keep flags in there
>> that reference JDK9? I would prefer to keep those in for JDK9, so the information gets printed for customers about
>> when the flag became obsolete.
>>
>> thanks,
>> Karen
>>
>> On Mar 6, 2014, at 11:40 PM, David Holmes wrote:
>>
>>> Hi Fred,
>>>
>>> This looks good to me! Great to see the cleanup happen.
>>>
>>> os_solaris.cpp:
>>>
>>> This comment block seems redundant now:
>>>
>>> 5264 /*
>>> 5265 * XXX: is the following call interruptible? If so, this might
>>> 5266 * need to go through the INTERRUPT_IO() wrapper as for other
>>> 5267 * blocking, interruptible calls in this file.
>>> 5268 */
>>>
>>> ---
>>>
>>> Aside: arguments.cpp - I guess we can file an RFE to get rid of obsolete_jvm_flags now that hsx is dead. ;-)
>>>
>>> Cheers,
>>> David
>>>
>>> On 7/03/2014 2:12 AM, frederic parain wrote:
>>>> Greetings,
>>>>
>>>> The UseVMInterruptibleIO flag removal has been
>>>> scheduled a long time ago:
>>>> https://bugs.openjdk.java.net/browse/JDK-4385444
>>>>
>>>> Now, it's time to effectively remove this flag and
>>>> its associated code.
>>>>
>>>> Removing this feature includes removing all the
>>>> macros used to deal with interruptible I/Os, which
>>>> could make the reading of the webrev hard and painful.
>>>> I conservatively preserved the asserts that were
>>>> inserted by the INTERRUPTIBLE macros, with one
>>>> notable exception for os::read(). The original
>>>> asserts checked that the current ThreadState
>>>> was not _thread_in_native nor _thread_blocked.
>>>> I changed it into an assert checking that the
>>>> current thread state is _thread_in_vm. The
>>>> rational for that is that the only real usage
>>>> of os::read() on Solaris is in the
>>>> ClassPathDirEntry::open_stream() method, which
>>>> is always called with ThreadState ==_thread_in_vm.
>>>> This change makes the TreadStateTransition simpler
>>>> and avoid having to store the previous ThreadState.
>>>>
>>>> This choice could be revisited once the rules
>>>> for ThreadStateTransition around system calls
>>>> when ThreadState is _thread_in_vm are clarified
>>>> (Solaris is currently the only platform doing
>>>> this kind of transition for os::read()).
>>>>
>>>> The CR:
>>>> https://bugs.openjdk.java.net/browse/JDK-8036128
>>>>
>>>> The webrev:
>>>> http://cr.openjdk.java.net/~fparain/8036128/webrev.00/
>>>>
>>>> Tested with vm.quick.testlist and JPRT hotspot job.
>>>>
>>>> Thanks,
>>>>
>>>> Fred
>>>>
>>
>
> --
> Frederic Parain - Oracle
> Grenoble Engineering Center - France
> Phone: +33 4 76 18 81 17
> Email: Frederic.Parain at oracle.com
More information about the hotspot-runtime-dev
mailing list