Browse Source

monitor write pattern: avoid timing due to locking

pull/2550/head
chrislu 3 years ago
parent
commit
2422556456
  1. 5
      weed/filesys/filehandle.go
  2. 2
      weed/filesys/page_writer.go

5
weed/filesys/filehandle.go

@ -3,7 +3,6 @@ package filesys
import (
"context"
"fmt"
"github.com/chrislusf/seaweedfs/weed/filesys/page_writer"
"io"
"math"
"net/http"
@ -21,7 +20,7 @@ import (
type FileHandle struct {
// cache file has been written to
dirtyPages page_writer.DirtyPages
dirtyPages *PageWriter
entryViewCache []filer.VisibleInterval
reader io.ReaderAt
contentType string
@ -177,6 +176,8 @@ func (fh *FileHandle) Write(ctx context.Context, req *fuse.WriteRequest, resp *f
fh.Add(1)
defer fh.Done()
fh.dirtyPages.writerPattern.MonitorWriteAt(req.Offset, len(req.Data))
fh.Lock()
defer fh.Unlock()

2
weed/filesys/page_writer.go

@ -35,8 +35,6 @@ func newPageWriter(file *File, chunkSize int64) *PageWriter {
func (pw *PageWriter) AddPage(offset int64, data []byte) {
pw.writerPattern.MonitorWriteAt(offset, len(data))
glog.V(4).Infof("%v AddPage [%d, %d) streaming:%v", pw.f.fullpath(), offset, offset+int64(len(data)), pw.writerPattern.IsStreamingMode())
chunkIndex := offset / pw.chunkSize

Loading…
Cancel
Save