JeanRev / TeamcityDockerCloudPlugin

Docker Cloud Plugin for the TeamCity build server
Apache License 2.0
33 stars 10 forks source link

Synchronization with Docker daemon failed after upgrade to 0.5.0 #33

Closed nchidipothu closed 6 years ago

nchidipothu commented 6 years ago

Hi,

We recently upgraded plugin to latest version i.e 0.5.0

  1. Docker Host connection is success.
  2. But sync is failed with below error, Synchronization with Docker daemon failed. Hide stacktrace Synchronization with Docker daemon failed.java.util.concurrent.ExecutionException: run.var.teamcity.cloud.docker.util.NodeProcessingException: Child field not found or is not a string value node: {"build-date":"20170928","com.trilogy.company":"Aurea","com.trilogy.maintainer.email":"pavel.burmistrov@aurea.com","com.trilogy.maintainer.skype":"exordium__","com.trilogy.product":"CrossOver","com.trilogy.service":"tc-agent","com.trilogy.stage":"dev","com.trilogy.team":"MS.DockerProduction","run.var.teamcity.docker.cloud.client_id":"48869c66-757b-4136-9a80-94609590c8eb","run.var.teamcity.docker.cloud.instance_id":"6cad34db-672b-4caf-b65d-2e2854b8c211","tc.docker.cloud.agent.name":"crossover_java8_node","version":"1.1"} / run.var.teamcity.docker.cloud.source_image at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at run.var.teamcity.cloud.docker.util.WrappedRunnableFuture.get(WrappedRunnableFuture.java:61) at run.var.teamcity.cloud.docker.DockerTaskScheduler$1.afterExecute(DockerTaskScheduler.java:128) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1150) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: run.var.teamcity.cloud.docker.util.NodeProcessingException: Child field not found or is not a string value node: {"build-date":"20170928","com.trilogy.company":"Aurea","com.trilogy.maintainer.email":"pavel.burmistrov@aurea.com","com.trilogy.maintainer.skype":"exordium__","com.trilogy.product":"CrossOver","com.trilogy.service":"tc-agent","com.trilogy.stage":"dev","com.trilogy.team":"MS.DockerProduction","run.var.teamcity.docker.cloud.client_id":"48869c66-757b-4136-9a80-94609590c8eb","run.var.teamcity.docker.cloud.instance_id":"6cad34db-672b-4caf-b65d-2e2854b8c211","tc.docker.cloud.agent.name":"crossover_java8_node","version":"1.1"} / run.var.teamcity.docker.cloud.source_image at run.var.teamcity.cloud.docker.util.AbstractNode.getAsString(AbstractNode.java:398) at run.var.teamcity.cloud.docker.util.Node.getAsString(Node.java:13) at run.var.teamcity.cloud.docker.DefaultDockerClientFacade.lambda$listActiveAgentContainers$1(DefaultDockerClientFacade.java:97) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at run.var.teamcity.cloud.docker.DefaultDockerClientFacade.listActiveAgentContainers(DefaultDockerClientFacade.java:103) at run.var.teamcity.cloud.docker.DefaultDockerCloudClient$SyncWithDockerTask.callInternal(DefaultDockerCloudClient.java:638) at run.var.teamcity.cloud.docker.DockerTask.call(DockerTask.java:121) at run.var.teamcity.cloud.docker.DockerTask.call(DockerTask.java:22) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at run.var.teamcity.cloud.docker.util.WrappedRunnableFuture.run(WrappedRunnableFuture.java:41) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ... 2 more screen shot 2017-10-19 at 4 51 07 pm
JeanRev commented 6 years ago

Hi @nchidipothu!

I can reproduce the issue by having in an old container (< version 0.5.0 of the plugin) with no source image specified. This could happen if your teamcity process once crashed for some reason (containers are otherwise not preserved across graceful shutdowns).

Can you check if you have one or more old containers on your daemon with: 1) The label run.var.teamcity.docker.cloud.client_id set to your cloud profile id (48869c66-757b-4136-9a80-94609590c8eb) and 2) No 'run.var.teamcity.docker.cloud.source_image' label defined ?

If yes, destroying this (theses) container(s) should make the sync successful again. I'll also provide a link to a patched preview version.

JeanRev commented 6 years ago

Here is the patched version: docker-cloud_0.5.1-SNAPSHOT_d727a99.zip. The fix will also be part of the next bugfix release in the next days.

nchidipothu commented 6 years ago

@JeanRev

Thanks for Patch, Given patch is working fine.

Thanks again for quick fix.

Regards, Naresh Ch