[13] RFR(xs) 8227646: [TESTBUG] appcds/SharedArchiveConsistency timed out

Ioi Lam ioi.lam at oracle.com
Tue Jul 16 15:25:40 UTC 2019


HI Calvin,

Since the test is stuck at here at the timeout:

at sun.nio.ch.FileDispatcherImpl.force0(java.base at 13-ea/Native Method)
at 
sun.nio.ch.FileDispatcherImpl.force(java.base at 13-ea/FileDispatcherImpl.java:82)
at 
sun.nio.ch.FileChannelImpl.force(java.base at 13-ea/FileChannelImpl.java:461)
at SharedArchiveConsistency.writeData(SharedArchiveConsistency.java:166)

Maybe we should remove the calls to FileChannel.force()? According to 
the javadoc, this call is for "ensuring that critical information is not 
lost in the event of a system crash", which I think is not necessary in 
our test.

src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c:

JNIEXPORT jint JNICALL
Java_sun_nio_ch_FileDispatcherImpl_force0(JNIEnv *env, jobject this,
                                           jobject fdo, jboolean md)
{
     jint fd = fdval(env, fdo);
     int result = 0;

#ifdef MACOSX
     result = fcntl(fd, F_FULLFSYNC);
     if (result == -1 && errno == ENOTSUP) {
         /* Try fsync() in case F_FULLSYUNC is not implemented on the 
file system. */
         result = fsync(fd);
     }

https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html

      F_FULLFSYNC        Does the same thing as fsync(2) then asks the 
drive to
                         flush all buffered data to the permanent storage
                         device (arg is ignored).  This is currently 
implemented
                         on HFS, MS-DOS (FAT), and Universal Disk Format
                         (UDF) file systems.  The operation may take quite a
                         while to complete.

Thanks
- Ioi


On 7/16/19 7:59 AM, Calvin Cheung wrote:
> Dan,
>
> Thanks for your review!
>
> On 7/16/19 5:56 AM, Daniel D. Daugherty wrote:
>> On 7/16/19 12:31 AM, Calvin Cheung wrote:
>>> bug: https://bugs.openjdk.java.net/browse/JDK-8227646
>>>
>>> webrev: http://cr.openjdk.java.net/~ccheung/8227646/webrev.00/
>>
>> test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java
>>     Does the test intentionally crash in one or more of the test cases?
>>     If not, then '-XX:-CreateCoredumpOnCrash' is not really needed.
>>     I don't think '-XX:-CreateCoredumpOnCrash' will prevent the timeout
>>     handling mechanism from trying to capture a core file in the case
>>     of a timeout.
> No, the test does not crash intentionally. Thanks for clarifying the 
> -XX:-CreateCoredumpOnCrash. I will revert the change.
>>
>>     The test currently timed out with a default total timeout value of
>>     480 seconds; that 480 comes from the default timeout value of 120
>>     seconds and the default timeout factor of 4 (480 == 120 * 4).
>>
>>     The 'timeout=1000' value will get you a total timeout value of 4000.
>>     I suspect that is not what you want.
>>
>>     If you specify 'timeout=240', you'll get a total timeout value of
>>     960 seconds (240 * 4).
>
> I've seen the total elapsed time for the test got very close to 960s. 
> So to be on the safe side, I would set the timeout=300 as follows:
>
> diff --git 
> a/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java 
> b/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java
> --- a/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java
> +++ b/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java
> @@ -35,7 +35,7 @@
>   * @build sun.hotspot.WhiteBox
>   * @compile test-classes/Hello.java
>   * @run driver ClassFileInstaller sun.hotspot.WhiteBox
> - * @run main/othervm -Xbootclasspath/a:. 
> -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SharedArchiveConsistency
> + * @run main/othervm/timeout=300 -Xbootclasspath/a:. 
> -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SharedArchiveConsistency
>   */
>  import jdk.test.lib.process.OutputAnalyzer;
>  import jdk.test.lib.Utils;
>
> I will do more testing with the above timeout before pushing the change.
>
> Let me know if you'd like to see another webrev.
>
> thanks,
>
> Calvin
>
>>
>> Dan
>>
>>
>>>
>>> Increase the timeout to 1000s and add the -XX:-CreateCoredumpOnCrash 
>>> option to disable coredump.
>>>
>>> Testing: on 2 macosx hosts on which the timeout was observed.
>>>
>>>
>>> thanks,
>>>
>>> Calvin
>>>
>>



More information about the hotspot-runtime-dev mailing list