matrei commented on code in PR #15565:
URL: https://github.com/apache/grails-core/pull/15565#discussion_r3055877606
##########
grails-data-mongodb/core/src/test/groovy/org/apache/grails/data/mongo/core/GrailsDataMongoTckManager.groovy:
##########
@@ -136,17 +138,31 @@ class GrailsDataMongoTckManager extends
GrailsDataTckManager {
@Override
void destroy() {
- mongoDatastore.getMongoClient().listDatabaseNames().findAll {!(it in
['admin', 'config', 'local']) }.each {
+ try {
+ mongoDatastore?.mongoClient?.listDatabaseNames()
+ ?.findAll { !(it in ['admin', 'config', 'local']) }
+ ?.each {
+ try {
+ mongoDatastore.mongoClient.getDatabase(it as
String).drop()
+ }
+ catch (ignored) {
+ log.warn("Could not drop ${it}")
+ }
+ }
+ for (cls in domainClasses) {
+ GormEnhancer.findValidationApi(cls).validator = null
+ }
+ }
+ finally {
try {
- mongoDatastore.getMongoClient().getDatabase(it).drop()
+ mongoDatastore?.close()
Review Comment:
Yes, it now also closes, otherwise I get:
```console
DataServiceConnectionRoutingSpec > secondary data is not visible on default
datasource FAILED
com.mongodb.MongoSocketReadException: Prematurely reached end of stream
at
app//com.mongodb.internal.connection.SocketStream.read(SocketStream.java:184)
at
app//com.mongodb.internal.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:824)
at
app//com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:517)
at
app//com.mongodb.internal.connection.InternalStreamConnection.sendAndReceiveInternal(InternalStreamConnection.java:448)
at
app//com.mongodb.internal.connection.InternalStreamConnection.lambda$sendAndReceive$0(InternalStreamConnection.java:375)
at
app//com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:378)
at
app//com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:100)
at
app//com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:49)
at
app//com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:144)
at
app//com.mongodb.internal.connection.InternalStreamConnectionInitializer.startHandshake(InternalStreamConnectionInitializer.java:79)
at
app//com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:235)
at
app//com.mongodb.internal.connection.UsageTrackingInternalConnection.open(UsageTrackingInternalConnection.java:53)
at
app//com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.open(DefaultConnectionPool.java:631)
at
app//com.mongodb.internal.connection.DefaultConnectionPool$OpenConcurrencyLimiter.openWithConcurrencyLimit(DefaultConnectionPool.java:978)
at
app//com.mongodb.internal.connection.DefaultConnectionPool$OpenConcurrencyLimiter.openOrGetAvailable(DefaultConnectionPool.java:908)
at
app//com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:198)
at
app//com.mongodb.internal.connection.DefaultServer.getConnection(DefaultServer.java:94)
at
app//com.mongodb.internal.binding.ClusterBinding$ClusterBindingConnectionSource.getConnection(ClusterBinding.java:138)
at
app//com.mongodb.client.internal.ClientSessionBinding$SessionBindingConnectionSource.getConnection(ClientSessionBinding.java:161)
at
app//com.mongodb.internal.operation.SyncOperationHelper.withSuppliedResource(SyncOperationHelper.java:148)
at
app//com.mongodb.internal.operation.SyncOperationHelper.lambda$withSourceAndConnection$1(SyncOperationHelper.java:130)
at
app//com.mongodb.internal.operation.SyncOperationHelper.withSuppliedResource(SyncOperationHelper.java:156)
at
app//com.mongodb.internal.operation.SyncOperationHelper.withSourceAndConnection(SyncOperationHelper.java:129)
at
app//com.mongodb.internal.operation.SyncOperationHelper.executeCommand(SyncOperationHelper.java:207)
at
app//com.mongodb.internal.operation.CreateIndexesOperation.execute(CreateIndexesOperation.java:105)
at
app//com.mongodb.internal.operation.CreateIndexesOperation.execute(CreateIndexesOperation.java:60)
at
app//com.mongodb.client.internal.MongoClusterImpl$OperationExecutorImpl.execute(MongoClusterImpl.java:446)
at
app//com.mongodb.client.internal.MongoCollectionImpl.executeCreateIndexes(MongoCollectionImpl.java:941)
at
app//com.mongodb.client.internal.MongoCollectionImpl.createIndexes(MongoCollectionImpl.java:923)
at
app//com.mongodb.client.internal.MongoCollectionImpl.createIndexes(MongoCollectionImpl.java:918)
at
app//com.mongodb.client.internal.MongoCollectionImpl.createIndex(MongoCollectionImpl.java:903)
at
app//com.mongodb.client.internal.MongoCollectionImpl.createIndex(MongoCollectionImpl.java:898)
at
app//org.grails.datastore.mapping.mongo.MongoDatastore.initializeIndices(MongoDatastore.java:903)
at
app//org.grails.datastore.mapping.mongo.MongoDatastore.persistentEntityAdded(MongoDatastore.java:929)
at
app//org.grails.datastore.mapping.model.AbstractMappingContext.addPersistentEntities(AbstractMappingContext.java:293)
at
app//org.apache.grails.data.mongo.core.GrailsDataMongoTckManager.createSession(GrailsDataMongoTckManager.groovy:129)
at
app//org.apache.grails.data.testing.tck.base.GrailsDataTckManager.setup(GrailsDataTckManager.groovy:103)
at
app//org.apache.grails.data.testing.tck.base.GrailsDataTckSpec.setup(GrailsDataTckSpec.groovy:41)
```
and
```console
DataServiceConnectionRoutingSpec > default data is not visible on secondary
datasource FAILED
com.mongodb.MongoTimeoutException: Timed out while waiting for a server
that matches WritableServerSelector. Client view of cluster state is
{type=UNKNOWN, servers=[{address=localhost:35004, type=UNKNOWN,
state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception
opening socket}, caused by {java.net.ConnectException: Connection refused}}]
at
app//com.mongodb.internal.connection.BaseCluster.logAndThrowTimeoutException(BaseCluster.java:427)
at
app//com.mongodb.internal.connection.BaseCluster.lambda$selectServer$0(BaseCluster.java:154)
at
app//com.mongodb.internal.time.Timeout.lambda$onExistsAndExpired$16(Timeout.java:236)
at
app//com.mongodb.internal.time.Timeout.lambda$run$10(Timeout.java:201)
at
app//com.mongodb.internal.time.TimePoint.checkedCall(TimePoint.java:99)
at app//com.mongodb.internal.time.Timeout.call(Timeout.java:174)
at app//com.mongodb.internal.time.Timeout.run(Timeout.java:194)
at
app//com.mongodb.internal.time.Timeout.onExistsAndExpired(Timeout.java:233)
at app//com.mongodb.internal.time.Timeout.onExpired(Timeout.java:226)
at
app//com.mongodb.internal.connection.BaseCluster.selectServer(BaseCluster.java:153)
at
app//com.mongodb.internal.connection.SingleServerCluster.selectServer(SingleServerCluster.java:47)
at
app//com.mongodb.internal.binding.ClusterBinding.getWriteConnectionSource(ClusterBinding.java:100)
at
app//com.mongodb.client.internal.ClientSessionBinding.getConnectionSource(ClientSessionBinding.java:108)
at
app//com.mongodb.client.internal.ClientSessionBinding.getWriteConnectionSource(ClientSessionBinding.java:98)
at
app//com.mongodb.internal.operation.SyncOperationHelper.withSuppliedResource(SyncOperationHelper.java:148)
at
app//com.mongodb.internal.operation.SyncOperationHelper.withSourceAndConnection(SyncOperationHelper.java:129)
at
app//com.mongodb.internal.operation.SyncOperationHelper.executeCommand(SyncOperationHelper.java:207)
at
app//com.mongodb.internal.operation.CreateIndexesOperation.execute(CreateIndexesOperation.java:105)
at
app//com.mongodb.internal.operation.CreateIndexesOperation.execute(CreateIndexesOperation.java:60)
at
app//com.mongodb.client.internal.MongoClusterImpl$OperationExecutorImpl.execute(MongoClusterImpl.java:446)
at
app//com.mongodb.client.internal.MongoCollectionImpl.executeCreateIndexes(MongoCollectionImpl.java:941)
at
app//com.mongodb.client.internal.MongoCollectionImpl.createIndexes(MongoCollectionImpl.java:923)
at
app//com.mongodb.client.internal.MongoCollectionImpl.createIndexes(MongoCollectionImpl.java:918)
at
app//com.mongodb.client.internal.MongoCollectionImpl.createIndex(MongoCollectionImpl.java:903)
at
app//com.mongodb.client.internal.MongoCollectionImpl.createIndex(MongoCollectionImpl.java:898)
at
app//org.grails.datastore.mapping.mongo.MongoDatastore.initializeIndices(MongoDatastore.java:903)
at
app//org.grails.datastore.mapping.mongo.MongoDatastore.persistentEntityAdded(MongoDatastore.java:929)
at
app//org.grails.datastore.mapping.model.AbstractMappingContext.addPersistentEntities(AbstractMappingContext.java:293)
at
app//org.apache.grails.data.mongo.core.GrailsDataMongoTckManager.createSession(GrailsDataMongoTckManager.groovy:129)
at
app//org.apache.grails.data.testing.tck.base.GrailsDataTckManager.setup(GrailsDataTckManager.groovy:103)
at
app//org.apache.grails.data.testing.tck.base.GrailsDataTckSpec.setup(GrailsDataTckSpec.groovy:41)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]