aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-11-18 11:51:38 -0800
committerChris Lu <chris.lu@gmail.com>2018-11-18 11:51:38 -0800
commit4fcfc9410fd407165d7bb1c047bcd21e5b2b7dde (patch)
treefabdbc2da727e125ec354f5f6f8de2f7589e5bb0
parent9655dc9ca95312d578d60e71d839a6b9971a7bea (diff)
downloadseaweedfs-4fcfc9410fd407165d7bb1c047bcd21e5b2b7dde.tar.xz
seaweedfs-4fcfc9410fd407165d7bb1c047bcd21e5b2b7dde.zip
cleanup
-rw-r--r--weed/filer2/filechunks.go24
-rw-r--r--weed/filer2/filechunks_test.go3
-rw-r--r--weed/filer2/filer.go5
-rw-r--r--weed/filesys/filehandle.go4
-rw-r--r--weed/operation/delete_content.go4
-rw-r--r--weed/topology/cluster_commands.go2
6 files changed, 34 insertions, 8 deletions
diff --git a/weed/filer2/filechunks.go b/weed/filer2/filechunks.go
index 7fd4af5df..79aa50ec8 100644
--- a/weed/filer2/filechunks.go
+++ b/weed/filer2/filechunks.go
@@ -4,6 +4,7 @@ import (
"fmt"
"hash/fnv"
"sort"
+ "sync"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
)
@@ -46,6 +47,8 @@ func CompactFileChunks(chunks []*filer_pb.FileChunk) (compacted, garbage []*file
}
}
+ cleanupIntervals(visibles)
+
return
}
@@ -89,6 +92,8 @@ func ViewFromChunks(chunks []*filer_pb.FileChunk, offset int64, size int) (views
}
}
+ cleanupIntervals(visibles)
+
return views
}
@@ -102,6 +107,12 @@ func logPrintf(name string, visibles []*visibleInterval) {
*/
}
+var bufPool = sync.Pool{
+ New: func() interface{} {
+ return new(visibleInterval)
+ },
+}
+
func mergeIntoVisibles(visibles []*visibleInterval, chunk *filer_pb.FileChunk) (newVisibles []*visibleInterval) {
for _, v := range visibles {
if v.start < chunk.Offset && chunk.Offset < v.stop {
@@ -153,6 +164,12 @@ func nonOverlappingVisibleIntervals(chunks []*filer_pb.FileChunk) (visibles []*v
return
}
+func cleanupIntervals(visibles []*visibleInterval) {
+ for _, v := range visibles {
+ bufPool.Put(v)
+ }
+}
+
// find non-overlapping visible intervals
// visible interval map to one file chunk
@@ -164,7 +181,12 @@ type visibleInterval struct {
}
func newVisibleInterval(start, stop int64, fileId string, modifiedTime int64) *visibleInterval {
- return &visibleInterval{start: start, stop: stop, fileId: fileId, modifiedTime: modifiedTime}
+ b := bufPool.Get().(*visibleInterval)
+ b.start = start
+ b.stop = stop
+ b.fileId = fileId
+ b.modifiedTime = modifiedTime
+ return b
}
func min(x, y int64) int64 {
diff --git a/weed/filer2/filechunks_test.go b/weed/filer2/filechunks_test.go
index 90aa3df36..1b124981f 100644
--- a/weed/filer2/filechunks_test.go
+++ b/weed/filer2/filechunks_test.go
@@ -161,6 +161,9 @@ func TestIntervalMerging(t *testing.T) {
if len(intervals) != len(testcase.Expected) {
t.Fatalf("failed to compact test case %d, len %d expected %d", i, len(intervals), len(testcase.Expected))
}
+
+ cleanupIntervals(intervals)
+
}
}
diff --git a/weed/filer2/filer.go b/weed/filer2/filer.go
index 1c9f2cde4..f6f013933 100644
--- a/weed/filer2/filer.go
+++ b/weed/filer2/filer.go
@@ -3,6 +3,7 @@ package filer2
import (
"context"
"fmt"
+ "math"
"os"
"path/filepath"
"strings"
@@ -13,7 +14,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/chrislusf/seaweedfs/weed/wdclient"
"github.com/karlseguin/ccache"
- "math"
+ "github.com/chrislusf/seaweedfs/weed/storage"
)
type Filer struct {
@@ -240,7 +241,7 @@ func (f *Filer) DeleteFileByFileId(fileId string) {
if err != nil {
glog.V(0).Infof("can not find file %s: %v", fileId, err)
}
- if _, err := operation.DeleteFilesAtOneVolumeServer(volumeServer, []string{fileId}); err != nil {
+ if _, err := operation.DeleteFilesAtOneVolumeServer(volumeServer, []string{fileId}); err != nil && err != storage.NotFound{
glog.V(0).Infof("deleting file %s: %v", fileId, err)
}
}
diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go
index 78ae5d342..c640755ee 100644
--- a/weed/filesys/filehandle.go
+++ b/weed/filesys/filehandle.go
@@ -188,8 +188,8 @@ func (fh *FileHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error {
chunk, err := fh.dirtyPages.FlushToStorage(ctx)
if err != nil {
- glog.Errorf("flush %s/%s to %s [%d,%d): %v", fh.f.dir.Path, fh.f.Name, chunk.FileId, chunk.Offset, chunk.Offset+int64(chunk.Size), err)
- return fmt.Errorf("flush %s/%s to %s [%d,%d): %v", fh.f.dir.Path, fh.f.Name, chunk.FileId, chunk.Offset, chunk.Offset+int64(chunk.Size), err)
+ glog.Errorf("flush %s/%s: %v", fh.f.dir.Path, fh.f.Name, err)
+ return fmt.Errorf("flush %s/%s: %v", fh.f.dir.Path, fh.f.Name, err)
}
if chunk != nil {
fh.f.entry.Chunks = append(fh.f.entry.Chunks, chunk)
diff --git a/weed/operation/delete_content.go b/weed/operation/delete_content.go
index 72041f126..806bfbe7b 100644
--- a/weed/operation/delete_content.go
+++ b/weed/operation/delete_content.go
@@ -105,7 +105,7 @@ func DeleteFilesAtOneVolumeServer(volumeServer string, fileIds []string) (ret []
resp, err := volumeServerClient.BatchDelete(context.Background(), req)
- fmt.Printf("deleted %v %v: %v\n", fileIds, err, resp)
+ // fmt.Printf("deleted %v %v: %v\n", fileIds, err, resp)
if err != nil {
return err
@@ -121,7 +121,7 @@ func DeleteFilesAtOneVolumeServer(volumeServer string, fileIds []string) (ret []
}
for _, result := range ret {
- if result.Error != "" {
+ if result.Error != "" && result.Error != "Not Found" {
return nil, fmt.Errorf("delete fileId %s: %v", result.FileId, result.Error)
}
}
diff --git a/weed/topology/cluster_commands.go b/weed/topology/cluster_commands.go
index bb44669b2..7a36c25ec 100644
--- a/weed/topology/cluster_commands.go
+++ b/weed/topology/cluster_commands.go
@@ -25,7 +25,7 @@ func (c *MaxVolumeIdCommand) Apply(server raft.Server) (interface{}, error) {
before := topo.GetMaxVolumeId()
topo.UpAdjustMaxVolumeId(c.MaxVolumeId)
- glog.V(0).Infoln("max volume id", before, "==>", topo.GetMaxVolumeId())
+ glog.V(1).Infoln("max volume id", before, "==>", topo.GetMaxVolumeId())
return nil, nil
}