@@ -26,25 +26,27 @@ import (
2626
2727// ManagedWorker represents a duckdb-service worker process.
2828type ManagedWorker struct {
29- ID int
30- podName string
31- nodeName string //nolint:unused // only set in kubernetes remote backend; drives cache-locality-aware scheduling
32- image string //nolint:unused // only set in kubernetes remote backend; carried through runtime store records
33- profile WorkerProfile //nolint:unused // only set in kubernetes remote backend; pod-shape this worker was spawned with (zero = default exclusive)
34- cmd * exec.Cmd
35- socketPath string
36- bearerToken string
37- client * flightsql.Client
38- parentListener net.Listener // CP-side listener; lifecycle managed by releaseSocket
39- prebound * preboundSocket // non-nil if using a pre-bound socket slot
40- releaseOnce sync.Once // ensures releaseWorkerSocket body runs exactly once
41- done chan struct {} // closed when process exits
42- exitErr error
43- activeSessions int // Number of sessions currently assigned to this worker
44- lastUsed time.Time // Last time a session was destroyed on this worker
45- sharedState SharedWorkerState
46- reservedAt time.Time //nolint:unused // only set in kubernetes remote backend reservation path
47- peakSessions int // High-water mark of concurrent sessions (for retirement metrics)
29+ ID int
30+ podName string
31+ nodeName string //nolint:unused // only set in kubernetes remote backend; drives cache-locality-aware scheduling
32+ image string //nolint:unused // only set in kubernetes remote backend; carried through runtime store records
33+ profile WorkerProfile //nolint:unused // only set in kubernetes remote backend; pod-shape this worker was spawned with (zero = default exclusive)
34+ cmd * exec.Cmd
35+ socketPath string
36+ bearerToken string
37+ client * flightsql.Client
38+ queryLogLimiterOnce sync.Once
39+ queryLogLimiter * flightclient.QueryLogLimiter
40+ parentListener net.Listener // CP-side listener; lifecycle managed by releaseSocket
41+ prebound * preboundSocket // non-nil if using a pre-bound socket slot
42+ releaseOnce sync.Once // ensures releaseWorkerSocket body runs exactly once
43+ done chan struct {} // closed when process exits
44+ exitErr error
45+ activeSessions int // Number of sessions currently assigned to this worker
46+ lastUsed time.Time // Last time a session was destroyed on this worker
47+ sharedState SharedWorkerState
48+ reservedAt time.Time //nolint:unused // only set in kubernetes remote backend reservation path
49+ peakSessions int // High-water mark of concurrent sessions (for retirement metrics)
4850 // ownerEpoch is guarded by epochMu so cred-refresh's
4951 // "RefreshLease then SetOwnerEpoch" sequence appears atomic to
5052 // concurrent readers (notably ShutdownAll's lease minting).
@@ -58,6 +60,13 @@ type ManagedWorker struct {
5860 cachedActivationPayload any //nolint:unused // *TenantActivationPayload, cached in kubernetes activation path
5961}
6062
63+ func (w * ManagedWorker ) workerQueryLogLimiter () * flightclient.QueryLogLimiter {
64+ w .queryLogLimiterOnce .Do (func () {
65+ w .queryLogLimiter = flightclient .NewQueryLogLimiter ()
66+ })
67+ return w .queryLogLimiter
68+ }
69+
6170// Profile returns the pod-shape profile this worker was spawned with (zero =
6271// default exclusive profile). Exposes the unexported field for the admin API.
6372func (w * ManagedWorker ) Profile () WorkerProfile {
0 commit comments