| 146 | } |
| 147 | |
| 148 | func (m *MessageSession) maybeRefreshToken(ctx context.Context) error { |
| 149 | if m.session == nil { |
| 150 | return fmt.Errorf("session is nil") |
| 151 | } |
| 152 | |
| 153 | expiresAt, err := m.session.ExiresAt() |
| 154 | if err != nil { |
| 155 | return fmt.Errorf("failed to get expires at: %w", err) |
| 156 | } |
| 157 | // add some jitter (30 second interval) |
| 158 | randInt, err := rand.Int(rand.Reader, big.NewInt(30)) |
| 159 | if err != nil { |
| 160 | return fmt.Errorf("failed to get a random number") |
| 161 | } |
| 162 | expiresIn := time.Duration(randInt.Int64())*time.Second + 10*time.Minute |
| 163 | slog.DebugContext(ctx, "checking if message session token needs refresh", "expires_at", expiresAt) |
| 164 | if m.session.ExpiresIn(expiresIn) { |
| 165 | if err := m.Refresh(ctx); err != nil { |
| 166 | return fmt.Errorf("failed to refresh message queue token: %w", err) |
| 167 | } |
| 168 | } |
| 169 | |
| 170 | return nil |
| 171 | } |
| 172 | |
| 173 | func (m *MessageSession) GetMessage(ctx context.Context, lastMessageID int64, maxCapacity uint) (_ params.RunnerScaleSetMessage, err error) { |
| 174 | m.ssCli.recordOperation("GetMessage") |