wait for DLO segments to show up when Close()ing the writer
Not just when Commit()ing the result. This fixes some errors I observed when the layer (i.e. the DLO) is Stat()ed immediately after closing, and reports the wrong file size because the container listing is not yet up-to-date. Signed-off-by: Stefan Majewsky <stefan.majewsky@sap.com>master
							parent
							
								
									406d03bdb0
								
							
						
					
					
						commit
						ea5abc9935
					
				|  | @ -742,6 +742,9 @@ func (w *writer) Close() error { | |||
| 		if err := w.driver.createManifest(w.path, w.driver.Container+"/"+w.segmentsPath); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		if err := w.waitForSegmentsToShowUp(); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
| 	w.closed = true | ||||
| 
 | ||||
|  | @ -776,10 +779,14 @@ func (w *writer) Commit() error { | |||
| 	} | ||||
| 
 | ||||
| 	w.committed = true | ||||
| 	return w.waitForSegmentsToShowUp() | ||||
| } | ||||
| 
 | ||||
| func (w *writer) waitForSegmentsToShowUp() error { | ||||
| 	var err error | ||||
| 	waitingTime := readAfterWriteWait | ||||
| 	endTime := time.Now().Add(readAfterWriteTimeout) | ||||
| 
 | ||||
| 	for { | ||||
| 		var info swift.Object | ||||
| 		if info, _, err = w.driver.Conn.Object(w.driver.Container, w.driver.swiftPath(w.path)); err == nil { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue