summaryrefslogtreecommitdiff
path: root/t/unit-tests/clar/example/main.c
diff options
context:
space:
mode:
authorJustin Tobler <jltobler@gmail.com>2025-09-16 13:29:33 -0500
committerJunio C Hamano <gitster@pobox.com>2025-09-16 11:37:04 -0700
commitf3c1db4b2a23fac171a699b10f9328f8df52602f (patch)
treea7d0121dafc334659656a4d811f15aca4e8e7832 /t/unit-tests/clar/example/main.c
parent4a3422b1617daca3a1e4f1173618632ad558a90c (diff)
bulk-checkin: remove ODB transaction nesting
ODB transactions support being nested. Only the outermost {begin,end}_odb_transaction() start and finish a transaction. This allows internal object write codepaths to be optimized with ODB transactions without worrying about whether a transaction is already active. When {begin,end}_odb_transaction() is invoked during an active transaction, these operations are essentially treated as no-ops. This can make the interface a bit awkward to use, as calling end_odb_transaction() does not guarantee that a transaction is actually ended. Thus, in situations where a transaction needs to be explicitly flushed, flush_odb_transaction() must be used. To remove the need for an explicit transaction flush operation via flush_odb_transaction() and better clarify transaction semantics, drop the transaction nesting mechanism in favor of begin_odb_transaction() returning a NULL transaction value to signal it was a no-op, and end_odb_transaction() behaving as a no-op when a NULL transaction value is passed. This is safe for existing callers as the transaction value wired to end_odb_transaction() already comes from begin_odb_transaction() and thus continues the same no-op behavior when a transaction is already pending. With this model, passing a pending transaction to end_odb_transaction() ensures it is committed at that point in time. Signed-off-by: Justin Tobler <jltobler@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/unit-tests/clar/example/main.c')
0 files changed, 0 insertions, 0 deletions