[BUILD-553] IO gzip error when using Docker 19.03 Created: 04/Oct/21  Updated: 02/Dec/21  Resolved: 02/Dec/21

Status: Closed
Project: Build
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Neutral
Reporter: Maxime Michel Assignee: Maxime Michel
Resolution: Obsolete Votes: 0
Labels: artt
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Template:
Acceptance criteria:
Empty

 Description   

Docker 5:19.03.0~3-0~ubuntu-bionic leads to the following issue with tests that download something:

[ERROR]   JcrToolsUITest.exporterIssuesSuccessNotificationWithDefaultBasePath » IO gzip ...
[ERROR]   LogToolsAppUITest.downloadMultipleLogFiles » IO gzip finished without exhausti...
[ERROR]   LogToolsAppUITest.downloadSingleLogFile » IO gzip finished without exhausting ...
[ERROR]   SeleniumProfileTestingUITest.testDefaultFirefoxDownloadSettings » IO gzip fini...

cf. https://jenkins.magnolia-cms.com/job/platform/job/ce/job/master/711/console

This needs to be investigated so we can bump the Docker version.



 Comments   
Comment by Maxime Michel [ 07/Oct/21 ]

Today I tried to disable the gzip, cache, range & contentType filters, and still saw the same result. I think the problem is on Vaadin's side.

Comment by Maxime Michel [ 07/Oct/21 ]

When I say Vaadin, I mean that Vaadin is probably sending some malformed GZIP. But it is also an OkHttp default to accept GZIP and decompress it. And this is where the error happens. And so it is where I'm trying to disable it, as we have little leverage over Vaadin, and there is no actual error when the action is performed by a regular user.

Comment by Maxime Michel [ 07/Oct/21 ]

Actually, the tests don't even run. They all start with assumeFalse(isExecutedInVirtualMachine()), which evaluates to false in all cases since 2018. Those tests haven't run in ages, as the recordings show, and can be deleted. I still don't explain why a GZIP error happens with the Docker upgrade, however.

Comment by Maxime Michel [ 08/Oct/21 ]

It gets even weirder: https://git.magnolia-cms.com/projects/INTERNAL/repos/core-jenkins-agents/pull-requests/3/overview?commentId=86867

However, I am closing the ticket, as only obsolete and quarantined tests are affected, and the Docker upgrade can carry on.

Comment by Maxime Michel [ 08/Oct/21 ]

After I upgraded the instances, the exception happened once more, this time on a test that wasn't quarantined. I reverted the upgrade.

Comment by Maxime Michel [ 22/Oct/21 ]

Full stacktrace thanks to mduerig's help on configuring Failsafe to stop trimming them:

[ERROR] it.info.magnolia.eeintegrationtests.uitest.LicenseUITest.verifyThatEnteringAValidLicenseWorked  Time elapsed: 59.382 s  <<< ERROR!
java.io.IOException: gzip finished without exhausting source
	at org.testcontainers.shaded.okio.GzipSource.read(GzipSource.java:100)
	at org.testcontainers.shaded.okio.RealBufferedSource$1.read(RealBufferedSource.java:447)
	at java.io.FilterInputStream.read(FilterInputStream.java:133)
	at org.apache.commons.compress.utils.IOUtils.readFully(IOUtils.java:197)
	at org.apache.commons.compress.utils.IOUtils.readFully(IOUtils.java:171)
	at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.readRecord(TarArchiveInputStream.java:560)
	at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getRecord(TarArchiveInputStream.java:532)
	at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:370)
	at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextEntry(TarArchiveInputStream.java:671)
	at info.magnolia.test.vnc.SeleniumNodeVncSidekickContainer.streamRecording(SeleniumNodeVncSidekickContainer.java:171)
	at info.magnolia.test.vnc.SeleniumNodeVncSidekickContainer.saveRecordingToFile(SeleniumNodeVncSidekickContainer.java:180)
	at it.info.magnolia.integrationtests.rules.SeleniumNodesVncSidekickRule.saveAndStop(SeleniumNodesVncSidekickRule.java:116)
	at it.info.magnolia.integrationtests.rules.SeleniumNodesVncSidekickRule.failed(SeleniumNodesVncSidekickRule.java:99)
	at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:34)
	at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:30)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:43)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:82)
	at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:73)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.lambda$execute$1(JUnitPlatformProvider.java:199)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:193)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:154)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:120)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548)
Comment by Maxime Michel [ 02/Dec/21 ]

This will get indirectly solved by MGNLTEST-186. As testcontainers is no longer in charge of creating the recordings, it won't run into that issue anymore.

Generated at Sun Feb 11 23:42:56 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.