ZooKeeper: Wait-free Coordination for Internet-scale Systems
2010 · paper · Computer science
Describes ZooKeeper, a service for coordinating processes in distributed applications, with a wait-free interface, FIFO client request ordering and linearizable writes. For read-heavy workloads it handles tens to hundreds of thousands of transactions per second.
Checked: PDF from usenix.org, fetched 4 Oct 2026. Page numbers are those of that PDF.
4 findings
Reference or label Read Lock pseudocode ends with "6 goto 3", whereas Lock and Write Lock end with "6 goto 2" and the prose says only "lines 3 and 4 vary slightly"; returning to line 3 skips the getChildren refresh at line 2.
- p. 6 Read Lock pseudocode, line 6
6 goto 3
- p. 6 Write Lock pseudocode, line 6
6 goto 2
- p. 6 Paragraph after Read Lock pseudocode
lines 3 and 4 vary slightly because
Only the authors can say what is right here.
Judge's note: Page 6 image: Lock and Write Lock both print 'goto 2'; Read Lock prints 'goto 3'. C is assigned only at line 2. Reworking the loop with goto 3: after the watch on p fires, C is stale and still contains p, so line 3 fails again, line 4 picks the same p, exists(p) is false, and the loop repeats without progress. The prose names only lines 3 and 4 as differing, so 'goto 2' is the likely intent, but the authors should confirm.
Second check: another model agreed
Report a problem with this finding
Reference or label Figure 2 x-axis is labelled "Time in seconds" but its ticks run 0h, 6h, … 66h and the text says the trace covers "a period of three days"; the axis unit is hours.
- p. 7 Figure 2, x-axis label and ticks
Time in seconds
- p. 7 Text below Figure 2
through a period of three days
Judge's note: Page 7 image: ticks are 0h to 66h at 6h steps and the label below reads 'Time in seconds'. The caption says each point is a one-second sample, which is the sampling granularity and not the axis unit.
Second check: another model agreed
Report a problem with this finding
Wording "Thus, after event 4 the clients do not redistribute themselves until the leader fails at events 3 and 5": event 3 precedes event 4 in Figure 8 and in the event list, so redistribution after event 4 cannot wait for event 3.
- p. 12 Section 5.1, discussion of Figure 8
Thus, after event 4 the clients do not redistribute themselves until the leader fails at events 3 and 5.
- p. 11 Figure 8 event markers
4a
- p. 12 Section 5.1, last paragraph
after event 4 the clients do not redistribute themselves until the leader fails at events 3 and 5
- p. 11 Figure 8 and event list
3. Failure of the leader;
Only the authors can say what is right here.
Judge's note: Page 11 image: Figure 8 markers run in time order 1, 2, 3 (about 125 s), 4a/4b/4c (about 160-195 s), 5 (about 215 s), 6, and the list gives 3 and 5 as leader failures. Page 12 image shows the sentence as quoted. The previous sentence refers to 'events 1, 2, and 4', so the likely intent is 'after events 1, 2 and 4 ... until the leader fails at events 3 and 5'. As printed, the ordering is inconsistent.
Second check: another model agreed
Report a problem with this finding
Wording Section 5.1 says leader election recovers "fast enough to prevent throughput from dropping substantially" and "we do not observe a throughput of zero due to our sampling period", but Figure 8 shows throughput falling from about 50,000 ops/s to roughly zero at leader-failure marks 3 and 5.
- p. 12 Section 5.1, observations on Figure 8
we do not observe a throughput of zero due to our sampling period
- p. 12 Section 5.1, observations on Figure 8
recover fast enough to prevent throughput from dropping substantially
- p. 11 Figure 8, marks 3 and 5
Time series with failures
Only the authors can say what is right here.
Judge's note: On the page 11 image, the Figure 8 curve drops to the bottom of the y-axis (at or near 0) at marks 3 and 5, which the legend on the same page identifies as leader failures. The page 12 prose is printed as quoted. Whether the plotted minimum is exactly zero or a small non-zero value cannot be read from the plot, but either way the drop is far deeper than the follower-failure dips (about 30,000), so the prose misdescribes the figure. I found no statement elsewhere in the text that reconciles the two. Only the authors can say whether the wording or the figure is intended.
Second check: another model agreed
Report a problem with this finding
17 minor (typos and the like; most checked by the judge only)
Reference or label Reference [30] reads "Horus, a flexible group communication systems. Communications of the ACM, 39(16), Apr. 1996.": the title has a number disagreement ("a ... systems") and issue number 16 looks implausible for an April issue.
- p. 14 Reference [30]
Communications of the ACM, 39(16), Apr.
- p. 14 Reference [30]
Horus, a flexible group communication systems
Only the authors can say what is right here.
Judge's note: Rests on outside knowledge: that Communications of the ACM is a monthly journal, so its April issue would be number 4 rather than 16. The entry is printed as quoted on the page 14 image. The title's "a ... systems" mismatch is visible on the page without outside knowledge. The correct issue number cannot be verified from the files.
Second check: another model agreed
Report a problem with this finding
Wording Simple Locks paragraph: "the client can read the znode with the watch flag set to be notified if the current leader dies"; the recipe defines a lock holder, not a leader.
- p. 6 Section 2.4, Simple Locks, second paragraph
to be notified if the current leader dies
Judge's note: Page 6 image, Simple Locks second paragraph, shows the text as quoted. No leader is introduced in this recipe, and the next sentence returns to 'A client releases the lock when it dies'. Probably a carry-over from leader-election use of locks; the meaning is recoverable.
Second check: another model agreed
Report a problem with this finding
Wording Section 5 says "We split the following discussion into two parts: throughput and latency of requests" but contains a third subsection, "5.3 Performance of barriers".
- p. 10 Section 5, opening paragraph
We split the following discussion into two parts: throughput and latency of requests.
- p. 12 Section 5.3 heading
5.3 Performance of barriers
Judge's note: Page 10 image shows the roadmap sentence; page 12 image shows the heading 5.3 with its own Table 3. The roadmap is incomplete, with no effect on the data.
Second check: another model agreed
Report a problem with this finding
Wording Text says "the curve for three servers crosses the others around 60%"; in Figure 5 the 3-server curve is the highest at low read ratios and is first crossed (by 5 servers) at roughly 70-75% reads, and by the others later still.
- p. 10 Section 5.1, discussion of Figure 5
Note that the curve for three servers crosses the others around 60%.
- p. 10 Figure 5
Throughput of saturated system
- p. 10 Section 5.1, text beside Figure 5
the curve for three servers crosses the others around 60%
Judge's note: Read from the page 10 image and crop C013-b. The red 3-server curve lies above all the others up to about 70%; the 5-server curve crosses it just below 75%, the 7- and 9-server curves at about 80-85%, and the 13-server curve at about 95%. At 60% the 3-server curve is still on top. The reviewer note that puts the 3-server curve below the others has the direction reversed. Plot reading is approximate and the text says 'around', so this is a loose description and not a firm error.
Second check: another model agreed
Report a problem with this finding
Wording "average request latency is 1.2ms for three servers and 1.4ms for 9 servers": Table 2 gives 776 creates/s for one worker on 3 servers, whose reciprocal is about 1.29 ms (1.3 ms rounded); the 9-server figure (711/s, 1.41 ms) agrees.
- p. 12 Section 5.2, last paragraph
average request latency is 1.2ms for three servers and 1.4ms for 9 servers
- p. 12 Table 2, row Workers = 1
776
- p. 12 Section 5.2
average request latency is 1.2ms for three servers
- p. 12 Section 5.2, last sentence
average request latency is 1.2ms for three servers and
Only the authors can say what is right here.
Judge's note: Page 12 image: Table 2, Workers = 1 row reads 776 / 748 / 758 / 711, and the text says the single-worker throughput 'indicates' the latency. The 3-server value matches only if truncated, not rounded. The paper does not say whether the latency was measured separately or truncated, and the worker also sends an asynchronous delete, so only the authors can settle it. The gap is 0.1 ms.
Second check: another model agreed
Report a problem with this finding
Typo Section 1 prints "Our system, Zookeeper," with a lower-case k; the name is "ZooKeeper" elsewhere, including the same paragraph.
- p. 1 Section 1, fifth paragraph
Our system, Zookeeper,
Judge's note: Crop C001-a shows the unbroken word 'Zookeeper', while the next sentences of the same paragraph print 'ZooKeeper'. Not a line-break artefact.
Second check: none (judge only)
Report a problem with this finding
Typo Section 2.1 Sessions: "ZooKeeper detects that a clients is faulty" should read 'a client is faulty'.
- p. 3 Section 2.1, Sessions paragraph
ZooKeeper detects that a clients is faulty
- p. 3 Sessions paragraph
detects that a clients is faulty
Judge's note: Page 3 image, Sessions paragraph, shows 'a clients is faulty' as quoted.
Second check: none (judge only)
Report a problem with this finding
Typo Inconsistent spelling: "The hierarchal namespace is useful" (p. 3) and "space in Dynamo is not hierarchal" (p. 13), where the paper elsewhere writes "hierarchical" (e.g. "hierarchical name space", "hierarchical keys").
- p. 13 Section 6, Dynamo comparison
space in Dynamo is not hierarchal
- p. 3 Section 2.1, Data model
The hierarchal namespace is useful
- p. 3 Data model
The hierarchal namespace
- p. 13 Related work (Dynamo)
is not hierarchal
Judge's note: Both instances seen on images: the page 3 crop and the page 13 page image. The text layer shows "hierarchical" used elsewhere, including the sentence immediately before the page 3 instance. "Hierarchal" is a recognised variant spelling, so this is an internal inconsistency rather than a clear error.
Second check: none (judge only)
Report a problem with this finding
Typo Section 2.2: "Not only does this choice simplifies the API" should read 'simplify'.
- p. 4 Section 2.2, paragraph after the API list
Not only does this choice simplifies the API
- p. 4 Section 2.2
Not only does this choice
Judge's note: Page 4 image, left column, shows the text as quoted.
Second check: none (judge only)
Report a problem with this finding
Typo Section 2.2: "Each of the update methods take an expected version number"; singular 'Each' calls for 'takes'.
- p. 4 Section 2.2
Each of the update methods take an expected ver-
Judge's note: Page 4 image, left column, shows the text as quoted. Minor subject-verb agreement slip.
Second check: none (judge only)
Report a problem with this finding
Typo Section 2.4 Rendezvous: "a rendezvous znode, z_r, which is an node created by the client" has the wrong article ('a node', or a word is missing).
- p. 5 Section 2.4, Rendezvous
which is an node
Judge's note: Crop C005-a shows 'which is an node created by the client'.
Second check: none (judge only)
Report a problem with this finding
Typo Section 5.1: "The graph also shows that the number of servers also has a negative impact" repeats 'also' in one clause.
- p. 10 Section 5.1, paragraph after Table 1
The graph also shows that the number of servers also has
Judge's note: Page 10 image, right column, shows the sentence as quoted. Stylistic redundancy; either 'also' could be dropped.
Second check: none (judge only)
Report a problem with this finding
Typo Subject-verb disagreement in Section 5.2: "Table 2 show the results of our benchmark." should read "Table 2 shows".
- p. 12 Section 5.2, paragraph after Table 2
Table 2 show the results of our benchmark.
Judge's note: Read on the page 12 image, in the paragraph directly under Table 2. The text is printed as quoted; a plain grammar slip.
Second check: none (judge only)
Report a problem with this finding
Typo Stray full stop before the citation in Section 6: "tine fault-tolerant protocol. [29]." leaves the citation detached from its sentence, with a second full stop after it.
- p. 13 Section 6, end of Byzantine paragraph
tine fault-tolerant protocol. [29].
- p. 13 Related work
fully Byzan-tine fault-tolerant protocol. [29].
Judge's note: Read on the page 13 image, at the end of the left column. The punctuation is printed as quoted. Cosmetic.
Second check: none (judge only)
Report a problem with this finding
Typo Missing verb in Section 7: "fast reads with watches, both of which served by local replicas" should read "both of which are served".
- p. 13 Section 7
both of which served by local replicas
Judge's note: Read on the page 13 image, in the Conclusions. The text is printed as quoted; a word is missing.
Second check: none (judge only)
Report a problem with this finding
Typo Misspelling in the last sentence of Section 7: "not only course-grained locking" should read "coarse-grained locking".
- p. 14 Section 7, last sentence
only course-grained locking
- p. 14 Conclusions, last paragraph
not only course-grained locking
Judge's note: Read on the page 14 image, top of the left column. The text is printed as quoted; a plain spelling slip.
Second check: none (judge only)
Report a problem with this finding
Typo Reference [10] prints the fifth author as "L. Shira"; the reviewer says the HQ replication paper's author is L. Shrira.
- p. 14 Reference [10]
L. Shira
Only the authors can say what is right here.
Judge's note: Rests on outside knowledge: that the fifth author of the cited HQ replication paper is spelled "Shrira". The page 14 image does print "L. Shira" in reference [10]. The correct spelling cannot be verified from the files.
Second check: none (judge only)