feat: replace md5 to highwayhash

This commit is contained in:
Nao YONASHIRO
2019-09-18 17:19:15 +09:00
parent e048b87222
commit c87d2dba9c
27 changed files with 1740 additions and 3 deletions
+12 -2
View File
@@ -23,8 +23,10 @@ import (
"io"
"os"
"strconv"
"sync"
"syscall"
highwayhash "github.com/minio/HighwayHash"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
@@ -44,8 +46,14 @@ func ConfigureLogging(logLevel string) error {
// Hasher returns a hash function, used in snapshotting to determine if a file has changed
func Hasher() func(string) (string, error) {
pool := sync.Pool{
New: func() interface{} {
return make([]byte, highwayhash.Size * 10 * 1024)
},
}
key := make([]byte, highwayhash.Size)
hasher := func(p string) (string, error) {
h := md5.New()
h, _ := highwayhash.New(key)
fi, err := os.Lstat(p)
if err != nil {
return "", err
@@ -63,7 +71,9 @@ func Hasher() func(string) (string, error) {
return "", err
}
defer f.Close()
if _, err := io.Copy(h, f); err != nil {
buf := pool.Get().([]byte)
defer pool.Put(buf)
if _, err := io.CopyBuffer(h, f, buf); err != nil {
return "", err
}
}