aboutsummaryrefslogtreecommitdiff
path: root/weed/filesys/page_writer_pattern.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2021-12-24 22:38:22 -0800
committerchrislu <chris.lu@gmail.com>2021-12-24 22:38:22 -0800
commit083d8e9ecede84ea359962136c28ebda0ba1323b (patch)
tree85899215a275d5edbf20c806bf6123f2c78b991b /weed/filesys/page_writer_pattern.go
parent255a1c7dcd009524c34cb8c3d6fce59c6d9a03cb (diff)
downloadseaweedfs-083d8e9ecede84ea359962136c28ebda0ba1323b.tar.xz
seaweedfs-083d8e9ecede84ea359962136c28ebda0ba1323b.zip
add stream writer
this should improve streaming write performance, which is common in many cases, e.g., copying large files. This is additional to improved random read write operations: https://github.com/chrislusf/seaweedfs/wiki/FUSE-Mount/_compare/3e69d193805c79802f4f8f6cc63269b7a9a911f3...19084d87918f297cac15e2471c19306176e0771f
Diffstat (limited to 'weed/filesys/page_writer_pattern.go')
-rw-r--r--weed/filesys/page_writer_pattern.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/weed/filesys/page_writer_pattern.go b/weed/filesys/page_writer_pattern.go
index 44b69cda7..51c63d472 100644
--- a/weed/filesys/page_writer_pattern.go
+++ b/weed/filesys/page_writer_pattern.go
@@ -4,19 +4,17 @@ type WriterPattern struct {
isStreaming bool
lastWriteOffset int64
chunkSize int64
- fileName string
}
// For streaming write: only cache the first chunk
// For random write: fall back to temp file approach
// writes can only change from streaming mode to non-streaming mode
-func NewWriterPattern(fileName string, chunkSize int64) *WriterPattern {
+func NewWriterPattern(chunkSize int64) *WriterPattern {
return &WriterPattern{
isStreaming: true,
lastWriteOffset: -1,
chunkSize: chunkSize,
- fileName: fileName,
}
}
@@ -39,3 +37,8 @@ func (rp *WriterPattern) IsStreamingMode() bool {
func (rp *WriterPattern) IsRandomMode() bool {
return !rp.isStreaming
}
+
+func (rp *WriterPattern) Reset() {
+ rp.isStreaming = true
+ rp.lastWriteOffset = -1
+}