EC2プラグインでssh接続したWindowsスレーブが切断されてしまう

409 views
Skip to first unread message

Takashi Moriyama

unread,
Feb 12, 2013, 6:44:20 AM2/12/13
to jenkin...@googlegroups.com
こんにちは、森山と申します。

私は今、Amazon Ec2のWindowsインスタンスをスレーブとして起動し、ジョブを実行させたいと考えています。
Amazon Ec2Pluginを使い、Windowsにcygwinをインストールしてssh接続させるという方法で試しています。

しかしSlaveを起動し、Onlineになるところまではできたのですが、
どういうわけかしばらくすると、スレーブが切断されてしまいます。
ログを見ると”Unexpected termination of the channel” と表示されています。
(詳細のログはメールの末尾に添付しています)

ただし、切断されたスレーブをJenkins上から再起動すると、
正常に接続でき、切断されることもなくOnlineの状態が保たれます。


原因や対処法について、ご存知の方がいらっしゃいましたらご教示いただけますとうれしいです。


なお、
Jenkins のバージョンはver.1.500
プラグインのバージョンはver1.17
になります。


=====ログ出力の内容=====
FATAL: スクリプトファイル C:\Documents and Settings\user\hudson1094858270306468143.bat を削除できません
hudson.util.IOException2: remote file operation failed: C:\Documents and Settings\user\hudson1094858270306468143.bat at hudson.remoting.Channel@1787cd6:i-1d2f031e
    at hudson.FilePath.act(FilePath.java:861)
    at hudson.FilePath.act(FilePath.java:838)
    at hudson.FilePath.delete(FilePath.java:1223)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:101)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:60)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:810)
    at hudson.model.Build$BuildExecution.build(Build.java:199)
    at hudson.model.Build$BuildExecution.doRun(Build.java:160)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:592)
    at hudson.model.Run.execute(Run.java:1557)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:236)
Caused by: hudson.remoting.ChannelClosedException: channel is already closed
    at hudson.remoting.Channel.send(Channel.java:494)
    at hudson.remoting.Request.call(Request.java:129)
    at hudson.remoting.Channel.call(Channel.java:672)
    at hudson.FilePath.act(FilePath.java:854)
    ... 13 more
Caused by: java.io.IOException: Unexpected termination of the channel
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:50)
Caused by: java.io.EOFException
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2570)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1314)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
    at hudson.remoting.Command.readFrom(Command.java:92)
    at hudson.remoting.ClassicCommandTransport.read(ClassicCommandTransport.java:59)
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48)
FATAL: hudson.remoting.RequestAbortedException: java.io.IOException: Unexpected termination of the channel
hudson.remoting.RequestAbortedException: hudson.remoting.RequestAbortedException: java.io.IOException: Unexpected termination of the channel
    at hudson.remoting.Request.call(Request.java:174)
    at hudson.remoting.Channel.call(Channel.java:672)
    at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:158)
    at $Proxy42.join(Unknown Source)
    at hudson.Launcher$RemoteLauncher$ProcImpl.join(Launcher.java:915)
    at hudson.Launcher$ProcStarter.join(Launcher.java:360)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:91)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:60)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:810)
    at hudson.model.Build$BuildExecution.build(Build.java:199)
    at hudson.model.Build$BuildExecution.doRun(Build.java:160)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:592)
    at hudson.model.Run.execute(Run.java:1557)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:236)
Caused by: hudson.remoting.RequestAbortedException: java.io.IOException: Unexpected termination of the channel
    at hudson.remoting.Request.abort(Request.java:299)
    at hudson.remoting.Channel.terminate(Channel.java:732)
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:69)
Caused by: java.io.IOException: Unexpected termination of the channel
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:50)
Caused by: java.io.EOFException
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2570)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1314)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
    at hudson.remoting.Command.readFrom(Command.java:92)
    at hudson.remoting.ClassicCommandTransport.read(ClassicCommandTransport.java:59)
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48)


以上、よろしくお願いいたします。
--
T.Moriyama
──────────────────────────────
Less is More.

Takashi Moriyama

unread,
Feb 13, 2013, 4:24:04 AM2/13/13
to jenkin...@googlegroups.com
みなさま

こんにちは、森山です。
本件、自己解決することができましたので、ご連絡いたします。

原因:Ec2の内部的な再起動により、一時的に接続が途切れてしまうことが原因でした。

対処法:
Windowsインスタンス内のEc2 ConfigService Settingsから、”Set Computer Name”のチェックをOFFにすることで、
再起動をしないようにすることが出来ます。
運用上Computer Nameを利用している場合はこの方法を利用することができませんが、私の場合は特に必要がなかったため、
この方法でいこうと考えています。

このメッセージを見て考えたり調べたりしてくれた方がいらっしゃいましたら、お礼を申し上げたいと思います。
ありがとうございました。


以上、よろしくお願いいたします。





2013年2月12日火曜日 20時44分20秒 UTC+9 Takashi Moriyama:
Reply all
Reply to author
Forward
0 new messages