diff options
| author | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-09-01 22:33:23 +0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-01 10:33:23 -0700 |
| commit | 8c3040db81ac3c3a5b80d675ba3cf044420d4b9a (patch) | |
| tree | 123184c7635b1f578884c5ec5d0e4c64f8122e64 /weed/command/filer.go | |
| parent | 90d55cd179732a375f112c72893e2cca1b41afd1 (diff) | |
| download | seaweedfs-8c3040db81ac3c3a5b80d675ba3cf044420d4b9a.tar.xz seaweedfs-8c3040db81ac3c3a5b80d675ba3cf044420d4b9a.zip | |
avoid DATA RACE on S3Options.localFilerSocket (#3571)
* avoid DATA RACE on S3Options.localFilerSocket
https://github.com/seaweedfs/seaweedfs/issues/3552
* copy localSocket
Diffstat (limited to 'weed/command/filer.go')
| -rw-r--r-- | weed/command/filer.go | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/weed/command/filer.go b/weed/command/filer.go index 0dd35e5bd..452e76228 100644 --- a/weed/command/filer.go +++ b/weed/command/filer.go @@ -293,17 +293,18 @@ func (fo *FilerOptions) startFiler() { httpS := &http.Server{Handler: defaultMux} if runtime.GOOS != "windows" { - if *fo.localSocket == "" { - *fo.localSocket = fmt.Sprintf("/tmp/seaweefs-filer-%d.sock", *fo.port) + localSocket := *fo.localSocket + if localSocket == "" { + localSocket = fmt.Sprintf("/tmp/seaweefs-filer-%d.sock", *fo.port) } - if err := os.Remove(*fo.localSocket); err != nil && !os.IsNotExist(err) { - glog.Fatalf("Failed to remove %s, error: %s", *fo.localSocket, err.Error()) + if err := os.Remove(localSocket); err != nil && !os.IsNotExist(err) { + glog.Fatalf("Failed to remove %s, error: %s", localSocket, err.Error()) } go func() { // start on local unix socket - filerSocketListener, err := net.Listen("unix", *fo.localSocket) + filerSocketListener, err := net.Listen("unix", localSocket) if err != nil { - glog.Fatalf("Failed to listen on %s: %v", *fo.localSocket, err) + glog.Fatalf("Failed to listen on %s: %v", localSocket, err) } httpS.Serve(filerSocketListener) }() |
