diff --git a/.github/workflows/compatibility-e2e-v2.yml b/.github/workflows/compatibility-e2e-v2.yml index 7b5cf0cca..ceaf44552 100644 --- a/.github/workflows/compatibility-e2e-v2.yml +++ b/.github/workflows/compatibility-e2e-v2.yml @@ -28,19 +28,19 @@ jobs: include: - module: manager image: manager - image-tag: v2.1.42 + image-tag: v2.1.45 chart-name: manager - module: scheduler image: scheduler - image-tag: v2.1.42 + image-tag: v2.1.45 chart-name: scheduler - module: client image: client - image-tag: v0.1.35 + image-tag: v0.1.51 chart-name: client - module: seed-client image: client - image-tag: v0.1.35 + image-tag: v0.1.51 chart-name: seed-client steps: diff --git a/client-rs b/client-rs index 6d13d8808..853b4fcc4 160000 --- a/client-rs +++ b/client-rs @@ -1 +1 @@ -Subproject commit 6d13d8808b763662971cc7aa4b0525b2f4866276 +Subproject commit 853b4fcc4639328d0d4eaa16aee78842f9818f04 diff --git a/go.mod b/go.mod index dea2c6cd3..5f32c5b05 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module d7y.io/dragonfly/v2 go 1.21 require ( - d7y.io/api/v2 v2.0.111 + d7y.io/api/v2 v2.0.112 github.com/MysteriousPotato/go-lockable v1.0.0 github.com/RichardKnop/machinery v1.10.8 github.com/Showmax/go-fqdn v1.0.0 @@ -70,6 +70,7 @@ require ( github.com/swaggo/gin-swagger v1.6.0 github.com/swaggo/swag v1.16.3 github.com/yl2chen/cidranger v1.0.2 + github.com/zeebo/blake3 v0.2.3 go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.47.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.51.0 go.opentelemetry.io/otel v1.26.0 diff --git a/go.sum b/go.sum index 731042806..9bd986785 100644 --- a/go.sum +++ b/go.sum @@ -51,8 +51,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -d7y.io/api/v2 v2.0.111 h1:P4tgPCdU+5IfSc65iuMZS8y8D4CP+O7Xr+b6o9A2IDw= -d7y.io/api/v2 v2.0.111/go.mod h1:L35KjMvZmedXQ6UGHieIddUT1ZZjUAJUqJ9lf52r4fw= +d7y.io/api/v2 v2.0.112 h1:I3HCB3GH1tWbp3pFSPIlx7r+XpPcl8UBcNz0A3Ftink= +d7y.io/api/v2 v2.0.112/go.mod h1:L35KjMvZmedXQ6UGHieIddUT1ZZjUAJUqJ9lf52r4fw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= @@ -948,6 +948,7 @@ github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= @@ -1484,6 +1485,12 @@ github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQ github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= +github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY= +github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= +github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= +github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= +github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= diff --git a/pkg/digest/digest.go b/pkg/digest/digest.go index 539cf22c4..f377c5166 100644 --- a/pkg/digest/digest.go +++ b/pkg/digest/digest.go @@ -29,9 +29,14 @@ import ( "io" "os" "strings" + + "github.com/zeebo/blake3" ) const ( + // AlgorithmBlake3 is blake3 algorithm name of hash. + AlgorithmBlake3 = "blake3" + // AlgorithmSHA1 is sha1 algorithm name of hash. AlgorithmSHA1 = "sha1" @@ -77,6 +82,8 @@ func HashFile(path string, algorithm string) (string, error) { var h hash.Hash switch algorithm { + case AlgorithmBlake3: + h = blake3.New() case AlgorithmSHA1: h = sha1.New() case AlgorithmSHA256: @@ -109,6 +116,10 @@ func Parse(digest string) (*Digest, error) { encoded := values[1] switch algorithm { + case AlgorithmBlake3: + if len(encoded) != 64 { + return nil, errors.New("invalid encoded") + } case AlgorithmSHA1: if len(encoded) != 40 { return nil, errors.New("invalid encoded")