2011-07-19 4 views
3

私はZIP URLインストーラ機能を持つmaven cargoを使用して、統合テスト用のtomcatをダウンロードしています。これは私のコンピュータ上で正常に動作しますが、時には失敗します(約10-20%のラウンド)。Tomcat Zipを解凍するときにIOExceptionで失敗する:負のシークオフセット

Error while expanding /home/hudson/workspace/My Test Media-Archive/cfma/target/cargo/install/apache-tomcat-6.0.32.zip 
java.io.IOException: Negative seek offset 
    at org.apache.tools.ant.taskdefs.Expand.expandFile(Expand.java:148) 
    at org.apache.tools.ant.taskdefs.Expand.execute(Expand.java:107) 
    at org.codehaus.cargo.container.installer.ZipURLInstaller.unpack(ZipURLInstaller.java:252) 
    at org.codehaus.cargo.container.installer.ZipURLInstaller.install(ZipURLInstaller.java:149) 
    at org.codehaus.cargo.maven2.configuration.Container.setupHome(Container.java:357) 
    at org.codehaus.cargo.maven2.configuration.Container.createContainer(Container.java:241) 
    at org.codehaus.cargo.maven2.AbstractCargoMojo.createNewContainer(AbstractCargoMojo.java:470) 
    at org.codehaus.cargo.maven2.AbstractCargoMojo.createContainer(AbstractCargoMojo.java:410) 
    at org.codehaus.cargo.maven2.ContainerStartMojo.doExecute(ContainerStartMojo.java:53) 
    at org.codehaus.cargo.maven2.AbstractCargoMojo.execute(AbstractCargoMojo.java:268) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
    at hudson.maven.agent.PluginManagerInterceptor.executeMojo(PluginManagerInterceptor.java:182) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
    at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at hudson.maven.agent.Main.launch(Main.java:173) 
    at hudson.maven.MavenBuilder.call(MavenBuilder.java:164) 
    at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:861) 
    at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:792) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:114) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:48) 
    at hudson.remoting.Request$2.run(Request.java:270) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.io.IOException: Negative seek offset 
    at java.io.RandomAccessFile.seek(Native Method) 
    at org.apache.tools.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:403) 
    at org.apache.tools.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:271) 
    at org.apache.tools.zip.ZipFile.<init>(ZipFile.java:152) 
    at org.apache.tools.ant.taskdefs.Expand.expandFile(Expand.java:137) 
    ... 40 more 
--- Nested Exception --- 
java.io.IOException: Negative seek offset 
    at java.io.RandomAccessFile.seek(Native Method) 
    at org.apache.tools.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:403) 
    at org.apache.tools.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:271) 
    at org.apache.tools.zip.ZipFile.<init>(ZipFile.java:152) 
    at org.apache.tools.ant.taskdefs.Expand.expandFile(Expand.java:137) 
    at org.apache.tools.ant.taskdefs.Expand.execute(Expand.java:107) 
    at org.codehaus.cargo.container.installer.ZipURLInstaller.unpack(ZipURLInstaller.java:252) 
    at org.codehaus.cargo.container.installer.ZipURLInstaller.install(ZipURLInstaller.java:149) 
    at org.codehaus.cargo.maven2.configuration.Container.setupHome(Container.java:357) 
    at org.codehaus.cargo.maven2.configuration.Container.createContainer(Container.java:241) 
    at org.codehaus.cargo.maven2.AbstractCargoMojo.createNewContainer(AbstractCargoMojo.java:470) 
    at org.codehaus.cargo.maven2.AbstractCargoMojo.createContainer(AbstractCargoMojo.java:410) 
    at org.codehaus.cargo.maven2.ContainerStartMojo.doExecute(ContainerStartMojo.java:53) 
    at org.codehaus.cargo.maven2.AbstractCargoMojo.execute(AbstractCargoMojo.java:268) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
    at hudson.maven.agent.PluginManagerInterceptor.executeMojo(PluginManagerInterceptor.java:182) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
    at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at hudson.maven.agent.Main.launch(Main.java:173) 
    at hudson.maven.MavenBuilder.call(MavenBuilder.java:164) 
    at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:861) 
    at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:792) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:114) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:48) 
    at hudson.remoting.Request$2.run(Request.java:270) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 

そして、これは私のポンポンの関連する部分である:

障害があります。

<plugin> 
    <groupId>org.codehaus.cargo</groupId> 
    <artifactId>cargo-maven2-plugin</artifactId> 
    <version>1.0.5</version> 
    <configuration> 
    <container> 
     <zipUrlInstaller> 
    <url>http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.zip</url> 
      <zipUrlInstaller> 
      .... 
    </container> 
    ... 
    <configuration> 
</plugin> 

誰かが間違っていることを知っていますか?

+0

「cargo:run」を使用しているときにも同様の問題が発生しました。私はzipファイルを削除してもう一度試しました。ヴィオラは働いた。解決方法:一時フォルダーをクリーニングして、もう一度試してください。 –

答えて

5

通常、ダウンロードが悪い(奇妙な破損パケットなど)ためです。 MD5/SHA-1チェックサムを使用してアーカイブを検証してから使用してください。

また、offset変数がseekのrequire値を保持するのに十分な大きさであることにも注意してください。

+0

しばしば10-20%ですか? – Ralph

+1

TCPはドロップされたパケットに対して復元力がなければなりませんか?チェックサム検証が偽陽性を示す破損したパケットだけが、ダウンロードを実行するアプリケーションに到達するはずです。ファイルを作成してチェックサムをチェックするループを作成してみることもできます – Peter

+0

TCPはACKを使用して復元力がなければなりません。そうすれば、破損したパケットが問題になる可能性が高くなります。 – Mikaveli

1

ダウンロードURLをミラーに変更した後、問題が解決しました。

+0

@Mikaveli:私はそれが輸送上の問題であり、解決策を含んでいないというあなたの答えを理解していないので、私はファイルをチェックすべきだと言います(しかし、私はそれが壊れていることを知っています)。 - しかし、一方で私はあなたの答えを受け入れることができます、なぜなら私の問題は本当に答えではないからです。 – Ralph

+0

ポイントは、ファイルを検証した場合、ファイルがソースで壊れていたかどうか、またはその後に(ディスクのダウンロード中またはダウンロード中に)壊れていたかどうかを知ることになりました。最終的な解決策は、そのテストの結果によって決定されます。ソースを切り替えることで問題は解決しましたが、将来自分自身を守るために、どこが間違っているのかを正確に判断する方が良いでしょう。 :) – Mikaveli

関連する問題