diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-12-10 00:54:34 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-10 00:54:34 -0800 |
| commit | ae7333d28e77d907a9e7d50055e352c15678e723 (patch) | |
| tree | 4ffee8b47f42e10903691d2f9d6fac2910adeb7d | |
| parent | 0cd9f341778775195fb44cc32d1434e63dba4fca (diff) | |
| download | seaweedfs-ae7333d28e77d907a9e7d50055e352c15678e723.tar.xz seaweedfs-ae7333d28e77d907a9e7d50055e352c15678e723.zip | |
fix: cache successful volume lookups instead of failed ones (#7698)
The condition was inverted - it was caching lookups with errors
instead of successful lookups. This caused every replicated write
to make a gRPC call to master for volume location lookup, resulting
in ~1 second latency for writeToReplicas.
The bug particularly affected TTL volumes because:
- More unique volumes are created (separate pools per TTL)
- Volumes expire and get recreated frequently
- Each new volume requires a fresh lookup (cache miss)
- Higher volume churn = more cache misses = more master lookups
With this fix, successful lookups are cached for 10 minutes,
reducing replication latency from ~1s to ~10ms for cached volumes.
| -rw-r--r-- | weed/operation/lookup.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/weed/operation/lookup.go b/weed/operation/lookup.go index 9e9c719b5..12ad37330 100644 --- a/weed/operation/lookup.go +++ b/weed/operation/lookup.go @@ -4,12 +4,13 @@ import ( "context" "errors" "fmt" - "github.com/seaweedfs/seaweedfs/weed/pb" - "google.golang.org/grpc" "math/rand/v2" "strings" "time" + "github.com/seaweedfs/seaweedfs/weed/pb" + "google.golang.org/grpc" + "github.com/seaweedfs/seaweedfs/weed/pb/master_pb" ) @@ -101,7 +102,7 @@ func LookupVolumeIds(masterFn GetMasterFn, grpcDialOption grpc.DialOption, vids GrpcPort: int(loc.GrpcPort), }) } - if vidLocations.Error != "" { + if vidLocations.Error == "" { vc.Set(vidLocations.VolumeOrFileId, locations, 10*time.Minute) } ret[vidLocations.VolumeOrFileId] = &LookupResult{ |
