From 6cce5a98723db6b826fd55c08e71ed9949988393 Mon Sep 17 00:00:00 2001 From: sunwp Date: Mon, 21 Jun 2021 18:54:58 +0800 Subject: [PATCH] Feature/code spec (#336) * Modify the code according to https://github.com/uber-go/guide/blob/master/style.md Signed-off-by: santong Signed-off-by: Gaius --- cdnsystem/daemon/cdn/cache_data_mgr.go | 8 +-- cdnsystem/daemon/cdn/cache_detector.go | 16 ++--- cdnsystem/daemon/cdn/cache_writer.go | 2 +- cdnsystem/daemon/cdn/downloader.go | 2 +- cdnsystem/daemon/cdn/manager.go | 4 +- cdnsystem/daemon/cdn/manager_test.go | 4 +- cdnsystem/daemon/cdn/reporter.go | 4 +- cdnsystem/daemon/cdn/storage/disk/disk.go | 12 ++-- cdnsystem/daemon/cdn/storage/hybrid/hybrid.go | 12 ++-- .../daemon/cdn/storage/hybrid/shm_switch.go | 2 +- cdnsystem/daemon/cdn/storage/storage_gc.go | 6 +- cdnsystem/daemon/cdn/storage/storage_mgr.go | 6 +- cdnsystem/daemon/gc/manager.go | 2 +- cdnsystem/daemon/progress/manager.go | 21 +++--- cdnsystem/daemon/task/manager.go | 8 +-- cdnsystem/daemon/task/manager_test.go | 4 +- cdnsystem/daemon/task/manager_util.go | 9 +-- cdnsystem/errors/errors.go | 36 +++++++--- cdnsystem/errors/errors_test.go | 20 ++++-- cdnsystem/plugins/plugins.go | 2 +- cdnsystem/server/server.go | 22 +++--- cdnsystem/server/service/cdn_seed_server.go | 10 +-- .../server/service/cdn_seed_server_test.go | 4 +- cdnsystem/storedriver/driver.go | 2 +- cdnsystem/storedriver/local/local_driver.go | 8 +-- .../storedriver/local/local_driver_test.go | 2 +- cdnsystem/storedriver/store_mgr.go | 4 +- client/clientutil/keepalive.go | 4 +- client/clientutil/peer.go | 2 +- client/config/dfget.go | 4 +- client/daemon/gc/gc_manager.go | 4 +- client/daemon/peer/peertask_base.go | 31 ++++---- client/daemon/peer/peertask_bitmap.go | 8 +-- client/daemon/peer/peertask_file.go | 70 ++++++++++--------- client/daemon/peer/peertask_file_callback.go | 8 ++- client/daemon/peer/peertask_file_test.go | 2 +- client/daemon/peer/peertask_manager.go | 10 +-- .../daemon/peer/peertask_manager_mock_test.go | 6 +- client/daemon/peer/peertask_manager_test.go | 12 ++-- client/daemon/peer/peertask_reuse.go | 8 +-- client/daemon/peer/peertask_stream.go | 66 ++++++++--------- .../daemon/peer/peertask_stream_callback.go | 8 ++- client/daemon/peer/peertask_stream_test.go | 2 +- client/daemon/peer/piece_downloader.go | 6 +- .../daemon/peer/piece_downloader_optimized.go | 4 +- client/daemon/peer/piece_downloader_test.go | 4 +- client/daemon/peer/piece_manager.go | 10 +-- client/daemon/peer/piece_manager_test.go | 8 +-- client/daemon/peerhost.go | 12 ++-- client/daemon/proxy/cert.go | 2 +- client/daemon/proxy/proxy.go | 4 +- client/daemon/proxy/proxy_manager.go | 6 +- client/daemon/service/manager.go | 19 ++--- client/daemon/service/manager_test.go | 12 ++-- client/daemon/storage/local_storage.go | 11 +-- client/daemon/storage/local_storage_test.go | 8 +-- client/daemon/storage/metadata.go | 2 +- client/daemon/storage/storage_manager.go | 15 ++-- .../daemon/test/mock/daemon/daemon_server.go | 4 +- .../daemon/test/mock/peer/peertask_manager.go | 6 +- .../test/mock/scheduler/scheduler_client.go | 4 +- .../scheduler_client_peer_packet_stream.go | 2 +- client/daemon/test/mock/storage/manager.go | 2 +- client/daemon/transport/transport.go | 6 +- client/daemon/transport/transport_test.go | 2 +- client/daemon/upload/upload_manager.go | 4 +- client/daemon/upload/upload_manager_test.go | 2 +- client/dfget/dfget.go | 12 ++-- cmd/cdn/cmd/root.go | 4 +- cmd/dependency/dependency.go | 4 +- cmd/dfget/cmd/daemon.go | 6 +- cmd/dfget/cmd/root.go | 6 +- cmd/manager/cmd/root.go | 4 +- cmd/scheduler/cmd/root.go | 4 +- {pkg => internal}/dfcodes/rpc_code.go | 2 +- {pkg => internal}/dferrors/error.go | 2 +- {pkg => internal}/dflog/logcore/init.go | 2 +- {pkg => internal}/dflog/logcore/logcore.go | 0 {pkg => internal}/dflog/logger.go | 0 {pkg => internal}/idgen/task_id.go | 2 +- {pkg => internal}/idgen/task_id_test.go | 2 +- {pkg => internal}/idgen/uuid.go | 0 {pkg => internal}/idgen/uuid_test.go | 0 {pkg => internal}/rpc/base/base.pb.go | 5 +- {pkg => internal}/rpc/base/base.proto | 2 +- {pkg => internal}/rpc/base/common/common.go | 4 +- .../rpc/cdnsystem/cdnsystem.pb.go | 7 +- .../rpc/cdnsystem/cdnsystem.proto | 4 +- .../rpc/cdnsystem/cdnsystem_grpc.pb.go | 3 +- .../rpc/cdnsystem/client/client.go | 10 +-- .../rpc/cdnsystem/client/piece_seed_stream.go | 6 +- .../rpc/cdnsystem/server/server.go | 10 +-- {pkg => internal}/rpc/client.go | 12 ++-- {pkg => internal}/rpc/client_util.go | 8 +-- .../rpc/dfdaemon/client/client.go | 11 +-- .../rpc/dfdaemon/client/down_result_stream.go | 6 +- {pkg => internal}/rpc/dfdaemon/client/peer.go | 10 +-- {pkg => internal}/rpc/dfdaemon/dfdaemon.pb.go | 7 +- {pkg => internal}/rpc/dfdaemon/dfdaemon.proto | 4 +- .../rpc/dfdaemon/dfdaemon_grpc.pb.go | 3 +- .../rpc/dfdaemon/server/server.go | 10 +-- .../rpc/examples/cdnsystem/client/main.go | 0 .../rpc/examples/cdnsystem/server/main.go | 10 +-- .../rpc/manager/client/client.go | 10 +-- {pkg => internal}/rpc/manager/manager.pb.go | 5 +- {pkg => internal}/rpc/manager/manager.proto | 2 +- .../rpc/manager/manager_grpc.pb.go | 1 + .../rpc/manager/server/server.go | 4 +- .../rpc/scheduler/client/client.go | 22 +++--- .../scheduler/client/peer_packet_stream.go | 6 +- {pkg => internal}/rpc/scheduler/scheduler.go | 2 +- .../rpc/scheduler/scheduler.pb.go | 7 +- .../rpc/scheduler/scheduler.proto | 4 +- .../rpc/scheduler/scheduler_grpc.pb.go | 1 + .../rpc/scheduler/server/server.go | 8 +-- {pkg => internal}/rpc/server.go | 6 +- {pkg => internal}/rpc/server_listen.go | 2 +- manager/apis/v2/handler/cdn_cluster.go | 4 +- manager/apis/v2/handler/cdn_instance.go | 4 +- manager/apis/v2/handler/scheduler_cluster.go | 4 +- manager/apis/v2/handler/scheduler_instance.go | 4 +- manager/apis/v2/main.go | 2 +- manager/config/config.go | 4 +- manager/configsvc/id.go | 2 +- manager/configsvc/service.go | 8 +-- manager/hostidentifier/hostidentifier.go | 1 - manager/lease/lease.go | 5 +- manager/server/server.go | 6 +- manager/server/server_test.go | 6 +- manager/server/service/manager_server.go | 8 +-- manager/store/client/client.go | 4 +- manager/store/orm/cdn_cluster.go | 6 +- manager/store/orm/cdn_instance.go | 6 +- manager/store/orm/lease.go | 6 +- manager/store/orm/orm_store.go | 6 +- manager/store/orm/scheduler_cluster.go | 6 +- manager/store/orm/scheduler_instance.go | 6 +- manager/store/orm/security_domain.go | 6 +- pkg/cache/cache_test.go | 8 +-- pkg/source/httpprotocol/http_source_client.go | 11 ++- .../httpprotocol/http_source_client_test.go | 6 +- pkg/source/ossprotocol/oss_source_client.go | 12 ++-- pkg/source/source_client.go | 18 ++--- pkg/structure/atomiccount/atomiccount.go | 54 -------------- pkg/structure/atomiccount/atomiccount_test.go | 56 --------------- pkg/structure/syncmap/syncmap.go | 45 ++++++------ pkg/synclock/count_rwmutex.go | 14 ++-- pkg/util/digestutils/digest_reader.go | 2 +- pkg/util/fileutils/file_utils.go | 16 ++--- scheduler/config/dynconfig.go | 6 +- scheduler/config/dynconfig_test.go | 2 +- scheduler/config/mocks/manager_client_mock.go | 2 +- scheduler/manager/cdn_manager.go | 19 +++-- scheduler/manager/cdn_manager_test.go | 2 +- scheduler/manager/peer_task.go | 6 +- scheduler/manager/task_manager.go | 5 +- scheduler/manager/task_manager_test.go | 14 ---- scheduler/scheduler/evaluator.go | 4 +- scheduler/scheduler/evaluator_factory.go | 8 +-- scheduler/scheduler/scheduler.go | 2 +- scheduler/server/scheduler_server.go | 10 +-- scheduler/server/server.go | 10 +-- scheduler/service/service.go | 4 +- scheduler/service/worker/client.go | 8 +-- scheduler/service/worker/sender.go | 4 +- scheduler/service/worker/woker.go | 8 ++- scheduler/service/worker/worker_group.go | 6 +- scheduler/types/client.go | 2 +- scheduler/types/host.go | 7 +- scheduler/types/peer_task.go | 11 ++- scheduler/types/piece.go | 2 +- scheduler/types/task.go | 11 ++- 172 files changed, 675 insertions(+), 718 deletions(-) rename {pkg => internal}/dfcodes/rpc_code.go (97%) rename {pkg => internal}/dferrors/error.go (97%) rename {pkg => internal}/dflog/logcore/init.go (98%) rename {pkg => internal}/dflog/logcore/logcore.go (100%) rename {pkg => internal}/dflog/logger.go (100%) rename {pkg => internal}/idgen/task_id.go (97%) rename {pkg => internal}/idgen/task_id_test.go (99%) rename {pkg => internal}/idgen/uuid.go (100%) rename {pkg => internal}/idgen/uuid_test.go (100%) rename {pkg => internal}/rpc/base/base.pb.go (99%) rename {pkg => internal}/rpc/base/base.proto (97%) rename {pkg => internal}/rpc/base/common/common.go (95%) rename {pkg => internal}/rpc/cdnsystem/cdnsystem.pb.go (99%) rename {pkg => internal}/rpc/cdnsystem/cdnsystem.proto (93%) rename {pkg => internal}/rpc/cdnsystem/cdnsystem_grpc.pb.go (99%) rename {pkg => internal}/rpc/cdnsystem/client/client.go (93%) rename {pkg => internal}/rpc/cdnsystem/client/piece_seed_stream.go (96%) rename {pkg => internal}/rpc/cdnsystem/server/server.go (94%) rename {pkg => internal}/rpc/client.go (97%) rename {pkg => internal}/rpc/client_util.go (97%) rename {pkg => internal}/rpc/dfdaemon/client/client.go (93%) rename {pkg => internal}/rpc/dfdaemon/client/down_result_stream.go (97%) rename {pkg => internal}/rpc/dfdaemon/client/peer.go (87%) rename {pkg => internal}/rpc/dfdaemon/dfdaemon.pb.go (99%) rename {pkg => internal}/rpc/dfdaemon/dfdaemon.proto (94%) rename {pkg => internal}/rpc/dfdaemon/dfdaemon_grpc.pb.go (99%) rename {pkg => internal}/rpc/dfdaemon/server/server.go (93%) rename {pkg => internal}/rpc/examples/cdnsystem/client/main.go (100%) rename {pkg => internal}/rpc/examples/cdnsystem/server/main.go (86%) rename {pkg => internal}/rpc/manager/client/client.go (97%) rename {pkg => internal}/rpc/manager/manager.pb.go (99%) rename {pkg => internal}/rpc/manager/manager.proto (97%) rename {pkg => internal}/rpc/manager/manager_grpc.pb.go (99%) rename {pkg => internal}/rpc/manager/server/server.go (95%) rename {pkg => internal}/rpc/scheduler/client/client.go (93%) rename {pkg => internal}/rpc/scheduler/client/peer_packet_stream.go (97%) rename {pkg => internal}/rpc/scheduler/scheduler.go (95%) rename {pkg => internal}/rpc/scheduler/scheduler.pb.go (99%) rename {pkg => internal}/rpc/scheduler/scheduler.proto (97%) rename {pkg => internal}/rpc/scheduler/scheduler_grpc.pb.go (99%) rename {pkg => internal}/rpc/scheduler/server/server.go (95%) rename {pkg => internal}/rpc/server.go (97%) rename {pkg => internal}/rpc/server_listen.go (97%) delete mode 100644 pkg/structure/atomiccount/atomiccount.go delete mode 100644 pkg/structure/atomiccount/atomiccount_test.go diff --git a/cdnsystem/daemon/cdn/cache_data_mgr.go b/cdnsystem/daemon/cdn/cache_data_mgr.go index fd6bc25f60e..ff003a4a14b 100644 --- a/cdnsystem/daemon/cdn/cache_data_mgr.go +++ b/cdnsystem/daemon/cdn/cache_data_mgr.go @@ -24,7 +24,7 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon/cdn/storage" "d7y.io/dragonfly/v2/cdnsystem/storedriver" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/synclock" "d7y.io/dragonfly/v2/pkg/util/digestutils" "d7y.io/dragonfly/v2/pkg/util/stringutils" @@ -60,7 +60,7 @@ func (mm *cacheDataManager) writeFileMetaDataByTask(task *types.SeedTask) (*stor } if err := mm.storage.WriteFileMetaData(task.TaskID, metaData); err != nil { - return nil, errors.Wrapf(err, "failed to write file metadata to storage") + return nil, errors.Wrapf(err, "write task %s metadata file", task.TaskID) } return metaData, nil @@ -170,7 +170,7 @@ func (mm *cacheDataManager) readPieceMetaRecords(taskID string) ([]*storage.Piec func (mm *cacheDataManager) getPieceMd5Sign(taskID string) (string, []*storage.PieceMetaRecord, error) { pieceMetaRecords, err := mm.storage.ReadPieceMetaRecords(taskID) if err != nil { - return "", nil, errors.Wrapf(err, "failed to read piece meta file") + return "", nil, errors.Wrapf(err, "read piece meta file") } var pieceMd5 []string sort.Slice(pieceMetaRecords, func(i, j int) bool { @@ -185,7 +185,7 @@ func (mm *cacheDataManager) getPieceMd5Sign(taskID string) (string, []*storage.P func (mm *cacheDataManager) readFileMetaData(taskID string) (*storage.FileMetaData, error) { fileMeta, err := mm.storage.ReadFileMetaData(taskID) if err != nil { - return nil, errors.Wrapf(err, "failed to read file metadata from storage") + return nil, errors.Wrapf(err, "read file metadata of task %s from storage", taskID) } return fileMeta, nil } diff --git a/cdnsystem/daemon/cdn/cache_detector.go b/cdnsystem/daemon/cdn/cache_detector.go index 0b6b0b2dbc1..c4b7258e4f8 100644 --- a/cdnsystem/daemon/cdn/cache_detector.go +++ b/cdnsystem/daemon/cdn/cache_detector.go @@ -29,7 +29,7 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon/cdn/storage" cdnerrors "d7y.io/dragonfly/v2/cdnsystem/errors" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/source" "d7y.io/dragonfly/v2/pkg/util/digestutils" "d7y.io/dragonfly/v2/pkg/util/stringutils" @@ -86,7 +86,7 @@ func (cd *cacheDetector) detectCache(task *types.SeedTask, fileMd5 hash.Hash) (* func (cd *cacheDetector) doDetect(task *types.SeedTask, fileMd5 hash.Hash) (result *cacheResult, err error) { fileMetaData, err := cd.cacheDataManager.readFileMetaData(task.TaskID) if err != nil { - return nil, errors.Wrapf(err, "failed to read file meta data") + return nil, errors.Wrapf(err, "read file meta data of task %s", task.TaskID) } if err := checkSameFile(task, fileMetaData); err != nil { return nil, errors.Wrapf(err, "task does not match meta information of task file") @@ -114,7 +114,7 @@ func (cd *cacheDetector) doDetect(task *types.SeedTask, fileMd5 hash.Hash) (resu defer rangeCancel() supportRange, err := source.IsSupportRange(ctx, task.URL, task.Header) if err != nil { - return nil, errors.Wrapf(err, "failed to check if url(%s) supports range request", task.URL) + return nil, errors.Wrapf(err, "check if url(%s) supports range request", task.URL) } if !supportRange { return nil, errors.Wrapf(cdnerrors.ErrResourceNotSupportRangeRequest, "url:%s", task.URL) @@ -129,7 +129,7 @@ func (cd *cacheDetector) parseByReadMetaFile(taskID string, fileMetaData *storag } pieceMetaRecords, err := cd.cacheDataManager.readAndCheckPieceMetaRecords(taskID, fileMetaData.PieceMd5Sign) if err != nil { - return nil, errors.Wrapf(err, "failed to check piece meta integrity") + return nil, errors.Wrapf(err, "check piece meta integrity") } if fileMetaData.TotalPieceCount > 0 && len(pieceMetaRecords) != int(fileMetaData.TotalPieceCount) { return nil, errors.Wrapf(cdnerrors.ErrPieceCountNotEqual, "piece file piece count(%d), "+ @@ -137,7 +137,7 @@ func (cd *cacheDetector) parseByReadMetaFile(taskID string, fileMetaData *storag } storageInfo, err := cd.cacheDataManager.statDownloadFile(taskID) if err != nil { - return nil, errors.Wrapf(err, "failed to get cdn file length") + return nil, errors.Wrapf(err, "get cdn file length") } // check file data integrity by file size if fileMetaData.CdnFileLength != storageInfo.Size { @@ -155,12 +155,12 @@ func (cd *cacheDetector) parseByReadMetaFile(taskID string, fileMetaData *storag func (cd *cacheDetector) parseByReadFile(taskID string, metaData *storage.FileMetaData, fileMd5 hash.Hash) (*cacheResult, error) { reader, err := cd.cacheDataManager.readDownloadFile(taskID) if err != nil { - return nil, errors.Wrapf(err, "failed to read data file") + return nil, errors.Wrapf(err, "read data file") } defer reader.Close() tempRecords, err := cd.cacheDataManager.readPieceMetaRecords(taskID) if err != nil { - return nil, errors.Wrapf(err, "parseByReadFile:failed to read piece meta file") + return nil, errors.Wrapf(err, "read piece meta file") } // sort piece meta records by pieceNum @@ -169,7 +169,7 @@ func (cd *cacheDetector) parseByReadFile(taskID string, metaData *storage.FileMe }) var breakPoint uint64 = 0 - pieceMetaRecords := make([]*storage.PieceMetaRecord, 0, 0) + pieceMetaRecords := make([]*storage.PieceMetaRecord, 0, len(tempRecords)) for index := range tempRecords { if int32(index) != tempRecords[index].PieceNum { break diff --git a/cdnsystem/daemon/cdn/cache_writer.go b/cdnsystem/daemon/cdn/cache_writer.go index 163d99472e7..60eed651cfc 100644 --- a/cdnsystem/daemon/cdn/cache_writer.go +++ b/cdnsystem/daemon/cdn/cache_writer.go @@ -26,7 +26,7 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/config" "d7y.io/dragonfly/v2/cdnsystem/daemon/cdn/storage" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/util/digestutils" "d7y.io/dragonfly/v2/pkg/util/rangeutils" ) diff --git a/cdnsystem/daemon/cdn/downloader.go b/cdnsystem/daemon/cdn/downloader.go index b28e27f0c5d..1303a22dab2 100644 --- a/cdnsystem/daemon/cdn/downloader.go +++ b/cdnsystem/daemon/cdn/downloader.go @@ -22,7 +22,7 @@ import ( "io" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/source" "d7y.io/dragonfly/v2/pkg/structure/maputils" "d7y.io/dragonfly/v2/pkg/util/rangeutils" diff --git a/cdnsystem/daemon/cdn/manager.go b/cdnsystem/daemon/cdn/manager.go index e126618ee3d..aa1a8f06b0c 100644 --- a/cdnsystem/daemon/cdn/manager.go +++ b/cdnsystem/daemon/cdn/manager.go @@ -26,14 +26,14 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon" _ "d7y.io/dragonfly/v2/cdnsystem/daemon/cdn/storage/disk" // To register diskStorage _ "d7y.io/dragonfly/v2/cdnsystem/daemon/cdn/storage/hybrid" // To register hybridStorage - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem/server" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem/server" "d7y.io/dragonfly/v2/pkg/synclock" "d7y.io/dragonfly/v2/pkg/util/timeutils" "d7y.io/dragonfly/v2/cdnsystem/config" "d7y.io/dragonfly/v2/cdnsystem/daemon/cdn/storage" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/ratelimiter/limitreader" "d7y.io/dragonfly/v2/pkg/ratelimiter/ratelimiter" "d7y.io/dragonfly/v2/pkg/util/stringutils" diff --git a/cdnsystem/daemon/cdn/manager_test.go b/cdnsystem/daemon/cdn/manager_test.go index 14e9ba90c18..7539380ddba 100644 --- a/cdnsystem/daemon/cdn/manager_test.go +++ b/cdnsystem/daemon/cdn/manager_test.go @@ -30,8 +30,8 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon/mock" "d7y.io/dragonfly/v2/cdnsystem/plugins" "d7y.io/dragonfly/v2/cdnsystem/types" - "d7y.io/dragonfly/v2/pkg/idgen" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/idgen" + "d7y.io/dragonfly/v2/internal/rpc/base" "d7y.io/dragonfly/v2/pkg/source" sourceMock "d7y.io/dragonfly/v2/pkg/source/mock" "d7y.io/dragonfly/v2/pkg/util/net/urlutils" diff --git a/cdnsystem/daemon/cdn/reporter.go b/cdnsystem/daemon/cdn/reporter.go index 6c115c77374..92cdcf96b1a 100644 --- a/cdnsystem/daemon/cdn/reporter.go +++ b/cdnsystem/daemon/cdn/reporter.go @@ -20,7 +20,7 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon" "d7y.io/dragonfly/v2/cdnsystem/daemon/cdn/storage" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "github.com/pkg/errors" "go.uber.org/zap" ) @@ -46,7 +46,7 @@ func (re *reporter) reportCache(taskID string, detectResult *cacheResult) error if detectResult != nil && detectResult.pieceMetaRecords != nil { for _, record := range detectResult.pieceMetaRecords { if err := re.reportPieceMetaRecord(taskID, record, CacheReport); err != nil { - return errors.Wrapf(err, "failed to publish pieceMetaRecord:%v, seedPiece:%v", record, + return errors.Wrapf(err, "publish pieceMetaRecord:%v, seedPiece:%v", record, convertPieceMeta2SeedPiece(record)) } } diff --git a/cdnsystem/daemon/cdn/storage/disk/disk.go b/cdnsystem/daemon/cdn/storage/disk/disk.go index 14ee6bdbf51..4e40efd6eb9 100644 --- a/cdnsystem/daemon/cdn/storage/disk/disk.go +++ b/cdnsystem/daemon/cdn/storage/disk/disk.go @@ -30,7 +30,7 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/storedriver" "d7y.io/dragonfly/v2/cdnsystem/storedriver/local" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/synclock" "d7y.io/dragonfly/v2/pkg/unit" "d7y.io/dragonfly/v2/pkg/util/fileutils" @@ -110,11 +110,11 @@ func (s *diskStorageMgr) ReadPieceMetaRecords(taskID string) ([]*storage.PieceMe return nil, err } pieceMetaRecords := strings.Split(strings.TrimSpace(string(readBytes)), "\n") - var result = make([]*storage.PieceMetaRecord, 0) + var result = make([]*storage.PieceMetaRecord, 0, len(pieceMetaRecords)) for _, pieceStr := range pieceMetaRecords { record, err := storage.ParsePieceMetaRecord(pieceStr) if err != nil { - return nil, errors.Wrapf(err, "failed to get piece meta record: %v", pieceStr) + return nil, errors.Wrapf(err, "get piece meta record: %v", pieceStr) } result = append(result, record) } @@ -160,12 +160,12 @@ func (s *diskStorageMgr) WriteDownloadFile(taskID string, offset int64, len int6 func (s *diskStorageMgr) ReadFileMetaData(taskID string) (*storage.FileMetaData, error) { bytes, err := s.diskDriver.GetBytes(storage.GetTaskMetaDataRaw(taskID)) if err != nil { - return nil, errors.Wrapf(err, "failed to get metadata bytes") + return nil, errors.Wrapf(err, "get metadata bytes") } metaData := &storage.FileMetaData{} if err := json.Unmarshal(bytes, metaData); err != nil { - return nil, errors.Wrapf(err, "failed to unmarshal metadata bytes") + return nil, errors.Wrapf(err, "unmarshal metadata bytes") } return metaData, nil } @@ -173,7 +173,7 @@ func (s *diskStorageMgr) ReadFileMetaData(taskID string) (*storage.FileMetaData, func (s *diskStorageMgr) WriteFileMetaData(taskID string, metaData *storage.FileMetaData) error { data, err := json.Marshal(metaData) if err != nil { - return errors.Wrapf(err, "failed to marshal metadata") + return errors.Wrapf(err, "marshal metadata") } return s.diskDriver.PutBytes(storage.GetTaskMetaDataRaw(taskID), data) } diff --git a/cdnsystem/daemon/cdn/storage/hybrid/hybrid.go b/cdnsystem/daemon/cdn/storage/hybrid/hybrid.go index d0e37251469..e4ea0cda2ab 100644 --- a/cdnsystem/daemon/cdn/storage/hybrid/hybrid.go +++ b/cdnsystem/daemon/cdn/storage/hybrid/hybrid.go @@ -33,7 +33,7 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/storedriver" "d7y.io/dragonfly/v2/cdnsystem/storedriver/local" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/synclock" "d7y.io/dragonfly/v2/pkg/unit" "d7y.io/dragonfly/v2/pkg/util/fileutils" @@ -224,11 +224,11 @@ func (h *hybridStorageMgr) ReadPieceMetaRecords(taskID string) ([]*storage.Piece return nil, err } pieceMetaRecords := strings.Split(strings.TrimSpace(string(readBytes)), "\n") - var result = make([]*storage.PieceMetaRecord, 0) + var result = make([]*storage.PieceMetaRecord, 0, len(pieceMetaRecords)) for _, pieceStr := range pieceMetaRecords { record, err := storage.ParsePieceMetaRecord(pieceStr) if err != nil { - return nil, errors.Wrapf(err, "failed to get piece meta record:%v", pieceStr) + return nil, errors.Wrapf(err, "get piece meta record:%v", pieceStr) } result = append(result, record) } @@ -238,12 +238,12 @@ func (h *hybridStorageMgr) ReadPieceMetaRecords(taskID string) ([]*storage.Piece func (h *hybridStorageMgr) ReadFileMetaData(taskID string) (*storage.FileMetaData, error) { readBytes, err := h.diskDriver.GetBytes(storage.GetTaskMetaDataRaw(taskID)) if err != nil { - return nil, errors.Wrapf(err, "failed to get metadata bytes") + return nil, errors.Wrapf(err, "get metadata bytes") } metaData := &storage.FileMetaData{} if err := json.Unmarshal(readBytes, metaData); err != nil { - return nil, errors.Wrapf(err, "failed to unmarshal metadata bytes") + return nil, errors.Wrapf(err, "unmarshal metadata bytes") } return metaData, nil } @@ -255,7 +255,7 @@ func (h *hybridStorageMgr) AppendPieceMetaData(taskID string, record *storage.Pi func (h *hybridStorageMgr) WriteFileMetaData(taskID string, metaData *storage.FileMetaData) error { data, err := json.Marshal(metaData) if err != nil { - return errors.Wrapf(err, "failed to marshal metadata") + return errors.Wrapf(err, "marshal metadata") } return h.diskDriver.PutBytes(storage.GetTaskMetaDataRaw(taskID), data) } diff --git a/cdnsystem/daemon/cdn/storage/hybrid/shm_switch.go b/cdnsystem/daemon/cdn/storage/hybrid/shm_switch.go index 104aff027b7..41d5bf16896 100644 --- a/cdnsystem/daemon/cdn/storage/hybrid/shm_switch.go +++ b/cdnsystem/daemon/cdn/storage/hybrid/shm_switch.go @@ -19,7 +19,7 @@ package hybrid import ( "regexp" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "go.uber.org/atomic" ) diff --git a/cdnsystem/daemon/cdn/storage/storage_gc.go b/cdnsystem/daemon/cdn/storage/storage_gc.go index c221bd10837..63dab5bf09a 100644 --- a/cdnsystem/daemon/cdn/storage/storage_gc.go +++ b/cdnsystem/daemon/cdn/storage/storage_gc.go @@ -17,6 +17,7 @@ package storage import ( + "fmt" "os" "strings" "time" @@ -24,11 +25,10 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon" cdnerrors "d7y.io/dragonfly/v2/cdnsystem/errors" "d7y.io/dragonfly/v2/cdnsystem/storedriver" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/util/timeutils" "github.com/emirpasic/gods/maps/treemap" godsutils "github.com/emirpasic/gods/utils" - "github.com/pkg/errors" ) type Cleaner struct { @@ -57,7 +57,7 @@ func (cleaner *Cleaner) GC(storagePattern string, force bool) ([]string, error) } freeSpace, _ = cleaner.driver.GetAvailSpace() } else { - return nil, errors.Wrapf(err, "failed to get avail space") + return nil, fmt.Errorf("get available space: %v", err) } } fullGC := force diff --git a/cdnsystem/daemon/cdn/storage/storage_mgr.go b/cdnsystem/daemon/cdn/storage/storage_mgr.go index 37e364c1922..7a3397ddca1 100644 --- a/cdnsystem/daemon/cdn/storage/storage_mgr.go +++ b/cdnsystem/daemon/cdn/storage/storage_mgr.go @@ -233,11 +233,11 @@ func Register(name string, builder ManagerBuilder) error { Result: cfg, }) if err != nil { - return nil, fmt.Errorf("failed to create decoder: %v", err) + return nil, fmt.Errorf("create decoder: %v", err) } err = decoder.Decode(conf) if err != nil { - return nil, fmt.Errorf("failed to parse config: %v", err) + return nil, fmt.Errorf("parse config: %v", err) } return newManagerPlugin(name, builder, cfg) } @@ -251,7 +251,7 @@ func newManagerPlugin(name string, builder ManagerBuilder, cfg *Config) (plugins instant, err := builder(cfg) if err != nil { - return nil, fmt.Errorf("failed to init storage manager %s: %v", name, err) + return nil, fmt.Errorf("init storage manager %s: %v", name, err) } return &managerPlugin{ diff --git a/cdnsystem/daemon/gc/manager.go b/cdnsystem/daemon/gc/manager.go index af965c6ef8d..cf4ce1bb5c8 100644 --- a/cdnsystem/daemon/gc/manager.go +++ b/cdnsystem/daemon/gc/manager.go @@ -22,7 +22,7 @@ import ( "sync" "time" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) type Executor interface { diff --git a/cdnsystem/daemon/progress/manager.go b/cdnsystem/daemon/progress/manager.go index 3abce16a1bb..0a2e0353944 100644 --- a/cdnsystem/daemon/progress/manager.go +++ b/cdnsystem/daemon/progress/manager.go @@ -19,6 +19,7 @@ package progress import ( "container/list" "context" + "fmt" "sort" "strconv" "sync" @@ -26,8 +27,8 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon" "d7y.io/dragonfly/v2/cdnsystem/types" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/structure/syncmap" "d7y.io/dragonfly/v2/pkg/synclock" "github.com/pkg/errors" @@ -85,11 +86,11 @@ func (pm *Manager) WatchSeedProgress(ctx context.Context, taskID string) (<-chan defer pm.mu.UnLock(taskID, true) chanList, err := pm.seedSubscribers.GetAsList(taskID) if err != nil { - return nil, errors.Wrap(err, "failed to get seed subscribers") + return nil, fmt.Errorf("get seed subscribers: %v", err) } pieceMetaDataRecords, err := pm.getPieceMetaRecordsByTaskID(taskID) if err != nil { - return nil, errors.Wrap(err, "failed to get piece meta records by taskID") + return nil, fmt.Errorf("get piece meta records by taskID: %v", err) } ch := make(chan *types.SeedPiece, pm.buffer) ele := chanList.PushBack(ch) @@ -116,11 +117,11 @@ func (pm *Manager) PublishPiece(taskID string, record *types.SeedPiece) error { defer pm.mu.UnLock(taskID, false) err := pm.setPieceMetaRecord(taskID, record) if err != nil { - return errors.Wrap(err, "failed to set piece meta record") + return fmt.Errorf("set piece meta record: %v", err) } chanList, err := pm.seedSubscribers.GetAsList(taskID) if err != nil { - return errors.Wrap(err, "failed to get seed subscribers") + return fmt.Errorf("get seed subscribers: %v", err) } var wg sync.WaitGroup for e := chanList.Front(); e != nil; e = e.Next() { @@ -145,7 +146,7 @@ func (pm *Manager) PublishTask(ctx context.Context, taskID string, task *types.S defer pm.mu.UnLock(taskID, false) chanList, err := pm.seedSubscribers.GetAsList(taskID) if err != nil { - return errors.Wrap(err, "failed to get seed subscribers") + return fmt.Errorf("get seed subscribers: %v", err) } // unwatch for e := chanList.Front(); e != nil; e = e.Next() { @@ -165,7 +166,7 @@ func (pm *Manager) Clear(taskID string) error { defer pm.mu.UnLock(taskID, false) chanList, err := pm.seedSubscribers.GetAsList(taskID) if err != nil && errors.Cause(err) != dferrors.ErrDataNotFound { - return errors.Wrap(err, "failed to get seed subscribers") + return errors.Wrap(err, "get seed subscribers") } if chanList != nil { for e := chanList.Front(); e != nil; e = e.Next() { @@ -181,11 +182,11 @@ func (pm *Manager) Clear(taskID string) error { } err = pm.seedSubscribers.Remove(taskID) if err != nil && dferrors.ErrDataNotFound != errors.Cause(err) { - return errors.Wrap(err, "failed to clear seed subscribes") + return errors.Wrap(err, "clear seed subscribes") } err = pm.taskPieceMetaRecords.Remove(taskID) if err != nil && dferrors.ErrDataNotFound != errors.Cause(err) { - return errors.Wrap(err, "failed to clear piece meta records") + return errors.Wrap(err, "clear piece meta records") } return nil } diff --git a/cdnsystem/daemon/task/manager.go b/cdnsystem/daemon/task/manager.go index a2285728cf3..b716f6f8176 100644 --- a/cdnsystem/daemon/task/manager.go +++ b/cdnsystem/daemon/task/manager.go @@ -26,8 +26,8 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon/gc" cdnerrors "d7y.io/dragonfly/v2/cdnsystem/errors" "d7y.io/dragonfly/v2/cdnsystem/types" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/structure/syncmap" "d7y.io/dragonfly/v2/pkg/synclock" "d7y.io/dragonfly/v2/pkg/util/stringutils" @@ -78,7 +78,7 @@ func (tm *Manager) Register(ctx context.Context, req *types.TaskRegisterRequest) // trigger CDN if err := tm.triggerCdnSyncAction(ctx, task); err != nil { - return nil, errors.Wrapf(err, "failed to trigger cdn") + return nil, errors.Wrapf(err, "trigger cdn") } logger.WithTaskID(task.TaskID).Infof("successfully trigger cdn sync action") // watch seed progress @@ -111,7 +111,7 @@ func (tm *Manager) triggerCdnSyncAction(ctx context.Context, task *types.SeedTas CdnStatus: types.TaskInfoCdnStatusRunning, }) if err != nil { - return errors.Wrapf(err, "failed to update task") + return errors.Wrapf(err, "update task") } // triggerCDN goroutine go func() { diff --git a/cdnsystem/daemon/task/manager_test.go b/cdnsystem/daemon/task/manager_test.go index 4d107ca0ac5..20567c7754f 100644 --- a/cdnsystem/daemon/task/manager_test.go +++ b/cdnsystem/daemon/task/manager_test.go @@ -23,8 +23,8 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/config" "d7y.io/dragonfly/v2/cdnsystem/daemon/mock" "d7y.io/dragonfly/v2/cdnsystem/types" - "d7y.io/dragonfly/v2/pkg/idgen" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/idgen" + "d7y.io/dragonfly/v2/internal/rpc/base" "github.com/golang/mock/gomock" "github.com/stretchr/testify/suite" ) diff --git a/cdnsystem/daemon/task/manager_util.go b/cdnsystem/daemon/task/manager_util.go index 4a34dd6463d..82debd94abe 100644 --- a/cdnsystem/daemon/task/manager_util.go +++ b/cdnsystem/daemon/task/manager_util.go @@ -18,12 +18,13 @@ package task import ( "context" + "fmt" "time" "d7y.io/dragonfly/v2/cdnsystem/config" cdnerrors "d7y.io/dragonfly/v2/cdnsystem/errors" "d7y.io/dragonfly/v2/cdnsystem/types" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/source" "d7y.io/dragonfly/v2/pkg/synclock" "d7y.io/dragonfly/v2/pkg/util/net/urlutils" @@ -47,8 +48,8 @@ func (tm *Manager) addOrUpdateTask(ctx context.Context, request *types.TaskRegis if key, err := tm.taskURLUnReachableStore.Get(taskID); err == nil { if unReachableStartTime, ok := key.(time.Time); ok && time.Since(unReachableStartTime) < tm.cfg.FailAccessInterval { - return nil, errors.Wrapf(cdnerrors.ErrURLNotReachable, - "task hit unReachable cache and interval less than %d, url: %s", tm.cfg.FailAccessInterval, request.URL) + return nil, cdnerrors.ErrURLNotReachable{URL: request.URL, Cause: fmt.Errorf("task hit unReachable cache and interval less than %d, url: %s", + tm.cfg.FailAccessInterval, request.URL)} } tm.taskURLUnReachableStore.Delete(taskID) logger.Debugf("delete taskID:%s from url unReachable store", taskID) @@ -67,7 +68,7 @@ func (tm *Manager) addOrUpdateTask(ctx context.Context, request *types.TaskRegis if v, err := tm.taskStore.Get(taskID); err == nil { existTask := v.(*types.SeedTask) if !isSameTask(existTask, newTask) { - return nil, errors.Wrapf(cdnerrors.ErrTaskIDDuplicate, "newTask:%+v, existTask:%+v", newTask, existTask) + return nil, cdnerrors.ErrTaskIDDuplicate{TaskID: taskID, Cause: fmt.Errorf("newTask:%+v, existTask:%+v", newTask, existTask)} } task = existTask logger.Debugf("get exist task for taskID:%s", taskID) diff --git a/cdnsystem/errors/errors.go b/cdnsystem/errors/errors.go index 81fbbe98a1b..fe08e282526 100644 --- a/cdnsystem/errors/errors.go +++ b/cdnsystem/errors/errors.go @@ -17,19 +17,35 @@ package errors import ( + "fmt" + "github.com/pkg/errors" ) +// ErrURLNotReachable represents the url is a not reachable. +type ErrURLNotReachable struct { + URL string + Cause error +} + +func (e ErrURLNotReachable) Error() string { + return fmt.Sprintf("url %s not reachable: %v", e.URL, e.Cause) +} + +// ErrTaskIDDuplicate represents the task id is in conflict. +type ErrTaskIDDuplicate struct { + TaskID string + Cause error +} + +func (e ErrTaskIDDuplicate) Error() string { + return fmt.Sprintf("taskId %s conflict: %v", e.TaskID, e.Cause) +} + var ( // ErrSystemError represents the error is a system error. ErrSystemError = errors.New("system error") - // ErrURLNotReachable represents the url is a not reachable. - ErrURLNotReachable = errors.New("url not reachable") - - // ErrTaskIDDuplicate represents the task id is in conflict. - ErrTaskIDDuplicate = errors.New("taskId conflict") - // ErrPieceCountNotEqual represents the number of pieces downloaded does not match the amount of meta information ErrPieceCountNotEqual = errors.New("inconsistent number of pieces") @@ -71,12 +87,16 @@ func IsSystemError(err error) bool { // IsURLNotReachable checks the error is a url not reachable or not. func IsURLNotReachable(err error) bool { - return errors.Cause(err) == ErrURLNotReachable + err = errors.Cause(err) + _, ok := err.(ErrURLNotReachable) + return ok } // IsTaskIDDuplicate checks the error is a TaskIDDuplicate error or not. func IsTaskIDDuplicate(err error) bool { - return errors.Cause(err) == ErrTaskIDDuplicate + err = errors.Cause(err) + _, ok := err.(ErrTaskIDDuplicate) + return ok } func IsPieceCountNotEqual(err error) bool { diff --git a/cdnsystem/errors/errors_test.go b/cdnsystem/errors/errors_test.go index 0b3f3598df7..fb6a14b7c2a 100644 --- a/cdnsystem/errors/errors_test.go +++ b/cdnsystem/errors/errors_test.go @@ -17,6 +17,7 @@ package errors import ( + "fmt" "testing" "github.com/pkg/errors" @@ -475,13 +476,18 @@ func (s *ErrorTestSuite) TestIsTaskIDDuplicate() { { name: "equal", args: args{ - err: ErrTaskIDDuplicate, + err: ErrTaskIDDuplicate{ + TaskID: "test", + Cause: fmt.Errorf("test"), + }, }, want: true, }, { name: "wrap", args: args{ - err: errors.Wrapf(errors.Wrapf(ErrTaskIDDuplicate, "wrap err"), "wapp err"), + err: errors.Wrapf(ErrTaskIDDuplicate{ + TaskID: "test", + Cause: fmt.Errorf("test")}, "wapp err"), }, want: true, }, { @@ -511,13 +517,19 @@ func (s *ErrorTestSuite) TestIsURLNotReachable() { { name: "equal", args: args{ - err: ErrURLNotReachable, + err: ErrURLNotReachable{ + URL: "test", + Cause: fmt.Errorf("test"), + }, }, want: true, }, { name: "wrap", args: args{ - err: errors.Wrapf(errors.Wrapf(ErrURLNotReachable, "wrap err"), "wapp err"), + err: errors.Wrapf(ErrURLNotReachable{ + URL: "test", + Cause: fmt.Errorf("test"), + }, "wapp err"), }, want: true, }, { diff --git a/cdnsystem/plugins/plugins.go b/cdnsystem/plugins/plugins.go index e7b49194633..47481be312f 100644 --- a/cdnsystem/plugins/plugins.go +++ b/cdnsystem/plugins/plugins.go @@ -19,7 +19,7 @@ package plugins import ( "fmt" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) var mgr = NewManager() diff --git a/cdnsystem/server/server.go b/cdnsystem/server/server.go index 330126b549f..93a9174244f 100644 --- a/cdnsystem/server/server.go +++ b/cdnsystem/server/server.go @@ -30,11 +30,11 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon/task" "d7y.io/dragonfly/v2/cdnsystem/plugins" "d7y.io/dragonfly/v2/cdnsystem/server/service" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem/server" + "d7y.io/dragonfly/v2/internal/rpc/manager" + configServer "d7y.io/dragonfly/v2/internal/rpc/manager/client" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem/server" - "d7y.io/dragonfly/v2/pkg/rpc/manager" - configServer "d7y.io/dragonfly/v2/pkg/rpc/manager/client" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "d7y.io/dragonfly/v2/pkg/util/stringutils" "github.com/pkg/errors" @@ -58,7 +58,7 @@ func New(cfg *config.Config) (*Server, error) { // progress manager progressMgr, err := progress.NewManager() if err != nil { - return nil, errors.Wrapf(err, "failed to create progress manager") + return nil, errors.Wrapf(err, "create progress manager") } // storage manager @@ -69,22 +69,22 @@ func New(cfg *config.Config) (*Server, error) { // cdn manager cdnMgr, err := cdn.NewManager(cfg, storageMgr, progressMgr) if err != nil { - return nil, errors.Wrapf(err, "failed to create cdn manager") + return nil, errors.Wrapf(err, "create cdn manager") } // task manager taskMgr, err := task.NewManager(cfg, cdnMgr, progressMgr) if err != nil { - return nil, errors.Wrapf(err, "failed to create task manager") + return nil, errors.Wrapf(err, "create task manager") } storageMgr.Initialize(taskMgr) // gc manager if err != nil { - return nil, errors.Wrapf(err, "failed to create gc manager") + return nil, errors.Wrapf(err, "create gc manager") } cdnSeedServer, err := service.NewCdnSeedServer(cfg, taskMgr) if err != nil { - return nil, errors.Wrap(err, "failed to create seedServer") + return nil, errors.Wrap(err, "create seedServer") } var cfgServer configServer.ManagerClient if !stringutils.IsBlank(cfg.ConfigServer) { @@ -93,7 +93,7 @@ func New(cfg *config.Config) (*Server, error) { Addr: cfg.ConfigServer, }}) if err != nil { - return nil, errors.Wrap(err, "failed to create config server") + return nil, errors.Wrap(err, "create config server") } } return &Server{ @@ -125,7 +125,7 @@ func (s *Server) Serve() (err error) { } err = rpc.StartTCPServer(s.Config.ListenPort, s.Config.ListenPort, s.seedServer) if err != nil { - return errors.Wrap(err, "failed to start tcp server") + return errors.Wrap(err, "start tcp server") } return nil } diff --git a/cdnsystem/server/service/cdn_seed_server.go b/cdnsystem/server/service/cdn_seed_server.go index a80e8cadbed..98b4f109547 100644 --- a/cdnsystem/server/service/cdn_seed_server.go +++ b/cdnsystem/server/service/cdn_seed_server.go @@ -26,11 +26,11 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/daemon" cdnerrors "d7y.io/dragonfly/v2/cdnsystem/errors" "d7y.io/dragonfly/v2/cdnsystem/types" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "d7y.io/dragonfly/v2/pkg/util/net/urlutils" "d7y.io/dragonfly/v2/pkg/util/stringutils" diff --git a/cdnsystem/server/service/cdn_seed_server_test.go b/cdnsystem/server/service/cdn_seed_server_test.go index cb9325b4423..dfb32898f62 100644 --- a/cdnsystem/server/service/cdn_seed_server_test.go +++ b/cdnsystem/server/service/cdn_seed_server_test.go @@ -24,8 +24,8 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/config" "d7y.io/dragonfly/v2/cdnsystem/daemon" "d7y.io/dragonfly/v2/cdnsystem/types" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem" ) func TestCdnSeedServer_GetPieceTasks(t *testing.T) { diff --git a/cdnsystem/storedriver/driver.go b/cdnsystem/storedriver/driver.go index 6df61ff5cf9..0b2ad7dcbc6 100644 --- a/cdnsystem/storedriver/driver.go +++ b/cdnsystem/storedriver/driver.go @@ -143,7 +143,7 @@ func newDriverPlugin(name string, builder DriverBuilder, cfg *Config) (plugins.P // init driver with specific config driver, err := builder(cfg) if err != nil { - return nil, fmt.Errorf("failed to init storage driver %s: %v", name, err) + return nil, fmt.Errorf("init storage driver %s: %v", name, err) } return &driverPlugin{ diff --git a/cdnsystem/storedriver/local/local_driver.go b/cdnsystem/storedriver/local/local_driver.go index c2de0f522ef..9955422d4f5 100644 --- a/cdnsystem/storedriver/local/local_driver.go +++ b/cdnsystem/storedriver/local/local_driver.go @@ -25,7 +25,7 @@ import ( cdnerrors "d7y.io/dragonfly/v2/cdnsystem/errors" "d7y.io/dragonfly/v2/cdnsystem/storedriver" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/synclock" "d7y.io/dragonfly/v2/pkg/unit" "d7y.io/dragonfly/v2/pkg/util/fileutils" @@ -104,12 +104,12 @@ func (ds *driver) Get(raw *storedriver.Raw) (io.ReadCloser, error) { } defer func() { if err := f.Close(); err != nil { - logger.Error("failed to close file %s: %v", f, err) + logger.Error("close file %s: %v", f, err) } }() if _, err := f.Seek(raw.Offset, io.SeekStart); err != nil { - logger.Errorf("failed to seek file %s: %v", f, err) + logger.Errorf("seek file %s: %v", f, err) } var reader io.Reader reader = f @@ -118,7 +118,7 @@ func (ds *driver) Get(raw *storedriver.Raw) (io.ReadCloser, error) { } buf := make([]byte, 256*1024) if _, err := io.CopyBuffer(w, reader, buf); err != nil { - logger.Errorf("failed to copy buffer from file %s: %v", f, err) + logger.Errorf("copy buffer from file %s: %v", f, err) } }(w) return r, nil diff --git a/cdnsystem/storedriver/local/local_driver_test.go b/cdnsystem/storedriver/local/local_driver_test.go index 434e25def78..e9cf77bc7d7 100644 --- a/cdnsystem/storedriver/local/local_driver_test.go +++ b/cdnsystem/storedriver/local/local_driver_test.go @@ -476,7 +476,7 @@ func (s *LocalDriverTestSuite) TestPutParallel() { var key = "fooPutParallel" var routineCount = 4 var testStr = "hello" - var testStrLength = len(testStr) + testStrLength := len(testStr) var wg sync.WaitGroup for k := 0; k < routineCount; k++ { diff --git a/cdnsystem/storedriver/store_mgr.go b/cdnsystem/storedriver/store_mgr.go index d968a133061..8413833193c 100644 --- a/cdnsystem/storedriver/store_mgr.go +++ b/cdnsystem/storedriver/store_mgr.go @@ -37,14 +37,14 @@ func Register(name string, builder DriverBuilder) error { var f = func(conf interface{}) (plugins.Plugin, error) { cfg := &Config{} if err := mapstructure.Decode(conf, cfg); err != nil { - return nil, fmt.Errorf("failed to parse config: %v", err) + return nil, fmt.Errorf("parse config: %v", err) } // prepare the base dir if !filepath.IsAbs(cfg.BaseDir) { return nil, fmt.Errorf("not absolute path: %s", cfg.BaseDir) } if err := fileutils.MkdirAll(cfg.BaseDir); err != nil { - return nil, fmt.Errorf("failed to create baseDir%s: %v", cfg.BaseDir, err) + return nil, fmt.Errorf("create baseDir %s: %v", cfg.BaseDir, err) } return newDriverPlugin(name, builder, cfg) diff --git a/client/clientutil/keepalive.go b/client/clientutil/keepalive.go index a47ac1dfda2..92db965f541 100644 --- a/client/clientutil/keepalive.go +++ b/client/clientutil/keepalive.go @@ -19,7 +19,7 @@ package clientutil import ( "time" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) type KeepAlive interface { @@ -32,6 +32,8 @@ type keepAlive struct { access time.Time } +var _ KeepAlive = (*keepAlive)(nil) + func NewKeepAlive(name string) KeepAlive { return &keepAlive{ name: name, diff --git a/client/clientutil/peer.go b/client/clientutil/peer.go index 8d0749f0751..a4f1dbc05e3 100644 --- a/client/clientutil/peer.go +++ b/client/clientutil/peer.go @@ -22,7 +22,7 @@ import ( "github.com/pborman/uuid" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) func GenPeerID(peerHost *scheduler.PeerHost) string { diff --git a/client/config/dfget.go b/client/config/dfget.go index 668a197476a..82d1c7479c9 100644 --- a/client/config/dfget.go +++ b/client/config/dfget.go @@ -28,13 +28,13 @@ import ( "time" "d7y.io/dragonfly/v2/cmd/dependency/base" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/unit" "github.com/pkg/errors" "golang.org/x/time/rate" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/pkg/basic" - "d7y.io/dragonfly/v2/pkg/dferrors" "d7y.io/dragonfly/v2/pkg/util/net/urlutils" "d7y.io/dragonfly/v2/pkg/util/stringutils" ) diff --git a/client/daemon/gc/gc_manager.go b/client/daemon/gc/gc_manager.go index 42562265926..2fb62951959 100644 --- a/client/daemon/gc/gc_manager.go +++ b/client/daemon/gc/gc_manager.go @@ -19,7 +19,7 @@ package gc import ( "time" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) type GC interface { @@ -36,6 +36,8 @@ type gcManager struct { done chan bool } +var _ Manager = (*gcManager)(nil) + var allGCTasks = map[string]GC{} func Register(name string, gc GC) { diff --git a/client/daemon/peer/peertask_base.go b/client/daemon/peer/peertask_base.go index 7d135903a35..2d1e7bc979c 100644 --- a/client/daemon/peer/peertask_base.go +++ b/client/daemon/peer/peertask_base.go @@ -22,9 +22,10 @@ import ( "io" "runtime/debug" "sync" - "sync/atomic" "time" + "go.uber.org/atomic" + "github.com/pkg/errors" "go.opentelemetry.io/otel/trace" "golang.org/x/time/rate" @@ -33,13 +34,13 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/config" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - dfclient "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/client" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" - schedulerclient "d7y.io/dragonfly/v2/pkg/rpc/scheduler/client" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + dfclient "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/client" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" + schedulerclient "d7y.io/dragonfly/v2/internal/rpc/scheduler/client" ) const ( @@ -77,8 +78,8 @@ type peerTask struct { taskID string contentLength int64 totalPiece int32 - completedLength int64 - usedTraffic int64 + completedLength *atomic.Int64 + usedTraffic *atomic.Int64 //sizeScope base.SizeScope singlePiece *scheduler.SinglePiece @@ -115,11 +116,13 @@ type peerTask struct { // requestedPieces stands all pieces requested from peers requestedPieces *Bitmap // lock used by piece result manage, when update readyPieces, lock first - lock sync.Locker + lock sync.Mutex // limiter will be used when enable per peer task rate limit limiter *rate.Limiter } +var _ Task = (*peerTask)(nil) + func (pt *peerTask) ReportPieceResult(pieceTask *base.PieceInfo, pieceResult *scheduler.PieceResult) error { panic("implement me") } @@ -145,11 +148,11 @@ func (pt *peerTask) SetContentLength(i int64) error { } func (pt *peerTask) AddTraffic(n int64) { - atomic.AddInt64(&pt.usedTraffic, n) + pt.usedTraffic.Add(n) } func (pt *peerTask) GetTraffic() int64 { - return pt.usedTraffic + return pt.usedTraffic.Load() } func (pt *peerTask) GetTotalPieces() int32 { @@ -560,7 +563,7 @@ func (pt *peerTask) downloadPieceWorker(id int32, pti Task, requests chan *Downl } func (pt *peerTask) isCompleted() bool { - return atomic.LoadInt64(&pt.completedLength) == atomic.LoadInt64(&pt.contentLength) + return pt.completedLength.Load() == pt.contentLength } func (pt *peerTask) preparePieceTasks(request *base.PieceTaskRequest) (p *base.PiecePacket, err error) { diff --git a/client/daemon/peer/peertask_bitmap.go b/client/daemon/peer/peertask_bitmap.go index cdda75831e8..a8505ca5ae4 100644 --- a/client/daemon/peer/peertask_bitmap.go +++ b/client/daemon/peer/peertask_bitmap.go @@ -16,12 +16,12 @@ package peer -import "sync/atomic" +import "go.uber.org/atomic" type Bitmap struct { bits []byte cap int32 - settled int32 + settled atomic.Int32 } func NewBitmap() *Bitmap { @@ -53,12 +53,12 @@ func (b *Bitmap) Set(i int32) { //if b.IsSet(i) { // return //} - atomic.AddInt32(&b.settled, 1) + b.settled.Inc() b.bits[i/8] |= 1 << uint(7-i%8) } func (b *Bitmap) Settled() int32 { - return atomic.LoadInt32(&b.settled) + return b.settled.Load() } //func (b *Bitmap) Clear(i int) { diff --git a/client/daemon/peer/peertask_file.go b/client/daemon/peer/peertask_file.go index 1657026e20b..1ea0bf1a863 100644 --- a/client/daemon/peer/peertask_file.go +++ b/client/daemon/peer/peertask_file.go @@ -19,20 +19,20 @@ package peer import ( "context" "sync" - "sync/atomic" - "d7y.io/dragonfly/v2/pkg/dferrors" + "d7y.io/dragonfly/v2/internal/dferrors" "github.com/pkg/errors" "go.opentelemetry.io/otel/semconv" "go.opentelemetry.io/otel/trace" + "go.uber.org/atomic" "golang.org/x/time/rate" "d7y.io/dragonfly/v2/client/config" - "d7y.io/dragonfly/v2/pkg/dfcodes" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" - schedulerclient "d7y.io/dragonfly/v2/pkg/rpc/scheduler/client" + "d7y.io/dragonfly/v2/internal/dfcodes" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" + schedulerclient "d7y.io/dragonfly/v2/internal/rpc/scheduler/client" ) type FilePeerTaskRequest struct { @@ -54,6 +54,8 @@ type filePeerTask struct { progressStopCh chan bool } +var _ FilePeerTask = (*filePeerTask)(nil) + type ProgressState struct { Success bool Code base.Code @@ -159,29 +161,29 @@ func newFilePeerTask(ctx context.Context, progressCh: make(chan *FilePeerTaskProgress), progressStopCh: make(chan bool), peerTask: peerTask{ - host: host, - backSource: backSource, - request: request, - peerPacketStream: peerPacketStream, - pieceManager: pieceManager, - peerPacketReady: make(chan bool, 1), - peerID: request.PeerId, - taskID: result.TaskId, - singlePiece: singlePiece, - done: make(chan struct{}), - span: span, - once: sync.Once{}, - readyPieces: NewBitmap(), - requestedPieces: NewBitmap(), - lock: &sync.Mutex{}, - failedPieceCh: make(chan int32, 4), - failedReason: "unknown", - failedCode: dfcodes.UnknownError, - contentLength: -1, - totalPiece: -1, - schedulerOption: schedulerOption, - limiter: limiter, - + host: host, + backSource: backSource, + request: request, + peerPacketStream: peerPacketStream, + pieceManager: pieceManager, + peerPacketReady: make(chan bool, 1), + peerID: request.PeerId, + taskID: result.TaskId, + singlePiece: singlePiece, + done: make(chan struct{}), + span: span, + once: sync.Once{}, + readyPieces: NewBitmap(), + requestedPieces: NewBitmap(), + failedPieceCh: make(chan int32, 4), + failedReason: "unknown", + failedCode: dfcodes.UnknownError, + contentLength: -1, + totalPiece: -1, + schedulerOption: schedulerOption, + limiter: limiter, + completedLength: atomic.NewInt64(0), + usedTraffic: atomic.NewInt64(0), SugaredLoggerOnWith: logger.With("peer", request.PeerId, "task", result.TaskId, "component", "filePeerTask"), }, }, nil, nil @@ -233,7 +235,7 @@ func (pt *filePeerTask) ReportPieceResult(piece *base.PieceInfo, pieceResult *sc } // mark piece processed pt.readyPieces.Set(pieceResult.PieceNum) - atomic.AddInt64(&pt.completedLength, int64(piece.RangeSize)) + pt.completedLength.Add(int64(piece.RangeSize)) pt.lock.Unlock() pieceResult.FinishedCount = pt.readyPieces.Settled() @@ -248,7 +250,7 @@ func (pt *filePeerTask) ReportPieceResult(piece *base.PieceInfo, pieceResult *sc TaskID: pt.taskID, PeerID: pt.peerID, ContentLength: pt.contentLength, - CompletedLength: atomic.LoadInt64(&pt.completedLength), + CompletedLength: pt.completedLength.Load(), PeerTaskDone: false, } @@ -302,7 +304,7 @@ func (pt *filePeerTask) finish() error { TaskID: pt.taskID, PeerID: pt.peerID, ContentLength: pt.contentLength, - CompletedLength: pt.completedLength, + CompletedLength: pt.completedLength.Load(), PeerTaskDone: true, DoneCallback: func() { pt.peerTaskDone = true @@ -357,7 +359,7 @@ func (pt *filePeerTask) cleanUnfinished() { TaskID: pt.taskID, PeerID: pt.peerID, ContentLength: pt.contentLength, - CompletedLength: pt.completedLength, + CompletedLength: pt.completedLength.Load(), PeerTaskDone: true, DoneCallback: func() { pt.peerTaskDone = true diff --git a/client/daemon/peer/peertask_file_callback.go b/client/daemon/peer/peertask_file_callback.go index 7a14a80416f..a0ff01ef52d 100644 --- a/client/daemon/peer/peertask_file_callback.go +++ b/client/daemon/peer/peertask_file_callback.go @@ -21,9 +21,9 @@ import ( "time" "d7y.io/dragonfly/v2/client/daemon/storage" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) type filePeerTaskCallback struct { @@ -33,6 +33,8 @@ type filePeerTaskCallback struct { start time.Time } +var _ TaskCallback = (*filePeerTaskCallback)(nil) + func (p *filePeerTaskCallback) GetStartTime() time.Time { return p.start } diff --git a/client/daemon/peer/peertask_file_test.go b/client/daemon/peer/peertask_file_test.go index 7fa50d23698..0407766fa2f 100644 --- a/client/daemon/peer/peertask_file_test.go +++ b/client/daemon/peer/peertask_file_test.go @@ -29,7 +29,7 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/test" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/source" sourceMock "d7y.io/dragonfly/v2/pkg/source/mock" "github.com/golang/mock/gomock" diff --git a/client/daemon/peer/peertask_manager.go b/client/daemon/peer/peertask_manager.go index cd1055a6b73..99c97bcf633 100644 --- a/client/daemon/peer/peertask_manager.go +++ b/client/daemon/peer/peertask_manager.go @@ -33,10 +33,10 @@ import ( "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/storage" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" - schedulerclient "d7y.io/dragonfly/v2/pkg/rpc/scheduler/client" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" + schedulerclient "d7y.io/dragonfly/v2/internal/rpc/scheduler/client" ) // TaskManager processes all peer tasks request @@ -135,6 +135,8 @@ func NewPeerTaskManager( return ptm, nil } +var _ TaskManager = (*peerTaskManager)(nil) + func (ptm *peerTaskManager) StartFilePeerTask(ctx context.Context, req *FilePeerTaskRequest) (chan *FilePeerTaskProgress, *TinyData, error) { if ptm.enableMultiplex { progress, ok := ptm.tryReuseFilePeerTask(ctx, req) diff --git a/client/daemon/peer/peertask_manager_mock_test.go b/client/daemon/peer/peertask_manager_mock_test.go index 596c4d70b7f..16654381e9d 100644 --- a/client/daemon/peer/peertask_manager_mock_test.go +++ b/client/daemon/peer/peertask_manager_mock_test.go @@ -27,9 +27,9 @@ import ( gomock "github.com/golang/mock/gomock" - dflog "d7y.io/dragonfly/v2/pkg/dflog" - base "d7y.io/dragonfly/v2/pkg/rpc/base" - scheduler "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + dflog "d7y.io/dragonfly/v2/internal/dflog" + base "d7y.io/dragonfly/v2/internal/rpc/base" + scheduler "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) // MockPeerTaskManager is a mock of PeerTaskManager interface diff --git a/client/daemon/peer/peertask_manager_test.go b/client/daemon/peer/peertask_manager_test.go index a64c86a106f..38500aed249 100644 --- a/client/daemon/peer/peertask_manager_test.go +++ b/client/daemon/peer/peertask_manager_test.go @@ -39,13 +39,13 @@ import ( "d7y.io/dragonfly/v2/client/daemon/test" mock_daemon "d7y.io/dragonfly/v2/client/daemon/test/mock/daemon" mock_scheduler "d7y.io/dragonfly/v2/client/daemon/test/mock/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + daemonserver "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/server" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" + schedulerclient "d7y.io/dragonfly/v2/internal/rpc/scheduler/client" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - daemonserver "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/server" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" - schedulerclient "d7y.io/dragonfly/v2/pkg/rpc/scheduler/client" ) var _ daemonserver.DaemonServer = mock_daemon.NewMockDaemonServer(nil) diff --git a/client/daemon/peer/peertask_reuse.go b/client/daemon/peer/peertask_reuse.go index 373751662c0..accd88055b2 100644 --- a/client/daemon/peer/peertask_reuse.go +++ b/client/daemon/peer/peertask_reuse.go @@ -24,10 +24,10 @@ import ( "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/storage" - "d7y.io/dragonfly/v2/pkg/dfcodes" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/idgen" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/idgen" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "github.com/go-http-utils/headers" "go.opentelemetry.io/otel/semconv" "go.opentelemetry.io/otel/trace" diff --git a/client/daemon/peer/peertask_stream.go b/client/daemon/peer/peertask_stream.go index de0663048da..52d3e80aa7f 100644 --- a/client/daemon/peer/peertask_stream.go +++ b/client/daemon/peer/peertask_stream.go @@ -20,23 +20,22 @@ import ( "context" "fmt" "io" - "sync" - "sync/atomic" - "d7y.io/dragonfly/v2/pkg/dferrors" + "d7y.io/dragonfly/v2/internal/dferrors" "github.com/go-http-utils/headers" "github.com/pkg/errors" "go.opentelemetry.io/otel/semconv" "go.opentelemetry.io/otel/trace" + "go.uber.org/atomic" "golang.org/x/time/rate" "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/storage" - "d7y.io/dragonfly/v2/pkg/dfcodes" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" - schedulerclient "d7y.io/dragonfly/v2/pkg/rpc/scheduler/client" + "d7y.io/dragonfly/v2/internal/dfcodes" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" + schedulerclient "d7y.io/dragonfly/v2/internal/rpc/scheduler/client" ) // StreamPeerTask represents a peer task with stream io for reading directly without once more disk io @@ -53,6 +52,8 @@ type streamPeerTask struct { successPieceCh chan int32 } +var _ StreamPeerTask = (*streamPeerTask)(nil) + func newStreamPeerTask(ctx context.Context, host *scheduler.PeerHost, pieceManager PieceManager, @@ -137,30 +138,29 @@ func newStreamPeerTask(ctx context.Context, } return ctx, &streamPeerTask{ peerTask: peerTask{ - ctx: ctx, - host: host, - backSource: backSource, - request: request, - peerPacketStream: peerPacketStream, - pieceManager: pieceManager, - peerPacketReady: make(chan bool, 1), - peerID: request.PeerId, - taskID: result.TaskId, - singlePiece: singlePiece, - done: make(chan struct{}), - span: span, - once: sync.Once{}, - readyPieces: NewBitmap(), - requestedPieces: NewBitmap(), - lock: &sync.Mutex{}, - failedPieceCh: make(chan int32, 4), - failedReason: "unknown", - failedCode: dfcodes.UnknownError, - contentLength: -1, - totalPiece: -1, - schedulerOption: schedulerOption, - limiter: limiter, - + ctx: ctx, + host: host, + backSource: backSource, + request: request, + peerPacketStream: peerPacketStream, + pieceManager: pieceManager, + peerPacketReady: make(chan bool, 1), + peerID: request.PeerId, + taskID: result.TaskId, + singlePiece: singlePiece, + done: make(chan struct{}), + span: span, + readyPieces: NewBitmap(), + requestedPieces: NewBitmap(), + failedPieceCh: make(chan int32, 4), + failedReason: "unknown", + failedCode: dfcodes.UnknownError, + contentLength: -1, + totalPiece: -1, + schedulerOption: schedulerOption, + limiter: limiter, + completedLength: atomic.NewInt64(0), + usedTraffic: atomic.NewInt64(0), SugaredLoggerOnWith: logger.With("peer", request.PeerId, "task", result.TaskId, "component", "streamPeerTask"), }, successPieceCh: make(chan int32, 4), @@ -184,7 +184,7 @@ func (s *streamPeerTask) ReportPieceResult(piece *base.PieceInfo, pieceResult *s } // mark piece processed s.readyPieces.Set(pieceResult.PieceNum) - atomic.AddInt64(&s.completedLength, int64(piece.RangeSize)) + s.completedLength.Add(int64(piece.RangeSize)) s.lock.Unlock() pieceResult.FinishedCount = s.readyPieces.Settled() diff --git a/client/daemon/peer/peertask_stream_callback.go b/client/daemon/peer/peertask_stream_callback.go index 2008faa711f..cd7ac75b08d 100644 --- a/client/daemon/peer/peertask_stream_callback.go +++ b/client/daemon/peer/peertask_stream_callback.go @@ -21,9 +21,9 @@ import ( "time" "d7y.io/dragonfly/v2/client/daemon/storage" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) type streamPeerTaskCallback struct { @@ -33,6 +33,8 @@ type streamPeerTaskCallback struct { start time.Time } +var _ TaskCallback = (*streamPeerTaskCallback)(nil) + func (p *streamPeerTaskCallback) GetStartTime() time.Time { return p.start } diff --git a/client/daemon/peer/peertask_stream_test.go b/client/daemon/peer/peertask_stream_test.go index 9b242c51d43..976b052ccba 100644 --- a/client/daemon/peer/peertask_stream_test.go +++ b/client/daemon/peer/peertask_stream_test.go @@ -33,7 +33,7 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/test" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) func TestStreamPeerTask_BackSource_WithContentLength(t *testing.T) { diff --git a/client/daemon/peer/piece_downloader.go b/client/daemon/peer/piece_downloader.go index 094bfe50b96..10ea5ffba60 100644 --- a/client/daemon/peer/piece_downloader.go +++ b/client/daemon/peer/piece_downloader.go @@ -27,8 +27,8 @@ import ( "time" "d7y.io/dragonfly/v2/client/daemon/upload" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" "d7y.io/dragonfly/v2/pkg/util/digestutils" ) @@ -49,6 +49,8 @@ type pieceDownloader struct { httpClient *http.Client } +var _ PieceDownloader = (*pieceDownloader)(nil) + var defaultTransport http.RoundTripper = &http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ diff --git a/client/daemon/peer/piece_downloader_optimized.go b/client/daemon/peer/piece_downloader_optimized.go index 55ada53b1f3..992216b5707 100644 --- a/client/daemon/peer/piece_downloader_optimized.go +++ b/client/daemon/peer/piece_downloader_optimized.go @@ -26,12 +26,14 @@ import ( "github.com/pkg/errors" "d7y.io/dragonfly/v2/client/clientutil" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) type optimizedPieceDownloader struct { } +var _ PieceDownloader = (*optimizedPieceDownloader)(nil) + type cancelCloser struct { cancel func() closer io.Closer diff --git a/client/daemon/peer/piece_downloader_test.go b/client/daemon/peer/piece_downloader_test.go index 907e96fcec6..006443f6d78 100644 --- a/client/daemon/peer/piece_downloader_test.go +++ b/client/daemon/peer/piece_downloader_test.go @@ -34,8 +34,8 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/daemon/test" "d7y.io/dragonfly/v2/client/daemon/upload" - "d7y.io/dragonfly/v2/pkg/rpc/base" - _ "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/server" + "d7y.io/dragonfly/v2/internal/rpc/base" + _ "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/server" ) func TestPieceDownloader_DownloadPiece(t *testing.T) { diff --git a/client/daemon/peer/piece_manager.go b/client/daemon/peer/piece_manager.go index 89c19d25242..d87886fbf4b 100644 --- a/client/daemon/peer/piece_manager.go +++ b/client/daemon/peer/piece_manager.go @@ -30,10 +30,10 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/storage" - "d7y.io/dragonfly/v2/pkg/dfcodes" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/util/digestutils" ) @@ -52,6 +52,8 @@ type pieceManager struct { calculateDigest bool } +var _ PieceManager = (*pieceManager)(nil) + func NewPieceManager(s storage.TaskStorageDriver, opts ...func(*pieceManager)) (PieceManager, error) { pm := &pieceManager{ storageManager: s, diff --git a/client/daemon/peer/piece_manager_test.go b/client/daemon/peer/piece_manager_test.go index a61e855880e..7b773e80c80 100644 --- a/client/daemon/peer/piece_manager_test.go +++ b/client/daemon/peer/piece_manager_test.go @@ -38,10 +38,10 @@ import ( "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/storage" "d7y.io/dragonfly/v2/client/daemon/test" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - _ "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/server" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + _ "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/server" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/source/httpprotocol" ) diff --git a/client/daemon/peerhost.go b/client/daemon/peerhost.go index 936cb9ee70e..682409f2119 100644 --- a/client/daemon/peerhost.go +++ b/client/daemon/peerhost.go @@ -29,7 +29,7 @@ import ( "time" "d7y.io/dragonfly/v2/internal/dfpath" - "d7y.io/dragonfly/v2/pkg/idgen" + "d7y.io/dragonfly/v2/internal/idgen" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "github.com/pkg/errors" "golang.org/x/sync/errgroup" @@ -45,11 +45,11 @@ import ( "d7y.io/dragonfly/v2/client/daemon/service" "d7y.io/dragonfly/v2/client/daemon/storage" "d7y.io/dragonfly/v2/client/daemon/upload" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" + schedulerclient "d7y.io/dragonfly/v2/internal/rpc/scheduler/client" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" - schedulerclient "d7y.io/dragonfly/v2/pkg/rpc/scheduler/client" ) type PeerHost interface { @@ -75,6 +75,8 @@ type peerHost struct { PieceManager peer.PieceManager } +var _ PeerHost = (*peerHost)(nil) + func New(opt *config.PeerHostOption) (PeerHost, error) { host := &scheduler.PeerHost{ Uuid: idgen.UUIDString(), diff --git a/client/daemon/proxy/cert.go b/client/daemon/proxy/cert.go index bea33fa7b54..a7e67266c19 100644 --- a/client/daemon/proxy/cert.go +++ b/client/daemon/proxy/cert.go @@ -27,7 +27,7 @@ import ( "net" "time" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) type LeafCertSpec struct { diff --git a/client/daemon/proxy/proxy.go b/client/daemon/proxy/proxy.go index 9d2ff975a9a..60721b19d15 100644 --- a/client/daemon/proxy/proxy.go +++ b/client/daemon/proxy/proxy.go @@ -31,8 +31,8 @@ import ( "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/peer" "d7y.io/dragonfly/v2/client/daemon/transport" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/util/stringutils" "github.com/go-http-utils/headers" "github.com/golang/groupcache/lru" diff --git a/client/daemon/proxy/proxy_manager.go b/client/daemon/proxy/proxy_manager.go index 86ad7ac6895..deff20b9f7f 100644 --- a/client/daemon/proxy/proxy_manager.go +++ b/client/daemon/proxy/proxy_manager.go @@ -32,8 +32,8 @@ import ( "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/peer" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) type Manager interface { @@ -48,6 +48,8 @@ type proxyManager struct { config.ListenOption } +var _ Manager = (*proxyManager)(nil) + func NewProxyManager(peerHost *scheduler.PeerHost, peerTaskManager peer.TaskManager, opts *config.ProxyOption) (Manager, error) { registry := opts.RegistryMirror proxies := opts.Proxies diff --git a/client/daemon/service/manager.go b/client/daemon/service/manager.go index 7fb0197d829..29851d8cc4e 100644 --- a/client/daemon/service/manager.go +++ b/client/daemon/service/manager.go @@ -30,14 +30,14 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/daemon/peer" "d7y.io/dragonfly/v2/client/daemon/storage" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - dfdaemongrpc "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon" - dfdaemonserver "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/server" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + dfdaemongrpc "d7y.io/dragonfly/v2/internal/rpc/dfdaemon" + dfdaemonserver "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/server" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) type Manager interface { @@ -58,7 +58,8 @@ type manager struct { uploadAddr string } -var _ dfdaemonserver.DaemonServer = &manager{} +var _ dfdaemonserver.DaemonServer = (*manager)(nil) +var _ Manager = (*manager)(nil) func NewManager(peerHost *scheduler.PeerHost, peerTaskManager peer.TaskManager, storageManager storage.Manager, downloadOpts []grpc.ServerOption, peerOpts []grpc.ServerOption) (Manager, error) { mgr := &manager{ diff --git a/client/daemon/service/manager_test.go b/client/daemon/service/manager_test.go index 965a35a2c36..e676d2f37f3 100644 --- a/client/daemon/service/manager_test.go +++ b/client/daemon/service/manager_test.go @@ -33,13 +33,13 @@ import ( "d7y.io/dragonfly/v2/client/daemon/peer" mock_peer "d7y.io/dragonfly/v2/client/daemon/test/mock/peer" mock_storage "d7y.io/dragonfly/v2/client/daemon/test/mock/storage" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + dfdaemongrpc "d7y.io/dragonfly/v2/internal/rpc/dfdaemon" + dfclient "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/client" + _ "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/server" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - dfdaemongrpc "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon" - dfclient "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/client" - _ "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/server" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" ) func TestMain(m *testing.M) { diff --git a/client/daemon/storage/local_storage.go b/client/daemon/storage/local_storage.go index 1a0e52e8e3f..0c44aa1f29e 100644 --- a/client/daemon/storage/local_storage.go +++ b/client/daemon/storage/local_storage.go @@ -27,9 +27,9 @@ import ( "time" "d7y.io/dragonfly/v2/client/clientutil" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" "d7y.io/dragonfly/v2/pkg/util/digestutils" "go.uber.org/atomic" ) @@ -38,7 +38,7 @@ type localTaskStore struct { *logger.SugaredLoggerOnWith persistentMetadata - *sync.RWMutex + sync.RWMutex dataDir string @@ -51,6 +51,9 @@ type localTaskStore struct { gcCallback func(CommonTaskRequest) } +var _ TaskStorageDriver = (*localTaskStore)(nil) +var _ Reclaimer = (*localTaskStore)(nil) + func (t *localTaskStore) touch() { access := time.Now().UnixNano() t.lastAccess.Store(access) diff --git a/client/daemon/storage/local_storage_test.go b/client/daemon/storage/local_storage_test.go index 71e459d0ca4..44a39158d1c 100644 --- a/client/daemon/storage/local_storage_test.go +++ b/client/daemon/storage/local_storage_test.go @@ -27,7 +27,6 @@ import ( "os" "path" "path/filepath" - "sync" "testing" "time" @@ -36,9 +35,9 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/test" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - _ "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/server" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + _ "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/server" ) func TestMain(m *testing.M) { @@ -197,7 +196,6 @@ func TestLocalTaskStore_StoreTaskData_Simple(t *testing.T) { TaskID: "test", DataFilePath: src, }, - RWMutex: &sync.RWMutex{}, dataDir: test.DataDir, metadataFile: matadata, } diff --git a/client/daemon/storage/metadata.go b/client/daemon/storage/metadata.go index 9e45ee1f222..7e3902e0b99 100644 --- a/client/daemon/storage/metadata.go +++ b/client/daemon/storage/metadata.go @@ -20,7 +20,7 @@ import ( "io" "d7y.io/dragonfly/v2/client/clientutil" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/base" ) type persistentMetadata struct { diff --git a/client/daemon/storage/storage_manager.go b/client/daemon/storage/storage_manager.go index f77dff230df..a9fe6f13ea9 100644 --- a/client/daemon/storage/storage_manager.go +++ b/client/daemon/storage/storage_manager.go @@ -39,8 +39,8 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/gc" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" ) type TaskStorageDriver interface { @@ -101,11 +101,11 @@ func init() { } type storageManager struct { - sync.Locker + sync.Mutex clientutil.KeepAlive storeStrategy config.StoreStrategy storeOption *config.StorageOption - tasks *sync.Map + tasks sync.Map markedReclaimTasks []PeerTaskMetaData dataPathStat *syscall.Stat_t gcCallback func(CommonTaskRequest) @@ -114,6 +114,9 @@ type storageManager struct { indexTask2PeerTask map[string][]*localTaskStore // key: task id, value: slice of localTaskStore } +var _ gc.GC = (*storageManager)(nil) +var _ Manager = (*storageManager)(nil) + type GCCallback func(request CommonTaskRequest) func NewStorageManager(storeStrategy config.StoreStrategy, opt *config.StorageOption, gcCallback GCCallback, moreOpts ...func(*storageManager) error) (Manager, error) { @@ -145,9 +148,7 @@ func NewStorageManager(storeStrategy config.StoreStrategy, opt *config.StorageOp s := &storageManager{ KeepAlive: clientutil.NewKeepAlive("storage manager"), storeStrategy: storeStrategy, - Locker: &sync.Mutex{}, storeOption: opt, - tasks: &sync.Map{}, dataPathStat: stat.Sys().(*syscall.Stat_t), gcCallback: gcCallback, @@ -298,7 +299,6 @@ func (s *storageManager) CreateTask(req RegisterTaskRequest) error { Pieces: map[int32]PieceMetaData{}, }, gcCallback: s.gcCallback, - RWMutex: &sync.RWMutex{}, dataDir: dataDir, metadataFilePath: path.Join(dataDir, taskMetaData), expireTime: s.storeOption.TaskExpireTime.Duration, @@ -451,7 +451,6 @@ func (s *storageManager) ReloadPersistentTask(gcCallback GCCallback) error { peerID := peerDir.Name() dataDir := path.Join(s.storeOption.DataPath, taskID, peerID) t := &localTaskStore{ - RWMutex: &sync.RWMutex{}, dataDir: dataDir, metadataFilePath: path.Join(dataDir, taskMetaData), expireTime: s.storeOption.TaskExpireTime.Duration, diff --git a/client/daemon/test/mock/daemon/daemon_server.go b/client/daemon/test/mock/daemon/daemon_server.go index d52550d43d0..01a6ebce700 100644 --- a/client/daemon/test/mock/daemon/daemon_server.go +++ b/client/daemon/test/mock/daemon/daemon_server.go @@ -8,8 +8,8 @@ import ( context "context" reflect "reflect" - base "d7y.io/dragonfly/v2/pkg/rpc/base" - dfdaemon "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon" + base "d7y.io/dragonfly/v2/internal/rpc/base" + dfdaemon "d7y.io/dragonfly/v2/internal/rpc/dfdaemon" gomock "github.com/golang/mock/gomock" ) diff --git a/client/daemon/test/mock/peer/peertask_manager.go b/client/daemon/test/mock/peer/peertask_manager.go index 1a65026f837..6f7f20e6e60 100644 --- a/client/daemon/test/mock/peer/peertask_manager.go +++ b/client/daemon/test/mock/peer/peertask_manager.go @@ -11,9 +11,9 @@ import ( time "time" peer "d7y.io/dragonfly/v2/client/daemon/peer" - logger "d7y.io/dragonfly/v2/pkg/dflog" - base "d7y.io/dragonfly/v2/pkg/rpc/base" - scheduler "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + logger "d7y.io/dragonfly/v2/internal/dflog" + base "d7y.io/dragonfly/v2/internal/rpc/base" + scheduler "d7y.io/dragonfly/v2/internal/rpc/scheduler" gomock "github.com/golang/mock/gomock" ) diff --git a/client/daemon/test/mock/scheduler/scheduler_client.go b/client/daemon/test/mock/scheduler/scheduler_client.go index 703d50aecd1..269d38ce146 100644 --- a/client/daemon/test/mock/scheduler/scheduler_client.go +++ b/client/daemon/test/mock/scheduler/scheduler_client.go @@ -8,8 +8,8 @@ import ( context "context" reflect "reflect" - scheduler "d7y.io/dragonfly/v2/pkg/rpc/scheduler" - client "d7y.io/dragonfly/v2/pkg/rpc/scheduler/client" + scheduler "d7y.io/dragonfly/v2/internal/rpc/scheduler" + client "d7y.io/dragonfly/v2/internal/rpc/scheduler/client" gomock "github.com/golang/mock/gomock" grpc "google.golang.org/grpc" ) diff --git a/client/daemon/test/mock/scheduler/scheduler_client_peer_packet_stream.go b/client/daemon/test/mock/scheduler/scheduler_client_peer_packet_stream.go index 5c3ba22f500..156a1fb577e 100644 --- a/client/daemon/test/mock/scheduler/scheduler_client_peer_packet_stream.go +++ b/client/daemon/test/mock/scheduler/scheduler_client_peer_packet_stream.go @@ -7,7 +7,7 @@ package mock_client import ( reflect "reflect" - scheduler "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + scheduler "d7y.io/dragonfly/v2/internal/rpc/scheduler" gomock "github.com/golang/mock/gomock" ) diff --git a/client/daemon/test/mock/storage/manager.go b/client/daemon/test/mock/storage/manager.go index 68f26060cbe..68742e73f9e 100644 --- a/client/daemon/test/mock/storage/manager.go +++ b/client/daemon/test/mock/storage/manager.go @@ -11,7 +11,7 @@ import ( time "time" storage "d7y.io/dragonfly/v2/client/daemon/storage" - base "d7y.io/dragonfly/v2/pkg/rpc/base" + base "d7y.io/dragonfly/v2/internal/rpc/base" gomock "github.com/golang/mock/gomock" ) diff --git a/client/daemon/transport/transport.go b/client/daemon/transport/transport.go index d648c04c26d..15ab8342a0a 100644 --- a/client/daemon/transport/transport.go +++ b/client/daemon/transport/transport.go @@ -26,9 +26,9 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/daemon/peer" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) var ( diff --git a/client/daemon/transport/transport_test.go b/client/daemon/transport/transport_test.go index 51d427b7da7..2baf6b2b8f4 100644 --- a/client/daemon/transport/transport_test.go +++ b/client/daemon/transport/transport_test.go @@ -30,7 +30,7 @@ import ( "d7y.io/dragonfly/v2/client/daemon/test" mock_peer "d7y.io/dragonfly/v2/client/daemon/test/mock/peer" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) func TestMain(m *testing.M) { diff --git a/client/daemon/upload/upload_manager.go b/client/daemon/upload/upload_manager.go index dc608822560..3c7322efee6 100644 --- a/client/daemon/upload/upload_manager.go +++ b/client/daemon/upload/upload_manager.go @@ -30,7 +30,7 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/daemon/storage" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) type Manager interface { @@ -44,6 +44,8 @@ type uploadManager struct { StorageManager storage.Manager } +var _ Manager = (*uploadManager)(nil) + const ( PeerDownloadHTTPPathPrefix = "/download/" ) diff --git a/client/daemon/upload/upload_manager_test.go b/client/daemon/upload/upload_manager_test.go index 55185fd7175..b222af6195a 100644 --- a/client/daemon/upload/upload_manager_test.go +++ b/client/daemon/upload/upload_manager_test.go @@ -34,7 +34,7 @@ import ( "d7y.io/dragonfly/v2/client/daemon/storage" "d7y.io/dragonfly/v2/client/daemon/test" mock_storage "d7y.io/dragonfly/v2/client/daemon/test/mock/storage" - _ "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/server" + _ "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/server" ) func TestMain(m *testing.M) { diff --git a/client/dfget/dfget.go b/client/dfget/dfget.go index 6c80f23472c..b468f343f06 100644 --- a/client/dfget/dfget.go +++ b/client/dfget/dfget.go @@ -27,16 +27,16 @@ import ( "d7y.io/dragonfly/v2/client/clientutil/progressbar" "d7y.io/dragonfly/v2/client/config" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + dfdaemongrpc "d7y.io/dragonfly/v2/internal/rpc/dfdaemon" "d7y.io/dragonfly/v2/pkg/basic" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - dfdaemongrpc "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon" "d7y.io/dragonfly/v2/pkg/source" // Init daemon rpc client - _ "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/client" - dfclient "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/client" + _ "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/client" + dfclient "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/client" "github.com/go-http-utils/headers" ) diff --git a/cmd/cdn/cmd/root.go b/cmd/cdn/cmd/root.go index 8f3ee4aaf37..f98cf36f20a 100644 --- a/cmd/cdn/cmd/root.go +++ b/cmd/cdn/cmd/root.go @@ -22,8 +22,8 @@ import ( "d7y.io/dragonfly/v2/cdnsystem/config" "d7y.io/dragonfly/v2/cdnsystem/server" "d7y.io/dragonfly/v2/cmd/dependency" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/dflog/logcore" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/dflog/logcore" "github.com/pkg/errors" "github.com/spf13/cobra" "gopkg.in/yaml.v3" diff --git a/cmd/dependency/dependency.go b/cmd/dependency/dependency.go index e609bbb0d67..9c4858df9c0 100644 --- a/cmd/dependency/dependency.go +++ b/cmd/dependency/dependency.go @@ -29,10 +29,10 @@ import ( "d7y.io/dragonfly/v2/client/clientutil" "d7y.io/dragonfly/v2/client/config" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/internal/dfpath" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/dflog/logcore" "d7y.io/dragonfly/v2/pkg/unit" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "d7y.io/dragonfly/v2/version" diff --git a/cmd/dfget/cmd/daemon.go b/cmd/dfget/cmd/daemon.go index f5b4e95db8c..84f6fdfe236 100644 --- a/cmd/dfget/cmd/daemon.go +++ b/cmd/dfget/cmd/daemon.go @@ -24,11 +24,11 @@ import ( "d7y.io/dragonfly/v2/client/config" server "d7y.io/dragonfly/v2/client/daemon" "d7y.io/dragonfly/v2/cmd/dependency" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/internal/dfpath" + "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/client" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/dflog/logcore" - "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/client" "github.com/gofrs/flock" "github.com/pkg/errors" "github.com/spf13/cobra" diff --git a/cmd/dfget/cmd/root.go b/cmd/dfget/cmd/root.go index b36c0a197c2..d3a7cb863be 100644 --- a/cmd/dfget/cmd/root.go +++ b/cmd/dfget/cmd/root.go @@ -29,11 +29,11 @@ import ( "d7y.io/dragonfly/v2/client/config" "d7y.io/dragonfly/v2/client/dfget" "d7y.io/dragonfly/v2/cmd/dependency" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/internal/dfpath" + "d7y.io/dragonfly/v2/internal/rpc/dfdaemon/client" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/dflog/logcore" - "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon/client" "d7y.io/dragonfly/v2/pkg/unit" "github.com/gofrs/flock" "github.com/pkg/errors" diff --git a/cmd/manager/cmd/root.go b/cmd/manager/cmd/root.go index 20c781bb2c2..abcbd5546fd 100644 --- a/cmd/manager/cmd/root.go +++ b/cmd/manager/cmd/root.go @@ -20,10 +20,10 @@ import ( "os" "d7y.io/dragonfly/v2/cmd/dependency" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/manager/config" "d7y.io/dragonfly/v2/manager/server" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/dflog/logcore" "github.com/pkg/errors" "github.com/spf13/cobra" "gopkg.in/yaml.v3" diff --git a/cmd/scheduler/cmd/root.go b/cmd/scheduler/cmd/root.go index 871bbe8e4e2..34285106b66 100644 --- a/cmd/scheduler/cmd/root.go +++ b/cmd/scheduler/cmd/root.go @@ -20,8 +20,8 @@ import ( "os" "d7y.io/dragonfly/v2/cmd/dependency" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/dflog/logcore" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/dflog/logcore" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/server" "github.com/pkg/errors" diff --git a/pkg/dfcodes/rpc_code.go b/internal/dfcodes/rpc_code.go similarity index 97% rename from pkg/dfcodes/rpc_code.go rename to internal/dfcodes/rpc_code.go index 1b7564bd9a8..d564a7ca57a 100644 --- a/pkg/dfcodes/rpc_code.go +++ b/internal/dfcodes/rpc_code.go @@ -16,7 +16,7 @@ package dfcodes -import "d7y.io/dragonfly/v2/pkg/rpc/base" +import "d7y.io/dragonfly/v2/internal/rpc/base" // rpc code const ( diff --git a/pkg/dferrors/error.go b/internal/dferrors/error.go similarity index 97% rename from pkg/dferrors/error.go rename to internal/dferrors/error.go index ea418a5c3c2..950f55cd341 100644 --- a/pkg/dferrors/error.go +++ b/internal/dferrors/error.go @@ -19,7 +19,7 @@ package dferrors import ( "fmt" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/base" "github.com/pkg/errors" ) diff --git a/pkg/dflog/logcore/init.go b/internal/dflog/logcore/init.go similarity index 98% rename from pkg/dflog/logcore/init.go rename to internal/dflog/logcore/init.go index 2b661b5a5b6..66a9feabaf5 100644 --- a/pkg/dflog/logcore/init.go +++ b/internal/dflog/logcore/init.go @@ -19,8 +19,8 @@ package logcore import ( "path" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/internal/dfpath" - logger "d7y.io/dragonfly/v2/pkg/dflog" ) func InitManager(console bool) error { diff --git a/pkg/dflog/logcore/logcore.go b/internal/dflog/logcore/logcore.go similarity index 100% rename from pkg/dflog/logcore/logcore.go rename to internal/dflog/logcore/logcore.go diff --git a/pkg/dflog/logger.go b/internal/dflog/logger.go similarity index 100% rename from pkg/dflog/logger.go rename to internal/dflog/logger.go diff --git a/pkg/idgen/task_id.go b/internal/idgen/task_id.go similarity index 97% rename from pkg/idgen/task_id.go rename to internal/idgen/task_id.go index f665b67a652..f9eb86b3bb1 100644 --- a/pkg/idgen/task_id.go +++ b/internal/idgen/task_id.go @@ -20,7 +20,7 @@ import ( "hash/crc32" "strings" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/base" "d7y.io/dragonfly/v2/pkg/util/digestutils" "d7y.io/dragonfly/v2/pkg/util/net/urlutils" ) diff --git a/pkg/idgen/task_id_test.go b/internal/idgen/task_id_test.go similarity index 99% rename from pkg/idgen/task_id_test.go rename to internal/idgen/task_id_test.go index f0246333a3c..e2aaa9ec1b3 100644 --- a/pkg/idgen/task_id_test.go +++ b/internal/idgen/task_id_test.go @@ -19,7 +19,7 @@ package idgen import ( "testing" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/base" "github.com/stretchr/testify/assert" ) diff --git a/pkg/idgen/uuid.go b/internal/idgen/uuid.go similarity index 100% rename from pkg/idgen/uuid.go rename to internal/idgen/uuid.go diff --git a/pkg/idgen/uuid_test.go b/internal/idgen/uuid_test.go similarity index 100% rename from pkg/idgen/uuid_test.go rename to internal/idgen/uuid_test.go diff --git a/pkg/rpc/base/base.pb.go b/internal/rpc/base/base.pb.go similarity index 99% rename from pkg/rpc/base/base.pb.go rename to internal/rpc/base/base.pb.go index 0f0fb63c449..33086538017 100644 --- a/pkg/rpc/base/base.pb.go +++ b/internal/rpc/base/base.pb.go @@ -22,11 +22,12 @@ package base import ( + reflect "reflect" + sync "sync" + proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( diff --git a/pkg/rpc/base/base.proto b/internal/rpc/base/base.proto similarity index 97% rename from pkg/rpc/base/base.proto rename to internal/rpc/base/base.proto index 9ed58123e4b..b0f26ac6c02 100644 --- a/pkg/rpc/base/base.proto +++ b/internal/rpc/base/base.proto @@ -18,7 +18,7 @@ syntax = "proto3"; package base; -option go_package = "d7y.io/dragonfly/v2/pkg/rpc/base"; +option go_package = "d7y.io/dragonfly/v2/internal/rpc/base"; enum Code{ X_UNSPECIFIED = 0; diff --git a/pkg/rpc/base/common/common.go b/internal/rpc/base/common/common.go similarity index 95% rename from pkg/rpc/base/common/common.go rename to internal/rpc/base/common/common.go index d5989439940..e5f56a70fb6 100644 --- a/pkg/rpc/base/common/common.go +++ b/internal/rpc/base/common/common.go @@ -19,8 +19,8 @@ package common import ( "reflect" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/rpc/base" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/pkg/rpc/cdnsystem/cdnsystem.pb.go b/internal/rpc/cdnsystem/cdnsystem.pb.go similarity index 99% rename from pkg/rpc/cdnsystem/cdnsystem.pb.go rename to internal/rpc/cdnsystem/cdnsystem.pb.go index 3be8340e7a4..16f224d358c 100644 --- a/pkg/rpc/cdnsystem/cdnsystem.pb.go +++ b/internal/rpc/cdnsystem/cdnsystem.pb.go @@ -22,12 +22,13 @@ package cdnsystem import ( - base "d7y.io/dragonfly/v2/pkg/rpc/base" + reflect "reflect" + sync "sync" + + base "d7y.io/dragonfly/v2/internal/rpc/base" proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( diff --git a/pkg/rpc/cdnsystem/cdnsystem.proto b/internal/rpc/cdnsystem/cdnsystem.proto similarity index 93% rename from pkg/rpc/cdnsystem/cdnsystem.proto rename to internal/rpc/cdnsystem/cdnsystem.proto index 3d0acf25b31..d7e88363b03 100644 --- a/pkg/rpc/cdnsystem/cdnsystem.proto +++ b/internal/rpc/cdnsystem/cdnsystem.proto @@ -18,9 +18,9 @@ syntax = "proto3"; package cdnsystem; -import "pkg/rpc/base/base.proto"; +import "internal/rpc/base/base.proto"; -option go_package = "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem"; +option go_package = "d7y.io/dragonfly/v2/internal/rpc/cdnsystem"; message SeedRequest{ string task_id = 1; diff --git a/pkg/rpc/cdnsystem/cdnsystem_grpc.pb.go b/internal/rpc/cdnsystem/cdnsystem_grpc.pb.go similarity index 99% rename from pkg/rpc/cdnsystem/cdnsystem_grpc.pb.go rename to internal/rpc/cdnsystem/cdnsystem_grpc.pb.go index d5b70a7c4e2..bdc2f25f67d 100644 --- a/pkg/rpc/cdnsystem/cdnsystem_grpc.pb.go +++ b/internal/rpc/cdnsystem/cdnsystem_grpc.pb.go @@ -4,7 +4,8 @@ package cdnsystem import ( context "context" - base "d7y.io/dragonfly/v2/pkg/rpc/base" + + base "d7y.io/dragonfly/v2/internal/rpc/base" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/pkg/rpc/cdnsystem/client/client.go b/internal/rpc/cdnsystem/client/client.go similarity index 93% rename from pkg/rpc/cdnsystem/client/client.go rename to internal/rpc/cdnsystem/client/client.go index 8409805b279..3bdcce4bd76 100644 --- a/pkg/rpc/cdnsystem/client/client.go +++ b/internal/rpc/cdnsystem/client/client.go @@ -21,11 +21,11 @@ import ( "sync" "time" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem" "github.com/pkg/errors" "google.golang.org/grpc" ) @@ -82,7 +82,7 @@ var _ CdnClient = (*cdnClient)(nil) func (cc *cdnClient) getCdnClient(key string, stick bool) (cdnsystem.SeederClient, string, error) { clientConn, err := cc.Connection.GetClientConn(key, stick) if err != nil { - return nil, "", errors.Wrapf(err, "failed to get ClientConn for hashKey %s", key) + return nil, "", errors.Wrapf(err, "get ClientConn for hashKey %s", key) } return cdnsystem.NewSeederClient(clientConn), clientConn.Target(), nil } diff --git a/pkg/rpc/cdnsystem/client/piece_seed_stream.go b/internal/rpc/cdnsystem/client/piece_seed_stream.go similarity index 96% rename from pkg/rpc/cdnsystem/client/piece_seed_stream.go rename to internal/rpc/cdnsystem/client/piece_seed_stream.go index ee4032e1ccb..4743e4df225 100644 --- a/pkg/rpc/cdnsystem/client/piece_seed_stream.go +++ b/internal/rpc/cdnsystem/client/piece_seed_stream.go @@ -20,9 +20,9 @@ import ( "context" "io" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem" "github.com/pkg/errors" "google.golang.org/grpc" "google.golang.org/grpc/codes" diff --git a/pkg/rpc/cdnsystem/server/server.go b/internal/rpc/cdnsystem/server/server.go similarity index 94% rename from pkg/rpc/cdnsystem/server/server.go rename to internal/rpc/cdnsystem/server/server.go index 5deef05edd2..232cc5a8509 100644 --- a/pkg/rpc/cdnsystem/server/server.go +++ b/internal/rpc/cdnsystem/server/server.go @@ -20,11 +20,11 @@ import ( "context" "sync" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem" "d7y.io/dragonfly/v2/pkg/safe" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "go.uber.org/zap" diff --git a/pkg/rpc/client.go b/internal/rpc/client.go similarity index 97% rename from pkg/rpc/client.go rename to internal/rpc/client.go index c735c51a96e..77ddf5f007c 100644 --- a/pkg/rpc/client.go +++ b/internal/rpc/client.go @@ -22,10 +22,10 @@ import ( "sync" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" "d7y.io/dragonfly/v2/pkg/synclock" "github.com/pkg/errors" "github.com/serialx/hashring" @@ -284,7 +284,7 @@ func (conn *Connection) GetClientConnByTarget(node string) (*grpc.ClientConn, er defer conn.rwMutex.UnLock(node, true) clientConn, err := conn.loadOrCreateClientConnByNode(node) if err != nil { - return nil, errors.Wrapf(err, "failed to get client conn by conn %s", node) + return nil, errors.Wrapf(err, "get client conn by conn %s", node) } logger.With("conn", conn.name).Debugf("successfully get %s client conn", node) return clientConn, nil @@ -339,7 +339,7 @@ func (conn *Connection) GetClientConn(hashKey string, stick bool) (*grpc.ClientC // if absence client, err := conn.findCandidateClientConn(hashKey) if err != nil { - return nil, errors.Wrapf(err, "failed to find candidate client conn for hash key %s", hashKey) + return nil, errors.Wrapf(err, "find candidate client conn for hash key %s", hashKey) } conn.rwMutex.Lock(client.node, false) defer conn.rwMutex.UnLock(client.node, false) @@ -368,7 +368,7 @@ func (conn *Connection) TryMigrate(key string, cause error, exclusiveNodes []str } client, err := conn.findCandidateClientConn(key, exclusiveNodes...) if err != nil { - return "", errors.Wrapf(err, "failed to find candidate client conn for hash key %s", key) + return "", errors.Wrapf(err, "find candidate client conn for hash key %s", key) } logger.With("conn", conn.name).Infof("successfully migrate hash key %s from server node %s to %s", key, currentNode, client.node) conn.rwMutex.Lock(client.node, false) diff --git a/pkg/rpc/client_util.go b/internal/rpc/client_util.go similarity index 97% rename from pkg/rpc/client_util.go rename to internal/rpc/client_util.go index 8764aaa7246..c1893c4e5d5 100644 --- a/pkg/rpc/client_util.go +++ b/internal/rpc/client_util.go @@ -24,10 +24,10 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/status" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" "d7y.io/dragonfly/v2/pkg/util/mathutils" ) diff --git a/pkg/rpc/dfdaemon/client/client.go b/internal/rpc/dfdaemon/client/client.go similarity index 93% rename from pkg/rpc/dfdaemon/client/client.go rename to internal/rpc/dfdaemon/client/client.go index 35ac6e66e16..6e55d642541 100644 --- a/pkg/rpc/dfdaemon/client/client.go +++ b/internal/rpc/dfdaemon/client/client.go @@ -18,14 +18,15 @@ package client import ( "context" + "fmt" "sync" "time" + "d7y.io/dragonfly/v2/internal/idgen" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/dfdaemon" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/idgen" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon" "github.com/golang/protobuf/ptypes/empty" "github.com/google/uuid" "github.com/pkg/errors" @@ -125,7 +126,7 @@ func (dc *daemonClient) CheckHealth(ctx context.Context, target dfnet.NetAddr, o _, err = rpc.ExecuteWithRetry(func() (interface{}, error) { client, err := dc.getDaemonClientWithTarget(target.GetEndpoint()) if err != nil { - return nil, errors.Wrapf(err, "failed to connect server %s", target.GetEndpoint()) + return nil, fmt.Errorf("failed to connect server %s: %v", target.GetEndpoint(), err) } return client.CheckHealth(ctx, new(empty.Empty), opts...) }, 0.2, 2.0, 3, nil) diff --git a/pkg/rpc/dfdaemon/client/down_result_stream.go b/internal/rpc/dfdaemon/client/down_result_stream.go similarity index 97% rename from pkg/rpc/dfdaemon/client/down_result_stream.go rename to internal/rpc/dfdaemon/client/down_result_stream.go index 866c0460cf9..b49a6090cd0 100644 --- a/pkg/rpc/dfdaemon/client/down_result_stream.go +++ b/internal/rpc/dfdaemon/client/down_result_stream.go @@ -20,9 +20,9 @@ import ( "context" "io" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/dfdaemon" "github.com/pkg/errors" "google.golang.org/grpc" "google.golang.org/grpc/codes" diff --git a/pkg/rpc/dfdaemon/client/peer.go b/internal/rpc/dfdaemon/client/peer.go similarity index 87% rename from pkg/rpc/dfdaemon/client/peer.go rename to internal/rpc/dfdaemon/client/peer.go index f00ec329ae9..8e51f18c7f7 100644 --- a/pkg/rpc/dfdaemon/client/peer.go +++ b/internal/rpc/dfdaemon/client/peer.go @@ -21,12 +21,12 @@ import ( "fmt" "strings" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/base/common" + cdnclient "d7y.io/dragonfly/v2/internal/rpc/cdnsystem/client" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/base/common" - cdnclient "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem/client" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" "google.golang.org/grpc" ) diff --git a/pkg/rpc/dfdaemon/dfdaemon.pb.go b/internal/rpc/dfdaemon/dfdaemon.pb.go similarity index 99% rename from pkg/rpc/dfdaemon/dfdaemon.pb.go rename to internal/rpc/dfdaemon/dfdaemon.pb.go index bb24b057b65..cf3f30e3d1c 100644 --- a/pkg/rpc/dfdaemon/dfdaemon.pb.go +++ b/internal/rpc/dfdaemon/dfdaemon.pb.go @@ -22,13 +22,14 @@ package dfdaemon import ( - base "d7y.io/dragonfly/v2/pkg/rpc/base" + reflect "reflect" + sync "sync" + + base "d7y.io/dragonfly/v2/internal/rpc/base" proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" - reflect "reflect" - sync "sync" ) const ( diff --git a/pkg/rpc/dfdaemon/dfdaemon.proto b/internal/rpc/dfdaemon/dfdaemon.proto similarity index 94% rename from pkg/rpc/dfdaemon/dfdaemon.proto rename to internal/rpc/dfdaemon/dfdaemon.proto index 134f5748b0c..b2c271aa7dc 100644 --- a/pkg/rpc/dfdaemon/dfdaemon.proto +++ b/internal/rpc/dfdaemon/dfdaemon.proto @@ -18,10 +18,10 @@ syntax = "proto3"; package dfdaemon; -import "pkg/rpc/base/base.proto"; +import "internal/rpc/base/base.proto"; import "google/protobuf/empty.proto"; -option go_package = "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon"; +option go_package = "d7y.io/dragonfly/v2/internal/rpc/dfdaemon"; message DownRequest{ // download content with the url, but not only for http protocol diff --git a/pkg/rpc/dfdaemon/dfdaemon_grpc.pb.go b/internal/rpc/dfdaemon/dfdaemon_grpc.pb.go similarity index 99% rename from pkg/rpc/dfdaemon/dfdaemon_grpc.pb.go rename to internal/rpc/dfdaemon/dfdaemon_grpc.pb.go index 851f7c117e4..553eaa9c5e0 100644 --- a/pkg/rpc/dfdaemon/dfdaemon_grpc.pb.go +++ b/internal/rpc/dfdaemon/dfdaemon_grpc.pb.go @@ -4,7 +4,8 @@ package dfdaemon import ( context "context" - base "d7y.io/dragonfly/v2/pkg/rpc/base" + + base "d7y.io/dragonfly/v2/internal/rpc/base" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/pkg/rpc/dfdaemon/server/server.go b/internal/rpc/dfdaemon/server/server.go similarity index 93% rename from pkg/rpc/dfdaemon/server/server.go rename to internal/rpc/dfdaemon/server/server.go index 1af0106c1de..17908c21b42 100644 --- a/pkg/rpc/dfdaemon/server/server.go +++ b/internal/rpc/dfdaemon/server/server.go @@ -20,11 +20,11 @@ import ( "context" "sync" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/dfdaemon" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/dfdaemon" "d7y.io/dragonfly/v2/pkg/safe" "github.com/golang/protobuf/ptypes/empty" "google.golang.org/grpc" diff --git a/pkg/rpc/examples/cdnsystem/client/main.go b/internal/rpc/examples/cdnsystem/client/main.go similarity index 100% rename from pkg/rpc/examples/cdnsystem/client/main.go rename to internal/rpc/examples/cdnsystem/client/main.go diff --git a/pkg/rpc/examples/cdnsystem/server/main.go b/internal/rpc/examples/cdnsystem/server/main.go similarity index 86% rename from pkg/rpc/examples/cdnsystem/server/main.go rename to internal/rpc/examples/cdnsystem/server/main.go index 1b41efeac98..d442b034593 100644 --- a/pkg/rpc/examples/cdnsystem/server/main.go +++ b/internal/rpc/examples/cdnsystem/server/main.go @@ -21,11 +21,11 @@ import ( "fmt" "time" - "d7y.io/dragonfly/v2/pkg/dflog/logcore" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem" - _ "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem/server" + "d7y.io/dragonfly/v2/internal/dflog/logcore" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem" + _ "d7y.io/dragonfly/v2/internal/rpc/cdnsystem/server" "d7y.io/dragonfly/v2/pkg/safe" ) diff --git a/pkg/rpc/manager/client/client.go b/internal/rpc/manager/client/client.go similarity index 97% rename from pkg/rpc/manager/client/client.go rename to internal/rpc/manager/client/client.go index 5dc13125914..d26d29a8678 100644 --- a/pkg/rpc/manager/client/client.go +++ b/internal/rpc/manager/client/client.go @@ -22,12 +22,12 @@ import ( "sync" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/manager" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/manager" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "d7y.io/dragonfly/v2/pkg/util/stringutils" "github.com/pkg/errors" diff --git a/pkg/rpc/manager/manager.pb.go b/internal/rpc/manager/manager.pb.go similarity index 99% rename from pkg/rpc/manager/manager.pb.go rename to internal/rpc/manager/manager.pb.go index f4d0a304089..e0dce065e3b 100644 --- a/pkg/rpc/manager/manager.pb.go +++ b/internal/rpc/manager/manager.pb.go @@ -22,12 +22,13 @@ package manager import ( + reflect "reflect" + sync "sync" + proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" - reflect "reflect" - sync "sync" ) const ( diff --git a/pkg/rpc/manager/manager.proto b/internal/rpc/manager/manager.proto similarity index 97% rename from pkg/rpc/manager/manager.proto rename to internal/rpc/manager/manager.proto index ffa03080b56..dec84099b3d 100644 --- a/pkg/rpc/manager/manager.proto +++ b/internal/rpc/manager/manager.proto @@ -19,7 +19,7 @@ syntax = "proto3"; package manager; import "google/protobuf/empty.proto"; -option go_package = "d7y.io/dragonfly/v2/pkg/rpc/manager"; +option go_package = "d7y.io/dragonfly/v2/internal/rpc/manager"; message GetSchedulersRequest{ // client ip diff --git a/pkg/rpc/manager/manager_grpc.pb.go b/internal/rpc/manager/manager_grpc.pb.go similarity index 99% rename from pkg/rpc/manager/manager_grpc.pb.go rename to internal/rpc/manager/manager_grpc.pb.go index 1b9961be0a2..3789fe6c7d8 100644 --- a/pkg/rpc/manager/manager_grpc.pb.go +++ b/internal/rpc/manager/manager_grpc.pb.go @@ -4,6 +4,7 @@ package manager import ( context "context" + grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/pkg/rpc/manager/server/server.go b/internal/rpc/manager/server/server.go similarity index 95% rename from pkg/rpc/manager/server/server.go rename to internal/rpc/manager/server/server.go index 6f778b6c84c..6dcc890b04d 100644 --- a/pkg/rpc/manager/server/server.go +++ b/internal/rpc/manager/server/server.go @@ -19,8 +19,8 @@ package server import ( "context" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/manager" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/manager" "github.com/golang/protobuf/ptypes/empty" "google.golang.org/grpc" ) diff --git a/pkg/rpc/scheduler/client/client.go b/internal/rpc/scheduler/client/client.go similarity index 93% rename from pkg/rpc/scheduler/client/client.go rename to internal/rpc/scheduler/client/client.go index 1a66572daae..4532a7608ab 100644 --- a/pkg/rpc/scheduler/client/client.go +++ b/internal/rpc/scheduler/client/client.go @@ -21,21 +21,21 @@ import ( "fmt" "time" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - "d7y.io/dragonfly/v2/pkg/idgen" - "d7y.io/dragonfly/v2/pkg/rpc/manager" - mgClient "d7y.io/dragonfly/v2/pkg/rpc/manager/client" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + "d7y.io/dragonfly/v2/internal/idgen" + "d7y.io/dragonfly/v2/internal/rpc/manager" + mgClient "d7y.io/dragonfly/v2/internal/rpc/manager/client" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "d7y.io/dragonfly/v2/pkg/util/stringutils" "github.com/pkg/errors" "google.golang.org/grpc" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" ) func GetClientByAddr(addrs []dfnet.NetAddr, opts ...grpc.DialOption) (SchedulerClient, error) { @@ -61,7 +61,7 @@ func GetSchedulerByConfigServer(cfgServerAddr string, opts ...grpc.DialOption) ( Addr: cfgServerAddr, }}) if err != nil { - return nil, errors.Wrap(err, "failed to create config server") + return nil, fmt.Errorf("create config server: %v", err) } // todo create HostTag HostTag := "" @@ -71,7 +71,7 @@ func GetSchedulerByConfigServer(cfgServerAddr string, opts ...grpc.DialOption) ( HostTag: HostTag, }) if err != nil { - return nil, errors.Wrapf(err, "failed to get scheduler list from config server") + return nil, fmt.Errorf("get scheduler list from config server: %v", err) } var scheds []dfnet.NetAddr for i := range schedulers.Addrs { diff --git a/pkg/rpc/scheduler/client/peer_packet_stream.go b/internal/rpc/scheduler/client/peer_packet_stream.go similarity index 97% rename from pkg/rpc/scheduler/client/peer_packet_stream.go rename to internal/rpc/scheduler/client/peer_packet_stream.go index a62bbf01f7c..140a71e23c3 100644 --- a/pkg/rpc/scheduler/client/peer_packet_stream.go +++ b/internal/rpc/scheduler/client/peer_packet_stream.go @@ -26,9 +26,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base/common" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base/common" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) type PeerPacketStream interface { diff --git a/pkg/rpc/scheduler/scheduler.go b/internal/rpc/scheduler/scheduler.go similarity index 95% rename from pkg/rpc/scheduler/scheduler.go rename to internal/rpc/scheduler/scheduler.go index 8215d10f8d9..053d0d04fde 100644 --- a/pkg/rpc/scheduler/scheduler.go +++ b/internal/rpc/scheduler/scheduler.go @@ -17,7 +17,7 @@ package scheduler import ( - "d7y.io/dragonfly/v2/pkg/rpc/base/common" + "d7y.io/dragonfly/v2/internal/rpc/base/common" ) func NewZeroPieceResult(taskID, peerID string) *PieceResult { diff --git a/pkg/rpc/scheduler/scheduler.pb.go b/internal/rpc/scheduler/scheduler.pb.go similarity index 99% rename from pkg/rpc/scheduler/scheduler.pb.go rename to internal/rpc/scheduler/scheduler.pb.go index a9e5f6c46d5..a7356581df1 100644 --- a/pkg/rpc/scheduler/scheduler.pb.go +++ b/internal/rpc/scheduler/scheduler.pb.go @@ -22,13 +22,14 @@ package scheduler import ( - base "d7y.io/dragonfly/v2/pkg/rpc/base" + reflect "reflect" + sync "sync" + + base "d7y.io/dragonfly/v2/internal/rpc/base" proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" - reflect "reflect" - sync "sync" ) const ( diff --git a/pkg/rpc/scheduler/scheduler.proto b/internal/rpc/scheduler/scheduler.proto similarity index 97% rename from pkg/rpc/scheduler/scheduler.proto rename to internal/rpc/scheduler/scheduler.proto index 6b44dd5e9d3..121b65bf7c7 100644 --- a/pkg/rpc/scheduler/scheduler.proto +++ b/internal/rpc/scheduler/scheduler.proto @@ -18,10 +18,10 @@ syntax = "proto3"; package scheduler; -import "pkg/rpc/base/base.proto"; +import "internal/rpc/base/base.proto"; import "google/protobuf/empty.proto"; -option go_package = "d7y.io/dragonfly/v2/pkg/rpc/scheduler"; +option go_package = "d7y.io/dragonfly/v2/internal/rpc/scheduler"; message PeerTaskRequest{ // universal resource locator for different kind of storage diff --git a/pkg/rpc/scheduler/scheduler_grpc.pb.go b/internal/rpc/scheduler/scheduler_grpc.pb.go similarity index 99% rename from pkg/rpc/scheduler/scheduler_grpc.pb.go rename to internal/rpc/scheduler/scheduler_grpc.pb.go index 2ac2978136f..fbaea5045cc 100644 --- a/pkg/rpc/scheduler/scheduler_grpc.pb.go +++ b/internal/rpc/scheduler/scheduler_grpc.pb.go @@ -4,6 +4,7 @@ package scheduler import ( context "context" + grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/pkg/rpc/scheduler/server/server.go b/internal/rpc/scheduler/server/server.go similarity index 95% rename from pkg/rpc/scheduler/server/server.go rename to internal/rpc/scheduler/server/server.go index f5e34cb320b..cfeece3bda2 100644 --- a/pkg/rpc/scheduler/server/server.go +++ b/internal/rpc/scheduler/server/server.go @@ -21,10 +21,10 @@ import ( "github.com/golang/protobuf/ptypes/empty" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "go.uber.org/zap" "google.golang.org/grpc" diff --git a/pkg/rpc/server.go b/internal/rpc/server.go similarity index 97% rename from pkg/rpc/server.go rename to internal/rpc/server.go index b2daea3ad23..66f9cfa06c6 100644 --- a/pkg/rpc/server.go +++ b/internal/rpc/server.go @@ -33,10 +33,10 @@ import ( "google.golang.org/grpc/keepalive" "google.golang.org/grpc/status" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base/common" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base/common" "d7y.io/dragonfly/v2/pkg/util/fileutils" "d7y.io/dragonfly/v2/pkg/util/stringutils" ) diff --git a/pkg/rpc/server_listen.go b/internal/rpc/server_listen.go similarity index 97% rename from pkg/rpc/server_listen.go rename to internal/rpc/server_listen.go index 77b9f7548af..03266ccfbaf 100644 --- a/pkg/rpc/server_listen.go +++ b/internal/rpc/server_listen.go @@ -6,8 +6,8 @@ import ( "google.golang.org/grpc" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - logger "d7y.io/dragonfly/v2/pkg/dflog" ) // Listen wraps net.Listen with dfnet.NetAddr diff --git a/manager/apis/v2/handler/cdn_cluster.go b/manager/apis/v2/handler/cdn_cluster.go index e909ed17477..f51eca4b9d7 100644 --- a/manager/apis/v2/handler/cdn_cluster.go +++ b/manager/apis/v2/handler/cdn_cluster.go @@ -5,10 +5,10 @@ import ( "encoding/json" "net/http" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "github.com/gin-gonic/gin" "gopkg.in/errgo.v2/fmt/errors" ) diff --git a/manager/apis/v2/handler/cdn_instance.go b/manager/apis/v2/handler/cdn_instance.go index 3fb4232e822..5214c193b2e 100644 --- a/manager/apis/v2/handler/cdn_instance.go +++ b/manager/apis/v2/handler/cdn_instance.go @@ -4,10 +4,10 @@ import ( "context" "net/http" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "github.com/gin-gonic/gin" "gopkg.in/errgo.v2/fmt/errors" ) diff --git a/manager/apis/v2/handler/scheduler_cluster.go b/manager/apis/v2/handler/scheduler_cluster.go index 0d299307d0e..b037e114fd1 100644 --- a/manager/apis/v2/handler/scheduler_cluster.go +++ b/manager/apis/v2/handler/scheduler_cluster.go @@ -5,10 +5,10 @@ import ( "encoding/json" "net/http" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "github.com/gin-gonic/gin" "gopkg.in/errgo.v2/fmt/errors" ) diff --git a/manager/apis/v2/handler/scheduler_instance.go b/manager/apis/v2/handler/scheduler_instance.go index def93f7d1d7..af6f16f3ad0 100644 --- a/manager/apis/v2/handler/scheduler_instance.go +++ b/manager/apis/v2/handler/scheduler_instance.go @@ -4,10 +4,10 @@ import ( "context" "net/http" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "github.com/gin-gonic/gin" "gopkg.in/errgo.v2/fmt/errors" ) diff --git a/manager/apis/v2/main.go b/manager/apis/v2/main.go index 2033ace8aa9..4e89b018943 100644 --- a/manager/apis/v2/main.go +++ b/manager/apis/v2/main.go @@ -3,10 +3,10 @@ package main import ( "os" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/manager/apis/v2/handler" "d7y.io/dragonfly/v2/manager/config" "d7y.io/dragonfly/v2/manager/server/service" - logger "d7y.io/dragonfly/v2/pkg/dflog" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" diff --git a/manager/config/config.go b/manager/config/config.go index d008b431231..50229eb2a64 100644 --- a/manager/config/config.go +++ b/manager/config/config.go @@ -2,8 +2,8 @@ package config import ( "d7y.io/dragonfly/v2/cmd/dependency/base" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" ) type Config struct { diff --git a/manager/configsvc/id.go b/manager/configsvc/id.go index d17024a5e97..6dbe6350b23 100644 --- a/manager/configsvc/id.go +++ b/manager/configsvc/id.go @@ -3,7 +3,7 @@ package configsvc import ( "fmt" - "d7y.io/dragonfly/v2/pkg/idgen" + "d7y.io/dragonfly/v2/internal/idgen" ) func NewUUID(prefix string) string { diff --git a/manager/configsvc/service.go b/manager/configsvc/service.go index fefd45010e7..6794368f9bc 100644 --- a/manager/configsvc/service.go +++ b/manager/configsvc/service.go @@ -6,6 +6,10 @@ import ( "sync" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/manager" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/dc" "d7y.io/dragonfly/v2/manager/host" @@ -13,10 +17,6 @@ import ( "d7y.io/dragonfly/v2/manager/lease" "d7y.io/dragonfly/v2/manager/store" "d7y.io/dragonfly/v2/pkg/cache" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/manager" "d7y.io/dragonfly/v2/pkg/util/net/iputils" rCache "github.com/go-redis/cache/v8" ) diff --git a/manager/hostidentifier/hostidentifier.go b/manager/hostidentifier/hostidentifier.go index 5ba3d2ffef5..b4752c49bc8 100644 --- a/manager/hostidentifier/hostidentifier.go +++ b/manager/hostidentifier/hostidentifier.go @@ -18,7 +18,6 @@ type identifier struct { func NewIdentifier() Identifier { return &identifier{ - mu: sync.Mutex{}, hosts: make(map[string]string), } } diff --git a/manager/lease/lease.go b/manager/lease/lease.go index eab6152aea7..0aa40a1ed2d 100644 --- a/manager/lease/lease.go +++ b/manager/lease/lease.go @@ -5,9 +5,9 @@ import ( "sync" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" ) type LeaseID string //nolint @@ -66,7 +66,6 @@ type Lease struct { func NewLessor(store store.Store) (Lessor, error) { lessor := &lessor{ - mu: sync.Mutex{}, stopC: make(chan struct{}), keepAliveMap: make(map[LeaseID]*keepAlive), store: store, diff --git a/manager/server/server.go b/manager/server/server.go index d552a807538..0d96cf855c8 100644 --- a/manager/server/server.go +++ b/manager/server/server.go @@ -25,13 +25,13 @@ import ( "syscall" "time" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc" "d7y.io/dragonfly/v2/manager/config" "d7y.io/dragonfly/v2/manager/server/service" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" // manager server rpc - _ "d7y.io/dragonfly/v2/pkg/rpc/manager/server" + _ "d7y.io/dragonfly/v2/internal/rpc/manager/server" ) type Server struct { diff --git a/manager/server/server_test.go b/manager/server/server_test.go index 79d849a9171..cff0dec94e0 100644 --- a/manager/server/server_test.go +++ b/manager/server/server_test.go @@ -7,14 +7,14 @@ import ( "testing" "time" + "d7y.io/dragonfly/v2/internal/dflog/logcore" + "d7y.io/dragonfly/v2/internal/rpc/manager" + "d7y.io/dragonfly/v2/internal/rpc/manager/client" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/configsvc" "d7y.io/dragonfly/v2/manager/server/mocks" "d7y.io/dragonfly/v2/manager/store" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/dflog/logcore" - "d7y.io/dragonfly/v2/pkg/rpc/manager" - "d7y.io/dragonfly/v2/pkg/rpc/manager/client" "github.com/alicebob/miniredis/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" diff --git a/manager/server/service/manager_server.go b/manager/server/service/manager_server.go index 32fab60e6df..8abd0e54f54 100644 --- a/manager/server/service/manager_server.go +++ b/manager/server/service/manager_server.go @@ -4,6 +4,10 @@ import ( "context" "encoding/json" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/manager" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/config" "d7y.io/dragonfly/v2/manager/configsvc" @@ -13,10 +17,6 @@ import ( "d7y.io/dragonfly/v2/manager/lease" "d7y.io/dragonfly/v2/manager/store" "d7y.io/dragonfly/v2/manager/store/client" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/manager" ) type ManagerServer struct { diff --git a/manager/store/client/client.go b/manager/store/client/client.go index bc975663c13..aa4b07d2b77 100644 --- a/manager/store/client/client.go +++ b/manager/store/client/client.go @@ -1,11 +1,11 @@ package client import ( + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/config" "d7y.io/dragonfly/v2/manager/store" "d7y.io/dragonfly/v2/manager/store/orm" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" ) type storeSetup func(cfg *config.StoreConfig) (store.Store, error) diff --git a/manager/store/orm/cdn_cluster.go b/manager/store/orm/cdn_cluster.go index 25da81053af..636a4d2adb6 100644 --- a/manager/store/orm/cdn_cluster.go +++ b/manager/store/orm/cdn_cluster.go @@ -5,10 +5,10 @@ import ( "errors" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "gorm.io/gorm" ) @@ -32,6 +32,8 @@ type CDNClusterStore struct { table string } +var _ store.Store = (*CDNClusterStore)(nil) + func NewCDNClusterStore(db *gorm.DB, table string) (store.Store, error) { s := &CDNClusterStore{ resourceType: store.CDNCluster, diff --git a/manager/store/orm/cdn_instance.go b/manager/store/orm/cdn_instance.go index 06c74badef2..0763de314e2 100644 --- a/manager/store/orm/cdn_instance.go +++ b/manager/store/orm/cdn_instance.go @@ -5,10 +5,10 @@ import ( "errors" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "gorm.io/gorm" ) @@ -37,6 +37,8 @@ type CDNInstanceStore struct { table string } +var _ store.Store = (*CDNInstanceStore)(nil) + func NewCDNInstanceStore(db *gorm.DB, table string) (store.Store, error) { s := &CDNInstanceStore{ resourceType: store.CDNInstance, diff --git a/manager/store/orm/lease.go b/manager/store/orm/lease.go index d1523d7787c..befb44c7db1 100644 --- a/manager/store/orm/lease.go +++ b/manager/store/orm/lease.go @@ -5,10 +5,10 @@ import ( "errors" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/lease" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "gorm.io/gorm" ) @@ -28,6 +28,8 @@ type LeaseStore struct { table string } +var _ store.Store = (*LeaseStore)(nil) + func NewLeaseStore(db *gorm.DB, table string) (store.Store, error) { s := &LeaseStore{ resourceType: store.Lease, diff --git a/manager/store/orm/orm_store.go b/manager/store/orm/orm_store.go index 02caf1a27b0..9abfbfce3eb 100644 --- a/manager/store/orm/orm_store.go +++ b/manager/store/orm/orm_store.go @@ -7,10 +7,10 @@ import ( "os" "path" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/config" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "d7y.io/dragonfly/v2/pkg/util/fileutils" "github.com/iancoleman/strcase" "github.com/xo/dburl" @@ -25,6 +25,8 @@ type ormStore struct { tables map[store.ResourceType]string } +var _ store.Store = (*ormStore)(nil) + type newTableSetup func(db *gorm.DB, tableName string) (store.Store, error) var ormTables = map[store.ResourceType]newTableSetup{ diff --git a/manager/store/orm/scheduler_cluster.go b/manager/store/orm/scheduler_cluster.go index 2d9ff4ea036..4c7d832969a 100644 --- a/manager/store/orm/scheduler_cluster.go +++ b/manager/store/orm/scheduler_cluster.go @@ -5,10 +5,10 @@ import ( "errors" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "gorm.io/gorm" ) @@ -33,6 +33,8 @@ type SchedulerClusterStore struct { table string } +var _ store.Store = (*SchedulerClusterStore)(nil) + func NewSchedulerClusterStore(db *gorm.DB, table string) (store.Store, error) { s := &SchedulerClusterStore{ resourceType: store.SchedulerCluster, diff --git a/manager/store/orm/scheduler_instance.go b/manager/store/orm/scheduler_instance.go index be36cfac5b4..a304f2e7b12 100644 --- a/manager/store/orm/scheduler_instance.go +++ b/manager/store/orm/scheduler_instance.go @@ -5,10 +5,10 @@ import ( "errors" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "gorm.io/gorm" ) @@ -38,6 +38,8 @@ type SchedulerInstanceStore struct { table string } +var _ store.Store = (*SchedulerInstanceStore)(nil) + func NewSchedulerInstanceStore(db *gorm.DB, table string) (store.Store, error) { s := &SchedulerInstanceStore{ resourceType: store.SchedulerInstance, diff --git a/manager/store/orm/security_domain.go b/manager/store/orm/security_domain.go index ceb0a6b372c..f15f7bd7cee 100644 --- a/manager/store/orm/security_domain.go +++ b/manager/store/orm/security_domain.go @@ -5,10 +5,10 @@ import ( "errors" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/manager/apis/v2/types" "d7y.io/dragonfly/v2/manager/store" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" "gorm.io/gorm" ) @@ -33,6 +33,8 @@ type SecurityDomainStore struct { table string } +var _ store.Store = (*SecurityDomainStore)(nil) + func NewSecurityDomainStore(db *gorm.DB, table string) (store.Store, error) { s := &SecurityDomainStore{ resourceType: store.SecurityDomain, diff --git a/pkg/cache/cache_test.go b/pkg/cache/cache_test.go index 0b02db227d8..c2c1ff236ad 100644 --- a/pkg/cache/cache_test.go +++ b/pkg/cache/cache_test.go @@ -396,7 +396,7 @@ func BenchmarkRWMutexMapGet(b *testing.B) { m := map[string]string{ v1: v2, } - mu := sync.RWMutex{} + var mu sync.RWMutex b.StartTimer() for i := 0; i < b.N; i++ { mu.RLock() @@ -411,7 +411,7 @@ func BenchmarkRWMutexInterfaceMapGetStruct(b *testing.B) { m := map[interface{}]string{ s: v2, } - mu := sync.RWMutex{} + var mu sync.RWMutex b.StartTimer() for i := 0; i < b.N; i++ { mu.RLock() @@ -425,7 +425,7 @@ func BenchmarkRWMutexInterfaceMapGetString(b *testing.B) { m := map[interface{}]string{ v1: v2, } - mu := sync.RWMutex{} + var mu sync.RWMutex b.StartTimer() for i := 0; i < b.N; i++ { mu.RLock() @@ -579,7 +579,7 @@ func BenchmarkRWMutexMapSetDelete(b *testing.B) { func BenchmarkRWMutexMapSetDeleteSingleLock(b *testing.B) { b.StopTimer() m := map[string]string{} - mu := sync.RWMutex{} + var mu sync.Mutex b.StartTimer() for i := 0; i < b.N; i++ { mu.Lock() diff --git a/pkg/source/httpprotocol/http_source_client.go b/pkg/source/httpprotocol/http_source_client.go index 72c95a062e6..7908999483d 100644 --- a/pkg/source/httpprotocol/http_source_client.go +++ b/pkg/source/httpprotocol/http_source_client.go @@ -30,7 +30,6 @@ import ( "d7y.io/dragonfly/v2/pkg/util/stringutils" "d7y.io/dragonfly/v2/pkg/util/timeutils" "github.com/go-http-utils/headers" - "github.com/pkg/errors" ) const ( @@ -38,7 +37,7 @@ const ( HTTPSClient = "https" ) -var defaultHTTPClient *http.Client +var _defaultHTTPClient *http.Client var _ source.ResourceClient = (*httpSourceClient)(nil) func init() { @@ -47,7 +46,7 @@ func init() { Timeout: 3 * time.Second, KeepAlive: 30 * time.Second, }).DialContext - defaultHTTPClient = &http.Client{ + _defaultHTTPClient = &http.Client{ Transport: transport, } httpSourceClient := NewHTTPSourceClient() @@ -63,7 +62,7 @@ type httpSourceClient struct { // NewHTTPSourceClient returns a new HTTPSourceClientOption. func NewHTTPSourceClient(opts ...HTTPSourceClientOption) source.ResourceClient { client := &httpSourceClient{ - httpClient: defaultHTTPClient, + httpClient: _defaultHTTPClient, } for i := range opts { opts[i](client) @@ -82,13 +81,13 @@ func WithHTTPClient(client *http.Client) HTTPSourceClientOption { func (client *httpSourceClient) GetContentLength(ctx context.Context, url string, header source.Header) (int64, error) { resp, err := client.doRequest(ctx, http.MethodGet, url, header) if err != nil { - return -1, errors.Wrapf(cdnerrors.ErrURLNotReachable, "get http header meta data failed: %v", err) + return -1, cdnerrors.ErrURLNotReachable{URL: url, Cause: err} } resp.Body.Close() // todo Here if other status codes should be added to ErrURLNotReachable, if not, it will be downloaded frequently for 404 or 403 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusPartialContent { // todo Whether this situation should be distinguished from the err situation, similar to proposing another error type to indicate that this error can interact with the URL, but the status code does not meet expectations - return -1, errors.Wrapf(cdnerrors.ErrURLNotReachable, "failed to get http resource length, unexpected code: %d", resp.StatusCode) + return -1, cdnerrors.ErrURLNotReachable{URL: url, Cause: fmt.Errorf("get http resource length failed, unexpected code: %d", resp.StatusCode)} } return resp.ContentLength, nil } diff --git a/pkg/source/httpprotocol/http_source_client_test.go b/pkg/source/httpprotocol/http_source_client_test.go index efcfefef471..a0ab53a5694 100644 --- a/pkg/source/httpprotocol/http_source_client_test.go +++ b/pkg/source/httpprotocol/http_source_client_test.go @@ -43,7 +43,7 @@ type HTTPSourceClientTestSuite struct { func (suite *HTTPSourceClientTestSuite) SetupSuite() { suite.ResourceClient = NewHTTPSourceClient() - httpmock.ActivateNonDefault(defaultHTTPClient) + httpmock.ActivateNonDefault(_defaultHTTPClient) } func (suite *HTTPSourceClientTestSuite) TearDownSuite() { @@ -121,8 +121,8 @@ func (suite *HTTPSourceClientTestSuite) SetupTest() { func (suite *HTTPSourceClientTestSuite) TestNewHTTPSourceClient() { var sourceClient source.ResourceClient sourceClient = NewHTTPSourceClient() - suite.Equal(defaultHTTPClient, sourceClient.(*httpSourceClient).httpClient) - suite.EqualValues(*defaultHTTPClient, *sourceClient.(*httpSourceClient).httpClient) + suite.Equal(_defaultHTTPClient, sourceClient.(*httpSourceClient).httpClient) + suite.EqualValues(*_defaultHTTPClient, *sourceClient.(*httpSourceClient).httpClient) expectedHTTPClient := &http.Client{} sourceClient = NewHTTPSourceClient(WithHTTPClient(expectedHTTPClient)) diff --git a/pkg/source/ossprotocol/oss_source_client.go b/pkg/source/ossprotocol/oss_source_client.go index 8a9b1572a89..85a33052189 100644 --- a/pkg/source/ossprotocol/oss_source_client.go +++ b/pkg/source/ossprotocol/oss_source_client.go @@ -116,7 +116,7 @@ func (osc *ossSourceClient) IsExpired(ctx context.Context, url string, header so func (osc *ossSourceClient) DownloadWithExpire(ctx context.Context, url string, header source.Header) (io.ReadCloser, map[string]string, error) { ossObject, err := parseOssObject(url) if err != nil { - return nil, nil, errors.Wrapf(err, "failed to parse oss object from url:%s", url) + return nil, nil, errors.Wrapf(err, "parse oss object from url:%s", url) } client, err := osc.getClient(header) if err != nil { @@ -174,23 +174,23 @@ func genClientKey(endpoint, accessKeyID, accessKeySecret string) string { func (osc *ossSourceClient) getMeta(ctx context.Context, url string, header map[string]string) (http.Header, error) { client, err := osc.getClient(header) if err != nil { - return nil, errors.Wrapf(err, "failed to get oss client") + return nil, errors.Wrapf(err, "get oss client") } ossObject, err := parseOssObject(url) if err != nil { - return nil, errors.Wrapf(cdnerrors.ErrURLNotReachable, "failed to parse oss object: %v", err) + return nil, cdnerrors.ErrURLNotReachable{URL: url, Cause: fmt.Errorf("parse oss object: %v", err)} } bucket, err := client.Bucket(ossObject.bucket) if err != nil { - return nil, errors.Wrapf(cdnerrors.ErrURLNotReachable, "failed to get bucket:%s: %v", ossObject.bucket, err) + return nil, cdnerrors.ErrURLNotReachable{URL: url, Cause: fmt.Errorf("get bucket:%s: %v", ossObject.bucket, err)} } isExist, err := bucket.IsObjectExist(ossObject.object) if err != nil { - return nil, errors.Wrapf(cdnerrors.ErrURLNotReachable, "failed to prob object:%s exist: %v", ossObject.object, err) + return nil, cdnerrors.ErrURLNotReachable{URL: url, Cause: fmt.Errorf("prob object:%s exist: %v", ossObject.object, err)} } if !isExist { - return nil, errors.Wrapf(cdnerrors.ErrURLNotReachable, "oss object:%s does not exist", ossObject.object) + return nil, cdnerrors.ErrURLNotReachable{URL: url, Cause: fmt.Errorf("oss object:%s does not exist", ossObject.object)} } return bucket.GetObjectMeta(ossObject.object, getOptions(header)...) } diff --git a/pkg/source/source_client.go b/pkg/source/source_client.go index cc950a7cfdc..b4a1acba8e6 100644 --- a/pkg/source/source_client.go +++ b/pkg/source/source_client.go @@ -25,7 +25,7 @@ import ( "strings" "time" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) var _ ResourceClient = (*ClientManagerImpl)(nil) @@ -67,7 +67,7 @@ type ClientManagerImpl struct { clients map[string]ResourceClient } -var defaultMgr = &ClientManagerImpl{ +var _defaultMgr = &ClientManagerImpl{ clients: make(map[string]ResourceClient), } @@ -153,7 +153,7 @@ func (clientMgr *ClientManagerImpl) Register(schema string, resourceClient Resou } func Register(schema string, resourceClient ResourceClient) { - defaultMgr.Register(schema, resourceClient) + _defaultMgr.Register(schema, resourceClient) } func (clientMgr *ClientManagerImpl) UnRegister(schema string) { @@ -164,27 +164,27 @@ func (clientMgr *ClientManagerImpl) UnRegister(schema string) { } func UnRegister(schema string) { - defaultMgr.UnRegister(schema) + _defaultMgr.UnRegister(schema) } func GetContentLength(ctx context.Context, url string, header Header) (int64, error) { - return defaultMgr.GetContentLength(ctx, url, header) + return _defaultMgr.GetContentLength(ctx, url, header) } func IsSupportRange(ctx context.Context, url string, header Header) (bool, error) { - return defaultMgr.IsSupportRange(ctx, url, header) + return _defaultMgr.IsSupportRange(ctx, url, header) } func IsExpired(ctx context.Context, url string, header Header, expireInfo map[string]string) (bool, error) { - return defaultMgr.IsExpired(ctx, url, header, expireInfo) + return _defaultMgr.IsExpired(ctx, url, header, expireInfo) } func Download(ctx context.Context, url string, header Header) (io.ReadCloser, error) { - return defaultMgr.Download(ctx, url, header) + return _defaultMgr.Download(ctx, url, header) } func DownloadWithExpire(ctx context.Context, url string, header Header) (io.ReadCloser, map[string]string, error) { - return defaultMgr.DownloadWithExpire(ctx, url, header) + return _defaultMgr.DownloadWithExpire(ctx, url, header) } // getSourceClient get a source client from source manager with specified schema. diff --git a/pkg/structure/atomiccount/atomiccount.go b/pkg/structure/atomiccount/atomiccount.go deleted file mode 100644 index 7d2a9a2d828..00000000000 --- a/pkg/structure/atomiccount/atomiccount.go +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2020 The Dragonfly Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package atomiccount - -import ( - "sync/atomic" -) - -// AtomicInt is a struct that can be added or subtracted atomically. -type AtomicInt struct { - count *int32 -} - -// NewAtomicInt returns a new AtomicInt. -func NewAtomicInt(value int32) *AtomicInt { - return &AtomicInt{ - count: &value, - } -} - -// Add atomically adds delta to count and returns the new value. -func (ac *AtomicInt) Add(delta int32) int32 { - if ac != nil { - return atomic.AddInt32(ac.count, delta) - } - return 0 -} - -// Get the value atomically. -func (ac *AtomicInt) Get() int32 { - if ac != nil { - return *ac.count - } - return 0 -} - -// Set to value atomically and returns the previous value. -func (ac *AtomicInt) Set(value int32) int32 { - return atomic.SwapInt32(ac.count, value) -} diff --git a/pkg/structure/atomiccount/atomiccount_test.go b/pkg/structure/atomiccount/atomiccount_test.go deleted file mode 100644 index 096048b731a..00000000000 --- a/pkg/structure/atomiccount/atomiccount_test.go +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2020 The Dragonfly Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package atomiccount - -import ( - "testing" - - "github.com/stretchr/testify/suite" -) - -func TestSuite(t *testing.T) { - suite.Run(t, new(AtomicCountUtilSuite)) -} - -type AtomicCountUtilSuite struct { - suite.Suite -} - -func (suite *AtomicCountUtilSuite) TestAdd() { - acount := NewAtomicInt(3) - acount.Add(4) - acount.Add(5) - - result := acount.Get() - suite.Equal(result, (int32)(12)) - - var nilAcount *AtomicInt - suite.Equal(nilAcount.Add(5), (int32)(0)) -} - -func (suite *AtomicCountUtilSuite) TestSet() { - acount := NewAtomicInt(3) - acount.Add(4) - acount.Add(5) - - _ = acount.Set(1) - result := acount.Get() - suite.Equal(result, (int32)(1)) - - var nilAcount *AtomicInt - suite.Equal(nilAcount.Get(), (int32)(0)) -} diff --git a/pkg/structure/syncmap/syncmap.go b/pkg/structure/syncmap/syncmap.go index 4ce6f8c0357..d8fe61e3adb 100644 --- a/pkg/structure/syncmap/syncmap.go +++ b/pkg/structure/syncmap/syncmap.go @@ -22,11 +22,10 @@ import ( "sync" "time" - "d7y.io/dragonfly/v2/pkg/dferrors" - "d7y.io/dragonfly/v2/pkg/structure/atomiccount" + "d7y.io/dragonfly/v2/internal/dferrors" "d7y.io/dragonfly/v2/pkg/util/stringutils" - "github.com/pkg/errors" + "go.uber.org/atomic" ) // SyncMap is a thread-safe map providing generic support @@ -61,7 +60,7 @@ func (mmap *SyncMap) Get(key string) (interface{}, error) { return v, nil } - return nil, errors.Wrapf(dferrors.ErrDataNotFound, "failed to get key %s from map", key) + return nil, errors.Wrapf(dferrors.ErrDataNotFound, "get key %s from map", key) } // GetAsMap returns result as SyncMap. @@ -69,13 +68,13 @@ func (mmap *SyncMap) Get(key string) (interface{}, error) { func (mmap *SyncMap) GetAsMap(key string) (*SyncMap, error) { v, err := mmap.Get(key) if err != nil { - return nil, errors.Wrapf(err, "failed to get key %s from map", key) + return nil, errors.Wrapf(err, "get key %s from map", key) } if value, ok := v.(*SyncMap); ok { return value, nil } - return nil, errors.Wrapf(dferrors.ErrConvertFailed, "failed to get key %s from map with value %s", key, v) + return nil, errors.Wrapf(dferrors.ErrConvertFailed, "get key %s from map with value %s", key, v) } // GetAsList returns result as list @@ -83,12 +82,12 @@ func (mmap *SyncMap) GetAsMap(key string) (*SyncMap, error) { func (mmap *SyncMap) GetAsList(key string) (*list.List, error) { v, err := mmap.Get(key) if err != nil { - return list.New(), errors.Wrapf(err, "failed to get key %s from map", key) + return list.New(), errors.Wrapf(err, "get key %s from map", key) } if value, ok := v.(*list.List); ok { return value, nil } - return nil, errors.Wrapf(dferrors.ErrConvertFailed, "failed to get key %s from map with value %s", key, v) + return nil, errors.Wrapf(dferrors.ErrConvertFailed, "get key %s from map with value %s", key, v) } // GetAsInt returns result as int. @@ -96,13 +95,13 @@ func (mmap *SyncMap) GetAsList(key string) (*list.List, error) { func (mmap *SyncMap) GetAsInt(key string) (int, error) { v, err := mmap.Get(key) if err != nil { - return 0, errors.Wrapf(err, "failed to get key %s from map", key) + return 0, errors.Wrapf(err, "get key %s from map", key) } if value, ok := v.(int); ok { return value, nil } - return 0, errors.Wrapf(dferrors.ErrConvertFailed, "failed to get key %s from map with value %s", key, v) + return 0, errors.Wrapf(dferrors.ErrConvertFailed, "get key %s from map with value %s", key, v) } // GetAsInt64 returns result as int64. @@ -110,13 +109,13 @@ func (mmap *SyncMap) GetAsInt(key string) (int, error) { func (mmap *SyncMap) GetAsInt64(key string) (int64, error) { v, err := mmap.Get(key) if err != nil { - return 0, errors.Wrapf(err, "failed to get key %s from map", key) + return 0, errors.Wrapf(err, "get key %s from map", key) } if value, ok := v.(int64); ok { return value, nil } - return 0, errors.Wrapf(dferrors.ErrConvertFailed, "failed to get key %s from map with value %s", key, v) + return 0, errors.Wrapf(dferrors.ErrConvertFailed, "get key %s from map with value %s", key, v) } // GetAsString returns result as string. @@ -124,13 +123,13 @@ func (mmap *SyncMap) GetAsInt64(key string) (int64, error) { func (mmap *SyncMap) GetAsString(key string) (string, error) { v, err := mmap.Get(key) if err != nil { - return "", errors.Wrapf(err, "failed to get key %s from map", key) + return "", errors.Wrapf(err, "get key %s from map", key) } if value, ok := v.(string); ok { return value, nil } - return "", errors.Wrapf(dferrors.ErrConvertFailed, "failed to get key %s from map with value %s", key, v) + return "", errors.Wrapf(dferrors.ErrConvertFailed, "get key %s from map with value %s", key, v) } // GetAsBool returns result as bool. @@ -138,27 +137,27 @@ func (mmap *SyncMap) GetAsString(key string) (string, error) { func (mmap *SyncMap) GetAsBool(key string) (bool, error) { v, err := mmap.Get(key) if err != nil { - return false, errors.Wrapf(err, "failed to get key %s from map", key) + return false, errors.Wrapf(err, "get key %s from map", key) } if value, ok := v.(bool); ok { return value, nil } - return false, errors.Wrapf(dferrors.ErrConvertFailed, "failed to get key %s from map with value %s", key, v) + return false, errors.Wrapf(dferrors.ErrConvertFailed, "get key %s from map with value %s", key, v) } // GetAsAtomicInt returns result as *AtomicInt. // The ErrConvertFailed error will be returned if the assertion fails. -func (mmap *SyncMap) GetAsAtomicInt(key string) (*atomiccount.AtomicInt, error) { +func (mmap *SyncMap) GetAsAtomicInt(key string) (*atomic.Int32, error) { v, err := mmap.Get(key) if err != nil { - return nil, errors.Wrapf(err, "failed to get key %s from map", key) + return nil, errors.Wrapf(err, "get key %s from map", key) } - if value, ok := v.(*atomiccount.AtomicInt); ok { + if value, ok := v.(*atomic.Int32); ok { return value, nil } - return nil, errors.Wrapf(dferrors.ErrConvertFailed, "failed to get key %s from map with value %s", key, v) + return nil, errors.Wrapf(dferrors.ErrConvertFailed, "get key %s from map with value %s", key, v) } // GetAsTime returns result as Time. @@ -166,13 +165,13 @@ func (mmap *SyncMap) GetAsAtomicInt(key string) (*atomiccount.AtomicInt, error) func (mmap *SyncMap) GetAsTime(key string) (time.Time, error) { v, err := mmap.Get(key) if err != nil { - return time.Now(), errors.Wrapf(err, "failed to get key %s from map", key) + return time.Now(), errors.Wrapf(err, "get key %s from map", key) } if value, ok := v.(time.Time); ok { return value, nil } - return time.Now(), errors.Wrapf(dferrors.ErrConvertFailed, "failed to get key %s from map with value %s", key, v) + return time.Now(), errors.Wrapf(dferrors.ErrConvertFailed, "get key %s from map with value %s", key, v) } // Remove deletes the key-value pair from the mmap. @@ -184,7 +183,7 @@ func (mmap *SyncMap) Remove(key string) error { } if _, ok := mmap.Load(key); !ok { - return errors.Wrapf(dferrors.ErrDataNotFound, "failed to get key %s from map", key) + return errors.Wrapf(dferrors.ErrDataNotFound, "get key %s from map", key) } mmap.Delete(key) diff --git a/pkg/synclock/count_rwmutex.go b/pkg/synclock/count_rwmutex.go index 03e8f2380c9..5cc022e4ffc 100644 --- a/pkg/synclock/count_rwmutex.go +++ b/pkg/synclock/count_rwmutex.go @@ -19,32 +19,30 @@ package synclock import ( "sync" - "d7y.io/dragonfly/v2/pkg/structure/atomiccount" + "go.uber.org/atomic" ) type countRWMutex struct { sync.RWMutex - count *atomiccount.AtomicInt + count *atomic.Int32 } func newCountRWMutex() *countRWMutex { return &countRWMutex{ - count: atomiccount.NewAtomicInt(0), + count: atomic.NewInt32(0), } } func (cm *countRWMutex) reset() { - cm.count.Set(0) + cm.count.CAS(cm.count.Load(), 0) } func (cm *countRWMutex) inc() int32 { - cm.count.Add(1) - return cm.count.Get() + return cm.count.Inc() } func (cm *countRWMutex) dec() int32 { - cm.count.Add(-1) - return cm.count.Get() + return cm.count.Dec() } func (cm *countRWMutex) lock(rLock bool) { diff --git a/pkg/util/digestutils/digest_reader.go b/pkg/util/digestutils/digest_reader.go index f4b186e5da1..35a7f8843a3 100644 --- a/pkg/util/digestutils/digest_reader.go +++ b/pkg/util/digestutils/digest_reader.go @@ -24,7 +24,7 @@ import ( "github.com/pkg/errors" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" ) var ( diff --git a/pkg/util/fileutils/file_utils.go b/pkg/util/fileutils/file_utils.go index 04b41fb386f..4e2213544c1 100644 --- a/pkg/util/fileutils/file_utils.go +++ b/pkg/util/fileutils/file_utils.go @@ -26,7 +26,7 @@ import ( "d7y.io/dragonfly/v2/pkg/unit" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "github.com/pkg/errors" ) @@ -60,7 +60,7 @@ func DeleteFile(path string) error { func OpenFile(path string, flag int, perm os.FileMode) (*os.File, error) { if !PathExist(path) && (flag&syscall.O_CREAT != 0) { if err := MkdirAll(filepath.Dir(path)); err != nil { - return nil, errors.Wrapf(err, "failed to open file %s", path) + return nil, errors.Wrapf(err, "open file %s", path) } } @@ -75,10 +75,10 @@ func Link(oldname string, newname string) error { } if err := DeleteFile(newname); err != nil { - return errors.Wrapf(err, "failed to link %s to %s", newname, oldname) + return errors.Wrapf(err, "to link %s to %s", newname, oldname) } } else if err := MkdirAll(filepath.Dir(newname)); err != nil { - return errors.Wrapf(err, "failed to link %s to %s", newname, oldname) + return errors.Wrapf(err, "link %s to %s", newname, oldname) } return os.Link(oldname, newname) @@ -105,12 +105,12 @@ func SymbolicLink(oldname string, newname string) error { } if PathExist(newname) { if err := os.Remove(newname); err != nil { - return fmt.Errorf("failed to symlink %s to %s when deleting target file: %v", newname, oldname, err) + return fmt.Errorf("symlink %s to %s when deleting target file: %v", newname, oldname, err) } } if err := MkdirAll(filepath.Dir(newname)); err != nil { - return errors.Wrapf(err, "failed to symlink %s to %s", newname, oldname) + return errors.Wrapf(err, "symlink %s to %s", newname, oldname) } return os.Symlink(oldname, newname) } @@ -206,11 +206,11 @@ func GetUsedSpace(path string) (unit.Bytes, error) { // MoveFile moves the file src to dst. func MoveFile(src string, dst string) error { if !IsRegular(src) { - return fmt.Errorf("failed to move %s to %s: src is not a regular file", src, dst) + return fmt.Errorf("move %s to %s: src is not a regular file", src, dst) } if PathExist(dst) && !IsDir(dst) { if err := DeleteFile(dst); err != nil { - return fmt.Errorf("failed to move %s to %s when deleting dst file: %v", src, dst, err) + return fmt.Errorf("move %s to %s when deleting dst file: %v", src, dst, err) } } return os.Rename(src, dst) diff --git a/scheduler/config/dynconfig.go b/scheduler/config/dynconfig.go index 40e7c73e68d..0a136667004 100644 --- a/scheduler/config/dynconfig.go +++ b/scheduler/config/dynconfig.go @@ -24,11 +24,11 @@ import ( "path/filepath" "time" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/internal/dfpath" dc "d7y.io/dragonfly/v2/internal/dynconfig" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/manager" - "d7y.io/dragonfly/v2/pkg/rpc/manager/client" + "d7y.io/dragonfly/v2/internal/rpc/manager" + "d7y.io/dragonfly/v2/internal/rpc/manager/client" "d7y.io/dragonfly/v2/pkg/util/net/iputils" ) diff --git a/scheduler/config/dynconfig_test.go b/scheduler/config/dynconfig_test.go index d7577c4430e..a565ffecff6 100644 --- a/scheduler/config/dynconfig_test.go +++ b/scheduler/config/dynconfig_test.go @@ -23,7 +23,7 @@ import ( "time" dc "d7y.io/dragonfly/v2/internal/dynconfig" - "d7y.io/dragonfly/v2/pkg/rpc/manager" + "d7y.io/dragonfly/v2/internal/rpc/manager" "d7y.io/dragonfly/v2/scheduler/config/mocks" "github.com/golang/mock/gomock" "github.com/pkg/errors" diff --git a/scheduler/config/mocks/manager_client_mock.go b/scheduler/config/mocks/manager_client_mock.go index 439eee8e113..1c10b134942 100644 --- a/scheduler/config/mocks/manager_client_mock.go +++ b/scheduler/config/mocks/manager_client_mock.go @@ -8,7 +8,7 @@ import ( context "context" reflect "reflect" - manager "d7y.io/dragonfly/v2/pkg/rpc/manager" + manager "d7y.io/dragonfly/v2/internal/rpc/manager" gomock "github.com/golang/mock/gomock" grpc "google.golang.org/grpc" ) diff --git a/scheduler/manager/cdn_manager.go b/scheduler/manager/cdn_manager.go index 5b27c4fc326..c2a0fd69a8d 100644 --- a/scheduler/manager/cdn_manager.go +++ b/scheduler/manager/cdn_manager.go @@ -25,18 +25,18 @@ import ( "sync" "time" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/manager" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/manager" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" "d7y.io/dragonfly/v2/pkg/safe" "d7y.io/dragonfly/v2/scheduler/config" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem" - "d7y.io/dragonfly/v2/pkg/rpc/cdnsystem/client" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem" + "d7y.io/dragonfly/v2/internal/rpc/cdnsystem/client" "d7y.io/dragonfly/v2/scheduler/types" ) @@ -46,7 +46,7 @@ type CDNManager struct { client client.CdnClient servers map[string]*manager.ServerInfo dynconfig config.DynconfigInterface - lock *sync.RWMutex + lock sync.RWMutex callbackFns map[*types.Task]func(*types.PeerTask, *dferrors.DfError) callbackList map[*types.Task][]*types.PeerTask taskManager *TaskManager @@ -55,7 +55,6 @@ type CDNManager struct { func newCDNManager(cfg *config.Config, taskManager *TaskManager, hostManager *HostManager, dynconfig config.DynconfigInterface) (*CDNManager, error) { mgr := &CDNManager{ - lock: &sync.RWMutex{}, callbackFns: make(map[*types.Task]func(*types.PeerTask, *dferrors.DfError)), callbackList: make(map[*types.Task][]*types.PeerTask), taskManager: taskManager, diff --git a/scheduler/manager/cdn_manager_test.go b/scheduler/manager/cdn_manager_test.go index 8cc73f2003a..fc35c212670 100644 --- a/scheduler/manager/cdn_manager_test.go +++ b/scheduler/manager/cdn_manager_test.go @@ -19,8 +19,8 @@ package manager import ( "testing" + "d7y.io/dragonfly/v2/internal/rpc/manager" "d7y.io/dragonfly/v2/pkg/basic/dfnet" - "d7y.io/dragonfly/v2/pkg/rpc/manager" testifyassert "github.com/stretchr/testify/assert" ) diff --git a/scheduler/manager/peer_task.go b/scheduler/manager/peer_task.go index 30c770d4094..cacc504ec37 100644 --- a/scheduler/manager/peer_task.go +++ b/scheduler/manager/peer_task.go @@ -24,9 +24,9 @@ import ( "sync" "time" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/pkg/structure/sortedlist" "d7y.io/dragonfly/v2/pkg/structure/workqueue" "d7y.io/dragonfly/v2/scheduler/config" diff --git a/scheduler/manager/task_manager.go b/scheduler/manager/task_manager.go index 05df37b2740..358be193d7f 100644 --- a/scheduler/manager/task_manager.go +++ b/scheduler/manager/task_manager.go @@ -22,13 +22,13 @@ import ( "sync" "time" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/types" ) type TaskManager struct { - lock *sync.RWMutex + lock sync.RWMutex data map[string]*types.Task gcDelayTime time.Duration @@ -43,7 +43,6 @@ func newTaskManager(cfg *config.Config, hostManager *HostManager) *TaskManager { } tm := &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), gcDelayTime: delay, } diff --git a/scheduler/manager/task_manager_test.go b/scheduler/manager/task_manager_test.go index 07434405d06..dfbdd4b9cfc 100644 --- a/scheduler/manager/task_manager_test.go +++ b/scheduler/manager/task_manager_test.go @@ -17,7 +17,6 @@ package manager import ( - "sync" "testing" "d7y.io/dragonfly/v2/scheduler/types" @@ -35,7 +34,6 @@ func TestTaskManager_Set(t *testing.T) { { name: "set foo task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "foo", @@ -50,7 +48,6 @@ func TestTaskManager_Set(t *testing.T) { { name: "set empty task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "foo", @@ -63,7 +60,6 @@ func TestTaskManager_Set(t *testing.T) { { name: "set empty key", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "", @@ -96,7 +92,6 @@ func TestTaskManager_Add(t *testing.T) { { name: "add foo task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "foo", @@ -111,7 +106,6 @@ func TestTaskManager_Add(t *testing.T) { { name: "add empty task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "foo", @@ -124,7 +118,6 @@ func TestTaskManager_Add(t *testing.T) { { name: "add empty key", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "", @@ -139,7 +132,6 @@ func TestTaskManager_Add(t *testing.T) { { name: "key already exists", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: map[string]*types.Task{"foo": nil}, }, key: "foo", @@ -175,7 +167,6 @@ func TestTaskManager_Get(t *testing.T) { { name: "get existing task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: map[string]*types.Task{"foo": mockTask}, }, key: "foo", @@ -188,7 +179,6 @@ func TestTaskManager_Get(t *testing.T) { { name: "get non-existent task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "foo", @@ -219,7 +209,6 @@ func TestTaskManager_Delete(t *testing.T) { { name: "delete existing task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: map[string]*types.Task{"foo": nil}, }, key: "foo", @@ -231,7 +220,6 @@ func TestTaskManager_Delete(t *testing.T) { { name: "delete non-existent task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "foo", @@ -266,7 +254,6 @@ func TestTaskManager_Touch(t *testing.T) { { name: "touch existing task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: map[string]*types.Task{"foo": mockTask}, }, key: "foo", @@ -279,7 +266,6 @@ func TestTaskManager_Touch(t *testing.T) { { name: "touch non-existent task", taskManager: &TaskManager{ - lock: new(sync.RWMutex), data: make(map[string]*types.Task), }, key: "foo", diff --git a/scheduler/scheduler/evaluator.go b/scheduler/scheduler/evaluator.go index d6501a187cc..963b29290a4 100644 --- a/scheduler/scheduler/evaluator.go +++ b/scheduler/scheduler/evaluator.go @@ -21,7 +21,7 @@ import ( "strings" "time" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/scheduler/manager" "d7y.io/dragonfly/v2/scheduler/types" ) @@ -40,6 +40,8 @@ type evaluator struct { taskManager *manager.TaskManager } +var _ Evaluator = (*evaluator)(nil) + // WithTaskManager sets task manager. func withTaskManager(t *manager.TaskManager) evaluatorOption { return func(e *evaluator) *evaluator { diff --git a/scheduler/scheduler/evaluator_factory.go b/scheduler/scheduler/evaluator_factory.go index 00477f88990..1ef2003465c 100644 --- a/scheduler/scheduler/evaluator_factory.go +++ b/scheduler/scheduler/evaluator_factory.go @@ -24,18 +24,18 @@ import ( "d7y.io/dragonfly/v2/pkg/safe" - "d7y.io/dragonfly/v2/pkg/idgen" + "d7y.io/dragonfly/v2/internal/idgen" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/types" ) type evaluatorFactory struct { - lock *sync.RWMutex + lock sync.RWMutex evaluators map[string]Evaluator getEvaluatorFuncs map[int]getEvaluatorFunc getEvaluatorFuncPriorityList []getEvaluatorFunc cache map[*types.Task]Evaluator - cacheClearFunc *sync.Once + cacheClearFunc sync.Once abtest bool ascheduler string bscheduler string @@ -45,11 +45,9 @@ type getEvaluatorFunc func(task *types.Task) (string, bool) func newEvaluatorFactory(cfg config.SchedulerConfig) *evaluatorFactory { factory := &evaluatorFactory{ - lock: new(sync.RWMutex), evaluators: make(map[string]Evaluator), getEvaluatorFuncs: map[int]getEvaluatorFunc{}, cache: map[*types.Task]Evaluator{}, - cacheClearFunc: new(sync.Once), abtest: cfg.ABTest, ascheduler: cfg.AScheduler, bscheduler: cfg.BScheduler, diff --git a/scheduler/scheduler/scheduler.go b/scheduler/scheduler/scheduler.go index fba8534f63c..5775640bc90 100644 --- a/scheduler/scheduler/scheduler.go +++ b/scheduler/scheduler/scheduler.go @@ -17,7 +17,7 @@ package scheduler import ( - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/manager" "d7y.io/dragonfly/v2/scheduler/types" diff --git a/scheduler/server/scheduler_server.go b/scheduler/server/scheduler_server.go index 132c0a5f5e1..50606ec24db 100644 --- a/scheduler/server/scheduler_server.go +++ b/scheduler/server/scheduler_server.go @@ -21,11 +21,11 @@ import ( "fmt" "time" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/service" "d7y.io/dragonfly/v2/scheduler/service/worker" diff --git a/scheduler/server/server.go b/scheduler/server/server.go index 2df87c3e534..e964eb42484 100644 --- a/scheduler/server/server.go +++ b/scheduler/server/server.go @@ -19,14 +19,14 @@ package server import ( "context" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/internal/dynconfig" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc" - "d7y.io/dragonfly/v2/pkg/rpc/manager" - "d7y.io/dragonfly/v2/pkg/rpc/manager/client" + "d7y.io/dragonfly/v2/internal/rpc" + "d7y.io/dragonfly/v2/internal/rpc/manager" + "d7y.io/dragonfly/v2/internal/rpc/manager/client" // Server registered to grpc - _ "d7y.io/dragonfly/v2/pkg/rpc/scheduler/server" + _ "d7y.io/dragonfly/v2/internal/rpc/scheduler/server" "d7y.io/dragonfly/v2/pkg/util/net/iputils" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/service" diff --git a/scheduler/service/service.go b/scheduler/service/service.go index d8a7f32c83b..f19349ce9ad 100644 --- a/scheduler/service/service.go +++ b/scheduler/service/service.go @@ -19,8 +19,8 @@ package service import ( "errors" - "d7y.io/dragonfly/v2/pkg/idgen" - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/idgen" + "d7y.io/dragonfly/v2/internal/rpc/base" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/manager" "d7y.io/dragonfly/v2/scheduler/scheduler" diff --git a/scheduler/service/worker/client.go b/scheduler/service/worker/client.go index c9c811edfc4..d05466bdd73 100644 --- a/scheduler/service/worker/client.go +++ b/scheduler/service/worker/client.go @@ -20,11 +20,11 @@ import ( "io" "time" - "d7y.io/dragonfly/v2/pkg/rpc/base/common" + "d7y.io/dragonfly/v2/internal/rpc/base/common" - "d7y.io/dragonfly/v2/pkg/dfcodes" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/scheduler/service" ) diff --git a/scheduler/service/worker/sender.go b/scheduler/service/worker/sender.go index b44dd7dd819..2dc08b2bb9e 100644 --- a/scheduler/service/worker/sender.go +++ b/scheduler/service/worker/sender.go @@ -21,7 +21,7 @@ import ( "hash/crc32" "runtime/debug" - logger "d7y.io/dragonfly/v2/pkg/dflog" + logger "d7y.io/dragonfly/v2/internal/dflog" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/service" "d7y.io/dragonfly/v2/scheduler/types" @@ -41,6 +41,8 @@ type SenderGroup struct { schedulerService *service.SchedulerService } +var _ ISender = (*SenderGroup)(nil) + type Sender struct { jobChan chan *string stopCh <-chan struct{} diff --git a/scheduler/service/worker/woker.go b/scheduler/service/worker/woker.go index c39c926ac8e..a77af146df5 100644 --- a/scheduler/service/worker/woker.go +++ b/scheduler/service/worker/woker.go @@ -24,9 +24,9 @@ import ( "k8s.io/client-go/util/workqueue" - "d7y.io/dragonfly/v2/pkg/dfcodes" - logger "d7y.io/dragonfly/v2/pkg/dflog" - scheduler2 "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + logger "d7y.io/dragonfly/v2/internal/dflog" + scheduler2 "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/scheduler/service" "d7y.io/dragonfly/v2/scheduler/types" ) @@ -43,6 +43,8 @@ type Worker struct { schedulerService *service.SchedulerService } +var _ IWorker = (*Worker)(nil) + func NewWorker(schedulerService *service.SchedulerService, sender ISender, sendJod func(*types.PeerTask), stop <-chan struct{}) *Worker { return &Worker{ scheduleQueue: workqueue.New(), diff --git a/scheduler/service/worker/worker_group.go b/scheduler/service/worker/worker_group.go index 7688a3aa2b1..be5327693c3 100644 --- a/scheduler/service/worker/worker_group.go +++ b/scheduler/service/worker/worker_group.go @@ -19,8 +19,8 @@ package worker import ( "hash/crc32" - logger "d7y.io/dragonfly/v2/pkg/dflog" - scheduler2 "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + logger "d7y.io/dragonfly/v2/internal/dflog" + scheduler2 "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/scheduler/config" "d7y.io/dragonfly/v2/scheduler/service" "d7y.io/dragonfly/v2/scheduler/types" @@ -46,6 +46,8 @@ type Group struct { schedulerService *service.SchedulerService } +var _ IWorker = (*Group)(nil) + func NewGroup(cfg *config.Config, schedulerService *service.SchedulerService) *Group { return &Group{ workerNum: cfg.Worker.WorkerNum, diff --git a/scheduler/types/client.go b/scheduler/types/client.go index db33cf848ac..0d8ca8dc61c 100644 --- a/scheduler/types/client.go +++ b/scheduler/types/client.go @@ -16,7 +16,7 @@ package types -import "d7y.io/dragonfly/v2/pkg/rpc/scheduler" +import "d7y.io/dragonfly/v2/internal/rpc/scheduler" type IClient interface { Send(*scheduler.PeerPacket) error diff --git a/scheduler/types/host.go b/scheduler/types/host.go index b120f70e6ea..e2093ef80e1 100644 --- a/scheduler/types/host.go +++ b/scheduler/types/host.go @@ -19,8 +19,8 @@ package types import ( "sync" - logger "d7y.io/dragonfly/v2/pkg/dflog" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + logger "d7y.io/dragonfly/v2/internal/dflog" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) type HostType int @@ -40,13 +40,12 @@ type Host struct { currentUploadLoad int32 totalDownloadLoad int32 currentDownloadLoad int32 - loadLock *sync.Mutex + loadLock sync.Mutex // ServiceDownTime the down time of the peer service. ServiceDownTime int64 } func Init(h *Host) *Host { - h.loadLock = &sync.Mutex{} h.peerTaskMap = &sync.Map{} return h } diff --git a/scheduler/types/peer_task.go b/scheduler/types/peer_task.go index 02ac390de71..784f10558ac 100644 --- a/scheduler/types/peer_task.go +++ b/scheduler/types/peer_task.go @@ -22,10 +22,10 @@ import ( "sync/atomic" "time" - "d7y.io/dragonfly/v2/pkg/dfcodes" - "d7y.io/dragonfly/v2/pkg/dferrors" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dfcodes" + "d7y.io/dragonfly/v2/internal/dferrors" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" ) type PeerTaskStatus int8 @@ -49,7 +49,7 @@ type PeerTask struct { Host *Host // host info isDown bool // is leave scheduler - lock *sync.Mutex + lock sync.Mutex finishedNum int32 // download finished piece number startTime int64 lastActiveTime int64 @@ -94,7 +94,6 @@ func NewPeerTask(pid string, task *Task, host *Host, touch func(*PeerTask)) *Pee Task: task, Host: host, isDown: false, - lock: new(sync.Mutex), startTime: time.Now().UnixNano(), lastActiveTime: time.Now().UnixNano(), touch: touch, diff --git a/scheduler/types/piece.go b/scheduler/types/piece.go index 3a3147c2372..4492cc949bc 100644 --- a/scheduler/types/piece.go +++ b/scheduler/types/piece.go @@ -17,7 +17,7 @@ package types import ( - "d7y.io/dragonfly/v2/pkg/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/base" ) type WaitingType int diff --git a/scheduler/types/task.go b/scheduler/types/task.go index e441c8d7793..a5f15283639 100644 --- a/scheduler/types/task.go +++ b/scheduler/types/task.go @@ -20,9 +20,9 @@ import ( "sync" "time" - "d7y.io/dragonfly/v2/pkg/dferrors" - "d7y.io/dragonfly/v2/pkg/rpc/base" - "d7y.io/dragonfly/v2/pkg/rpc/scheduler" + "d7y.io/dragonfly/v2/internal/dferrors" + "d7y.io/dragonfly/v2/internal/rpc/base" + "d7y.io/dragonfly/v2/internal/rpc/scheduler" "d7y.io/dragonfly/v2/scheduler/metrics" ) @@ -41,7 +41,7 @@ type Task struct { CreateTime time.Time LastActive time.Time - rwLock *sync.RWMutex + rwLock sync.RWMutex PieceList map[int32]*Piece // Piece list PieceTotal int32 // the total number of Pieces, set > 0 when cdn finished ContentLength int64 @@ -51,10 +51,9 @@ type Task struct { } func CopyTask(t *Task) *Task { - copyTask := *t + copyTask := *t //nolint:govet if copyTask.PieceList == nil { copyTask.PieceList = make(map[int32]*Piece) - copyTask.rwLock = new(sync.RWMutex) copyTask.CreateTime = time.Now() copyTask.LastActive = copyTask.CreateTime copyTask.SizeScope = base.SizeScope_NORMAL