You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/internal/session/service_statistics.go

48 lines
1.7 KiB

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package session
import (
"context"
"github.com/hashicorp/boundary/internal/errors"
"github.com/hashicorp/boundary/internal/event"
)
// CloseOrphanedConnections closes the orphaned connections for a given worker.
func CloseOrphanedConnections(ctx context.Context, repo *ConnectionRepository, workerId string, connections []*Connection) ([]string, error) {
const op = "session.CloseOrphanedConnections"
if repo == nil {
return nil, errors.New(ctx, errors.InvalidParameter, op, "missing connection repository")
}
if workerId == "" {
return nil, errors.New(ctx, errors.InvalidParameter, op, "missing worker id")
}
connectionIds := []string{}
for _, c := range connections {
connectionIds = append(connectionIds, c.GetPublicId())
}
closed, err := repo.closeOrphanedConnections(ctx, workerId, connectionIds)
if len(closed) > 0 {
event.WriteSysEvent(ctx, op, "marked unclaimed connections as closed", "worker_id", workerId, "count", len(closed))
}
if err != nil {
return nil, errors.Wrap(ctx, err, op, errors.WithMsg("failed to close orphaned connections for worker %q", workerId))
}
return closed, nil
}
// UpdateConnectionBytesUpDown processes the connection statistics for a given worker.
func UpdateConnectionBytesUpDown(ctx context.Context, repo *ConnectionRepository, connections []*Connection) error {
const op = "session.UpdateConnectionBytesUpDown"
if repo == nil {
return errors.New(ctx, errors.InvalidParameter, op, "missing connection repository")
}
err := repo.updateBytesUpBytesDown(ctx, connections...)
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("failed to update bytes up and down for worker connection statistics"))
}
return nil
}