raul

raul

Distributed Services with Go: Chapter 3 suggestions

Page 28: It implements io.ReaderAt on the store type.

  • Sorry if it’s a dumb question but was the io.ReaderAt supposed to be io.ReadAt?

Page 29:
func (s *store) Close() error {
s.mu.Lock()
defer s.mu.Unlock()
err := s.buf.Flush()
if err != nil {
return err
}

  • Possibly:
    if err := s.buf.Flush(); err != nil {
    return err
    }

Page 31: At the end of store_test.go

  • Could you please include instructions/Makefile to execute the tests?
  • I finally managed to run them by cd’ing into internal/log and running ‘go test -v’ but this was after a bunch of failed attempts at running them.

Page 30-50: I would suggest running the tests after each of the Store, Index, and Segment would help people stay more engaged? Otherwise it seems too much (25 pages) code reading without interactivity.

Page 34: an ungraceful shutdown

  • Does ‘forceful’ shutdown sound more appealing than ‘ungraceful’?

Page 37: type Config struct {

  • I was trying to execute index_test.go and index.go and was trying to figure out what the unresolved Config was. Would it help to move this definition ahead of usage?

Page 36: Then we verify that the index and scanner error when

  • that the index and scanner ‘throw an error’ when?

Page 37: We need the next and base offsets to know…

  • This isn’t clear. Could you please consider drawing a simple picture to clarify this better?

Page 39: func (s *segment) Append(record *api.Record) (offset uint64, err error) {

  • Please consider forward declaring the definition of Record to make compilation and execution possible.

Page 41: import (
“fmt”
“os”
“path”

"github.com/gogo/protobuf/proto"
api "github.com/travisjeffery/proglog/api/v1"

)

Page 43: api “github.com/travisjeffery/proglog/api/v1

Page 43: Next, add the this setup() method below NewLog()

  • Next, add ‘this’ setup() method below NewLog()

Page 48: api “github.com/travisjeffery/proglog/api/v1

Page 51: testReader(*testing.T, *log.Log) tests that we can read the full, raw log as it’s stored on disk so that on, when we can snapshot

  • so that on ‘startup’?, when we can snapshot - something is off here

First Post!

yamoinza

yamoinza

Chapter 3, segment.go, code reads as “substract segment baseOffset from nextOffset”:

// index offsets are relative to base offset
uint32(s.nextOffset-uint64(s.baseOffset)),

but text reads as “we subtract the segment’s next offset from its base offset”.

Where Next?

Popular Pragmatic Bookshelf topics Top

johnp
Hi Brian, Looks like the api for tinydb has changed a little. Noticed while working on chapter 7 that the .purge() call to the db throws...
New
raul
Hi Travis! Thank you for the cool book! :slight_smile: I made a list of issues and thought I could post them chapter by chapter. I’m rev...
New
AleksandrKudashkin
On the page xv there is an instruction to run bin/setup from the main folder. I downloaded the source code today (12/03/21) and can’t see...
New
swlaschin
The book has the same “Problem space/Solution space” diagram on page 18 as is on page 17. The correct Problem/Solution space diagrams ar...
New
leba0495
Hello! Thanks for the great book. I was attempting the Trie (chap 17) exercises and for number 4 the solution provided for the autocorre...
New
nicoatridge
Hi, I have just acquired Michael Fazio’s “Kotlin and Android Development” to learn about game programming for Android. I have a game in p...
New
digitalbias
Title: Build a Weather Station with Elixir and Nerves: Problem connecting to Postgres with Grafana on (page 64) If you follow the defau...
New
adamwoolhether
Is there any place where we can discuss the solutions to some of the exercises? I can figure most of them out, but am having trouble with...
New
jonmac
The allprojects block listed on page 245 produces the following error when syncing gradle: “org.gradle.api.GradleScriptException: A prob...
New
Keton
When running the program in chapter 8, “Implementing Combat”, the printout Health before attack was never printed so I assumed something ...
New

Other popular topics Top

PragmaticBookshelf
Design and develop sophisticated 2D games that are as much fun to make as they are to play. From particle effects and pathfinding to soci...
New
AstonJ
SpaceVim seems to be gaining in features and popularity and I just wondered how it compares with SpaceMacs in 2020 - anyone have any thou...
New
New
AstonJ
We have a thread about the keyboards we have, but what about nice keyboards we come across that we want? If you have seen any that look n...
New
mafinar
This is going to be a long an frequently posted thread. While talking to a friend of mine who has taken data structure and algorithm cou...
New
PragmaticBookshelf
Author Spotlight Jamis Buck @jamis This month, we have the pleasure of spotlighting author Jamis Buck, who has written Mazes for Prog...
New
AstonJ
If you want a quick and easy way to block any website on your Mac using Little Snitch simply… File > New Rule: And select Deny, O...
New
New
New
mindriot
Ok, well here are some thoughts and opinions on some of the ergonomic keyboards I have, I guess like mini review of each that I use enoug...
New

Sub Categories: