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]

Reply via email to