\hypertarget{md_doc_decisions_commit_function_autotoc_md1799}{}\doxysection{Problem}\label{md_doc_decisions_commit_function_autotoc_md1799}
When {\ttfamily \mbox{\hyperlink{group__kdb_ga11436b058408f83d303ca5e996832bcf}{kdb\+Set()}}} is called, plugins implementing the commit role need to track their state to distinguish between carrying out that role and carrying out potential other roles (commit and setresolver for the resolver plugin, for example). This limits the possibilities of plugin reuse and the ways plugins can be combined.\hypertarget{md_doc_decisions_commit_function_autotoc_md1800}{}\doxysection{Constraints}\label{md_doc_decisions_commit_function_autotoc_md1800}

\begin{DoxyItemize}
\item It should be possible for all existing plugins to run normally
\end{DoxyItemize}\hypertarget{md_doc_decisions_commit_function_autotoc_md1801}{}\doxysection{Assumptions}\label{md_doc_decisions_commit_function_autotoc_md1801}
\hypertarget{md_doc_decisions_commit_function_autotoc_md1802}{}\doxysection{Considered Alternatives}\label{md_doc_decisions_commit_function_autotoc_md1802}
\hypertarget{md_doc_decisions_commit_function_autotoc_md1803}{}\doxysection{Decision}\label{md_doc_decisions_commit_function_autotoc_md1803}
Committing will no longer be done by {\ttfamily \mbox{\hyperlink{group__kdb_ga11436b058408f83d303ca5e996832bcf}{kdb\+Set()}}}. Instead, the functionality will be implemented by its own function, {\ttfamily kdb\+Commit()}.\hypertarget{md_doc_decisions_commit_function_autotoc_md1804}{}\doxysection{Rationale}\label{md_doc_decisions_commit_function_autotoc_md1804}
The implementation of this function is a prerequisite for a future improvement to backends, which will enable greater amounts of plugins in a single backend and plugin statelessness.

Currently, plugins combining the {\ttfamily commit} role with a different role (such as resolver plugins which combine the {\ttfamily setresolver} and {\ttfamily commit} roles) need to distinguish between these roles and track their state.\hypertarget{md_doc_decisions_commit_function_autotoc_md1805}{}\doxysection{Implications}\label{md_doc_decisions_commit_function_autotoc_md1805}
\hypertarget{md_doc_decisions_commit_function_autotoc_md1806}{}\doxysection{Related Decisions}\label{md_doc_decisions_commit_function_autotoc_md1806}
\hypertarget{md_doc_decisions_commit_function_autotoc_md1807}{}\doxysection{Notes}\label{md_doc_decisions_commit_function_autotoc_md1807}
\href{https://issues.libelektra.org/2798}{\texttt{ https\+://issues.\+libelektra.\+org/2798}} 