fix(fs): fix issues related to closing fd

This commit is contained in:
hexxa 2021-09-14 22:47:00 +08:00 committed by Hexxa
parent 70dda37c54
commit 5e8567d470
8 changed files with 120 additions and 105 deletions

View file

@ -110,9 +110,10 @@ func initDeps(cfg gocfg.ICfg) *depidx.Deps {
mkRoot(rootPath)
opensLimit := cfg.GrabInt("Fs.OpensLimit")
openTTL := cfg.GrabInt("Fs.OpenTTL")
readerTTL := cfg.GrabInt("Server.WriteTimeout") / 1000 // millisecond -> second
ider := simpleidgen.New()
filesystem := local.NewLocalFS(rootPath, 0660, opensLimit, openTTL)
filesystem := local.NewLocalFS(rootPath, 0660, opensLimit, openTTL, readerTTL, ider)
jwtEncDec := jwt.NewJWTEncDec(secret)
kv := boltdbpvd.New(rootPath, 1024)
users, err := userstore.NewKVUserStore(kv)
@ -313,6 +314,7 @@ func (s *Server) Start() error {
func (s *Server) Shutdown() error {
// TODO: add timeout
s.deps.Workers().Stop()
s.deps.FS().Close()
s.deps.Log().Sync()
return s.server.Shutdown(context.Background())
}

View file

@ -575,7 +575,7 @@ func TestFileHandlers(t *testing.T) {
// cl := client.NewFilesClient(addr)
files := map[string]string{
"qs/files/uploadings/path1/f1": "12345678",
"qs/files/uploadings1/path1/f1": "12345678",
}
for filePath, content := range files {
@ -594,18 +594,13 @@ func TestFileHandlers(t *testing.T) {
offset := int64(0)
for _, chunk := range chunks {
base64Content := base64.StdEncoding.EncodeToString(chunk)
res, _, errs = cl.UploadChunk(filePath, base64Content, offset)
res, bodyStr, errs := cl.UploadChunk(filePath, base64Content, offset)
offset += int64(len(chunk))
if len(errs) > 0 {
t.Fatal(errs)
} else if res.StatusCode != 200 {
t.Fatal(res.StatusCode)
}
err = fs.Close()
if err != nil {
t.Fatal(err)
t.Fatal(fmt.Sprintln(res.StatusCode, bodyStr))
}
}
@ -663,11 +658,6 @@ func TestFileHandlers(t *testing.T) {
} else if res.StatusCode != 200 {
t.Fatal(res.StatusCode)
}
err = fs.Close()
if err != nil {
t.Fatal(err)
}
}
err = fs.Sync()

View file

@ -89,7 +89,7 @@ func TestSpaceLimit(t *testing.T) {
t.Fatal(resp.StatusCode)
}
t.Run("test space limitiong: Upload", func(t *testing.T) {
t.Run("test space limiting: Upload", func(t *testing.T) {
usersCl := client.NewSingleUserClient(addr)
resp, _, errs := usersCl.Login(getUserName(0), userPwd)
if len(errs) > 0 {
@ -105,9 +105,9 @@ func TestSpaceLimit(t *testing.T) {
}
for i := 0; i < 10; i++ {
ok := assertUploadOK(t, fmt.Sprintf("%s/spacelimit/f_%d", getUserName(0), 0), fileContent, addr, token)
ok := assertUploadOK(t, fmt.Sprintf("%s/files/spacelimit/f_%d", getUserName(0), i), fileContent, addr, token)
if !ok {
t.Fatalf("space limit failed at %d", 0)
t.Fatalf("space limit failed at %d", i)
}
resp, selfResp, errs := usersCl.Self(token)
@ -121,7 +121,7 @@ func TestSpaceLimit(t *testing.T) {
}
cl := client.NewFilesClient(addr, token)
filePath := fmt.Sprintf("%s/spacelimit/f_%d", getUserName(0), 11)
filePath := fmt.Sprintf("%s/files/spacelimit/f_%d", getUserName(0), 11)
res, _, errs := cl.Create(filePath, 1)
if len(errs) > 0 {
t.Fatal(errs)

View file

@ -58,12 +58,12 @@ func waitForReady(addr string) bool {
}
func compareFileContent(fs fspkg.ISimpleFS, uid, filePath string, expectedContent string) (bool, error) {
reader, err := fs.GetFileReader(filePath)
reader, id, err := fs.GetFileReader(filePath)
if err != nil {
return false, err
}
defer func() {
err = fs.CloseReader(filePath)
err = fs.CloseReader(fmt.Sprint(id))
if err != nil {
fmt.Println(err)
}