Skip to content

Commit adfdbf8

Browse files
Clean up trilogy error translation
This commit makes a few changes to our trilogy error translation: * trilogy-libraries/trilogy#118 introduced `Trilogy::EOFError` which we can use instead of matching on `TRILOGY_CLOSED_CONNECTION`. * trilogy-libraries/trilogy#15 introduced `Trilogy::ConnectionClosed`, which inherits from `IOError` for backwards compatibility. As far as I can tell that's the only `IOError` trilogy can raise, so this commit rescues the trilogy-specific error instead. * As far as I can tell Trilogy does not raise `SocketError`, so don't bother translating that * Don't treat TRILOGY_UNEXPECTED_PACKET as a connection error. If we get this, it's probably a bug in trilogy that we should fix. I'd like to eventually get rid of TRILOGY_INVALID_SEQUENCE_ID too, but we're currently relying on it in a few tests (related to trilogy missing caching_sha2_password auth support, if I recall correctly) I'm kinda hoping we'll eventually be able to simplify this to something like: ```rb if exception.is_a?(Trilogy::ConnectionError) ConnectionFailed.new(message, connection_pool: @pool) else super end ``` but we'd need more changes to trilogy before that is possible.
1 parent 68eade8 commit adfdbf8

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

activerecord/lib/active_record/connection_adapters/trilogy_adapter.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,10 @@ def translate_exception(exception, message:, sql:, binds:)
202202
end
203203

204204
case exception
205-
when SocketError, IOError
205+
when ::Trilogy::ConnectionClosed, ::Trilogy::EOFError
206206
return ConnectionFailed.new(message, connection_pool: @pool)
207207
when ::Trilogy::Error
208-
if /TRILOGY_CLOSED_CONNECTION|TRILOGY_INVALID_SEQUENCE_ID|TRILOGY_UNEXPECTED_PACKET/.match?(exception.message) ||
209-
exception.is_a?(SystemCallError)
208+
if exception.is_a?(SystemCallError) || exception.message.include?("TRILOGY_INVALID_SEQUENCE_ID")
210209
return ConnectionFailed.new(message, connection_pool: @pool)
211210
end
212211
end

0 commit comments

Comments
 (0)