@@ -46,7 +46,7 @@ type gRPCAppendBidiWriteBufferSender struct {
4646 progress func (int64 )
4747 flushOffset int64
4848 takeoverOffset int64
49- takeoverObj * storagepb.Object // Object returned by takeover stream reopening .
49+ objResource * storagepb.Object // Captures received obj to set w.Attrs .
5050
5151 // Fields used to report responses from the receive side of the stream
5252 // recvs is closed when the current recv goroutine is complete. recvErr is set
@@ -96,14 +96,14 @@ func (w *gRPCWriter) newGRPCAppendTakeoverWriteBufferSender(ctx context.Context)
9696 if err := s .connect (ctx ); err != nil {
9797 return nil , fmt .Errorf ("storage: opening appendable write stream: %w" , err )
9898 }
99- _ , err := s .sendOnConnectedStream (nil , 0 , true , false , true )
99+ _ , err := s .sendOnConnectedStream (nil , 0 , false , false , true )
100100 if err != nil {
101101 return nil , err
102102 }
103103 firstResp := <- s .recvs
104104 // Object resource is returned in the first response on takeover, so capture
105105 // this now.
106- s .takeoverObj = firstResp .GetResource ()
106+ s .objResource = firstResp .GetResource ()
107107 s .takeoverOffset = firstResp .GetResource ().GetSize ()
108108 return s , nil
109109}
@@ -298,8 +298,8 @@ func (s *gRPCAppendBidiWriteBufferSender) sendOnConnectedStream(buf []byte, offs
298298 // When closing the stream, update the object resource to reflect
299299 // the persisted size. We get a new object from the stream if
300300 // the object was finalized, but not if it's unfinalized.
301- if s .takeoverObj != nil && resp .GetPersistedSize () > 0 {
302- s .takeoverObj .Size = resp .GetPersistedSize ()
301+ if s .objResource != nil && resp .GetPersistedSize () > 0 {
302+ s .objResource .Size = resp .GetPersistedSize ()
303303 }
304304 }
305305 if s .recvErr != io .EOF {
@@ -358,6 +358,9 @@ func (s *gRPCAppendBidiWriteBufferSender) sendBuffer(ctx context.Context, buf []
358358 }
359359
360360 obj , err = s .sendOnConnectedStream (buf , offset , flush , finishWrite , sendFirstMessage )
361+ if obj != nil {
362+ s .objResource = obj
363+ }
361364 if err == nil {
362365 return
363366 }
0 commit comments