From 4ed237f23e5771d3c56763adca74da47bf656c5b Mon Sep 17 00:00:00 2001 From: Alexis Couvreur Date: Sun, 17 Nov 2024 13:16:11 -0500 Subject: [PATCH] package test is failing - prob goroutine hanging --- pkg/sablier/autostop.go | 1 + pkg/sablier/sablier.go | 5 +++++ pkg/sablier/start_instance.go | 2 +- pkg/sablier/start_instance_test.go | 4 ++++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 pkg/sablier/autostop.go diff --git a/pkg/sablier/autostop.go b/pkg/sablier/autostop.go new file mode 100644 index 0000000..bb4cb38 --- /dev/null +++ b/pkg/sablier/autostop.go @@ -0,0 +1 @@ +package sablier diff --git a/pkg/sablier/sablier.go b/pkg/sablier/sablier.go index 29b8497..8e0b401 100644 --- a/pkg/sablier/sablier.go +++ b/pkg/sablier/sablier.go @@ -1,6 +1,7 @@ package sablier import ( + "context" "github.com/sablierapp/sablier/pkg/promise" "github.com/sablierapp/sablier/pkg/provider" "github.com/sablierapp/sablier/pkg/tinykv" @@ -24,6 +25,10 @@ func NewSablier(provider provider.Provider) *Sablier { lock.Lock() defer lock.Unlock() log.Printf("instance [%s] expired - removing from promises", k) + err := provider.Stop(context.Background(), k) + if err != nil { + log.Printf("error stopping instance [%s]: %v", k, err) + } delete(promises, k) }) return &Sablier{ diff --git a/pkg/sablier/start_instance.go b/pkg/sablier/start_instance.go index 15e2d47..010cb47 100644 --- a/pkg/sablier/start_instance.go +++ b/pkg/sablier/start_instance.go @@ -31,7 +31,7 @@ func (s *Sablier) StartInstance(name string, opts StartOptions) *promise.Promise } if ok && pr.Fulfilled() { - log.Printf("request to start instance [%v] is already started, refreshing duration", name) + log.Printf("instance [%s] will expire after [%v]", name, opts.ExpiresAfter) err := s.expirations.Put(name, name, opts.ExpiresAfter) if err != nil { log.Printf("failed to refresh instance [%v]: %v", name, err) diff --git a/pkg/sablier/start_instance_test.go b/pkg/sablier/start_instance_test.go index f0661f0..d305b0a 100644 --- a/pkg/sablier/start_instance_test.go +++ b/pkg/sablier/start_instance_test.go @@ -76,6 +76,7 @@ func TestStartExpires(t *testing.T) { DesiredReplicas: opts.DesiredReplicas, ConsiderReadyAfter: opts.ConsiderReadyAfter, }).Return(nil).Twice() + m.EXPECT().Stop(mock.Anything, name).Return(nil).Once() s := sablier.NewSablier(m) @@ -125,6 +126,9 @@ func TestStartRefreshes(t *testing.T) { p3 := s.StartInstance(name, opts) assert.Same(t, p1, p2, p3) + + _, err := promise.AllSettled(context.Background(), p1, p2, p3).Await(context.Background()) + assert.NoError(t, err) } func TestStartAgainOnError(t *testing.T) {