mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-21 17:10:35 +00:00
Our thrift code performs an elaborate dance to convert a result/exception reported in a future<> to the cob/exn_cob flow required by the thrift library. However, if the exception if thrown before the first continuation, no one will catch it will be leaked, eventually resulting in a crash. Fix by replacing the complete() infrastructure, which took a future as a parameter, with a with_cob() helper that instead takes a function to execute. This allows it to catch both exceptions thrown directly and exceptions reported via the future. Fixes #133.