Skip to content

Commit 90c99e3

Browse files
YangSen-qnYangSen-qn
and
YangSen-qn
authored
fix storage uc host invalid (#156)
* fix storage uc host invalid * allow load local cache failed --------- Co-authored-by: YangSen-qn <[email protected]>
1 parent 93253a8 commit 90c99e3

12 files changed

+109
-59
lines changed

go.mod

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ require (
66
github.com/BurntSushi/toml v1.3.2
77
github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82
88
github.com/dave/jennifer v1.6.1
9-
github.com/elastic/go-sysinfo v1.0.2
109
github.com/gammazero/toposort v0.1.1
1110
github.com/go-playground/universal-translator v0.18.0 // indirect
1211
github.com/go-playground/validator/v10 v10.7.0

go.sum

+1-17
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ github.com/dave/jennifer v1.6.1 h1:T4T/67t6RAA5AIV6+NP8Uk/BIsXgDoqEowgycdQQLuk=
77
github.com/dave/jennifer v1.6.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
88
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
99
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
10-
github.com/elastic/go-sysinfo v1.0.2 h1:Wq1bOgnSz7Obl7DbMjbn0tzx1bE5G8Cfy3MVFa6C1Cc=
11-
github.com/elastic/go-sysinfo v1.0.2/go.mod h1:O/D5m1VpYLwGjCYzEt63g3Z1uO3jXfwyzzjiW90t8cY=
12-
github.com/elastic/go-windows v1.0.0 h1:qLURgZFkkrYyTTkvYpsZIgf83AUsdIHfvlJaqaZ7aSY=
13-
github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU=
1410
github.com/gammazero/toposort v0.1.1 h1:OivGxsWxF3U3+U80VoLJ+f50HcPU1MIqE1JlKzoJ2Eg=
1511
github.com/gammazero/toposort v0.1.1/go.mod h1:H2cozTnNpMw0hg2VHAYsAxmkHXBYroNangj2NTBQDvw=
1612
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
@@ -31,8 +27,6 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS
3127
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
3228
github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=
3329
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
34-
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4=
35-
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak=
3630
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
3731
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
3832
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
@@ -45,12 +39,8 @@ github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgx
4539
github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
4640
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
4741
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
48-
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
49-
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
5042
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
5143
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
52-
github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0 h1:c8R11WC8m7KNMkTv/0+Be8vvwo4I3/Ut9AC2FW8fX3U=
53-
github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
5444
github.com/qiniu/dyn v1.3.0 h1:s+xPTeV0H8yikgM4ZMBc7Rrefam8UNI3asBlkaOQg5o=
5545
github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk=
5646
github.com/qiniu/x v1.10.5 h1:7V/CYWEmo9axJULvrJN6sMYh2FdY+esN5h8jwDkA4b0=
@@ -59,21 +49,18 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE
5949
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
6050
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
6151
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
62-
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
6352
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
6453
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
6554
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
6655
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
6756
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
6857
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
6958
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
70-
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
7159
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
7260
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
7361
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
62+
golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
7463
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
75-
golang.org/x/sys v0.0.0-20190425145619-16072639606e h1:4ktJgTV34+N3qOZUc5fAaG3Pb11qzMm3PkAoTAgUZ2I=
76-
golang.org/x/sys v0.0.0-20190425145619-16072639606e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
7764
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
7865
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
7966
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -85,12 +72,9 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8
8572
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
8673
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
8774
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
88-
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
8975
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
9076
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
9177
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
9278
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
93-
howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M=
94-
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
9579
modernc.org/fileutil v1.0.0 h1:Z1AFLZwl6BO8A5NldQg/xTSjGLetp+1Ubvl4alfGx8w=
9680
modernc.org/fileutil v1.0.0/go.mod h1:JHsWpkrk/CnVV1H/eGlFf85BEpfkrp56ro8nojIq9Q8=

internal/cache/cache.go

+39-24
Original file line numberDiff line numberDiff line change
@@ -69,39 +69,21 @@ func NewPersistentCache(
6969
persistentDuration time.Duration,
7070
handleError func(error),
7171
) (*Cache, error) {
72-
err := os.MkdirAll(filepath.Dir(persistentFilePath), 0700)
73-
if err != nil {
74-
return nil, err
75-
}
76-
unlockFunc, err := lockCachePersistentFile(persistentFilePath, false, handleError)
77-
if err != nil {
78-
return nil, err
79-
}
80-
defer unlockFunc()
81-
82-
file, closeFunc, err := openCachePersistentFile(persistentFilePath, handleError)
83-
if err != nil {
84-
return nil, err
85-
}
86-
defer closeFunc()
87-
88-
cacheMap, err := loadCacheMapFrom(valueType, file)
89-
if err != nil {
90-
return nil, err
91-
}
92-
93-
return &Cache{
72+
c := &Cache{
9473
persistentFile: &persistentFile{
9574
valueType: valueType,
9675
cacheFilePath: persistentFilePath,
9776
persistentDuration: persistentDuration,
9877
lastPersistentTime: time.Now(),
9978
handleError: handleError,
10079
},
101-
cacheMap: cacheMap,
80+
cacheMap: nil,
10281
compactInterval: compactInterval,
10382
lastCompactTime: time.Now(),
104-
}, nil
83+
}
84+
// 为了兼容上层接口,此处允许加载本地缓存文件失败
85+
_ = c.loadLocalCache()
86+
return c, nil
10587
}
10688

10789
type GetResult uint8
@@ -114,6 +96,39 @@ const (
11496
NoResultGot GetResult = 4
11597
)
11698

99+
func (cache *Cache) loadLocalCache() error {
100+
defer func() {
101+
if cache.cacheMap == nil {
102+
cache.cacheMap = make(map[string]cacheValue)
103+
}
104+
}()
105+
106+
persistentFilePath := cache.persistentFile.cacheFilePath
107+
err := os.MkdirAll(filepath.Dir(persistentFilePath), 0700)
108+
if err != nil {
109+
return err
110+
}
111+
unlockFunc, err := lockCachePersistentFile(persistentFilePath, false, cache.persistentFile.handleError)
112+
if err != nil {
113+
return err
114+
}
115+
defer unlockFunc()
116+
117+
file, closeFunc, err := openCachePersistentFile(persistentFilePath, cache.persistentFile.handleError)
118+
if err != nil {
119+
return err
120+
}
121+
defer closeFunc()
122+
123+
cacheMap, err := loadCacheMapFrom(cache.persistentFile.valueType, file)
124+
if err != nil {
125+
return err
126+
}
127+
128+
cache.cacheMap = cacheMap
129+
return nil
130+
}
131+
117132
func (cache *Cache) Get(key string, fallback func() (CacheValue, error)) (CacheValue, GetResult) {
118133
cache.cacheMapMutex.Lock()
119134
value, ok := cache.cacheMap[key]

internal/uplog/uplog.go

+1-9
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ import (
66
"net/url"
77
"os"
88
"strings"
9-
"sync"
109
"syscall"
1110

12-
sysinfo "github.com/elastic/go-sysinfo"
1311
"github.com/qiniu/go-sdk/v7/storagev2/retrier"
1412
)
1513

@@ -63,16 +61,10 @@ const (
6361
)
6462

6563
var (
66-
osVersion string
67-
osVersionOnce sync.Once
64+
osVersion string
6865
)
6966

7067
func getOsVersion() string {
71-
osVersionOnce.Do(func() {
72-
if hostInfo, err := sysinfo.Host(); err == nil {
73-
osVersion = hostInfo.Info().KernelVersion
74-
}
75-
})
7668
return osVersion
7769
}
7870

storage/bucket.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/qiniu/go-sdk/v7/storagev2/chooser"
2525
"github.com/qiniu/go-sdk/v7/storagev2/downloader"
2626
"github.com/qiniu/go-sdk/v7/storagev2/http_client"
27+
"github.com/qiniu/go-sdk/v7/storagev2/region"
2728
"github.com/qiniu/go-sdk/v7/storagev2/resolver"
2829
"github.com/qiniu/go-sdk/v7/storagev2/retrier"
2930

@@ -376,8 +377,14 @@ func NewBucketManagerExWithOptions(mac *auth.Credentials, cfg *Config, clt *clie
376377
cfg.CentralRsHost = DefaultRsHost
377378
}
378379

380+
bucketQuery, _ := region.NewBucketRegionsQuery(getUcEndpoint(cfg.UseHTTPS, nil), &region.BucketRegionsQueryOptions{
381+
UseInsecureProtocol: !cfg.UseHTTPS,
382+
Client: clt.Client,
383+
})
384+
379385
opts := http_client.Options{
380386
BasicHTTPClient: clt.Client,
387+
BucketQuery: bucketQuery,
381388
Credentials: mac,
382389
Interceptors: []clientv2.Interceptor{},
383390
UseInsecureProtocol: !cfg.UseHTTPS,
@@ -1110,7 +1117,7 @@ func (m *BucketManager) Zone(bucket string) (z *Zone, err error) {
11101117
}
11111118

11121119
func (m *BucketManager) makeRequestOptions() *apis.Options {
1113-
return &apis.Options{OverwrittenBucketHosts: getUcEndpoint(m.Cfg.UseHTTPS, nil)}
1120+
return &apis.Options{OverwrittenBucketHosts: getUcEndpointProvider(m.Cfg.UseHTTPS, nil)}
11141121
}
11151122

11161123
// 构建op的方法,导出的方法支持在Batch操作中使用

storage/bucket_get.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func (m *BucketManager) Get(bucket, key string, options *GetObjectInput) (*GetOb
110110
if ctx == nil {
111111
ctx = context.Background()
112112
}
113-
bucketHosts, err := getUcEndpoint(m.Cfg.UseHTTPS, nil).GetEndpoints(ctx)
113+
bucketHosts, err := getUcEndpointProvider(m.Cfg.UseHTTPS, nil).GetEndpoints(ctx)
114114
if err != nil {
115115
return nil, err
116116
}

storage/form_upload.go

+7
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,16 @@ func NewFormUploaderEx(cfg *Config, clt *client.Client) *FormUploader {
7777
if clt == nil {
7878
clt = &client.DefaultClient
7979
}
80+
81+
bucketQuery, _ := region.NewBucketRegionsQuery(getUcEndpoint(cfg.UseHTTPS, nil), &region.BucketRegionsQueryOptions{
82+
UseInsecureProtocol: !cfg.UseHTTPS,
83+
Client: clt.Client,
84+
})
85+
8086
opts := http_client.Options{
8187
BasicHTTPClient: clt.Client,
8288
UseInsecureProtocol: !cfg.UseHTTPS,
89+
BucketQuery: bucketQuery,
8390
AccelerateUploading: cfg.AccelerateUploading,
8491
HostRetryConfig: &clientv2.RetryConfig{},
8592
}

storage/pfop.go

+14-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/qiniu/go-sdk/v7/internal/clientv2"
1212
"github.com/qiniu/go-sdk/v7/media/apis"
1313
"github.com/qiniu/go-sdk/v7/storagev2/http_client"
14+
"github.com/qiniu/go-sdk/v7/storagev2/region"
1415
)
1516

1617
// OperationManager 提供了数据处理相关的方法
@@ -39,8 +40,14 @@ func NewOperationManagerEx(mac *auth.Credentials, cfg *Config, clt *client.Clien
3940
clt = &client.DefaultClient
4041
}
4142

43+
bucketQuery, _ := region.NewBucketRegionsQuery(getUcEndpoint(cfg.UseHTTPS, nil), &region.BucketRegionsQueryOptions{
44+
UseInsecureProtocol: !cfg.UseHTTPS,
45+
Client: clt.Client,
46+
})
47+
4248
opts := http_client.Options{
4349
BasicHTTPClient: clt.Client,
50+
BucketQuery: bucketQuery,
4451
Credentials: mac,
4552
Interceptors: []clientv2.Interceptor{},
4653
UseInsecureProtocol: !cfg.UseHTTPS,
@@ -171,7 +178,7 @@ func (m *OperationManager) Pfop(bucket, key, fops, pipeline, notifyURL string,
171178
NotifyUrl: notifyURL,
172179
Force: forceNumber,
173180
Pipeline: pipeline,
174-
}, nil)
181+
}, m.makeRequestOptions())
175182
if err != nil {
176183
return "", err
177184
}
@@ -189,7 +196,7 @@ func (m *OperationManager) PfopV2(ctx context.Context, pfopRequest *PfopRequest)
189196
Type: pfopRequest.Type,
190197
Pipeline: pfopRequest.Pipeline,
191198
WorkflowTemplateId: pfopRequest.WorkflowTemplateID,
192-
}, nil)
199+
}, m.makeRequestOptions())
193200
if err != nil {
194201
return nil, err
195202
}
@@ -200,7 +207,7 @@ func (m *OperationManager) PfopV2(ctx context.Context, pfopRequest *PfopRequest)
200207
func (m *OperationManager) Prefop(persistentID string) (PrefopRet, error) {
201208
response, err := m.apiClient.Prefop(context.Background(), &apis.PrefopRequest{
202209
PersistentId: persistentID,
203-
}, nil)
210+
}, m.makeRequestOptions())
204211
if err != nil {
205212
return PrefopRet{}, err
206213
}
@@ -265,3 +272,7 @@ func (m *OperationManager) PrefopApiHost(persistentID string) (apiHost string) {
265272
apiHost = endpoint(m.Cfg.UseHTTPS, apiHost)
266273
return
267274
}
275+
276+
func (m *OperationManager) makeRequestOptions() *apis.Options {
277+
return &apis.Options{OverwrittenBucketHosts: getUcEndpointProvider(m.Cfg.UseHTTPS, nil)}
278+
}

storage/region.go

+15-2
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ func SetUcHosts(hosts ...string) {
264264
ucHosts = newHosts
265265
}
266266

267-
func getUcEndpoint(useHttps bool, hosts []string) region_v2.EndpointsProvider {
267+
func getUcEndpointProvider(useHttps bool, hosts []string) region_v2.EndpointsProvider {
268268
if len(hosts) == 0 {
269269
if len(UcHost) > 0 {
270270
hosts = append(hosts, endpoint(useHttps, UcHost))
@@ -284,6 +284,19 @@ func getUcEndpoint(useHttps bool, hosts []string) region_v2.EndpointsProvider {
284284
}
285285
}
286286

287+
func getUcEndpoint(useHttps bool, hosts []string) region_v2.Endpoints {
288+
provider := getUcEndpointProvider(useHttps, hosts)
289+
if provider == nil {
290+
return region_v2.Endpoints{}
291+
}
292+
293+
if p, ok := provider.(region_v2.Endpoints); ok {
294+
return p
295+
} else {
296+
return region_v2.Endpoints{}
297+
}
298+
}
299+
287300
// GetRegion 用来根据ak和bucket来获取空间相关的机房信息
288301
// 延用 v2, v2 结构和 v4 结构不同且暂不可替代
289302
// Deprecated 使用 GetRegionWithOptions 替换
@@ -342,7 +355,7 @@ func GetRegionsInfoWithOptions(mac *auth.Credentials, options UCApiOptions) ([]R
342355
}).GetRegions(
343356
context.Background(),
344357
&apis.GetRegionsRequest{Credentials: mac},
345-
&apis.Options{OverwrittenBucketHosts: getUcEndpoint(options.UseHttps, options.Hosts)},
358+
&apis.Options{OverwrittenBucketHosts: getUcEndpointProvider(options.UseHttps, options.Hosts)},
346359
)
347360
if err != nil {
348361
return nil, err

storage/region_uc_v2.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func (options *UCApiOptions) getApiStorageClient() *apis.Storage {
254254
}
255255

256256
func (options *UCApiOptions) getApiOptions() *apis.Options {
257-
return &apis.Options{OverwrittenBucketHosts: getUcEndpoint(options.UseHttps, options.Hosts)}
257+
return &apis.Options{OverwrittenBucketHosts: getUcEndpointProvider(options.UseHttps, options.Hosts)}
258258
}
259259

260260
func DefaultUCApiOptions() UCApiOptions {

storage/resume_uploader.go

+11
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,15 @@ func NewResumeUploaderEx(cfg *Config, clt *client.Client) *ResumeUploader {
4141
clt = &client.DefaultClient
4242
}
4343

44+
bucketQuery, _ := region.NewBucketRegionsQuery(getUcEndpoint(cfg.UseHTTPS, nil), &region.BucketRegionsQueryOptions{
45+
UseInsecureProtocol: !cfg.UseHTTPS,
46+
Client: clt.Client,
47+
})
48+
4449
opts := http_client.Options{
4550
BasicHTTPClient: clt.Client,
4651
UseInsecureProtocol: !cfg.UseHTTPS,
52+
BucketQuery: bucketQuery,
4753
AccelerateUploading: cfg.AccelerateUploading,
4854
HostRetryConfig: &clientv2.RetryConfig{},
4955
}
@@ -257,8 +263,13 @@ type (
257263
)
258264

259265
func newResumeUploaderImpl(resumeUploader *ResumeUploader, bucket, key string, hasKey bool, upToken string, upEndpoints region.EndpointsProvider, fileInfo os.FileInfo, extra *RputExtra, ret interface{}, recorderKey string) *resumeUploaderImpl {
266+
bucketQuery, _ := region.NewBucketRegionsQuery(getUcEndpoint(resumeUploader.Cfg.UseHTTPS, nil), &region.BucketRegionsQueryOptions{
267+
UseInsecureProtocol: !resumeUploader.Cfg.UseHTTPS,
268+
Client: resumeUploader.Client.Client,
269+
})
260270
opts := http_client.Options{
261271
BasicHTTPClient: resumeUploader.Client.Client,
272+
BucketQuery: bucketQuery,
262273
UseInsecureProtocol: !resumeUploader.Cfg.UseHTTPS,
263274
AccelerateUploading: resumeUploader.Cfg.AccelerateUploading,
264275
HostRetryConfig: &clientv2.RetryConfig{},

0 commit comments

Comments
 (0)