modify: file cache writer md5 to sha256 (#5727)

* modify: file cache writer md5 to sha256

* modify: file cache writer md5 to sha256

* modify: file cache writer md5 to sha256
This commit is contained in:
Stone 2024-12-08 09:30:41 -05:00 committed by GitHub
parent bb72dc27ac
commit e7fa4835f7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 8 deletions

14
client/cache/file.go vendored
View File

@ -17,7 +17,7 @@ package cache
import ( import (
"bytes" "bytes"
"context" "context"
"crypto/md5" "crypto/sha256"
"encoding/gob" "encoding/gob"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
@ -123,21 +123,22 @@ func (fc *FileCache) Init() error {
// getCacheFileName returns a md5 encoded file name. // getCacheFileName returns a md5 encoded file name.
func (fc *FileCache) getCacheFileName(key string) (string, error) { func (fc *FileCache) getCacheFileName(key string) (string, error) {
m := md5.New() m := sha256.New()
_, _ = io.WriteString(m, key) _, _ = io.WriteString(m, key)
keyMd5 := hex.EncodeToString(m.Sum(nil)) keySha256 := hex.EncodeToString(m.Sum(nil))
cachePath := fc.CachePath cachePath := fc.CachePath
switch fc.DirectoryLevel { switch fc.DirectoryLevel {
case 2: case 2:
cachePath = filepath.Join(cachePath, keyMd5[0:2], keyMd5[2:4]) cachePath = filepath.Join(cachePath, keySha256[0:2], keySha256[2:4])
case 1: case 1:
cachePath = filepath.Join(cachePath, keyMd5[0:2]) cachePath = filepath.Join(cachePath, keySha256[0:2])
} }
ok, err := exists(cachePath) ok, err := exists(cachePath)
if err != nil { if err != nil {
return "", err return "", err
} }
if !ok { if !ok {
fmt.Printf("cachePath: %s\n", cachePath)
err = os.MkdirAll(cachePath, os.ModePerm) err = os.MkdirAll(cachePath, os.ModePerm)
if err != nil { if err != nil {
return "", berror.Wrapf(err, CreateFileCacheDirFailed, return "", berror.Wrapf(err, CreateFileCacheDirFailed,
@ -145,7 +146,7 @@ func (fc *FileCache) getCacheFileName(key string) (string, error) {
} }
} }
return filepath.Join(cachePath, fmt.Sprintf("%s%s", keyMd5, fc.FileSuffix)), nil return filepath.Join(cachePath, fmt.Sprintf("%s%s", keySha256, fc.FileSuffix)), nil
} }
// Get value from file cache. // Get value from file cache.
@ -212,6 +213,7 @@ func (fc *FileCache) Put(ctx context.Context, key string, val interface{}, timeo
} }
fn, err := fc.getCacheFileName(key) fn, err := fc.getCacheFileName(key)
if err != nil { if err != nil {
return err return err
} }

View File

@ -17,11 +17,10 @@ package cache
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/stretchr/testify/assert"
"os" "os"
"path/filepath" "path/filepath"
"testing" "testing"
"github.com/stretchr/testify/assert"
) )
func TestFileCacheStartAndGC(t *testing.T) { func TestFileCacheStartAndGC(t *testing.T) {
@ -30,6 +29,8 @@ func TestFileCacheStartAndGC(t *testing.T) {
assert.NotNil(t, err) assert.NotNil(t, err)
err = fc.StartAndGC(`{}`) err = fc.StartAndGC(`{}`)
assert.Nil(t, err) assert.Nil(t, err)
_, err = fc.getCacheFileName("key1")
assert.Nil(t, err)
assert.Equal(t, fc.CachePath, FileCachePath) assert.Equal(t, fc.CachePath, FileCachePath)
assert.Equal(t, fc.DirectoryLevel, FileCacheDirectoryLevel) assert.Equal(t, fc.DirectoryLevel, FileCacheDirectoryLevel)
@ -47,12 +48,17 @@ func TestFileCacheStartAndGC(t *testing.T) {
assert.Equal(t, fc.DirectoryLevel, 2) assert.Equal(t, fc.DirectoryLevel, 2)
assert.Equal(t, fc.EmbedExpiry, 0) assert.Equal(t, fc.EmbedExpiry, 0)
assert.Equal(t, fc.FileSuffix, ".bin") assert.Equal(t, fc.FileSuffix, ".bin")
_, err = fc.getCacheFileName("key1")
assert.Nil(t, err)
err = fc.StartAndGC(fmt.Sprintf(`{"CachePath":"%s","FileSuffix":".bin","DirectoryLevel":"aaa","EmbedExpiry":"0"}`, str)) err = fc.StartAndGC(fmt.Sprintf(`{"CachePath":"%s","FileSuffix":".bin","DirectoryLevel":"aaa","EmbedExpiry":"0"}`, str))
assert.NotNil(t, err) assert.NotNil(t, err)
err = fc.StartAndGC(fmt.Sprintf(`{"CachePath":"%s","FileSuffix":".bin","DirectoryLevel":"2","EmbedExpiry":"aaa"}`, str)) err = fc.StartAndGC(fmt.Sprintf(`{"CachePath":"%s","FileSuffix":".bin","DirectoryLevel":"2","EmbedExpiry":"aaa"}`, str))
assert.NotNil(t, err) assert.NotNil(t, err)
_, err = fc.getCacheFileName("key1")
assert.Nil(t, err)
} }
func TestFileCacheInit(t *testing.T) { func TestFileCacheInit(t *testing.T) {