282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
# File 'lib/neo4j_bolt.rb', line 282
def cleanup
if Thread.current.thread_variable_get(LEASE_KEY).to_i.positive?
raise Error, "cleanup_neo4j cannot run while this thread is using Neo4j"
end
driver = nil
cleanup_started = false
mutex.synchronize do
condition.wait(mutex) while @closing
@closing = true
cleanup_started = true
condition.wait(mutex) until leases.zero?
driver = @driver
@driver = nil
end
driver&.close
ensure
if cleanup_started
mutex.synchronize do
@closing = false
condition.broadcast
end
end
end
|