diff options
| author | Guo Lei <snipergg@163.com> | 2022-11-14 16:19:27 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-14 00:19:27 -0800 |
| commit | 5b905fb2b74049437fcd939c0304a7e34d051234 (patch) | |
| tree | 2c654eb74ee30f5c9e20a6c26de4ede1d04543d9 /weed/storage/volume.go | |
| parent | d90aa31d5f5b846c13bbeabfbd7d89260c21020c (diff) | |
| download | seaweedfs-5b905fb2b74049437fcd939c0304a7e34d051234.tar.xz seaweedfs-5b905fb2b74049437fcd939c0304a7e34d051234.zip | |
Lazy loading (#3958)
* types packages is imported more than onece
* lazy-loading
* fix bugs
* fix bugs
* fix unit tests
* fix test error
* rename function
* unload ldb after initial startup
* Don't load ldb when starting volume server if ldbtimeout is set.
* remove uncessary unloadldb
* Update weed/command/server.go
Co-authored-by: Chris Lu <chrislusf@users.noreply.github.com>
* Update weed/command/volume.go
Co-authored-by: Chris Lu <chrislusf@users.noreply.github.com>
Co-authored-by: guol-fnst <goul-fnst@fujitsu.com>
Co-authored-by: Chris Lu <chrislusf@users.noreply.github.com>
Diffstat (limited to 'weed/storage/volume.go')
| -rw-r--r-- | weed/storage/volume.go | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/weed/storage/volume.go b/weed/storage/volume.go index ab8af91e2..b4cd7b560 100644 --- a/weed/storage/volume.go +++ b/weed/storage/volume.go @@ -43,6 +43,7 @@ type Volume struct { lastCompactIndexOffset uint64 lastCompactRevision uint16 + ldbTimeout int64 isCompacting bool isCommitCompacting bool @@ -53,12 +54,13 @@ type Volume struct { lastIoError error } -func NewVolume(dirname string, dirIdx string, collection string, id needle.VolumeId, needleMapKind NeedleMapKind, replicaPlacement *super_block.ReplicaPlacement, ttl *needle.TTL, preallocate int64, memoryMapMaxSizeMb uint32) (v *Volume, e error) { +func NewVolume(dirname string, dirIdx string, collection string, id needle.VolumeId, needleMapKind NeedleMapKind, replicaPlacement *super_block.ReplicaPlacement, ttl *needle.TTL, preallocate int64, memoryMapMaxSizeMb uint32, ldbTimeout int64) (v *Volume, e error) { // if replicaPlacement is nil, the superblock will be loaded from disk v = &Volume{dir: dirname, dirIdx: dirIdx, Collection: collection, Id: id, MemoryMapMaxSizeMb: memoryMapMaxSizeMb, asyncRequestsChan: make(chan *needle.AsyncRequest, 128)} v.SuperBlock = super_block.SuperBlock{ReplicaPlacement: replicaPlacement, Ttl: ttl} v.needleMapKind = needleMapKind + v.ldbTimeout = ldbTimeout e = v.load(true, true, needleMapKind, preallocate) v.startWorker() return |
