RYW transactions don't handle append_if_fits correctly
Author: atn34Created Aug 7, 2026Updated Aug 29, 2026
$ cat test.py && echo "===" && python3 test.py
import fdb
fdb.api_version(730)
db = fdb.open()
class Cancel(Exception):
pass
@fdb.transactional
def do_setup(tr):
tr[b""] = b"a" * 70000
do_setup(db)
@fdb.transactional
def do_test(tr, write_first):
if write_first:
do_setup(tr)
tr.append_if_fits(b"", b"b" * 20000)
tr.append_if_fits(b"", b"b" * 20000)
print(len(tr[b""]))
raise Cancel()
try:
do_test(db, False)
except Cancel:
pass
try:
do_test(db, True)
except Cancel:
pass
===
70000
90000Source: apple/foundationdb