I just upgraded from 1.1.4 to 1.5.5 and we currently use the Docker driver https://github.com/mcuadros/gce-docker to mount Google GCE/GCP drives.
After the upgrade / on creating and upgrading images that utilize GCP drives, the containers never launch. The server logs have exceptions such as:
2017-04-22 19:59:16,732 ERROR [:] [] [] [] [ecutorService-1] [.e.s.i.ProcessInstanceDispatcherImpl] Unknown exception running process [instance.start:227208] on [1650] java.lang.IllegalStateException: More than one volume exists for volume URI [gce:///mnt/rancher-charts-selenium-v2] or name/externalId [rancher-charts-selenium-v2] and storage pool [6].
at io.cattle.platform.docker.process.dao.impl.DockerComputeDaoImpl.getDockerVolumeInPool(DockerComputeDaoImpl.java:55) ~[cattle-docker-compute-0.5.0-SNAPSHOT.jar:na]
at sun.reflect.GeneratedMethodAccessor937.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_72]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_72]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) ~[spring-aop-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) ~[spring-aop-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) ~[spring-tx-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:280) ~[spring-tx-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) ~[spring-aop-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at com.sun.proxy.$Proxy68.getDockerVolumeInPool(Unknown Source) ~[na:na]
at io.cattle.platform.docker.process.instancehostmap.DockerPostInstanceHostMapActivate.createVolumeInStoragePool(DockerPostInstanceHostMapActivate.java:213) ~[cattle-docker-compute-0.5.0-SNAPSHOT.jar:na]
at io.cattle.platform.docker.process.instancehostmap.DockerPostInstanceHostMapActivate.processVolumes(DockerPostInstanceHostMapActivate.java:192) ~[cattle-docker-compute-0.5.0-SNAPSHOT.jar:na]
at io.cattle.platform.docker.process.instancehostmap.DockerPostInstanceHostMapActivate.handle(DockerPostInstanceHostMapActivate.java:115) ~[cattle-docker-compute-0.5.0-SNAPSHOT.jar:na]
at io.cattle.platform.engine.process.impl.DefaultProcessInstanceImpl.runHandler(DefaultProcessInstanceImpl.java:470) ~[cattle-framework-engine-0.5.0-SNAPSHOT.jar:na]
at io.cattle.platform.engine.process.impl.DefaultProcessInstanceImpl$4.execute(DefaultProcessInstanceImpl.java:421) ~[cattle-framework-engine-0.5.0-SNAPSHOT.jar:na]
at io.cattle.platform.engine.process.impl.DefaultProcessInstanceImpl$4.execute(DefaultProcessInstanceImpl.java:415) ~[cattle-framework-engine-0.5.0-SNAPSHOT.jar:na]
at io.cattle.platform.engine.idempotent.Idempotent.execute(Idempotent.java:42) ~[cattle-framework-engine-0.5.0-SNAPSHOT.jar:na]
...
This previously worked without issue in 1.1.4. I’ve found a similar bug at: https://github.com/rancher/rancher/issues/7489 as well as Issue with duplicate volumes being created using external EFS driver on Rancher 1.2.1. Anyone have thoughts related to this?
To share more context, I currently launch a service using a GCE drive like this with a docker-compose v1 config:
some-service:
image: some:container
volume_driver: gce
volumes:
- rancher-charts-selenium-v2:/some/mount/point
Where a gce-docker container runs on every machine to distribute the docker drivers for GCE.