From befdb1ca10429c230a5be457babac0635dddeea5 Mon Sep 17 00:00:00 2001 From: joshsiv-mulga Date: Mon, 7 Sep 2026 22:09:21 +1000 Subject: [PATCH] fix: pin viperblock for WALBaseDir and set it on the mounted volume path dev did not build: the WALBaseDir call sites landed while go.mod still pinned viperblock v1.18.0, which predates the field. constructMountedVB passed WALBaseDir to the nbdkit plugin but not to its own engine, so the daemon would look for WALs under BaseDir while the plugin wrote them under WALBaseDir. --- go.mod | 8 ++++---- go.sum | 10 ++++++++++ spinifex/services/viperblockd/provider_handlers.go | 1 + .../services/viperblockd/provider_handlers_test.go | 3 ++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 005af2922..cb2b2f42c 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/mulgadc/bluebottle v1.18.1-0.20260903003911-3d26c3a8def8 github.com/mulgadc/northstar v1.18.1-0.20260903173023-a0e741e2831f github.com/mulgadc/predastore v1.18.1-0.20260831064140-ff6a1dc42441 - github.com/mulgadc/viperblock v1.18.0 + github.com/mulgadc/viperblock v1.18.1-0.20260907114759-0c199a0880ad github.com/nats-io/nats-server/v2 v2.14.6 github.com/nats-io/nats.go v1.53.1 github.com/opencontainers/runtime-spec v1.3.0 @@ -63,10 +63,10 @@ require ( github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.1 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.10.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.11.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.41 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.108.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.20.1 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.110.0 // indirect github.com/aws/aws-sdk-go-v2/service/signin v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.36.0 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.41.0 // indirect diff --git a/go.sum b/go.sum index 51b382f47..22fd229e7 100644 --- a/go.sum +++ b/go.sum @@ -564,6 +564,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 h1:bAdDl/ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19/go.mod h1:KaUzbLxv4CeSxh6ZCl9B4m7CuFenS8kUEaDs+f/DQr4= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.10.0 h1:U8/A0RRBaEspzH1uul3JHLbypXwEGUkRkvoT9f0ATcM= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.10.0/go.mod h1:UELStX5KwtJNtQxa+UuF8dc3z4UYc40e8yHYJSozNwY= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.11.1 h1:s67hBfG5t9rn1NCvDuB4E3QIep3UFhHPtaIqFDjV3N8= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.11.1/go.mod h1:FpvjBMXtSNMLPmDJsWwcY5cRnqJlpS2y1R6n4pvzs4k= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.23/go.mod h1:9uPh+Hrz2Vn6oMnQYiUi/zbh3ovbnQk19YKINkQny44= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.2/go.mod h1:Ru7vg1iQ7cR4i7SZ/JTLYN9kaXtbL69UdgG0OQWQxW0= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= @@ -571,8 +573,12 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.1 h1:RmmWQPREQ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.1/go.mod h1:0A3W4F+68ZnNk5XcNL/e9HFMwnP8RlEicFfy6eOEDyw= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.41 h1:Q9DIKDuJix/oJnQxFpQ26L0EwVa/YNo4k2kbktrjQjE= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.41/go.mod h1:x+TuqkOIG1SZS0+yN54sExGA9ZpjhPO6vPdYnpTFX1M= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.20.1 h1:ZMbtPZZQRca+3+XYQne9PBvRiYpHZlNJJOZfE9WNfT0= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.20.1/go.mod h1:YAGWQdCYlVCoqrzvfv3RLxO6zKwti7gsAULOGWPLYv4= github.com/aws/aws-sdk-go-v2/service/s3 v1.108.0 h1:Yp+x5PKXEmoqHsgP/pAkBy5Tyq1UlXAzM0OInh0vxWw= github.com/aws/aws-sdk-go-v2/service/s3 v1.108.0/go.mod h1:locV6DtXyp7Xzr2BG6jtsbeBi3YAWJ/CY4xUThYmIwQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.110.0 h1:He8vaTTqAAJrux/KdpjFXNWueLJZyKqE49QEXoqAu4I= +github.com/aws/aws-sdk-go-v2/service/s3 v1.110.0/go.mod h1:CUr46sCpGAg/rHaclRyhJX0LJAmH73uWSJPPSaMUrSk= github.com/aws/aws-sdk-go-v2/service/signin v1.8.0 h1:bSvKIoLuRGFqGwASgeCQncCJDi9YKKBDEmCEZzOX1uU= github.com/aws/aws-sdk-go-v2/service/signin v1.8.0/go.mod h1:9IqUlsJDbUPcg6cgx3WEzXdjrbWzLDQrak0aaSqlTcI= github.com/aws/aws-sdk-go-v2/service/sso v1.12.3/go.mod h1:jtLIhd+V+lft6ktxpItycqHqiVXrPIRjWIsFIlzMriw= @@ -1335,6 +1341,10 @@ github.com/mulgadc/predastore v1.18.1-0.20260831064140-ff6a1dc42441 h1:5t+iuKpnR github.com/mulgadc/predastore v1.18.1-0.20260831064140-ff6a1dc42441/go.mod h1:ioGP2kHWYpW/opboAqlqQ5C2Jv+a1/z4txtenw7K7Ws= github.com/mulgadc/viperblock v1.18.0 h1:u6yu5lPfZ+RSmfzlg1OXI3whlRBnGp8t685xUzzxlns= github.com/mulgadc/viperblock v1.18.0/go.mod h1:OjqMFZba0TJl9zcW2oKmz2/MrApIxRIFNcafiv5vTkM= +github.com/mulgadc/viperblock v1.18.1-0.20260907113913-8215aa76e262 h1:EzQREEFyuiqh3jqjTOCvNh0Bw0RJ3wDfFaoXJzv1lSc= +github.com/mulgadc/viperblock v1.18.1-0.20260907113913-8215aa76e262/go.mod h1:zsXuTpChwa4CQ12aOs2hF43ptZs9CHy4CQDR5Rmk6SY= +github.com/mulgadc/viperblock v1.18.1-0.20260907114759-0c199a0880ad h1:KpljxDC8gMx1CvyZ93lvCUN3yGEIzudwhENCC5rTA74= +github.com/mulgadc/viperblock v1.18.1-0.20260907114759-0c199a0880ad/go.mod h1:zsXuTpChwa4CQ12aOs2hF43ptZs9CHy4CQDR5Rmk6SY= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= diff --git a/spinifex/services/viperblockd/provider_handlers.go b/spinifex/services/viperblockd/provider_handlers.go index effd17f57..17ac9938d 100644 --- a/spinifex/services/viperblockd/provider_handlers.go +++ b/spinifex/services/viperblockd/provider_handlers.go @@ -1259,6 +1259,7 @@ func constructMountedVB(ctx context.Context, cfg *Config, volumeName string) (*v VolumeName: volumeName, VolumeSize: 1, // Workaround, calculated on LoadState() BaseDir: cfg.BaseDir, + WALBaseDir: cfg.WALBaseDir, Cache: viperblock.Cache{ Config: viperblock.CacheConfig{ Size: defaultCache, diff --git a/spinifex/services/viperblockd/provider_handlers_test.go b/spinifex/services/viperblockd/provider_handlers_test.go index 9d83a9480..b3c4f67e9 100644 --- a/spinifex/services/viperblockd/provider_handlers_test.go +++ b/spinifex/services/viperblockd/provider_handlers_test.go @@ -716,12 +716,13 @@ func TestProviderErrorConstructors(t *testing.T) { // AvailabilityZone) staying out of VolumeMetadata, and the SnapshotID/ // SourceVolumeName fields only being set when a source snapshot is given. func TestBuildProviderVBConfig(t *testing.T) { - cfg := &Config{BaseDir: "/tmp/vb-base", GCEnabled: true} + cfg := &Config{BaseDir: "/tmp/vb-base", WALBaseDir: "/wal", GCEnabled: true} vbconfig := buildProviderVBConfig(cfg, "vol-1", 8<<30, "", "") assert.Equal(t, "vol-1", vbconfig.VolumeName) assert.Equal(t, uint64(8<<30), vbconfig.VolumeSize) assert.Equal(t, "/tmp/vb-base", vbconfig.BaseDir) + assert.Equal(t, "/wal", vbconfig.WALBaseDir) assert.True(t, vbconfig.GCEnabled) assert.Empty(t, vbconfig.VolumeConfig.VolumeMetadata.TenantID, "control-plane facts must not be set here") assert.Empty(t, vbconfig.SnapshotID)