Skip to content

Commit 4fcc3a1

Browse files
authored
fix(traffic): duplicate semaphore release when uploading (#8211 close #8180)
1 parent 10a76c7 commit 4fcc3a1

File tree

4 files changed

+12
-12
lines changed

4 files changed

+12
-12
lines changed

drivers/189pc/utils.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -520,9 +520,6 @@ func (y *Cloud189PC) StreamUpload(ctx context.Context, dstDir model.Obj, file mo
520520
if utils.IsCanceled(upCtx) {
521521
break
522522
}
523-
if err = sem.Acquire(ctx, 1); err != nil {
524-
break
525-
}
526523
byteData := make([]byte, sliceSize)
527524
if i == count {
528525
byteData = byteData[:lastPartSize]
@@ -541,6 +538,9 @@ func (y *Cloud189PC) StreamUpload(ctx context.Context, dstDir model.Obj, file mo
541538
partInfo := fmt.Sprintf("%d-%s", i, base64.StdEncoding.EncodeToString(md5Bytes))
542539

543540
threadG.Go(func(ctx context.Context) error {
541+
if err = sem.Acquire(ctx, 1); err != nil {
542+
return err
543+
}
544544
defer sem.Release(1)
545545
uploadUrls, err := y.GetMultiUploadUrls(ctx, isFamily, initMultiUpload.Data.UploadFileID, partInfo)
546546
if err != nil {

drivers/baidu_netdisk/driver.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,15 +266,15 @@ func (d *BaiduNetdisk) Put(ctx context.Context, dstDir model.Obj, stream model.F
266266
if utils.IsCanceled(upCtx) {
267267
break
268268
}
269-
if err = sem.Acquire(ctx, 1); err != nil {
270-
break
271-
}
272269

273270
i, partseq, offset, byteSize := i, partseq, int64(partseq)*sliceSize, sliceSize
274271
if partseq+1 == count {
275272
byteSize = lastBlockSize
276273
}
277274
threadG.Go(func(ctx context.Context) error {
275+
if err = sem.Acquire(ctx, 1); err != nil {
276+
return err
277+
}
278278
defer sem.Release(1)
279279
params := map[string]string{
280280
"method": "upload",

drivers/baidu_photo/driver.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,16 +321,16 @@ func (d *BaiduPhoto) Put(ctx context.Context, dstDir model.Obj, stream model.Fil
321321
if utils.IsCanceled(upCtx) {
322322
break
323323
}
324-
if err = sem.Acquire(ctx, 1); err != nil {
325-
break
326-
}
327324

328325
i, partseq, offset, byteSize := i, partseq, int64(partseq)*DEFAULT, DEFAULT
329326
if partseq+1 == count {
330327
byteSize = lastBlockSize
331328
}
332329

333330
threadG.Go(func(ctx context.Context) error {
331+
if err = sem.Acquire(ctx, 1); err != nil {
332+
return err
333+
}
334334
defer sem.Release(1)
335335
uploadParams := map[string]string{
336336
"method": "upload",

drivers/mopan/driver.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,16 +315,16 @@ func (d *MoPan) Put(ctx context.Context, dstDir model.Obj, stream model.FileStre
315315
if utils.IsCanceled(upCtx) {
316316
break
317317
}
318-
if err = sem.Acquire(ctx, 1); err != nil {
319-
break
320-
}
321318
i, part, byteSize := i, part, initUpdload.PartSize
322319
if part.PartNumber == uploadPartData.PartTotal {
323320
byteSize = initUpdload.LastPartSize
324321
}
325322

326323
// step.4
327324
threadG.Go(func(ctx context.Context) error {
325+
if err = sem.Acquire(ctx, 1); err != nil {
326+
return err
327+
}
328328
defer sem.Release(1)
329329
reader := io.NewSectionReader(file, int64(part.PartNumber-1)*initUpdload.PartSize, byteSize)
330330
req, err := part.NewRequest(ctx, driver.NewLimitedUploadStream(ctx, reader))

0 commit comments

Comments
 (0)