diff options
Diffstat (limited to 'weed/filesys/page_writer/upload_pipeline.go')
| -rw-r--r-- | weed/filesys/page_writer/upload_pipeline.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/weed/filesys/page_writer/upload_pipeline.go b/weed/filesys/page_writer/upload_pipeline.go index 47693c235..65b41e9fa 100644 --- a/weed/filesys/page_writer/upload_pipeline.go +++ b/weed/filesys/page_writer/upload_pipeline.go @@ -65,10 +65,18 @@ func (up *UploadPipeline) SaveDataAt(p []byte, off int64) (n int) { if len(up.writableChunks) < 16 { memChunk = NewMemChunk(logicChunkIndex, up.ChunkSize) } else { - memChunk = up.swapFile.NewTempFileChunk(logicChunkIndex) - if memChunk == nil { - memChunk = NewMemChunk(logicChunkIndex, up.ChunkSize) + fullestChunkIndex, fullness := LogicChunkIndex(-1), int64(0) + for lci, mc := range up.writableChunks { + chunkFullness := mc.WrittenSize() + if fullness < chunkFullness { + fullestChunkIndex = lci + fullness = chunkFullness + } } + up.moveToSealed(up.writableChunks[fullestChunkIndex], fullestChunkIndex) + delete(up.writableChunks, fullestChunkIndex) + fmt.Printf("flush chunk %d with %d bytes written", logicChunkIndex, fullness) + memChunk = NewMemChunk(logicChunkIndex, up.ChunkSize) } up.writableChunks[logicChunkIndex] = memChunk } |
