@@ -40,6 +40,9 @@ actor DatabasePool {
4040 var availableDatabases : Set < Database > = . init( )
4141
4242 func setUp( ) async throws {
43+ let start = Date ( )
44+ print ( " ℹ️ \( #function) start " )
45+ defer { print ( " ℹ️ \( #function) end " , Date ( ) . timeIntervalSince ( start) ) }
4346 // Call DotEnvFile.load once to ensure env variables are set
4447 await DotEnvFile . load ( for: . testing, fileio: . init( threadPool: . singleton) )
4548
@@ -100,6 +103,9 @@ actor DatabasePool {
100103 }
101104
102105 func withDatabase( _ operation: @Sendable ( Database) async throws -> Void ) async throws {
106+ let start = Date ( )
107+ print ( " ℹ️ \( #function) start " )
108+ defer { print ( " ℹ️ \( #function) end " , Date ( ) . timeIntervalSince ( start) ) }
103109 let db = try await retainDatabase ( )
104110 do {
105111 try await operation ( db)
@@ -121,6 +127,10 @@ actor DatabasePool {
121127 }
122128
123129 private func setupDatabases( _ databases: any Collection < Database > ) async throws -> [ Database ] {
130+ let start = Date ( )
131+ print ( " ℹ️ \( #function) start " )
132+ defer { print ( " ℹ️ \( #function) end " , Date ( ) . timeIntervalSince ( start) ) }
133+ return
124134 try await withThrowingTaskGroup ( of: Database . self) { group in
125135 for db in databases {
126136 group. addTask {
@@ -137,8 +147,16 @@ actor DatabasePool {
137147 }
138148
139149 private func retainDatabase( ) async throws -> Database {
150+ let start = Date ( )
151+ print ( " ℹ️ \( #function) start " )
152+ defer { print ( " ℹ️ \( #function) end " , Date ( ) . timeIntervalSince ( start) ) }
140153 var database = availableDatabases. randomElement ( )
154+ var retry = 0
141155 while database == nil {
156+ defer { retry += 1 }
157+ if retry > 0 && retry % 50 == 0 {
158+ print ( " ℹ️ \( #function) available databases: \( availableDatabases. count) retry \( retry) " )
159+ }
142160 try await Task . sleep ( for: . milliseconds( 100 ) )
143161 database = availableDatabases. randomElement ( )
144162 }
0 commit comments