diff options
| author | Chris Lu <chris.lu@gmail.com> | 2013-01-17 00:15:13 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2013-01-17 00:15:13 -0800 |
| commit | 50fafa3a2c4bc1b830cac5e7ae0043f2be05dc08 (patch) | |
| tree | b3b57d522408b976dec9bce8cbf0b5a7993e0dd0 /weed-fs/src/pkg | |
| parent | a502b78c3f35f2cec42494e67afd02ad22b02754 (diff) | |
| download | seaweedfs-50fafa3a2c4bc1b830cac5e7ae0043f2be05dc08.tar.xz seaweedfs-50fafa3a2c4bc1b830cac5e7ae0043f2be05dc08.zip | |
Revert "sort writables to be able to skew write probability to lesser ids (older volumes)"
This reverts commit ce7394f3bfe50b6dcb7ff1682bd7e5e1b5574da2.
Diffstat (limited to 'weed-fs/src/pkg')
| -rw-r--r-- | weed-fs/src/pkg/topology/volume_layout.go | 40 |
1 files changed, 5 insertions, 35 deletions
diff --git a/weed-fs/src/pkg/topology/volume_layout.go b/weed-fs/src/pkg/topology/volume_layout.go index 23802ca81..314aca69f 100644 --- a/weed-fs/src/pkg/topology/volume_layout.go +++ b/weed-fs/src/pkg/topology/volume_layout.go @@ -5,15 +5,12 @@ import ( "fmt" "math/rand" "pkg/storage" - "sort" ) -type volumeIdList []storage.VolumeId - type VolumeLayout struct { repType storage.ReplicationType vid2location map[storage.VolumeId]*VolumeLocationList - writables volumeIdList // transient (sorted!) array of writable volume Ids + writables []storage.VolumeId // transient array of writable volume id pulse int64 volumeSizeLimit uint64 } @@ -22,7 +19,7 @@ func NewVolumeLayout(repType storage.ReplicationType, volumeSizeLimit uint64, pu return &VolumeLayout{ repType: repType, vid2location: make(map[storage.VolumeId]*VolumeLocationList), - writables: make(volumeIdList, 0, 4), + writables: *new([]storage.VolumeId), pulse: pulse, volumeSizeLimit: volumeSizeLimit, } @@ -36,16 +33,13 @@ func (vl *VolumeLayout) RegisterVolume(v *storage.VolumeInfo, dn *DataNode) { if len(vl.vid2location[v.Id].list) == v.RepType.GetCopyCount() { if vl.isWritable(v) { vl.writables = append(vl.writables, v.Id) - if len(vl.writables) > 1 { - vl.writables.Sort() - } } } } } -func (vl *VolumeLayout) isWritable(v *storage.VolumeInfo) bool { - return uint64(v.Size) < vl.volumeSizeLimit && v.Version == storage.CurrentVersion +func (vl *VolumeLayout) isWritable(v *storage.VolumeInfo) bool{ + return uint64(v.Size) < vl.volumeSizeLimit && v.Version == storage.CurrentVersion } func (vl *VolumeLayout) Lookup(vid storage.VolumeId) []*DataNode { @@ -58,13 +52,7 @@ func (vl *VolumeLayout) PickForWrite(count int) (*storage.VolumeId, int, *Volume fmt.Println("No more writable volumes!") return nil, 0, nil, errors.New("No more writable volumes!") } - var vid storage.VolumeId - if len_writers == 1 { - vid = vl.writables[0] - } else { - // skew for lesser indices - vid = vl.writables[rand.Intn(len_writers+1)%len_writers] - } + vid := vl.writables[rand.Intn(len_writers)] locationList := vl.vid2location[vid] if locationList != nil { return &vid, count, locationList, nil @@ -94,9 +82,6 @@ func (vl *VolumeLayout) setVolumeWritable(vid storage.VolumeId) bool { } fmt.Println("Volume", vid, "becomes writable") vl.writables = append(vl.writables, vid) - if len(vl.writables) > 1 { - vl.writables.Sort() - } return true } @@ -129,18 +114,3 @@ func (vl *VolumeLayout) ToMap() interface{} { //m["locations"] = vl.vid2location return m } - -func (vls volumeIdList) Len() int { return len(vls) } - -func (vls volumeIdList) Less(i, j int) bool { - return vls[i] < vls[j] -} - -func (vls volumeIdList) Swap(i, j int) { - vls[i], vls[j] = vls[j], vls[i] -} - -// convienence sorting -func (vls volumeIdList) Sort() { - sort.Sort(vls) -} |
