7. Evolution of the project¶
This section will not generally be of interest, but may occasionally shed light on why the current code is structured the way it is when investigating some thorny issue.
7.1. Origin in Heartbeat project¶
Pacemaker can be considered as a spin-off from Heartbeat, the original comprehensive high availability suite started by Alan Robertson. Some portions of code are shared, at least on the conceptual level if not verbatim, till today, even if the effective percentage continually declines.
Before Pacemaker 2.0, Pacemaker supported Heartbeat as a cluster layer alternative to Corosync. That support was dropped for the 2.0.0 release (see commit 55ab749bf).
An archive of a 2016 checkout of the Heartbeat code base is shared as a read-only repository. Notable commits include:
- creation of Heartbeat’s “new cluster resource manager,” which evolved into Pacemaker
- deletion of the new CRM from Heartbeat after Pacemaker had been split off
Regarding Pacemaker’s split from heartbeat, it evolved stepwise (as opposed to one-off cut), and the last step of full dependency is depicted in The Corosync Cluster Engine paper, fig. 10. This article also provides a good reference regarding wider historical context of the tangentially (and deeper in some cases) meeting components around that time.
7.2. Notable Restructuring Steps in the Codebase¶
File renames may not appear as notable … unless one runs into complicated
git blame
and git log
scenarios, so some more massive ones may be
stated as well.
- watchdog/’sbd’ functionality spin-off:
- daemons’ rename for 2.0 (in chronological order)
- start of moving daemon sources from their top-level directories under new /daemons hierarchy, 318a2e003
- attrd -> pacemaker-attrd, 01563cf26
- lrmd -> pacemaker-execd, 36a00e237
- pacemaker_remoted -> pacemaker-remoted, e4f4a0d64
- crmd -> pacemaker-controld, db5536e40
- pengine -> pacemaker-schedulerd, e2fdc2bac
- stonithd -> pacemaker-fenced, 038c465e2
- cib daemon -> pacemaker-based, 50584c234