You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Long Quanzheng <pr...@gmail.com> on 2019/04/26 19:04:56 UTC

Error returned that means unknown

Hi

We found that Cassandra can return timeout error but the actual operation
succeeded.
https://github.com/gocql/gocql/blob/master/conn.go#L1441

Is there a way to know all those kind of errors?

Here is the background why we need this:
We are using two phase commit:
1) append data to tableA
2) execute LWT on tableB
3) So if 2) fails we need to clean up the data written into tableA.
Otherwise we lost data.

Previously we always clean up  in 3) if we got any error from 2), which is
wrong for ErrorTimeoutNoReponse. This error simply means the result is
unknown. So we should whitelist this error. But we don't know what are the
other errors that should also be whitelisted.

*Alternative:*
What we can also do is instead of whitelisting, we do backlisting. We only
clean up in 3) for certain error that we know that 2) doesn't succeed. But
from the gocql code, I don't know how to find all of them. If we don't
clean up correctly in those case, we may leak some data that will never be
deleted.

Thanks