[ 
https://issues.apache.org/jira/browse/COMPRESS-326?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14972416#comment-14972416
 ] 

Stefan Bodewig commented on COMPRESS-326:
-----------------------------------------

I think I've tracked it down.

Traditionally Java's {{ZipEntry#getTime}} returned the {{astModifiedTime}} from 
the archive entry's header directly - this is why we adjust the time to the 
local time zone just like InfoZIP would do since the test archive has been 
written by InfoZIP's zip.

Then came http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/90df6756406f which 
changes the logic of {{ZipEntry#getTime}} and now uses additional time fields 
InfoZIP or Microsoft's Compressed Folders feature would use in order to get a 
better result.  I haven't tracked down which Java8 update has been the first 
one to receive the patch.

I'll try to adjust the test.

> Fix threading issue in X5455_ExtendedTimestampTest test class (a test for 
> COMPRESS-210)
> ---------------------------------------------------------------------------------------
>
>                 Key: COMPRESS-326
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-326
>             Project: Commons Compress
>          Issue Type: Bug
>            Reporter: Konstantin Kolinko
>
> The test for COMPRESS-210 is currently failing when Compress is built at 
> Apache Gump.
> http://vmgump.apache.org/gump/public/commons-compress/commons-compress-test/index.html
> It says that the last success was on 2015-10-06T00:00:09,
> it started failing at  2015-10-06T12:00:09
> and as of now the failure state is persistent for 22 runs (which means ~11 
> days).
> The failure:
> {noformat}
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building Apache Commons Compress 1.11-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> <...>
> Running org.apache.commons.compress.archivers.zip.X5455_ExtendedTimestampTest
> Tests run: 7, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.054 sec <<< 
> FAILURE! - in 
> org.apache.commons.compress.archivers.zip.X5455_ExtendedTimestampTest
> testSampleFile(org.apache.commons.compress.archivers.zip.X5455_ExtendedTimestampTest)
>   Time elapsed: 0.027 sec  <<< FAILURE!
> org.junit.ComparisonFailure: expected:<2105-01-01/0[0:00:02] +0000> but 
> was:<2105-01-01/0[8:00:01] +0000>
>       at org.junit.Assert.assertEquals(Assert.java:116)
>       at org.junit.Assert.assertEquals(Assert.java:145)
>       at 
> org.apache.commons.compress.archivers.zip.X5455_ExtendedTimestampTest.testSampleFile(X5455_ExtendedTimestampTest.java:171)
> {noformat}
> Reviewing rhe code of the test class, its usage of `SimpleDateFormat 
> DATE_FORMAT` field is wrong. The field is declared as "static". A 
> SimpleDateFormat is not thread-safe, so it must not be shared between tests, 
> as some testing configurations may run several tests in parallel.
> A simple fix will be to remove "static" from declaration of that field and 
> its initialization block, so that each running instance of the test gets its 
> own copy of SimpleDateFormat class.
> (I am not sure whether this bug is the actual cause of the test failure. I do 
> not see any reconfigurations of test environment on 2015-10-06. *Update*: 
> according to gump-general mailing list \[1], on Oct 06 the Java runtime used 
> to run Gump was updated to the latest Java 8 release)
> \[1] 
> http://mail-archives.apache.org/mod_mbox/gump-general/201510.mbox/%3C5613A448.8040109%40apache.org%3E



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to