Skip to content

Commit

Permalink
Merge pull request #5144 from hashicorp/backport/mgaffney-fix-orphan-…
Browse files Browse the repository at this point in the history
…conn-query/amazingly-neat-raptor

This pull request was automerged via backport-assistant
  • Loading branch information
hc-github-team-secure-boundary authored Oct 1, 2024
2 parents bfe1014 + e0ccd73 commit 02322a1
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 32 deletions.
41 changes: 10 additions & 31 deletions internal/session/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -329,38 +329,17 @@ where
and closed_reason is null
returning public_id;
`
orphanedConnectionsCte = `
-- Find connections that are not closed so we can reference those IDs
with
unclosed_connections as (
select public_id
from session_connection
where
-- It's not closed
upper(connected_time_range) > now() or
connected_time_range is null
-- It's not in limbo between when it moved into this state and when
-- it started being reported by the worker, which is roughly every
-- 2-3 seconds
and update_time < wt_sub_seconds_from_now(@worker_state_delay_seconds)
),
connections_to_close as (
select public_id
from session_connection
where
-- Related to the worker that just reported to us
worker_id = @worker_id
-- Only unclosed ones
and public_id in (select public_id from unclosed_connections)
-- These are connection IDs that just got reported to us by the given
-- worker, so they should not be considered closed.
%s
)
closeOrphanedConnections = `
update session_connection
set
closed_reason = 'system error'
where
public_id in (select public_id from connections_to_close)
set closed_reason = 'system error'
where worker_id = @worker_id
and update_time < wt_sub_seconds_from_now(@worker_state_delay_seconds)
and (
connected_time_range is null
or
upper(connected_time_range) > now()
)
%s
returning public_id;
`
deleteTerminated = `
Expand Down
3 changes: 2 additions & 1 deletion internal/session/repository_connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -399,12 +399,13 @@ func (r *ConnectionRepository) closeOrphanedConnections(ctx context.Context, wor
notInClause = fmt.Sprintf(notInClause, strings.Join(params, ","))
}

query := fmt.Sprintf(closeOrphanedConnections, notInClause)
_, err := r.writer.DoTx(
ctx,
db.StdRetryCnt,
db.ExpBackoff{},
func(_ db.Reader, w db.Writer) error {
rows, err := w.Query(ctx, fmt.Sprintf(orphanedConnectionsCte, notInClause), args)
rows, err := w.Query(ctx, query, args)
if err != nil {
return errors.Wrap(ctx, err, op)
}
Expand Down

0 comments on commit 02322a1

Please sign in to comment.