Skip to content

Commit 70fbe17

Browse files
committed
refactor(upload): Refactor the global shard upload manager using delayed initialization and optimize temporary directory configuration
1 parent e035412 commit 70fbe17

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

internal/fs/fs.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,15 +195,15 @@ func PutURL(ctx context.Context, path, dstName, urlStr string) error {
195195

196196
// Preup 预上传 - 使用新的管理器重构
197197
func Preup(c context.Context, s driver.Driver, actualPath string, req *reqres.PreupReq) (*reqres.PreupResp, error) {
198-
return globalSliceManager.CreateSession(c, s, actualPath, req)
198+
return getGlobalSliceManager().CreateSession(c, s, actualPath, req)
199199
}
200200

201201
// UploadSlice 上传切片 - 使用新的管理器重构
202202
func UploadSlice(ctx context.Context, storage driver.Driver, req *reqres.UploadSliceReq, file multipart.File) error {
203-
return globalSliceManager.UploadSlice(ctx, storage, req, file)
203+
return getGlobalSliceManager().UploadSlice(ctx, storage, req, file)
204204
}
205205

206206
// SliceUpComplete 完成分片上传 - 使用新的管理器重构
207207
func SliceUpComplete(ctx context.Context, storage driver.Driver, taskID string) (*reqres.UploadSliceCompleteResp, error) {
208-
return globalSliceManager.CompleteUpload(ctx, storage, taskID)
208+
return getGlobalSliceManager().CompleteUpload(ctx, storage, taskID)
209209
}

internal/fs/sliceup.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,12 @@ type SliceUploadSession struct {
3939

4040
// NewSliceUploadManager 创建分片上传管理器
4141
func NewSliceUploadManager() *SliceUploadManager {
42+
tempDir := os.TempDir() // 默认使用系统临时目录
43+
if conf.Conf != nil && conf.Conf.TempDir != "" {
44+
tempDir = conf.Conf.TempDir
45+
}
4246
return &SliceUploadManager{
43-
tempDir: conf.Conf.TempDir,
47+
tempDir: tempDir,
4448
}
4549
}
4650

@@ -421,7 +425,11 @@ func (s *SliceUploadSession) ensureTmpFile() error {
421425
defer s.mutex.Unlock()
422426

423427
if s.TmpFile == "" {
424-
tf, err := os.CreateTemp(conf.Conf.TempDir, "file-*")
428+
tempDir := os.TempDir() // 默认使用系统临时目录
429+
if conf.Conf != nil && conf.Conf.TempDir != "" {
430+
tempDir = conf.Conf.TempDir
431+
}
432+
tf, err := os.CreateTemp(tempDir, "file-*")
425433
if err != nil {
426434
return fmt.Errorf("CreateTemp error: %w", err)
427435
}
@@ -468,8 +476,17 @@ func (s *SliceUploadSession) cleanup() {
468476
}
469477
}
470478

471-
// 全局管理器实例
472-
var globalSliceManager = NewSliceUploadManager()
479+
// 全局管理器实例使用延迟初始化
480+
var globalSliceManager *SliceUploadManager
481+
var globalSliceManagerOnce sync.Once
482+
483+
// getGlobalSliceManager 获取全局分片上传管理器(延迟初始化)
484+
func getGlobalSliceManager() *SliceUploadManager {
485+
globalSliceManagerOnce.Do(func() {
486+
globalSliceManager = NewSliceUploadManager()
487+
})
488+
return globalSliceManager
489+
}
473490

474491
// sliceWriter 分片写入器 - 保持原始实现
475492
type sliceWriter struct {

0 commit comments

Comments
 (0)