twitter / finagle

A fault tolerant, protocol-agnostic RPC system

Home Page:https://twitter.github.io/finagle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Missing support for default charset in Mysql 8

rogern opened this issue · comments

commented

Decoding fails with Mysql 8+ because it use utf8mb4 as default charset which isn't supported

Expected behavior

Decoding, (Encoding?) should handle the charset utf8mb4.

Actual behavior

Decoding result fails with:
com.twitter.finagle.mysql.LostSyncException: java.lang.IllegalArgumentException: Charset 255 is not supported.

Steps to reproduce the behavior

Use mysql 8+ with the library and execute a simple select statement.

commented

Running the integration tests with mysql 8+ shows the error.

[info] BlobTypeTest:
[info] com.twitter.finagle.mysql.integration.BlobTypeTest *** ABORTED ***
[info]   com.twitter.finagle.mysql.LostSyncException: java.lang.IllegalArgumentException: Charset 255 is not supported.
[info]   at com.twitter.finagle.mysql.MysqlCharset$.apply(MysqlCharset.scala:24)
[info]   at com.twitter.finagle.mysql.HandshakeInit$.decode(Result.scala:66)
[info]   at com.twitter.finagle.mysql.HandshakeInit$.decode(Result.scala:23)
[info]   at com.twitter.finagle.mysql.Decoder.$anonfun$apply$1(Result.scala:15)
[info]   at com.twitter.util.Try$.apply(Try.scala:26)
[info]   at com.twitter.finagle.mysql.Decoder.apply(Result.scala:15)
[info]   at com.twitter.finagle.mysql.Decoder.apply$(Result.scala:15)
[info]   at com.twitter.finagle.mysql.HandshakeInit$.apply(Result.scala:23)
[info]   at com.twitter.finagle.mysql.Handshake.$anonfun$readHandshakeInit$1(Handshake.scala:80)
[info]   at com.twitter.util.Future.$anonfun$flatMap$1(Future.scala:1827)

Hi @rogern, thanks for reporting. This recently came up internally at Twitter as well, so our current plan is to likely work on this early next year. If you have the time and inclination, you're welcome to look into this issue and report your findings/work on a fix.

Hi @rogern, charset 255 for MySQL 8 is supported in finagle-mysql now. This is the commit with the changes: 25e581b