From 2b996b603811df98afb08ff12bde53134f7a70bf Mon Sep 17 00:00:00 2001 From: Aaron Lehmann Date: Tue, 9 Aug 2016 15:29:40 -0700 Subject: [PATCH] wal: Export SegmentSizeBytes as a variable 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. --- wal/wal.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/wal/wal.go b/wal/wal.go index e9ca81e2a2d..ad1acb600c0 100644 --- a/wal/wal.go +++ b/wal/wal.go @@ -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") @@ -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 } @@ -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 @@ -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() }