Skip to content

Commit

Permalink
wal: Export SegmentSizeBytes as a variable
Browse files Browse the repository at this point in the history
In test situations, it's useful to create smaller than usual WAL files
to test rotation and to avoid the overhead of preallocation on old-style
filesystems that don't handle it efficiently. This commit changes
segmentSizeBytes to an exported variable so that tests can override it
from an init() function.
  • Loading branch information
aaronlehmann committed Aug 9, 2016
1 parent 88a77f3 commit 2b996b6
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions wal/wal.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,18 @@ const (
crcType
snapshotType

// the expected size of each wal segment file.
// the actual size might be bigger than it.
segmentSizeBytes = 64 * 1000 * 1000 // 64MB

// warnSyncDuration is the amount of time allotted to an fsync before
// logging a warning
warnSyncDuration = time.Second
)

var (
// SegmentSizeBytes is the preallocated size of each wal segment file.
// The actual size might be larger than this. In general, the default
// value should be used, but this is defined as an exported variable
// so that tests can set a different segment size.
SegmentSizeBytes int64 = 64 * 1000 * 1000 // 64MB

plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "wal")

ErrMetadataConflict = errors.New("wal: conflicting metadata found")
Expand Down Expand Up @@ -109,7 +111,7 @@ func Create(dirpath string, metadata []byte) (*WAL, error) {
if _, err := f.Seek(0, os.SEEK_END); err != nil {
return nil, err
}
if err := fileutil.Preallocate(f.File, segmentSizeBytes, true); err != nil {
if err := fileutil.Preallocate(f.File, SegmentSizeBytes, true); err != nil {
return nil, err
}

Expand Down Expand Up @@ -219,7 +221,7 @@ func openAtIndex(dirpath string, snap walpb.Snapshot, write bool) (*WAL, error)
closer()
return nil, err
}
w.fp = newFilePipeline(w.dir, segmentSizeBytes)
w.fp = newFilePipeline(w.dir, SegmentSizeBytes)
}

return w, nil
Expand Down Expand Up @@ -526,7 +528,7 @@ func (w *WAL) Save(st raftpb.HardState, ents []raftpb.Entry) error {
if err != nil {
return err
}
if curOff < segmentSizeBytes {
if curOff < SegmentSizeBytes {
if mustSync {
return w.sync()
}
Expand Down

0 comments on commit 2b996b6

Please sign in to comment.