berione
berione

Reputation: 122

Mongo db socket exception

I have spring boot application which runs on the cloud and i use mongo db.

When i check the logs i see that sometimes i got the the socketException.

Here is the logs

In my local machine I couldn't reproduce this exception.

Does anyone have any idea why I got this exception ?

2021-08-10 10:19:53.841||segment-service||INFO ||abe8a9a7-98a6-4262-9e34-29ec935757c9||||||preHandle: request matched: GET - /v1/segments/ 
2021-08-10 10:19:53.845||segment-service||WARN ||||||||Got socket exception on connection [connectionId{localValue:276, serverValue:224177}] to mongo-cluster-mongodb-0.mongo-cluster-mongodb.mongo.svc.cluster.local:27017. All connections to mongo-cluster-mongodb-0.mongo-cluster-mongodb.mongo.svc.cluster.local:27017 will be closed. 
2021-08-10 10:19:53.846||segment-service||INFO ||abe8a9a7-98a6-4262-9e34-29ec935757c9||6066e50c9bda8e4c82380a03||5fe5d5d181c03e6e10109c52||request for /v1/segments/ duration: 5 ms 
2021-08-10 10:19:53.846||segment-service||INFO ||||||||Closed connection [connectionId{localValue:276, serverValue:224177}] to mongo-cluster-mongodb-0.mongo-cluster-mongodb.mongo.svc.cluster.local:27017 because there was a socket exception raised by this connection. 
2021-08-10 10:19:53.851||segment-service||INFO ||||||||Discovered replica set primary mongo-cluster-mongodb-0.mongo-cluster-mongodb.mongo.svc.cluster.local:27017 
2021-08-10 10:19:53.850||segment-service||WARN ||||||||MongoDB health check failed 
org.springframework.data.mongodb.UncategorizedMongoDbException: Exception sending message; nested exception is com.mongodb.MongoSocketWriteException: Exception sending message 
    at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:138) 
    at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2902) 
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:560) 
    at org.springframework.data.mongodb.core.MongoTemplate.executeCommand(MongoTemplate.java:476)  org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:105) 
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getHealth(HealthEndpointSupport.java:83) 
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getHealth(HealthEndpointSupport.java:70) 
    org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$ServletWebOperationAdapter.handle(AbstractWebMvcEndpointHandlerMapping.java:305) 
    at org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(AbstractWebMvcEndpointHandlerMapping.java:388) 
    at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) 
    at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) 
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) 
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598) 
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: com.mongodb.MongoSocketWriteException: Exception sending message 
    at com.mongodb.internal.connection.InternalStreamConnection.translateWriteException(InternalStreamConnection.java:551) 
    at com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:433) 
    at com.mongodb.internal.connection.InternalStreamConnection.sendCommandMessage(InternalStreamConnection.java:273) 
    com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:189) 
    at com.mongodb.client.internal.MongoDatabaseImpl.executeCommand(MongoDatabaseImpl.java:186) 
    at com.mongodb.client.internal.MongoDatabaseImpl.runCommand(MongoDatabaseImpl.java:155) 
    at com.mongodb.client.internal.MongoDatabaseImpl.runCommand(MongoDatabaseImpl.java:150) 
    at org.springframework.data.mongodb.core.MongoTemplate.lambda$executeCommand$2(MongoTemplate.java:476) 
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:558) 
    ... 75 common frames omitted 
Caused by: java.net.SocketException: Broken pipe (Write failed) 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:155) 
    at com.mongodb.internal.connection.SocketStream.write(SocketStream.java:99) 
    at com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:430) 
    ... 98 common frames omitted 

Upvotes: 0

Views: 2620

Answers (1)

Joe
Joe

Reputation: 28376

Caused by: java.net.SocketException: Broken pipe (Write failed) would imply that that the Java machine tried to write to the network, but the socket was not (possibly no longer?) in a state that could be written.

Check for basic networking problems. If you don't find any try decreasing the TCP keepalive timeout.

If that doesn't work, catch the exception and retry whatever operation this was.

Upvotes: 1

Related Questions