git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 3/4] odb: prepare `struct odb_transaction` to become generic

From
Justin Tobler <jltobler@gmail.com>
Date
Feb 4, 2026, 17:38 UTC
Message-ID
<aYOCm3vzfDmnZhhu@denethor>
In-Reply-To
<CAOLa=ZRb1eVSD42Obr_m+3KUy0Bh=0XmOZt8ofrbzy4Mp8xfwQ@mail.gmail.com>
On 26/02/04 02:31AM, Karthik Nayak wrote:
Show 17 quoted lines
> Justin Tobler <jltobler@gmail.com> writes:
> 
> [snip]
> 
> > +
> > +/*
> > + * A transaction may be started for an object database prior to writing new
> > + * objects via odb_transaction_begin(). These objects are not committed until
> > + * odb_transaction_commit() is invoked. Only a single transaction may be pending
> > + * at a time.
> > + *
> > + * Each ODB source is expected to implement its own transaction handling.
> > + */
> >  struct odb_transaction;
> 
> Nit: Wouldn't it be nicer to just the below `struct odb_transaction`
> here and drop this line?

I assume you mean drop the typedef in favor of defining it directly in the struct and thus removing the need for the forward declation. I kind of like having a typedef for the function callback, but I don't feel too strongly either way. I've ammended locally, but will hold off from sending another version unless there is other feedback.

Show 16 quoted lines
> > +typedef void (*odb_transaction_commit_fn)(struct odb_transaction *transaction);
> > +struct odb_transaction {
> > +	/* The ODB source the transaction is opened against. */
> > +	struct odb_source *source;
> > +
> > +	/* The ODB source specific callback invoked to commit a transaction. */
> > +	odb_transaction_commit_fn commit;
> > +};
> >
> >  /*
> >   * The object database encapsulates access to objects in a repository. It
> > --
> > 2.52.0.373.g68cb7f9e92
> 
> Just a question in general, is the idea to eventually also add support
> for {prepare, rollback} within odb transactions?

I'm not quite sure yet about "prepare", but certainly an "abort" or "rollback" will be introduced in a followup series. This will be useful as we expand ODB transaction usage to other operations that require the ability to remove temporary objects such as remerge-diffs.

Thanks, -Justin

Previous: Karthik NayakNext: Karthik Nayak
Message 25 of 32 in “odb: support ODB source specific transaction handling”
  1. 0/4 odb: support ODB source specific transaction handlingJustin Tobler, Jan 28, 2026
  2. 1/4 odb: store ODB source in `struct odb_transaction`Justin Tobler, Jan 28, 2026
  3. Patrick SteinhardtJan 29, 2026
  4. Junio C HamanoJan 29, 2026
  5. Justin ToblerJan 29, 2026
  6. Junio C HamanoJan 29, 2026
  7. Justin ToblerJan 29, 2026
  8. Justin ToblerJan 29, 2026
  9. 2/4 object-file: rename transaction functionsJustin Tobler, Jan 28, 2026
  10. 3/4 odb: prepare `struct odb_transaction` to support more sourcesJustin Tobler, Jan 28, 2026
  11. Patrick SteinhardtJan 29, 2026
  12. Justin ToblerJan 29, 2026
  13. 4/4 odb: transparently handle common transaction behaviorJustin Tobler, Jan 28, 2026
  14. Patrick SteinhardtJan 29, 2026
  15. 0/4 odb: support ODB source specific transaction handlingJustin Tobler, Feb 3, 2026
  16. 1/4 odb: store ODB source in `struct odb_transaction`Justin Tobler, Feb 3, 2026
  17. 2/4 object-file: rename transaction functionsJustin Tobler, Feb 3, 2026
  18. 3/4 odb: prepare `struct odb_transaction` to become genericJustin Tobler, Feb 3, 2026
  19. Toon ClaesFeb 3, 2026
  20. Justin ToblerFeb 3, 2026
  21. Junio C HamanoFeb 3, 2026
  22. Patrick SteinhardtFeb 4, 2026
  23. Justin ToblerFeb 4, 2026
  24. Karthik NayakFeb 4, 2026
  25. Justin ToblerFeb 4, 2026
  26. Karthik NayakFeb 5, 2026
  27. 4/4 odb: transparently handle common transaction behaviorJustin Tobler, Feb 3, 2026
  28. Karthik NayakFeb 4, 2026
  29. Justin ToblerFeb 4, 2026
  30. Karthik NayakFeb 5, 2026
  31. Junio C HamanoFeb 3, 2026
  32. Patrick SteinhardtFeb 4, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.