Skip to content

Commit b5d7b29

Browse files
committed
Attempt to resolve count issue in the NettyChannelTracker by incresing the scope of synch block
1 parent fc5c117 commit b5d7b29

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

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

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

103-
channel.closeFuture().addListener( closeListener );
104+
104105
log.debug( "Channel [0x%s] released back to the pool", channel.id() );
105106
}
106107

@@ -111,9 +112,9 @@ public void channelAcquired( Channel channel )
111112
{
112113
incrementInUse( channel );
113114
decrementIdle( channel );
115+
channel.closeFuture().removeListener( closeListener );
114116
} );
115117

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

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

194201
private void incrementIdle( Channel channel )
@@ -198,7 +205,13 @@ private void incrementIdle( Channel channel )
198205

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

204217
private void increment( Channel channel, Map<BoltServerAddress,Integer> countMap )
@@ -207,15 +220,4 @@ private void increment( Channel channel, Map<BoltServerAddress,Integer> countMap
207220
Integer count = countMap.computeIfAbsent( address, k -> 0 );
208221
countMap.put( address, count + 1 );
209222
}
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-
}
221223
}

0 commit comments

Comments
 (0)