New node should be created/persisted through clusterManager instance, not clusterRepository. After node creation clusterManager should refresh all nodes state.
2016-08-22 20:13:17.192 INFO 3592 --- [a-jaxrs-async-1] o.apache.coyote.http11.Http11Processor : An error occurred in processing while on a non-container thread. The connection will be closed immediately
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[na:1.8.0_91]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[na:1.8.0_91]
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[na:1.8.0_91]
at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[na:1.8.0_91]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[na:1.8.0_91]
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1241) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:428) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:418) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.coyote.http11.Http11OutputBuffer.flushBuffer(Http11OutputBuffer.java:533) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:250) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:691) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.coyote.Response.action(Response.java:167) [tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:336) [tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:303) [tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:109) [tomcat-embed-core-8.5.4.jar:8.5.4]
at com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1030) [jackson-core-2.8.1.jar:2.8.1]
at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:942) [jackson-databind-2.8.1.jar:2.8.1]
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:267) [spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.http.converter.AbstractGenericHttpMessageConverter.writeInternal(AbstractGenericHttpMessageConverter.java:110) [spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:227) [spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.sendInternal(ResponseBodyEmitterReturnValueHandler.java:201) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.send(ResponseBodyEmitterReturnValueHandler.java:194) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.sendInternal(ResponseBodyEmitter.java:166) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send(ResponseBodyEmitter.java:159) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:125) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:106) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:88) [spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at com.thecookiezen.infrastructure.docker.StatisticsSSEListener.lambda$onNext$1(StatisticsSSEListener.java:60) [classes/:na]
at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:890) ~[na:1.8.0_91]
at com.thecookiezen.infrastructure.docker.StatisticsSSEListener.onNext(StatisticsSSEListener.java:58) [classes/:na]
at com.thecookiezen.infrastructure.docker.StatisticsSSEListener.onNext(StatisticsSSEListener.java:15) [classes/:na]
at com.github.dockerjava.jaxrs.AbstrAsyncDockerCmdExec$1.onNext(AbstrAsyncDockerCmdExec.java:43) ~[docker-java-3.0.3.jar:na]
at com.github.dockerjava.core.async.JsonStreamProcessor.processResponseStream(JsonStreamProcessor.java:49) ~[docker-java-3.0.3.jar:na]
at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:66) ~[docker-java-3.0.3.jar:na]
at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24) ~[docker-java-3.0.3.jar:na]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_91]
at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_91]
java.lang.IllegalStateException: The request associated with the AsyncContext has already completed processing.
at org.apache.catalina.core.AsyncContextImpl.check(AsyncContextImpl.java:497) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.catalina.core.AsyncContextImpl.dispatch(AsyncContextImpl.java:149) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.dispatch(StandardServletAsyncWebRequest.java:123) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.context.request.async.WebAsyncManager.setConcurrentResultAndDispatch(WebAsyncManager.java:353) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.context.request.async.WebAsyncManager.access$200(WebAsyncManager.java:58) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.context.request.async.WebAsyncManager$7.handleResult(WebAsyncManager.java:416) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.context.request.async.DeferredResult.setResultInternal(DeferredResult.java:199) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.context.request.async.DeferredResult.setErrorResult(DeferredResult.java:214) ~[spring-web-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.completeWithError(ResponseBodyEmitterReturnValueHandler.java:219) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.completeWithError(ResponseBodyEmitter.java:204) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.sendInternal(ResponseBodyEmitter.java:169) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send(ResponseBodyEmitter.java:159) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:125) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:106) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:88) ~[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at com.thecookiezen.infrastructure.docker.StatisticsSSEListener.lambda$onNext$1(StatisticsSSEListener.java:60) ~[classes/:na]
at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:890) ~[na:1.8.0_91]
at com.thecookiezen.infrastructure.docker.StatisticsSSEListener.onNext(StatisticsSSEListener.java:58) ~[classes/:na]
at com.thecookiezen.infrastructure.docker.StatisticsSSEListener.onNext(StatisticsSSEListener.java:15) ~[classes/:na]
at com.github.dockerjava.jaxrs.AbstrAsyncDockerCmdExec$1.onNext(AbstrAsyncDockerCmdExec.java:43) ~[docker-java-3.0.3.jar:na]
at com.github.dockerjava.core.async.JsonStreamProcessor.processResponseStream(JsonStreamProcessor.java:49) ~[docker-java-3.0.3.jar:na]
at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:66) [docker-java-3.0.3.jar:na]
at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24) [docker-java-3.0.3.jar:na]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]