From fc71116a512dbfe4069ef8b1c8a5513a1030e4aa Mon Sep 17 00:00:00 2001 From: leonrayang Date: Tue, 15 Oct 2024 22:16:40 +0800 Subject: [PATCH] fix(client): enable Datanode with version 3.3.2 compatible with client 3.4.0 Signed-off-by: leonrayang --- sdk/data/stream/packet.go | 8 ++++++-- sdk/data/stream/stream_writer.go | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sdk/data/stream/packet.go b/sdk/data/stream/packet.go index bd041fba3..ee558ef76 100644 --- a/sdk/data/stream/packet.go +++ b/sdk/data/stream/packet.go @@ -99,7 +99,7 @@ func NewOverwriteByAppendPacket(dp *wrapper.DataPartition, extentID uint64, exte } // NewOverwritePacket returns a new overwrite packet. -func NewOverwritePacket(dp *wrapper.DataPartition, extentID uint64, extentOffset int, inode uint64, fileOffset int) *Packet { +func NewOverwritePacket(dp *wrapper.DataPartition, extentID uint64, extentOffset int, inode uint64, fileOffset int, isSnap bool) *Packet { p := new(Packet) p.PartitionID = dp.PartitionID p.Magic = proto.ProtoMagic @@ -110,7 +110,11 @@ func NewOverwritePacket(dp *wrapper.DataPartition, extentID uint64, extentOffset p.Arg = nil p.ArgLen = 0 p.RemainingFollowers = 0 - p.Opcode = proto.OpRandomWriteVer // proto.OpRandomWrite + if isSnap { + p.Opcode = proto.OpRandomWriteVer // proto.OpRandomWrite + } else { + p.Opcode = proto.OpRandomWrite // proto.OpRandomWrite + } p.inode = inode p.KernelOffset = uint64(fileOffset) p.Data, _ = proto.Buffers.Get(util.BlockSize) diff --git a/sdk/data/stream/stream_writer.go b/sdk/data/stream/stream_writer.go index 0c139bcf4..b0d3299c7 100644 --- a/sdk/data/stream/stream_writer.go +++ b/sdk/data/stream/stream_writer.go @@ -622,7 +622,8 @@ func (s *Streamer) doOverwrite(req *ExtentRequest, direct bool) (total int, err sc := NewStreamConn(dp, false, s.client.streamRetryTimeout) for total < size { - reqPacket := NewOverwritePacket(dp, req.ExtentKey.ExtentId, offset-ekFileOffset+total+ekExtOffset, s.inode, offset) + reqPacket := NewOverwritePacket(dp, req.ExtentKey.ExtentId, offset-ekFileOffset+total+ekExtOffset, + s.inode, offset, s.client.dataWrapper.IsSnapshotEnabled) if s.client.dataWrapper.IsSnapshotEnabled { reqPacket.VerSeq = s.verSeq reqPacket.VerList = make([]*proto.VolVersionInfo, len(s.client.multiVerMgr.verList.VerList))