1818 */
1919package org .neo4j .driver .internal ;
2020
21- import java .util .concurrent .locks . ReentrantReadWriteLock ;
21+ import java .util .concurrent .atomic . AtomicBoolean ;
2222
2323import org .neo4j .driver .internal .security .SecurityPlan ;
2424import org .neo4j .driver .v1 .AccessMode ;
@@ -34,8 +34,7 @@ abstract class BaseDriver implements Driver
3434 private final SecurityPlan securityPlan ;
3535 protected final Logger log ;
3636
37- private final ReentrantReadWriteLock closedLock = new ReentrantReadWriteLock ();
38- private boolean closed ;
37+ private AtomicBoolean closed = new AtomicBoolean ( false );
3938
4039 BaseDriver ( SecurityPlan securityPlan , Logging logging )
4140 {
@@ -46,16 +45,8 @@ abstract class BaseDriver implements Driver
4645 @ Override
4746 public final boolean isEncrypted ()
4847 {
49- closedLock .readLock ().lock ();
50- try
51- {
52- assertOpen ();
53- return securityPlan .requiresEncryption ();
54- }
55- finally
56- {
57- closedLock .readLock ().unlock ();
58- }
48+ assertOpen ();
49+ return securityPlan .requiresEncryption ();
5950 }
6051
6152 @ Override
@@ -67,33 +58,16 @@ public final Session session()
6758 @ Override
6859 public final Session session ( AccessMode mode )
6960 {
70- closedLock .readLock ().lock ();
71- try
72- {
73- assertOpen ();
74- return newSessionWithMode ( mode );
75- }
76- finally
77- {
78- closedLock .readLock ().unlock ();
79- }
61+ assertOpen ();
62+ return newSessionWithMode ( mode );
8063 }
8164
8265 @ Override
8366 public final void close ()
8467 {
85- closedLock .writeLock ().lock ();
86- try
87- {
88- if ( !closed )
89- {
90- closeResources ();
91- }
92- }
93- finally
68+ if ( closed .compareAndSet (false , true ) )
9469 {
95- closed = true ;
96- closedLock .writeLock ().unlock ();
70+ closeResources ();
9771 }
9872 }
9973
@@ -103,7 +77,7 @@ public final void close()
10377
10478 private void assertOpen ()
10579 {
106- if ( closed )
80+ if ( closed . get () )
10781 {
10882 throw new IllegalStateException ( "This driver instance has already been closed" );
10983 }
0 commit comments