zopefoundation / transaction

Generic transaction implementation for Python.
Other
70 stars 31 forks source link

Docs: Confusion between resource and data managers #83

Closed jamadden closed 4 years ago

jamadden commented 5 years ago

The chapter called 'Writing a Resource Manager' actually gives an example of implementing an IDataManager.

The chapter called "Transaction integrations / Data Manager Implementations" describes implementations of IDataManager (that the previous chapter had called a resource manager).

The chapter called "Writing a Data Manager" I think is talking about ITransactionManager (except it discusses a prepare() method that should probably be begin()).

jamadden commented 4 years ago

In the documentation, the distinction between "resource manager" and "data manager", is that the former almost implements the IDataManager interface: tpc_begin, tpc_vote, tpc_finish. It's missing commit and abort. The "data manager" also almost implements IDataManager: it has commit and abort, but has prepare instead of tpc_begin (and no other tpc_ methods).

From the work in #89, it becomes apparent that prepare is a legacy function, not needed anymore. The concepts of "resource manager" and "data manager" have been unified into IDataManager. Since #90 removes the vestigial support for prepare, it doesn't make any sense to document that anymore, so the little bit of cleanup necessary will be part of that PR.