I know this list isn't the right place to discuss driver issues in general,
but I thought I'd offer a word of warning to anyone still using Astyanax
related to an issue we ran into over the weekend.

Astyanax has a hard coded maximum Thrift frame size.  There is a pull
request to expose it to configuration, but it has not been accepted (
https://github.com/Netflix/astyanax/pull/547).

The reason why this matters beyond "you're doing reads which are far too
large" is that Thrift is used by Astyanax for ring discovery
(RING_DESCRIBE), which it may be using under the hood even if you don't
think you are (several connection pool types imply RING_DESCRIBE and may
override your own alternate configuration).

When you exceed around 64,000 vnodes (250 nodes at 256 vnodes), ring
discovery no longer fits in a single Thrift frame.  Even if you increase
the maximum frame size in Cassandra, Astyanax will not take advantage of
it.  The consequence is that Astyanax will talk *only* to hosts in the
seeds list.  I've opened issue
https://github.com/Netflix/astyanax/issues/577

Astyanax is no longer maintained, so I don't really expect that to go
anywhere, which is why I thought it might be a good idea to issue a general
warning.  This should hopefully be a helpful nudge for anyone still using
Astyanax: it's time to find a new driver.

We bumped into this over the weekend during routine cluster expansion.
Very, very fortunately for us, we were just days away from retiring that
project as our very last Astyanax use case.  We were able to limp along by
providing a significant subset of our hosts in the seeds list, but that
would have been a difficult way to operate long term.

Reply via email to