forked from TrueCloudLab/distribution
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>
This commit is contained in:
parent
406d03bdb0
commit
ea5abc9935
1 changed files with 7 additions and 0 deletions
|
@ -742,6 +742,9 @@ func (w *writer) Close() error {
|
||||||
if err := w.driver.createManifest(w.path, w.driver.Container+"/"+w.segmentsPath); err != nil {
|
if err := w.driver.createManifest(w.path, w.driver.Container+"/"+w.segmentsPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := w.waitForSegmentsToShowUp(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
w.closed = true
|
w.closed = true
|
||||||
|
|
||||||
|
@ -776,10 +779,14 @@ func (w *writer) Commit() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
w.committed = true
|
w.committed = true
|
||||||
|
return w.waitForSegmentsToShowUp()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *writer) waitForSegmentsToShowUp() error {
|
||||||
var err error
|
var err error
|
||||||
waitingTime := readAfterWriteWait
|
waitingTime := readAfterWriteWait
|
||||||
endTime := time.Now().Add(readAfterWriteTimeout)
|
endTime := time.Now().Add(readAfterWriteTimeout)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
var info swift.Object
|
var info swift.Object
|
||||||
if info, _, err = w.driver.Conn.Object(w.driver.Container, w.driver.swiftPath(w.path)); err == nil {
|
if info, _, err = w.driver.Conn.Object(w.driver.Container, w.driver.swiftPath(w.path)); err == nil {
|
||||||
|
|
Loading…
Reference in a new issue