aboutsummaryrefslogtreecommitdiff
path: root/weed/replication/repl_util
diff options
context:
space:
mode:
authorKonstantin Lebedev <lebedev_k@tochka.com>2021-02-03 21:32:30 +0500
committerKonstantin Lebedev <lebedev_k@tochka.com>2021-02-03 21:32:30 +0500
commit24ec17219be00f8c00e1f56412b5dd929028d8b5 (patch)
tree9c41be9f7bba29d37a12949e1e19c37febaead17 /weed/replication/repl_util
parenta331bbb3ae7b75025850f67a5758812fddfe0ecd (diff)
downloadseaweedfs-24ec17219be00f8c00e1f56412b5dd929028d8b5.tar.xz
seaweedfs-24ec17219be00f8c00e1f56412b5dd929028d8b5.zip
RabbitMQ delay retry with Dead Letter Exchange
https://github.com/chrislusf/seaweedfs/issues/1773 https://github.com/google/go-cloud/issues/2952
Diffstat (limited to 'weed/replication/repl_util')
-rw-r--r--weed/replication/repl_util/replication_utli.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/weed/replication/repl_util/replication_utli.go b/weed/replication/repl_util/replication_utli.go
index 42777f4ad..c5b8ab4e1 100644
--- a/weed/replication/repl_util/replication_utli.go
+++ b/weed/replication/repl_util/replication_utli.go
@@ -17,9 +17,10 @@ func CopyFromChunkViews(chunkViews []*filer.ChunkView, filerSource *source.Filer
}
var writeErr error
+ var shouldRetry bool
for _, fileUrl := range fileUrls {
- _, err = util.ReadUrlAsStream(fileUrl+"?readDeleted=true", nil, false, chunk.IsFullChunk(), chunk.Offset, int(chunk.Size), func(data []byte) {
+ shouldRetry, err = util.ReadUrlAsStream(fileUrl+"?readDeleted=true", nil, false, chunk.IsFullChunk(), chunk.Offset, int(chunk.Size), func(data []byte) {
writeErr = writeFunc(data)
})
if err != nil {
@@ -30,11 +31,12 @@ func CopyFromChunkViews(chunkViews []*filer.ChunkView, filerSource *source.Filer
break
}
}
-
- if err != nil {
+ if shouldRetry && err != nil {
return err
}
-
+ if writeErr != nil {
+ return writeErr
+ }
}
return nil
}