#13828·foundationdb

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
90000