Browse Source
read from alternative replica
read from alternative replica
related to https://github.com/chrislusf/seaweedfs/issues/1512pull/1513/head
Chris Lu
4 years ago
12 changed files with 182 additions and 147 deletions
-
9weed/command/benchmark.go
-
21weed/filer/filechunk_manifest.go
-
24weed/filer/reader_at.go
-
64weed/filer/stream.go
-
40weed/replication/repl_util/replication_utli.go
-
25weed/replication/sink/azuresink/azure_sink.go
-
30weed/replication/sink/b2sink/b2_sink.go
-
22weed/replication/sink/gcssink/gcs_sink.go
-
11weed/replication/sink/s3sink/s3_write.go
-
21weed/replication/source/filer_source.go
-
11weed/server/filer_grpc_server.go
-
51weed/wdclient/vid_map.go
@ -0,0 +1,40 @@ |
|||
package repl_util |
|||
|
|||
import ( |
|||
"github.com/chrislusf/seaweedfs/weed/filer" |
|||
"github.com/chrislusf/seaweedfs/weed/glog" |
|||
"github.com/chrislusf/seaweedfs/weed/replication/source" |
|||
"github.com/chrislusf/seaweedfs/weed/util" |
|||
) |
|||
|
|||
func CopyFromChunkViews(chunkViews []*filer.ChunkView, filerSource *source.FilerSource, writeFunc func(data []byte) error) error { |
|||
|
|||
for _, chunk := range chunkViews { |
|||
|
|||
fileUrls, err := filerSource.LookupFileId(chunk.FileId) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
|
|||
var writeErr error |
|||
|
|||
for _, fileUrl := range fileUrls { |
|||
err = util.ReadUrlAsStream(fileUrl+"?readDeleted=true", nil, false, chunk.IsFullChunk(), chunk.Offset, int(chunk.Size), func(data []byte) { |
|||
writeErr = writeFunc(data) |
|||
}) |
|||
if err != nil { |
|||
glog.V(1).Infof("read from %s: %v", fileUrl, err) |
|||
} else if writeErr != nil { |
|||
glog.V(1).Infof("copy from %s: %v", fileUrl, writeErr) |
|||
} else { |
|||
break |
|||
} |
|||
} |
|||
|
|||
if err != nil { |
|||
return err |
|||
} |
|||
|
|||
} |
|||
return nil |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue