The way the attempts were calculated here are locals to only the method, they're not passed down the call hierarchy so this bug would occur.
Changes
The send method will now recall itself only when an EdgeDBException is thrown with the ShouldRetry flag. Any other exceptions are propagated to the caller which is responsible for handling them.
Summary
The binding would attempt to reconnect in the
send
method if the connection wasn't established: https://github.com/edgedb/edgedb-java/blob/46c513285faffee9992e47447eb542f5c7a158ae/src/driver/src/main/java/com/edgedb/driver/binary/duplexers/ChannelDuplexer.java#L200-L213 The issue with this is that theconnect
method on theEdgeDBBinaryClient
would be recursively called if the underlying connection was closed during the send function:The way the attempts were calculated here are locals to only the method, they're not passed down the call hierarchy so this bug would occur.
Changes
The send method will now recall itself only when an
EdgeDBException
is thrown with theShouldRetry
flag. Any other exceptions are propagated to the caller which is responsible for handling them.