[JAVA-3130] Exceptions thrown from DefaultServer.invalidate can mask original exception Created: 30/Dec/18  Updated: 28/Oct/23  Resolved: 08/Jan/19

Status: Closed
Project: Java Driver
Component/s: Connection Management
Affects Version/s: None
Fix Version/s: 3.10.0

Type: Bug Priority: Major - P3
Reporter: Jeffrey Yemin Assignee: Jeffrey Yemin
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

This can happen when a Connection method throws an exception that requires the Server to be invalidated.  If the Server instance has been closed by the time the exception is thrown (e.g. due to a previous exception or an SDAM event), the invalidate method will throws IllegalStateException because the pool is closed.  

  • In the synchronous driver, this exception will mask the underlying exception
  • In the asynchronous driver, this exception will prevent the application callback from being invoked

 
[2018/12/28 11:09:32.400] 16:09:32.337 [nioEventLoopGroup-14-4] WARN org.mongodb.driver.connection - Got socket exception on connection [connectionId\{localValue:53, serverValue:62}] to localhost:27017. All connections to localhost:27017 will be closed. [2018/12/28 11:09:32.400] 16:09:32.338 [nioEventLoopGroup-14-4] ERROR org.mongodb.driver.connection - Callback onResult call produced an error [2018/12/28 11:09:32.400] java.lang.IllegalStateException: state should be: open [2018/12/28 11:09:32.400] at com.mongodb.assertions.Assertions.isTrue(Assertions.java:70) ~[mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.DefaultServer.invalidate(DefaultServer.java:125) ~[mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.DefaultServer.handleThrowable(DefaultServer.java:163) ~[mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.DefaultServer.access$600(DefaultServer.java:45) ~[mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor$2.onResult(DefaultServer.java:223) ~[mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:49) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.CommandProtocolImpl$1.onResult(CommandProtocolImpl.java:83) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection$1.onResult(DefaultConnectionPool.java:461) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.UsageTrackingInternalConnection$2.onResult(UsageTrackingInternalConnection.java:111) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:49) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:377) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:372) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:619) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:609) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.internal.connection.InternalStreamConnection$5.failed(InternalStreamConnection.java:516) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.connection.netty.NettyStream.readAsync(NettyStream.java:229) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.connection.netty.NettyStream.handleReadResponse(NettyStream.java:263) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.connection.netty.NettyStream.access$800(NettyStream.java:69) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.connection.netty.NettyStream$OpenChannelFutureListener$1.operationComplete(NettyStream.java:404) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na] [2018/12/28 11:09:32.400] at com.mongodb.connection.netty.NettyStream$OpenChannelFutureListener$1.operationComplete(NettyStream.java:401) [mongodb-driver-core-3.10.0-SNAPSHOT.jar:na]

 

 



 Comments   
Comment by Githook User [ 14/Jan/19 ]

Author:

{'username': 'jyemin', 'email': 'jeff.yemin@10gen.com', 'name': 'Jeff Yemin'}

Message: Make DefaultServer.invalidate a no-op when server is closed

This method can easily be called in situations where the server instance
is already called, and having it throw an IllegalStateException in that
situation is not the desired behavior.

JAVA-3130
Branch: 3.10.x
https://github.com/mongodb/mongo-java-driver/commit/565d50273b210217f3cbd71cd20c7da4e8fde7da

Comment by Githook User [ 08/Jan/19 ]

Author:

{'username': 'jyemin', 'email': 'jeff.yemin@10gen.com', 'name': 'Jeff Yemin'}

Message: Make DefaultServer.invalidate a no-op when server is closed

This method can easily be called in situations where the server instance
is already called, and having it throw an IllegalStateException in that
situation is not the desired behavior.

JAVA-3130
Branch: master
https://github.com/mongodb/mongo-java-driver/commit/db1db7734e3d3fc15c0be9ed9fdfb019ac50f923

Generated at Thu Feb 08 08:58:51 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.