From 1bdeabfa46f17f3246dcaacc781c9018b0eb4493 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Tue, 18 Jun 2024 14:36:40 +0100 Subject: [PATCH] hdfs: retry the create too FIXME --- backend/hdfs/object.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/backend/hdfs/object.go b/backend/hdfs/object.go index 51acb17ff..67531bbd6 100644 --- a/backend/hdfs/object.go +++ b/backend/hdfs/object.go @@ -128,12 +128,6 @@ func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, op } } - out, err := o.fs.client.Create(realpath) - if err != nil { - fs.Errorf(o, "update: Create(%q) returned error: %v", realpath, err) - return err - } - cleanup := func() { rerr := o.fs.client.Remove(realpath) if rerr != nil { @@ -142,7 +136,19 @@ func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, op } } + var out *hdfs.FileWriter err = o.fs.pacer.Call(func() (bool, error) { + if out != nil { + _ = out.Close() + out = nil + } + + out, err = o.fs.client.Create(realpath) + if err != nil { + fs.Errorf(o, "update: Create(%q) returned error: %v", realpath, err) + return false, err + } + _, err = io.Copy(out, in) if err == nil { return false, nil