@@ -17,8 +17,8 @@ import (
17
17
)
18
18
19
19
const (
20
- FIVE = 5
21
- ProviderPrefix = "crusoe://"
20
+ InstanceNotFoundInterval = 2 * time . Minute
21
+ ProviderPrefix = "crusoe://"
22
22
)
23
23
24
24
var ErrAssertTimeTypeFailed = errors .New ("failed to assert type time.Time for firstSeen" )
@@ -125,8 +125,9 @@ func (i *Instances) InstanceShutdown(ctx context.Context, node *v1.Node) (bool,
125
125
return i .InstanceShutdownByProviderID (ctx , providerID )
126
126
}
127
127
128
+ //nolint:cyclop // must perform all checks before returning instance does not exists
128
129
func (i * Instances ) InstanceExistsByProviderID (ctx context.Context , providerID string ) (bool , error ) {
129
- _ , responseBody , err := i .apiClient .GetInstanceByID (ctx , getInstanceIDFromProviderID (providerID ))
130
+ inst , responseBody , err := i .apiClient .GetInstanceByID (ctx , getInstanceIDFromProviderID (providerID ))
130
131
if responseBody != nil {
131
132
defer responseBody .Body .Close ()
132
133
}
@@ -144,17 +145,19 @@ func (i *Instances) InstanceExistsByProviderID(ctx context.Context, providerID s
144
145
}
145
146
firstSeenTime , ok := firstSeen .(time.Time )
146
147
if ! ok {
147
- return false , ErrAssertTimeTypeFailed
148
+ // update the in-memory state to current time so that we can process it in next iteration
149
+ i .nodeFirstSeen .Store (providerID , currTime )
150
+ firstSeenTime = currTime
148
151
}
149
152
timeDiff := currTime .Sub (firstSeenTime )
150
- if responseBody != nil && responseBody .StatusCode == 404 {
151
- if timeDiff < FIVE * time . Minute {
153
+ if inst == nil || ( responseBody != nil && responseBody .StatusCode == 404 ) {
154
+ if timeDiff < InstanceNotFoundInterval {
152
155
klog .Infof ("timediff: %v" , timeDiff )
153
- klog .Infof ("Node %v first seen less than 5 minute ago " , providerID )
156
+ klog .Infof ("Node %v not seen for less than 2 minutes " , providerID )
154
157
155
158
return true , nil
156
159
}
157
- klog .Infof ("Node %v first seen more than 5 minute ago " , providerID )
160
+ klog .Infof ("Node %v not seen for more than 2 minutes " , providerID )
158
161
159
162
return false , nil
160
163
}
0 commit comments