tablet: add comment to summarize the bootstrap
In the few times I've had to peruse tablet bootstrapping code, I've been
disappointed there isn't a high-level summary of what the bootstrap
process entails with regards to WAL replay. So, I took a stab at it in
hopes it might make the job for future readers a bit easier.
Change-Id: I32d699efd97a3fdf57f47c30eded53f93f4553b7
Reviewed-on: http://gerrit.cloudera.org:8080/16468
Reviewed-by: Alexey Serbin <aserbin@cloudera.com>
Tested-by: Kudu Jenkins
diff --git a/src/kudu/tablet/tablet_bootstrap.cc b/src/kudu/tablet/tablet_bootstrap.cc
index e691191..298c962 100644
--- a/src/kudu/tablet/tablet_bootstrap.cc
+++ b/src/kudu/tablet/tablet_bootstrap.cc
@@ -184,6 +184,23 @@
// rest of the consensus configuration, or it can start serving the data itself, after it
// has been appointed LEADER of that particular consensus configuration.
//
+// The high-level steps to replay the WAL are as follows:
+// for each segment in the WAL:
+// for each entry in the segment:
+// - If the entry is a replicate message, keep track of it and write it to
+// the new WAL, since we may find a corresponding commit message later.
+// - If the entry is a commit message, determine whether or not we have a
+// corresponding replicate message in the WAL, and if so, replay the op,
+// skipping operations whose mem-stores have been persisted to disk. If
+// no replicate message is found, we can skip replaying the op since its
+// mutation has been persisted to disk.
+// for each commit message with no corresponding replicate message:
+// - Validate that the mutated stores are non-active.
+// for each replicate message with no corresponding commit message:
+// - Return the replicate message as an "orphaned replicate".
+// - When the RaftConsensus instance starts up, orphaned replicates are
+// initialized as follower ops.
+//
// NOTE: this does not handle pulling data from other replicas in the cluster. That
// is handled by the 'TabletCopy' classes, which copy blocks and metadata locally
// before invoking this local bootstrap functionality to start the tablet.