Skip to content

Commit 5daf53a

Browse files
committed
Attempt to resolve count issue in the NettyChannelTracker by incresing the scope of synch block (neo4j#802)
1 parent 69e10e9 commit 5daf53a

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

driver/src/main/java/org/neo4j/driver/internal/async/pool/NettyChannelTracker.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@ public void channelReleased( Channel channel )
9898
{
9999
decrementInUse( channel );
100100
incrementIdle( channel );
101+
channel.closeFuture().addListener( closeListener );
101102
} );
102103

103-
channel.closeFuture().addListener( closeListener );
104104
log.debug( "Channel [0x%s] released back to the pool", channel.id() );
105105
}
106106

@@ -111,9 +111,9 @@ public void channelAcquired( Channel channel )
111111
{
112112
incrementInUse( channel );
113113
decrementIdle( channel );
114+
channel.closeFuture().removeListener( closeListener );
114115
} );
115116

116-
channel.closeFuture().removeListener( closeListener );
117117
log.debug( "Channel [0x%s] acquired from the pool. Local address: %s, remote address: %s", channel.id(), channel.localAddress(),
118118
channel.remoteAddress() );
119119
}
@@ -188,7 +188,13 @@ private void incrementInUse( Channel channel )
188188

189189
private void decrementInUse( Channel channel )
190190
{
191-
decrement( channel, addressToInUseChannelCount );
191+
BoltServerAddress address = serverAddress( channel );
192+
if ( !addressToInUseChannelCount.containsKey( address ) )
193+
{
194+
throw new IllegalStateException( "No count exists for address '" + address + "' in the 'in use' count" );
195+
}
196+
Integer count = addressToInUseChannelCount.get( address );
197+
addressToInUseChannelCount.put( address, count - 1 );
192198
}
193199

194200
private void incrementIdle( Channel channel )
@@ -198,7 +204,13 @@ private void incrementIdle( Channel channel )
198204

199205
private void decrementIdle( Channel channel )
200206
{
201-
decrement( channel, addressToIdleChannelCount );
207+
BoltServerAddress address = serverAddress( channel );
208+
if ( !addressToIdleChannelCount.containsKey( address ) )
209+
{
210+
throw new IllegalStateException( "No count exists for address '" + address + "' in the 'idle' count" );
211+
}
212+
Integer count = addressToIdleChannelCount.get( address );
213+
addressToIdleChannelCount.put( address, count - 1 );
202214
}
203215

204216
private void increment( Channel channel, Map<BoltServerAddress,Integer> countMap )
@@ -207,15 +219,4 @@ private void increment( Channel channel, Map<BoltServerAddress,Integer> countMap
207219
Integer count = countMap.computeIfAbsent( address, k -> 0 );
208220
countMap.put( address, count + 1 );
209221
}
210-
211-
private void decrement( Channel channel, Map<BoltServerAddress,Integer> countMap )
212-
{
213-
BoltServerAddress address = serverAddress( channel );
214-
if ( !countMap.containsKey( address ) )
215-
{
216-
throw new IllegalStateException( "No count exist for address '" + address + "'" );
217-
}
218-
Integer count = countMap.get( address );
219-
countMap.put( address, count - 1 );
220-
}
221222
}

0 commit comments

Comments
 (0)