goGFS icon indicating copy to clipboard operation
goGFS copied to clipboard

Unused variable lock in chunkserver.go

Open mrmitzh opened this issue 4 years ago • 0 comments

It seems that we need to do something when lock variable is true. Otherwise, how can we make sure append operation is different from write operations?

// writeChunk writes data at offset to a chunk at disk
func (cs *ChunkServer) writeChunk(handle gfs.ChunkHandle, data []byte, offset gfs.Offset, lock bool) error {
	cs.lock.RLock()
	ck := cs.chunk[handle]
	cs.lock.RUnlock()

	// ck is already locked in top caller
	newLen := offset + gfs.Offset(len(data))
	if newLen > ck.length {
		ck.length = newLen
	}

	if newLen > gfs.MaxChunkSize {
		log.Fatal("new length > gfs.MaxChunkSize")
	}

	log.Infof("Server %v : write to chunk %v at %v len %v", cs.address, handle, offset, len(data))
	filename := path.Join(cs.rootDir, fmt.Sprintf("chunk%v.chk", handle))
	file, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE, FilePerm)
	if err != nil {
		return err
	}
	defer file.Close()

	_, err = file.WriteAt(data, int64(offset))
	if err != nil {
		return err
	}

	return nil
}

mrmitzh avatar Mar 13 '20 05:03 mrmitzh