Okay, that makes sense, this gives me something to think about. I do think "reducing [the problem's] surface area" is what I'm trying to do with multiple transactions. At the very least, it would give the best chance for a successful 2PC and make it a viable architecture option for spicedb users
with spice.transaction():
with db.transaction():
update_relationship_data()
update_metadata()
update_relationship_data()
update_metadata()