From 2c23d1b4776ec7b089943edb234f5de4312a6e30 Mon Sep 17 00:00:00 2001 From: Neeraj Singh Date: Mon, 4 Apr 2022 22:20:08 -0700 Subject: bulk-checkin: rebrand plug/unplug APIs as 'odb transactions' Make it clearer in the naming and documentation of the plug_bulk_checkin and unplug_bulk_checkin APIs that they can be thought of as a "transaction" to optimize operations on the object database. These transactions may be nested so that subsystems like the cache-tree writing code can optimize their operations without caring whether the top-level code has a transaction active. Add a flush_odb_transaction API that will be used in update-index to make objects visible even if a transaction is active. The flush call may also be useful in future cases if we hold a transaction active around calling hooks. Signed-off-by: Neeraj Singh Signed-off-by: Junio C Hamano --- bulk-checkin.h | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'bulk-checkin.h') diff --git a/bulk-checkin.h b/bulk-checkin.h index b26f3dc3b7..ee0832989a 100644 --- a/bulk-checkin.h +++ b/bulk-checkin.h @@ -10,7 +10,27 @@ int index_bulk_checkin(struct object_id *oid, int fd, size_t size, enum object_type type, const char *path, unsigned flags); -void plug_bulk_checkin(void); -void unplug_bulk_checkin(void); +/* + * Tell the object database to optimize for adding + * multiple objects. end_odb_transaction must be called + * to make new objects visible. Transactions can be nested, + * and objects are only visible after the outermost transaction + * is complete or the transaction is flushed. + */ +void begin_odb_transaction(void); + +/* + * Make any objects that are currently part of a pending object + * database transaction visible. It is valid to call this function + * even if no transaction is active. + */ +void flush_odb_transaction(void); + +/* + * Tell the object database to make any objects from the + * current transaction visible if this is the final nested + * transaction. + */ +void end_odb_transaction(void); #endif -- cgit v1.2.3