From e8b547737389eda23666e31ac77b6390ee168452 Mon Sep 17 00:00:00 2001 From: Gabik21 Date: Sat, 29 Aug 2026 11:01:53 +0200 Subject: [PATCH] Cardata: fix retrying failed container setup (#33243) --- vehicle/bmw/cardata/provider.go | 18 +++++++++--------- vehicle/bmw/cardata/provider_test.go | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/vehicle/bmw/cardata/provider.go b/vehicle/bmw/cardata/provider.go index dd47620f1..595ebf397 100644 --- a/vehicle/bmw/cardata/provider.go +++ b/vehicle/bmw/cardata/provider.go @@ -132,17 +132,17 @@ func (v *Provider) any(key string) (any, error) { _, tokenErr := v.ts.Token() - switch { - case tokenErr == nil && v.updated.IsZero(): - // this will only happen once - if err := v.setupContainer(); err != nil { - v.log.WARN.Println(err) + if tokenErr == nil && (v.updated.IsZero() || time.Since(v.updated) > v.cache) { + if v.container == "" { + if err := v.setupContainer(); err != nil { + v.log.WARN.Println(err) + } } - fallthrough - case tokenErr == nil && time.Since(v.updated) > v.cache && v.container != "": - if err := v.updateContainerData(); err != nil { - v.log.WARN.Println(err) + if v.container != "" { + if err := v.updateContainerData(); err != nil { + v.log.WARN.Println(err) + } } v.updated = time.Now() } diff --git a/vehicle/bmw/cardata/provider_test.go b/vehicle/bmw/cardata/provider_test.go index 05bb65196..cbaad346a 100644 --- a/vehicle/bmw/cardata/provider_test.go +++ b/vehicle/bmw/cardata/provider_test.go @@ -15,7 +15,7 @@ func TestCardataStreaming(t *testing.T) { p := NewProvider(ctx, util.NewLogger("foo"), nil, oauth2.StaticTokenSource(&oauth2.Token{ AccessToken: "at", - }), "client", "vin", 0) + }), "client", "vin", time.Hour) // prevent container panic p.updated = time.Now() @@ -51,7 +51,7 @@ func TestSocFallback(t *testing.T) { p := NewProvider(ctx, util.NewLogger("foo"), nil, oauth2.StaticTokenSource(&oauth2.Token{ AccessToken: "at", - }), "client", "vin", 0) + }), "client", "vin", time.Hour) // prevent container panic p.updated = time.Now() @@ -108,7 +108,7 @@ func TestRangeFallback(t *testing.T) { p := NewProvider(ctx, util.NewLogger("foo"), nil, oauth2.StaticTokenSource(&oauth2.Token{ AccessToken: "at", - }), "client", "vin", 0) + }), "client", "vin", time.Hour) // prevent container panic p.updated = time.Now() @@ -165,7 +165,7 @@ func TestStatusFallback(t *testing.T) { p := NewProvider(ctx, util.NewLogger("foo"), nil, oauth2.StaticTokenSource(&oauth2.Token{ AccessToken: "at", - }), "client", "vin", 0) + }), "client", "vin", time.Hour) // prevent container panic p.updated = time.Now()