260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
|
# File 'lib/neo4j_bolt.rb', line 260
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
|