The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Version |
Location |
Description |
Submitted By |
Date submitted |
Date corrected |
PDF |
Page 28
Under the 3rd paragraph |
Missing configmap name, it should be:
`kubectl create configmap experiment-config --from-file=nginx.conf`
Note from the Author or Editor: The reporter is correct. I fixed this in the original source for future versions.
|
Kazuki Suda |
Jan 08, 2019 |
|
PDF |
Page 109-118
Chapter 10 |
Chapter 10 "Work Queue Systems" has no indexed terms. Is this intentional?
Note from the Author or Editor: There should be an index, if there isn't one this is indeed an error. I'll work with the O'Reilly folks to see what happened (I didn't write the index it was generated somehow)
|
Hayato Matsuura |
Dec 28, 2018 |
|
PDF |
Page 123
1st Paragraph |
4-KB high-resolution instead of 4-K high-resolution.
Note from the Author or Editor: The reporter is correct. 4-KB should be 4K resolution display.
I fixed this in atlas.
|
Anonymous |
Nov 19, 2018 |
Dec 14, 2018 |
|
?
Section labeled "Hands On: Deploying an Ambassador and Memcache for a Sharded Cache" |
Several instances where "memcache" was misspelled "memecache" in Chapter 6
This line:
Save this to a file named memcached-shards.yaml and you can deploy this with kubectl create -f memecached-shards.yaml
Should probably read:
... with kubectl create -f memcached-shards.yaml
Likewise, this line:
You should now have DNS entries for memecache-0.memecache, memecache-1.memcache, etc.
Should probably read:
... for memcache-0.memcache, memcache-1.memcache, etc.
"Memecache" is also mentioned here in the example service config: https://github.com/brendandburns/designing-distributed-systems/blob/master/sharded/memcached-service.yaml#L13
Note from the Author or Editor: The reporter is correct 'memecache' should be 'memcache' everywhere.
I've fixed this in atlas.
|
Charles Neill |
Oct 24, 2018 |
Dec 14, 2018 |
Printed |
Page 96
Code example for compareAndSwap |
The compareAndSwap implementation on page 96 appears to be incorrect. There are a few issues:
1. Updating an existing key with non-empty current value will always return false and an error
2. Updating an existing key with empty current value always succeeds
3. Updating a missing key with a non-empty current value will not result in an error
4. Etc...
I think the root cause of all of this, is a missing '!':
```
if _, found := store[key]; found {
```
Should be:
```
if _, found := store[key]; !found {
```
I wonder if this idea could be expressed without some of the Go complexity that may not make sense to non-Go programmers:
```
func compareAndSwap(key, nextValue, currentValue string) (bool, error) {
lock.Lock()
defer lock.Unlock()
v := store[key]
if v == currentValue {
store[key] = nextValue
return true, nil
}
if v == "" {
return false, fmt.Errorf("Expected value %s for key %s, but found empty", currentValue, key)
}
return false, nil
}
```
Not that it matters, but this also covers the case where a key is updated with an empty value.
As a side note, I felt it might be worth noting that though the example is logically relevant, compare-and-swap is typically implemented in hardware?
Thanks for the great read and for the interesting distraction!
Note from the Author or Editor: The reporter is correct. I fixed the error in the original repository in atlas.
|
Ryan Armstrong |
Aug 29, 2018 |
Dec 14, 2018 |
Printed |
Page multiple
multiple |
Figure 10-2 is the wrong image, and 9-2 has incorrect labels.
Note from the Author or Editor: Thank you. These have been fixed for the next release.
|
Justin Billing |
Aug 29, 2018 |
Dec 14, 2018 |
|
103
Last paragraph |
There is "In the first image" but second image does not exist.
Second image will be similar to the image in Figure 9-2 but "owner" in Lockserver should be "shard1.cluster.internal".
Note from the Author or Editor: Confirmed and fixed in the book's source repo.
|
Anonymous |
May 16, 2018 |
Dec 14, 2018 |
PDF, |
Page 104
Figure 9-2 |
3 nodes has the same name "shard1.cluster.internal".
But 2 of them should have the name "shad2.cluster.internal" and "Worker".
Note from the Author or Editor: Confirmed. There are three boxes on the left of that image.
In order they should read:
"shard1.cluster.internal"
"shard2.cluster.internal"
"worker"
|
Anonymous |
May 16, 2018 |
Dec 14, 2018 |
PDF |
Page 24
Bottom |
Missing name for configmap, it should be:
`kubectl create configmap twem-config --from-file=./nutcracker.yaml`
Note from the Author or Editor: Confirmed and fixed in the book's repository.
|
Fred Hsu |
May 14, 2018 |
Dec 14, 2018 |
PDF |
Page 25
Top |
The commands array for the pod should be listed as a string array instead of a YAML array. i.e.:
`command: ["nutcracker", "-c", "/etc/config/nutcracker.yaml", "-v", "7", "-s", "6222"]`
Note from the Author or Editor: Fixed in the books source repo.
|
Fred Hsu |
May 14, 2018 |
Dec 14, 2018 |
PDF |
Page 15
2nd Code snippet with docker run command |
Below command did not execute and threw error. I made change to --address to -addr 0.0.0.0:8080 resolve the issue
docker run --pid=container:${APP_ID} \
-p 8080:8080 \
brendanburns/topz:db0fa58 \
/server --address=0.0.0.0:8080
flag provided but not defined: -address
Usage of /server:
-addr string
The address to serve on (default "localhost:8080")
Following change resolved the issue.
docker run --pid=container:ms -p 8080:8080 brendanburns/topz:db0fa58 /server -addr 0.0.0.0:8080
Note from the Author or Editor: Confirmed and fixed in the Atlas repo.
|
Vijay Mateti |
Apr 13, 2018 |
Dec 14, 2018 |
PDF |
Page 110
First Graph 10-2 |
I noticed figures 10-2 and 10-3 were exactly the same and Figure 10-2’s descriptions did not align with the actual graph. Please confirm whether Figure 10-2 is correct. The book is extremely helpful for those of us that are trying to construct the most well thought out architectural patterns. Thank for making this book available!
Note from the Author or Editor: Confirmed, somehow the picture that should have been 10-2 was copied from 10-3...
|
Anonymous |
Mar 11, 2018 |
Dec 14, 2018 |
PDF |
Page 22
3rd paragraph |
"Once approach is to build all of the sharding logic..."
"Once" should be "One"
Should be "One approach is to build all of the sharding logic..."
|
Anonymous |
Feb 18, 2018 |
Dec 14, 2018 |
ePub |
Page i
1st paragraph |
At this point, nearly ever developer
should be
At this point, nearly every developer
|
Anonymous |
Jan 29, 2018 |
Feb 13, 2018 |