From a4c3b41590aeb5ad133a13d35662a06c25b650e8 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Mon, 19 Oct 2026 14:40:40 +1300 Subject: [PATCH 01/48] perf(queue-storage): one sequence write per enqueue reservation (v052) reserve_enqueue_seq read the lane's sequence name only after calling ensure_lane_sequences, which on every reservation computed two sequence names, ran two to_regclass lookups and two no-op UPDATEs of the lane heads. It now reads the name first and provisions only a lane row that has none. A multi-row range was reserved with nextval followed by setval, two sequence WAL records; it is now one setval under the lane lock that every writer of the sequence already holds, and a one-row reservation is a bare nextval. The definition moves into awa.refresh_enqueue_functions, called by the installer and by the v052 tail for every discovered substrate. Signature, lock key and return value are unchanged, so N-1 binaries and insert_job_compat call it as before. v050 and v051 are reserved for parallel branches. --- .../v023_install_queue_storage_substrate.sql | 169 ++++++++++-------- .../migrations/v052_enqueue_round_trips.sql | 30 ++++ awa-model/src/migrations.rs | 9 +- awa/tests/queue_storage_runtime_test.rs | 65 +++++++ 4 files changed, 200 insertions(+), 73 deletions(-) create mode 100644 awa-model/migrations/v052_enqueue_round_trips.sql diff --git a/awa-model/migrations/v023_install_queue_storage_substrate.sql b/awa-model/migrations/v023_install_queue_storage_substrate.sql index 6bf7fcd30..1a473f2d0 100644 --- a/awa-model/migrations/v023_install_queue_storage_substrate.sql +++ b/awa-model/migrations/v023_install_queue_storage_substrate.sql @@ -226,6 +226,102 @@ $refresh$; REVOKE EXECUTE ON FUNCTION awa.refresh_lane_sequence_helpers(TEXT) FROM PUBLIC; +-- Enqueue-path functions. Function replacement only: no table DDL and no +-- trigger changes, so a migration can refresh a live substrate through it. +CREATE OR REPLACE FUNCTION awa.refresh_enqueue_functions(p_schema TEXT) +RETURNS VOID +LANGUAGE plpgsql +SECURITY INVOKER +SET search_path = pg_catalog +AS $refresh$ +BEGIN + EXECUTE format( + $ddl$ + CREATE OR REPLACE FUNCTION %1$I.reserve_enqueue_seq( + p_queue TEXT, + p_priority SMALLINT, + p_enqueue_shard SMALLINT, + p_count BIGINT + ) + RETURNS BIGINT + LANGUAGE plpgsql + SET search_path = pg_catalog + AS $func$ + DECLARE + v_seq_name TEXT; + v_qualified_seq TEXT; + v_start BIGINT; + BEGIN + SELECT seq_name + INTO v_seq_name + FROM %1$I.queue_enqueue_heads + WHERE queue = p_queue + AND priority = p_priority + AND enqueue_shard = p_enqueue_shard; + + IF p_count <= 0 THEN + RETURN %1$I.sequence_next_value(v_seq_name); + END IF; + + -- The head trigger names the sequence when the lane row is + -- inserted; only a lane row written before that trigger existed + -- still needs its sequences provisioned here. + IF v_seq_name IS NULL THEN + PERFORM %1$I.ensure_lane_sequences(p_queue, p_priority, p_enqueue_shard); + + SELECT seq_name + INTO v_seq_name + FROM %1$I.queue_enqueue_heads + WHERE queue = p_queue + AND priority = p_priority + AND enqueue_shard = p_enqueue_shard; + + IF v_seq_name IS NULL THEN + RAISE EXCEPTION 'missing enqueue lane sequence for queue %%, priority %%, shard %%', + p_queue, p_priority, p_enqueue_shard + USING ERRCODE = '55000'; + END IF; + END IF; + + v_qualified_seq := format('%%I.%%I', %1$L, v_seq_name); + -- Hold the lane reservation lock until the surrounding enqueue + -- transaction ends. Sequence movement is non-transactional: if a + -- later producer could reserve and commit lane N+1 while an + -- earlier producer still holds uncommitted lane N, claim could + -- advance past N and strand the earlier job when it eventually + -- commits. The transaction-scoped lock preserves visibility order + -- within a lane while aborted reservations still become harmless + -- sequence gaps. + PERFORM pg_advisory_xact_lock(hashtextextended(v_qualified_seq, 0)); + + -- Every writer of a lane sequence holds this key (set_sequence_next + -- and the head trigger take it too), so a read followed by one + -- setval reserves the range with a single sequence write. + IF p_count = 1 THEN + v_start := nextval(v_qualified_seq::regclass); + ELSE + EXECUTE format( + 'SELECT setval(%%L::regclass, ' + 'CASE WHEN is_called THEN last_value + 1 ELSE last_value END + $1 - 1, true) ' + '- $1 + 1 FROM %%s', + v_qualified_seq, + v_qualified_seq + ) + INTO v_start + USING p_count; + END IF; + + RETURN v_start; + END; + $func$ + $ddl$, + p_schema + ); +END; +$refresh$; + +REVOKE EXECUTE ON FUNCTION awa.refresh_enqueue_functions(TEXT) FROM PUBLIC; + CREATE OR REPLACE FUNCTION awa.install_queue_storage_substrate( p_schema TEXT, p_queue_slot_count INT DEFAULT 16, @@ -1250,78 +1346,7 @@ BEGIN PERFORM awa.refresh_lane_sequence_helpers(p_schema); - EXECUTE format( - $ddl$ - CREATE OR REPLACE FUNCTION %1$I.reserve_enqueue_seq( - p_queue TEXT, - p_priority SMALLINT, - p_enqueue_shard SMALLINT, - p_count BIGINT - ) - RETURNS BIGINT - LANGUAGE plpgsql - SET search_path = pg_catalog - AS $func$ - DECLARE - v_seq_name TEXT; - v_lock_key TEXT; - v_start BIGINT; - BEGIN - IF p_count <= 0 THEN - RETURN %1$I.sequence_next_value(( - SELECT seq_name - FROM %1$I.queue_enqueue_heads - WHERE queue = p_queue - AND priority = p_priority - AND enqueue_shard = p_enqueue_shard - )); - END IF; - - PERFORM %1$I.ensure_lane_sequences(p_queue, p_priority, p_enqueue_shard); - - SELECT seq_name - INTO v_seq_name - FROM %1$I.queue_enqueue_heads - WHERE queue = p_queue - AND priority = p_priority - AND enqueue_shard = p_enqueue_shard; - - IF v_seq_name IS NULL THEN - RAISE EXCEPTION 'missing enqueue lane sequence for queue %%, priority %%, shard %%', - p_queue, p_priority, p_enqueue_shard - USING ERRCODE = '55000'; - END IF; - - v_lock_key := format('%%I.%%I', %1$L, v_seq_name); - -- Hold the lane reservation lock until the surrounding enqueue - -- transaction ends. Sequence movement is non-transactional: if a - -- later producer could reserve and commit lane N+1 while an - -- earlier producer still holds uncommitted lane N, claim could - -- advance past N and strand the earlier job when it eventually - -- commits. The transaction-scoped lock preserves visibility order - -- within a lane while aborted reservations still become harmless - -- sequence gaps. - PERFORM pg_advisory_xact_lock(hashtextextended(v_lock_key, 0)); - EXECUTE format( - 'SELECT nextval(%%L::regclass)::bigint', - format('%%I.%%I', %1$L, v_seq_name) - ) - INTO v_start; - - IF p_count > 1 THEN - EXECUTE format( - 'SELECT setval(%%L::regclass, %%s, true)', - format('%%I.%%I', %1$L, v_seq_name), - v_start + p_count - 1 - ); - END IF; - - RETURN v_start; - END; - $func$ - $ddl$, - p_schema - ); + PERFORM awa.refresh_enqueue_functions(p_schema); EXECUTE format( 'DROP TRIGGER IF EXISTS queue_enqueue_heads_sequence_sync ON %I.queue_enqueue_heads', diff --git a/awa-model/migrations/v052_enqueue_round_trips.sql b/awa-model/migrations/v052_enqueue_round_trips.sql new file mode 100644 index 000000000..c6f80a600 --- /dev/null +++ b/awa-model/migrations/v052_enqueue_round_trips.sql @@ -0,0 +1,30 @@ +-- v052: Fewer round trips and sequence writes per queue-storage enqueue. +-- Tracking: https://github.com/hardbyte/awa/issues/522 +-- reserve_enqueue_seq keeps its signature, lock key and return value. It +-- provisions lane sequences only for a lane row without a sequence name and +-- reserves a multi-row range with one sequence write instead of two. +-- N-1 binaries call it unchanged. +-- Live load: function replacement only, with no table DDL or row scans. +-- Function lock waits and schema count determine wall time. + +DO $$ +DECLARE + v_schema TEXT; +BEGIN + FOR v_schema IN + SELECT discovered.schema_name FROM awa.queue_storage_schemas() AS discovered + LOOP + IF to_regclass(format('%I.queue_enqueue_heads', v_schema)) IS NULL + OR to_regclass(format('%I.queue_claim_heads', v_schema)) IS NULL + OR to_regclass(format('%I.queue_ring_state', v_schema)) IS NULL THEN + CONTINUE; + END IF; + + PERFORM awa.refresh_enqueue_functions(v_schema); + END LOOP; +END; +$$; + +INSERT INTO awa.schema_version (version, description) +VALUES (52, 'Fewer round trips and sequence writes per queue-storage enqueue') +ON CONFLICT (version) DO NOTHING; diff --git a/awa-model/src/migrations.rs b/awa-model/src/migrations.rs index e4a79d421..dbb15a74b 100644 --- a/awa-model/src/migrations.rs +++ b/awa-model/src/migrations.rs @@ -5,7 +5,7 @@ use sqlx::{Connection, PgPool}; use tracing::{info, warn}; /// Current schema version. -pub const CURRENT_VERSION: i32 = 49; +pub const CURRENT_VERSION: i32 = 52; /// Migrations that require an exclusive (no-live-runtime) upgrade window. /// @@ -285,6 +285,12 @@ const MIGRATIONS: &[(i32, &str, &[&str])] = &[ "Use provisioned lane sequences without runtime DDL", &[V23_UP, V49_UP], ), + // v050 and v051 are reserved for parallel branches. + ( + 52, + "Fewer round trips and sequence writes per queue-storage enqueue", + &[V23_UP, V52_UP], + ), ]; const V1_UP: &str = include_str!("../migrations/v001_canonical_schema.sql"); @@ -342,6 +348,7 @@ const V46_UP: &str = include_str!("../migrations/v046_wait_free_dirty_marks.sql" const V47_UP: &str = include_str!("../migrations/v047_replica_identity.sql"); const V48_UP: &str = include_str!("../migrations/v048_claim_cursor_catch_up.sql"); const V49_UP: &str = include_str!("../migrations/v049_prepared_lane_sequences.sql"); +const V52_UP: &str = include_str!("../migrations/v052_enqueue_round_trips.sql"); /// Old version numbers from pre-0.4 releases that used V3/V4/V5 numbering. /// Also tolerates the unreleased inline-V6 branch numbering used during review. diff --git a/awa/tests/queue_storage_runtime_test.rs b/awa/tests/queue_storage_runtime_test.rs index bc616290a..aca2e36c1 100644 --- a/awa/tests/queue_storage_runtime_test.rs +++ b/awa/tests/queue_storage_runtime_test.rs @@ -17279,3 +17279,68 @@ async fn test_brin_fsm_baseline_block_size_model() { } pool.close().await; } + +fn fold_test_config(schema: &str) -> QueueStorageConfig { + QueueStorageConfig { + schema: schema.to_string(), + queue_slot_count: 4, + lease_slot_count: 2, + lease_claim_receipts: false, + ..Default::default() + } +} + +/// A lane row without a sequence name (written before the head trigger +/// existed) is provisioned on its first reservation; reservations of one and +/// of several rows stay contiguous. +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +async fn test_queue_storage_reserve_names_unnamed_lane_and_stays_contiguous() { + let (_db_guard, pool) = setup_pool(4).await; + let queue = "qs_reserve_unnamed_lane"; + let schema = "awa_qs_reserve_unnamed_lane"; + let store = create_store_with_config(&pool, fold_test_config(schema)).await; + store + .prepare_queue(&pool, queue, 1) + .await + .expect("Failed to prepare lane"); + + let reserve = |count: i64| { + let pool = pool.clone(); + async move { + sqlx::query_scalar::<_, i64>(audited_sql(format!( + "SELECT {schema}.reserve_enqueue_seq($1, $2, $3, $4)" + ))) + .bind(queue) + .bind(2_i16) + .bind(0_i16) + .bind(count) + .fetch_one(&pool) + .await + .expect("Failed to reserve") + } + }; + assert_eq!(reserve(1).await, 1); + assert_eq!(reserve(3).await, 2); + + sqlx::query(audited_sql(format!( + "UPDATE {schema}.queue_enqueue_heads SET seq_name = NULL \ + WHERE queue = $1 AND priority = 2 AND enqueue_shard = 0" + ))) + .bind(queue) + .execute(&pool) + .await + .expect("Failed to clear the sequence name"); + + assert_eq!(reserve(1).await, 5); + assert_eq!(reserve(2).await, 6); + assert_eq!(reserve(0).await, 8, "a zero count reads the next value"); + let named: bool = sqlx::query_scalar(audited_sql(format!( + "SELECT seq_name IS NOT NULL FROM {schema}.queue_enqueue_heads \ + WHERE queue = $1 AND priority = 2 AND enqueue_shard = 0" + ))) + .bind(queue) + .fetch_one(&pool) + .await + .expect("Failed to read the sequence name"); + assert!(named); +} From f537b4c5c6e940baa2e449890731bd83b38824ad Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Mon, 19 Oct 2026 14:42:05 +1300 Subject: [PATCH 02/48] perf(queue-storage): two fewer enqueue round trips on any schema The reserve path probed EXISTS on queue_enqueue_heads for a cached lane before reserving, but advance_enqueue_head already reads the head row and repairs a stale cache entry when it is missing, so a cached lane now goes straight to the reservation. The cancel paths that call ensure_lane without reserving keep the probe. The enqueue cursor read fetched the ring authority row on every call. Once a store has read ledger authority it reads the ledger cursor directly: the flip to ledger is one-way. prepare_schema and reset clear the observation. --- awa-model/src/queue_storage.rs | 52 +++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/awa-model/src/queue_storage.rs b/awa-model/src/queue_storage.rs index e37e26a0c..92f07bbf7 100644 --- a/awa-model/src/queue_storage.rs +++ b/awa-model/src/queue_storage.rs @@ -12,7 +12,7 @@ use sqlx::{PgPool, Postgres, QueryBuilder}; use std::collections::hash_map::DefaultHasher; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::hash::{Hash, Hasher}; -use std::sync::atomic::{AtomicU16, AtomicUsize, Ordering}; +use std::sync::atomic::{AtomicBool, AtomicU16, AtomicUsize, Ordering}; use std::sync::Mutex; use std::time::{Duration, Instant}; use uuid::Uuid; @@ -2816,6 +2816,10 @@ pub struct QueueStorage { ensured_lanes: Mutex>, slot_fill_observations: Mutex>, prune_lock_timeout: Duration, + /// Set once the enqueue path has read `ledger` ring authority. The flip + /// to ledger is one-way, so later enqueue cursor reads go straight to + /// the ledger. Cleared by `prepare_schema` and `reset`. + enqueue_ledger_authority: AtomicBool, } impl QueueStorage { @@ -2862,6 +2866,7 @@ impl QueueStorage { ensured_lanes: Mutex::new(HashSet::new()), slot_fill_observations: Mutex::new(HashMap::new()), prune_lock_timeout: DEFAULT_PRUNE_LOCK_TIMEOUT, + enqueue_ledger_authority: AtomicBool::new(false), }) } @@ -3267,6 +3272,7 @@ impl QueueStorage { /// upgrade get built; the rest are no-ops. #[tracing::instrument(skip(self, pool), name = "queue_storage.prepare_schema")] pub async fn prepare_schema(&self, pool: &PgPool) -> Result<(), AwaError> { + self.forget_schema_observations(); let schema = self.schema(); let install_lock_name = format!("awa.queue_storage.install:{schema}"); let mut install_tx = pool.begin().await.map_err(map_sqlx_error)?; @@ -3807,6 +3813,7 @@ impl QueueStorage { // Clear the caches so the next ensure_lane / shard_for_enqueue / // claim calls re-observe DB state. self.clear_lane_cache(); + self.forget_schema_observations(); self.enqueue_shards_cache .lock() .expect("enqueue_shards_cache poisoned") @@ -3862,6 +3869,23 @@ impl QueueStorage { .await } + /// Lane rows for a caller that reserves through `advance_enqueue_head` + /// next. A cached lane needs no visibility probe here: the reserve reads + /// the head row itself and repairs a stale cache entry when it is missing. + async fn ensure_lane_for_reserve<'a>( + &self, + tx: &mut sqlx::Transaction<'a, sqlx::Postgres>, + queue: &str, + priority: i16, + enqueue_shard: i16, + ) -> Result<(), AwaError> { + if self.lane_is_cached(queue, priority, enqueue_shard) { + return Ok(()); + } + self.ensure_lane_inserts(tx, queue, priority, enqueue_shard) + .await + } + /// Provision every priority and shard of a queue before deploying a runtime /// role without schema CREATE. Run as the schema owner/migrator. This does /// not change enqueue routing or the configured shard count. @@ -4059,6 +4083,11 @@ impl QueueStorage { .remove(&(queue.to_string(), priority, enqueue_shard)); } + fn forget_schema_observations(&self) { + self.enqueue_ledger_authority + .store(false, Ordering::Release); + } + fn clear_lane_cache(&self) { self.ensured_lanes .lock() @@ -4344,13 +4373,22 @@ impl QueueStorage { /// Current queue-ring cursor for the Rust-side enqueue paths, honouring /// the schema's authority (#371 staged upgrade). Reads the authority row - /// (single cached page) then the O(1) cursor; callers that already hold - /// an authority for the transaction should use `ring_cursor_tx` directly. + /// until it has seen `ledger`, then only the O(1) ledger cursor; callers + /// that already hold an authority for the transaction should use + /// `ring_cursor_tx` directly. async fn current_queue_ring<'a>( &self, tx: &mut sqlx::Transaction<'a, sqlx::Postgres>, ) -> Result<(i32, i64), AwaError> { - let authority = self.ring_authority_tx(tx).await?; + let authority = if self.enqueue_ledger_authority.load(Ordering::Acquire) { + RingAuthority::Ledger + } else { + let authority = self.ring_authority_tx(tx).await?; + if authority == RingAuthority::Ledger { + self.enqueue_ledger_authority.store(true, Ordering::Release); + } + authority + }; self.ring_cursor_tx(tx, RingFamily::Queue, authority).await } @@ -4898,7 +4936,7 @@ impl QueueStorage { .await?; } for (queue, priority, enqueue_shard, range_start, range_end) in lane_ranges { - self.ensure_lane(tx, &queue, priority, enqueue_shard) + self.ensure_lane_for_reserve(tx, &queue, priority, enqueue_shard) .await?; let count = (range_end - range_start) as i64; @@ -5048,7 +5086,7 @@ impl QueueStorage { .await?; } for (queue, priority, enqueue_shard, range_start, range_end) in lane_ranges { - self.ensure_lane(tx, &queue, priority, enqueue_shard) + self.ensure_lane_for_reserve(tx, &queue, priority, enqueue_shard) .await?; let count = (range_end - range_start) as i64; @@ -5115,7 +5153,7 @@ impl QueueStorage { // retries must re-enqueue with the original key from the // application layer. let enqueue_shard = self.shard_for_enqueue(tx.as_mut(), &queue, None).await?; - self.ensure_lane(tx, &queue, priority, enqueue_shard) + self.ensure_lane_for_reserve(tx, &queue, priority, enqueue_shard) .await?; let count = lane_rows.len() as i64; From f8e261566b32d3f10f72cdb546e814a5e28f75e5 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Mon, 19 Oct 2026 14:44:17 +1300 Subject: [PATCH 03/48] perf(queue-storage): enqueue a ready batch in one statement (v052) A ready-only enqueue made ten round trips: BEGIN, job ids, the lane probe, the reservation, the ring authority and cursor reads, the ready and segment inserts, NOTIFY and COMMIT. v052 adds {schema}.enqueue_ready_rows, which for each lane in the caller's lock order provisions a missing head with the same lane lock and inserts as ensure_lane_inserts, reserves through reserve_enqueue_seq, then reads ring_cursor('queue'), appends the ready rows before their segments (NULL job ids take the job id sequence) and notifies. enqueue_params_copy and enqueue_params_batch call it in autocommit when every row is ready, none takes a uniqueness claim and the batch is below the COPY threshold: one round trip and one transaction. Inside a caller transaction (uniqueness claims, deferred rows, enqueue_runtime_rows) it replaces the per-lane ensure and reserve, the cursor reads and both inserts. Batches of 2,048 rows or more keep COPY. The store probes once for an executable function and keeps the multi-statement path on a schema without it. --- .../v023_install_queue_storage_substrate.sql | 193 +++++++++ .../migrations/v052_enqueue_round_trips.sql | 6 +- awa-model/src/queue_storage.rs | 403 +++++++++++++++++- awa/tests/queue_storage_runtime_test.rs | 163 +++++++ correctness/storage/MAPPING.md | 2 +- 5 files changed, 749 insertions(+), 18 deletions(-) diff --git a/awa-model/migrations/v023_install_queue_storage_substrate.sql b/awa-model/migrations/v023_install_queue_storage_substrate.sql index 1a473f2d0..90a3fef25 100644 --- a/awa-model/migrations/v023_install_queue_storage_substrate.sql +++ b/awa-model/migrations/v023_install_queue_storage_substrate.sql @@ -317,6 +317,199 @@ BEGIN $ddl$, p_schema ); + + -- One-call ready enqueue. Rows arrive grouped by lane, lanes in the + -- caller's lock order, each lane's rows contiguous. Per lane: provision + -- the lane rows if the head is missing (same lane lock and inserts as the + -- Rust ensure_lane path), then reserve through reserve_enqueue_seq. Then + -- read the queue-ring cursor, append ready rows before their segments, + -- and notify. A NULL job id takes the next value of the schema's job id + -- sequence. Segment offsets are relative to the lane's reserved start. + EXECUTE format( + $ddl$ + CREATE OR REPLACE FUNCTION %1$I.enqueue_ready_rows( + p_lane_queues TEXT[], + p_lane_priorities SMALLINT[], + p_lane_shards SMALLINT[], + p_lane_counts BIGINT[], + p_job_ids BIGINT[], + p_kinds TEXT[], + p_args JSONB[], + p_attempts SMALLINT[], + p_run_leases BIGINT[], + p_max_attempts SMALLINT[], + p_run_ats TIMESTAMPTZ[], + p_attempted_ats TIMESTAMPTZ[], + p_created_ats TIMESTAMPTZ[], + p_unique_keys BYTEA[], + p_unique_states TEXT[], + p_payloads JSONB[], + p_segment_lanes INT[], + p_segment_first_offsets BIGINT[], + p_segment_next_offsets BIGINT[], + p_segment_run_ats TIMESTAMPTZ[], + p_notify_channels TEXT[] + ) + RETURNS BIGINT + LANGUAGE plpgsql + SET search_path = pg_catalog + AS $func$ + DECLARE + v_lane_total INT := COALESCE(cardinality(p_lane_queues), 0); + v_row_total INT := COALESCE(cardinality(p_kinds), 0); + v_segment_total INT := COALESCE(cardinality(p_segment_lanes), 0); + v_lane INT; + v_start BIGINT; + v_lane_starts BIGINT[] := ARRAY[]::BIGINT[]; + v_row_lanes INT[] := ARRAY[]::INT[]; + v_row_lane_seqs BIGINT[] := ARRAY[]::BIGINT[]; + v_ready_slot INT; + v_ready_generation BIGINT; + v_inserted BIGINT; + BEGIN + IF COALESCE(cardinality(p_lane_priorities), 0) <> v_lane_total + OR COALESCE(cardinality(p_lane_shards), 0) <> v_lane_total + OR COALESCE(cardinality(p_lane_counts), 0) <> v_lane_total + OR COALESCE(cardinality(p_job_ids), 0) <> v_row_total + OR COALESCE(cardinality(p_args), 0) <> v_row_total + OR COALESCE(cardinality(p_attempts), 0) <> v_row_total + OR COALESCE(cardinality(p_run_leases), 0) <> v_row_total + OR COALESCE(cardinality(p_max_attempts), 0) <> v_row_total + OR COALESCE(cardinality(p_run_ats), 0) <> v_row_total + OR COALESCE(cardinality(p_attempted_ats), 0) <> v_row_total + OR COALESCE(cardinality(p_created_ats), 0) <> v_row_total + OR COALESCE(cardinality(p_unique_keys), 0) <> v_row_total + OR COALESCE(cardinality(p_unique_states), 0) <> v_row_total + OR COALESCE(cardinality(p_payloads), 0) <> v_row_total + OR COALESCE(cardinality(p_segment_first_offsets), 0) <> v_segment_total + OR COALESCE(cardinality(p_segment_next_offsets), 0) <> v_segment_total + OR COALESCE(cardinality(p_segment_run_ats), 0) <> v_segment_total + THEN + RAISE EXCEPTION 'enqueue_ready_rows: array lengths disagree' + USING ERRCODE = '22023'; + END IF; + + FOR v_lane IN 1..v_lane_total LOOP + IF p_lane_counts[v_lane] < 1 THEN + RAISE EXCEPTION 'enqueue_ready_rows: lane %% has no rows', v_lane + USING ERRCODE = '22023'; + END IF; + + PERFORM 1 + FROM %1$I.queue_enqueue_heads + WHERE queue = p_lane_queues[v_lane] + AND priority = p_lane_priorities[v_lane] + AND enqueue_shard = p_lane_shards[v_lane]; + + IF NOT FOUND THEN + PERFORM pg_advisory_xact_lock(hashtextextended( + format('%%s:%%s:%%s:%%s', %1$L, p_lane_queues[v_lane], + p_lane_priorities[v_lane], p_lane_shards[v_lane]), + 0 + )); + INSERT INTO %1$I.queue_lanes (queue, priority) + VALUES (p_lane_queues[v_lane], p_lane_priorities[v_lane]) + ON CONFLICT (queue, priority) DO NOTHING; + INSERT INTO %1$I.queue_enqueue_heads (queue, priority, enqueue_shard) + VALUES (p_lane_queues[v_lane], p_lane_priorities[v_lane], p_lane_shards[v_lane]) + ON CONFLICT (queue, priority, enqueue_shard) DO NOTHING; + INSERT INTO %1$I.queue_claim_heads (queue, priority, enqueue_shard) + VALUES (p_lane_queues[v_lane], p_lane_priorities[v_lane], p_lane_shards[v_lane]) + ON CONFLICT (queue, priority, enqueue_shard) DO NOTHING; + PERFORM %1$I.ensure_lane_sequences( + p_lane_queues[v_lane], p_lane_priorities[v_lane], p_lane_shards[v_lane] + ); + END IF; + + v_start := %1$I.reserve_enqueue_seq( + p_lane_queues[v_lane], + p_lane_priorities[v_lane], + p_lane_shards[v_lane], + p_lane_counts[v_lane] + ); + v_lane_starts := v_lane_starts || v_start; + v_row_lanes := v_row_lanes || array_fill(v_lane, ARRAY[p_lane_counts[v_lane]::INT]); + v_row_lane_seqs := v_row_lane_seqs + || ARRAY(SELECT generate_series(v_start, v_start + p_lane_counts[v_lane] - 1)); + END LOOP; + + IF cardinality(v_row_lane_seqs) <> v_row_total THEN + RAISE EXCEPTION 'enqueue_ready_rows: lane counts cover %% rows, got %%', + cardinality(v_row_lane_seqs), v_row_total + USING ERRCODE = '22023'; + END IF; + + IF v_row_total = 0 THEN + RETURN 0; + END IF; + + SELECT cursor.slot, cursor.generation + INTO v_ready_slot, v_ready_generation + FROM %1$I.ring_cursor('queue') AS cursor; + + INSERT INTO %1$I.ready_entries ( + ready_slot, ready_generation, job_id, kind, queue, args, priority, + attempt, run_lease, max_attempts, lane_seq, enqueue_shard, run_at, + attempted_at, created_at, unique_key, unique_states, payload + ) + SELECT + v_ready_slot, + v_ready_generation, + COALESCE(input.job_id, nextval(%2$L::regclass)), + input.kind, + p_lane_queues[input.lane], + input.args, + p_lane_priorities[input.lane], + input.attempt, + input.run_lease, + input.max_attempts, + input.lane_seq, + p_lane_shards[input.lane], + input.run_at, + input.attempted_at, + input.created_at, + input.unique_key, + input.unique_states, + input.payload + FROM unnest( + v_row_lanes, v_row_lane_seqs, p_job_ids, p_kinds, p_args, p_attempts, + p_run_leases, p_max_attempts, p_run_ats, p_attempted_ats, p_created_ats, + p_unique_keys, p_unique_states, p_payloads + ) AS input( + lane, lane_seq, job_id, kind, args, attempt, run_lease, max_attempts, + run_at, attempted_at, created_at, unique_key, unique_states, payload + ); + GET DIAGNOSTICS v_inserted = ROW_COUNT; + + INSERT INTO %1$I.ready_segments ( + ready_slot, ready_generation, queue, priority, enqueue_shard, + first_lane_seq, next_lane_seq, first_run_at + ) + SELECT + v_ready_slot, + v_ready_generation, + p_lane_queues[segment.lane], + p_lane_priorities[segment.lane], + p_lane_shards[segment.lane], + v_lane_starts[segment.lane] + segment.first_offset, + v_lane_starts[segment.lane] + segment.next_offset, + segment.run_at + FROM unnest( + p_segment_lanes, p_segment_first_offsets, p_segment_next_offsets, p_segment_run_ats + ) AS segment(lane, first_offset, next_offset, run_at) + ON CONFLICT (ready_slot, ready_generation, queue, priority, enqueue_shard, first_lane_seq) + DO NOTHING; + + PERFORM pg_notify(channel, '') + FROM unnest(p_notify_channels) AS channel; + + RETURN v_inserted; + END; + $func$ + $ddl$, + p_schema, + format('%I.job_id_seq', p_schema) + ); END; $refresh$; diff --git a/awa-model/migrations/v052_enqueue_round_trips.sql b/awa-model/migrations/v052_enqueue_round_trips.sql index c6f80a600..4482a3dbc 100644 --- a/awa-model/migrations/v052_enqueue_round_trips.sql +++ b/awa-model/migrations/v052_enqueue_round_trips.sql @@ -3,7 +3,11 @@ -- reserve_enqueue_seq keeps its signature, lock key and return value. It -- provisions lane sequences only for a lane row without a sequence name and -- reserves a multi-row range with one sequence write instead of two. --- N-1 binaries call it unchanged. +-- enqueue_ready_rows is new: one ready batch's lane reservations, ring +-- cursor read, ready and segment appends and NOTIFY in a single call. +-- N-1 binaries call reserve_enqueue_seq unchanged and never call the new +-- function; current binaries probe for it and keep the multi-statement path +-- on a schema without it. -- Live load: function replacement only, with no table DDL or row scans. -- Function lock waits and schema count determine wall time. diff --git a/awa-model/src/queue_storage.rs b/awa-model/src/queue_storage.rs index 92f07bbf7..0404e67c9 100644 --- a/awa-model/src/queue_storage.rs +++ b/awa-model/src/queue_storage.rs @@ -12,7 +12,7 @@ use sqlx::{PgPool, Postgres, QueryBuilder}; use std::collections::hash_map::DefaultHasher; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::hash::{Hash, Hasher}; -use std::sync::atomic::{AtomicBool, AtomicU16, AtomicUsize, Ordering}; +use std::sync::atomic::{AtomicBool, AtomicU16, AtomicU8, AtomicUsize, Ordering}; use std::sync::Mutex; use std::time::{Duration, Instant}; use uuid::Uuid; @@ -2209,9 +2209,153 @@ struct ReadySegmentInsert { first_run_at: DateTime, } +/// Argument types of `{schema}.enqueue_ready_rows`, as `to_regprocedure` +/// spells them. +const ENQUEUE_READY_ROWS_ARGUMENT_TYPES: &str = "text[], smallint[], smallint[], bigint[], \ + bigint[], text[], jsonb[], smallint[], bigint[], smallint[], timestamptz[], \ + timestamptz[], timestamptz[], bytea[], text[], jsonb[], integer[], bigint[], bigint[], \ + timestamptz[], text[]"; + +const ENQUEUE_FUNCTION_UNKNOWN: u8 = 0; +const ENQUEUE_FUNCTION_AVAILABLE: u8 = 1; +const ENQUEUE_FUNCTION_UNAVAILABLE: u8 = 2; + +/// One ready row as `{schema}.enqueue_ready_rows` takes it. Queue, priority +/// and shard come from the row's lane; `lane_seq` from the lane's +/// reservation; a `None` job id from the schema's job id sequence. +struct EnqueueReadyRow<'r> { + job_id: Option, + kind: &'r str, + args: &'r serde_json::Value, + attempt: i16, + run_lease: i64, + max_attempts: i16, + run_at: DateTime, + attempted_at: Option>, + created_at: DateTime, + unique_key: Option<&'r [u8]>, + unique_states: Option<&'r str>, + payload: &'r serde_json::Value, +} + +impl<'r> EnqueueReadyRow<'r> { + fn from_ready_row(row: &'r RuntimeReadyRow) -> Self { + Self { + job_id: row.job_id, + kind: &row.kind, + args: &row.args, + attempt: row.attempt, + run_lease: row.run_lease, + max_attempts: row.max_attempts, + run_at: row.run_at, + attempted_at: row.attempted_at, + created_at: row.created_at, + unique_key: row.unique_key.as_deref(), + unique_states: row.unique_states.as_deref(), + payload: &row.payload, + } + } + + fn from_insert(row: &'r RuntimeReadyInsert) -> Self { + Self { + job_id: Some(row.job_id), + kind: &row.kind, + args: &row.args, + attempt: row.attempt, + run_lease: row.run_lease, + max_attempts: row.max_attempts, + run_at: row.run_at, + attempted_at: row.attempted_at, + created_at: row.created_at, + unique_key: row.unique_key.as_deref(), + unique_states: row.unique_states.as_deref(), + payload: &row.payload, + } + } +} + +/// Column arrays for one `{schema}.enqueue_ready_rows` call. Lanes are pushed +/// in lock order with their rows contiguous; segment offsets are relative to +/// the start the function reserves for the lane. +#[derive(Default)] +struct EnqueueReadyRowsCall<'r> { + lane_queues: Vec<&'r str>, + lane_priorities: Vec, + lane_shards: Vec, + lane_counts: Vec, + job_ids: Vec>, + kinds: Vec<&'r str>, + args: Vec<&'r serde_json::Value>, + attempts: Vec, + run_leases: Vec, + max_attempts: Vec, + run_ats: Vec>, + attempted_ats: Vec>>, + created_ats: Vec>, + unique_keys: Vec>, + unique_states: Vec>, + payloads: Vec>, + segment_lanes: Vec, + segment_first_offsets: Vec, + segment_next_offsets: Vec, + segment_run_ats: Vec>, +} + +impl<'r> EnqueueReadyRowsCall<'r> { + fn push_lane( + &mut self, + queue: &'r str, + priority: i16, + enqueue_shard: i16, + rows: impl IntoIterator>, + ) { + let first_row = self.run_ats.len(); + for row in rows { + self.job_ids.push(row.job_id); + self.kinds.push(row.kind); + self.args.push(row.args); + self.attempts.push(row.attempt); + self.run_leases.push(row.run_lease); + self.max_attempts.push(row.max_attempts); + self.run_ats.push(row.run_at); + self.attempted_ats.push(row.attempted_at); + self.created_ats.push(row.created_at); + self.unique_keys.push(row.unique_key); + self.unique_states.push(row.unique_states); + self.payloads.push(storage_payload(row.payload)); + } + let count = self.run_ats.len() - first_row; + if count == 0 { + return; + } + self.lane_queues.push(queue); + self.lane_priorities.push(priority); + self.lane_shards.push(enqueue_shard); + self.lane_counts.push(count as i64); + + // Same split as `ready_segments_from_rows` within one lane, whose + // sequence numbers are contiguous: a new segment at each `run_at` + // change. + let lane_number = self.lane_queues.len() as i32; + let mut segment_start = 0usize; + for offset in 1..=count { + if offset == count + || self.run_ats[first_row + offset] != self.run_ats[first_row + segment_start] + { + self.segment_lanes.push(lane_number); + self.segment_first_offsets.push(segment_start as i64); + self.segment_next_offsets.push(offset as i64); + self.segment_run_ats + .push(self.run_ats[first_row + segment_start]); + segment_start = offset; + } + } + } +} + #[cfg(test)] mod ready_segment_tests { - use super::{QueueStorage, RuntimeReadyInsert}; + use super::{EnqueueReadyRow, EnqueueReadyRowsCall, QueueStorage, RuntimeReadyInsert}; use chrono::{Duration, TimeZone, Utc}; fn ready_row(lane_seq: i64, run_at: chrono::DateTime) -> RuntimeReadyInsert { @@ -2263,6 +2407,52 @@ mod ready_segment_tests { assert_eq!(ranges, vec![(1, 3, first), (3, 4, second), (4, 5, first)]); } + + #[test] + fn enqueue_function_segments_match_rust_segments_after_reservation() { + let first = Utc + .with_ymd_and_hms(2026, 6, 14, 12, 0, 0) + .single() + .expect("valid test timestamp"); + let second = first + Duration::seconds(1); + let reserved_start = 41; + let rows: Vec<_> = [first, first, second, first, first, second] + .into_iter() + .enumerate() + .map(|(offset, run_at)| ready_row(reserved_start + offset as i64, run_at)) + .collect(); + + let mut call = EnqueueReadyRowsCall::default(); + call.push_lane( + "segment-q", + 2, + 0, + rows.iter().map(EnqueueReadyRow::from_insert), + ); + let function_ranges: Vec<_> = (0..call.segment_lanes.len()) + .map(|index| { + assert_eq!(call.segment_lanes[index], 1); + ( + reserved_start + call.segment_first_offsets[index], + reserved_start + call.segment_next_offsets[index], + call.segment_run_ats[index], + ) + }) + .collect(); + let rust_ranges: Vec<_> = QueueStorage::ready_segments_from_rows(&rows) + .iter() + .map(|segment| { + ( + segment.first_lane_seq, + segment.next_lane_seq, + segment.first_run_at, + ) + }) + .collect(); + + assert_eq!(function_ranges, rust_ranges); + assert_eq!(call.lane_counts, vec![6]); + } } #[derive(Debug, Clone, sqlx::FromRow)] @@ -2820,6 +3010,10 @@ pub struct QueueStorage { /// to ledger is one-way, so later enqueue cursor reads go straight to /// the ledger. Cleared by `prepare_schema` and `reset`. enqueue_ledger_authority: AtomicBool, + /// Whether the schema has an executable `enqueue_ready_rows` (v052). + /// Probed once; cleared by `prepare_schema` and `reset`. + enqueue_function: AtomicU8, + enqueue_function_disabled: bool, } impl QueueStorage { @@ -2867,9 +3061,19 @@ impl QueueStorage { slot_fill_observations: Mutex::new(HashMap::new()), prune_lock_timeout: DEFAULT_PRUNE_LOCK_TIMEOUT, enqueue_ledger_authority: AtomicBool::new(false), + enqueue_function: AtomicU8::new(ENQUEUE_FUNCTION_UNKNOWN), + enqueue_function_disabled: false, }) } + /// Enqueue through the multi-statement path even when the schema has + /// `enqueue_ready_rows`, as a binary without the function would. + #[doc(hidden)] + pub fn without_enqueue_function(mut self) -> Self { + self.enqueue_function_disabled = true; + self + } + #[doc(hidden)] pub fn with_prune_lock_timeout(mut self, timeout: Duration) -> Result { if timeout.is_zero() { @@ -4086,6 +4290,120 @@ impl QueueStorage { fn forget_schema_observations(&self) { self.enqueue_ledger_authority .store(false, Ordering::Release); + self.enqueue_function + .store(ENQUEUE_FUNCTION_UNKNOWN, Ordering::Release); + } + + async fn enqueue_function_available( + &self, + executor: impl sqlx::PgExecutor<'_>, + ) -> Result { + if self.enqueue_function_disabled { + return Ok(false); + } + match self.enqueue_function.load(Ordering::Acquire) { + ENQUEUE_FUNCTION_AVAILABLE => return Ok(true), + ENQUEUE_FUNCTION_UNAVAILABLE => return Ok(false), + _ => {} + } + let available: bool = sqlx::query_scalar( + "SELECT COALESCE(has_function_privilege(to_regprocedure($1), 'EXECUTE'), FALSE)", + ) + .bind(format!( + "{}.enqueue_ready_rows({ENQUEUE_READY_ROWS_ARGUMENT_TYPES})", + self.schema() + )) + .fetch_one(executor) + .await + .map_err(map_sqlx_error)?; + self.enqueue_function.store( + if available { + ENQUEUE_FUNCTION_AVAILABLE + } else { + ENQUEUE_FUNCTION_UNAVAILABLE + }, + Ordering::Release, + ); + Ok(available) + } + + async fn execute_enqueue_ready_rows( + &self, + connection: &mut sqlx::PgConnection, + call: &EnqueueReadyRowsCall<'_>, + notify_channels: &[String], + ) -> Result { + let schema = self.schema(); + let inserted: i64 = sqlx::query_scalar(audited_sql(format!( + r#" + SELECT {schema}.enqueue_ready_rows( + $1::text[], $2::smallint[], $3::smallint[], $4::bigint[], + $5::bigint[], $6::text[], $7::jsonb[], $8::smallint[], $9::bigint[], + $10::smallint[], $11::timestamptz[], $12::timestamptz[], $13::timestamptz[], + $14::bytea[], $15::text[], $16::jsonb[], + $17::integer[], $18::bigint[], $19::bigint[], $20::timestamptz[], + $21::text[] + ) + "# + ))) + .bind(&call.lane_queues) + .bind(&call.lane_priorities) + .bind(&call.lane_shards) + .bind(&call.lane_counts) + .bind(&call.job_ids) + .bind(&call.kinds) + .bind(&call.args) + .bind(&call.attempts) + .bind(&call.run_leases) + .bind(&call.max_attempts) + .bind(&call.run_ats) + .bind(&call.attempted_ats) + .bind(&call.created_ats) + .bind(&call.unique_keys) + .bind(&call.unique_states) + .bind(&call.payloads) + .bind(&call.segment_lanes) + .bind(&call.segment_first_offsets) + .bind(&call.segment_next_offsets) + .bind(&call.segment_run_ats) + .bind(notify_channels) + .fetch_one(connection) + .await + .map_err(map_sqlx_error)?; + Ok(inserted as usize) + } + + /// Ready-only enqueue with no uniqueness claims in one autocommit + /// statement: lane reservation, ring cursor, ready rows, segments and + /// NOTIFY all run inside `enqueue_ready_rows`. + async fn enqueue_ready_rows_autocommit( + &self, + pool: &PgPool, + rows: Vec, + ) -> Result { + let notify_channels = self.notify_channels(rows.iter().map(|row| row.queue.clone())); + let mut connection = pool.acquire().await.map_err(map_sqlx_error)?; + let grouped = self + .group_ready_rows_by_shard(&mut connection, rows) + .await?; + let mut call = EnqueueReadyRowsCall::default(); + for ((queue, priority, enqueue_shard), lane_rows) in &grouped { + call.push_lane( + queue, + *priority, + *enqueue_shard, + lane_rows.iter().map(EnqueueReadyRow::from_ready_row), + ); + } + self.execute_enqueue_ready_rows(&mut connection, &call, ¬ify_channels) + .await + } + + fn ready_rows_take_unique_claims(rows: &[RuntimeReadyRow]) -> bool { + rows.iter().any(|row| { + row.unique_key.is_some() + && unique_state_claims(row.unique_states.as_deref(), JobState::Available) + }) } fn clear_lane_cache(&self) { @@ -4878,7 +5196,7 @@ impl QueueStorage { return Ok(0); } - let grouped = self.group_ready_rows_by_shard(tx, rows).await?; + let grouped = self.group_ready_rows_by_shard(tx.as_mut(), rows).await?; let total_rows: usize = grouped.values().map(Vec::len).sum(); let missing_job_ids = grouped .values() @@ -4935,6 +5253,11 @@ impl QueueStorage { self.sync_ready_enqueue_unique_claims(tx, &ready_rows) .await?; } + if self.enqueue_function_available(tx.as_mut()).await? { + return self + .enqueue_lane_ranges_tx(tx, &lane_ranges, &ready_rows) + .await; + } for (queue, priority, enqueue_shard, range_start, range_end) in lane_ranges { self.ensure_lane_for_reserve(tx, &queue, priority, enqueue_shard) .await?; @@ -4954,6 +5277,27 @@ impl QueueStorage { Ok(total_rows) } + async fn enqueue_lane_ranges_tx<'a>( + &self, + tx: &mut sqlx::Transaction<'a, sqlx::Postgres>, + lane_ranges: &[(String, i16, i16, usize, usize)], + ready_rows: &[RuntimeReadyInsert], + ) -> Result { + let mut call = EnqueueReadyRowsCall::default(); + for (queue, priority, enqueue_shard, range_start, range_end) in lane_ranges { + call.push_lane( + queue, + *priority, + *enqueue_shard, + ready_rows[*range_start..*range_end] + .iter() + .map(EnqueueReadyRow::from_insert), + ); + } + self.execute_enqueue_ready_rows(tx.as_mut(), &call, &[]) + .await + } + /// Re-group rows by `(queue, priority, enqueue_shard)` so each /// resulting bucket targets exactly one head row. /// @@ -4974,9 +5318,9 @@ impl QueueStorage { /// Mixing keyed and rotor rows in one call is supported — the /// keyed rows fan out by key while the rotor rows collapse into /// a single shard-sub-batch. - async fn group_ready_rows_by_shard<'a>( + async fn group_ready_rows_by_shard( &self, - tx: &mut sqlx::Transaction<'a, sqlx::Postgres>, + connection: &mut sqlx::PgConnection, rows: Vec, ) -> Result>, AwaError> { // Partition by (queue, priority) first so the rotor pick for @@ -4996,7 +5340,7 @@ impl QueueStorage { for row in bucket { if row.ordering_key.is_some() { let shard = self - .shard_for_enqueue(tx.as_mut(), &queue, row.ordering_key.as_deref()) + .shard_for_enqueue(&mut *connection, &queue, row.ordering_key.as_deref()) .await?; grouped .entry((queue.clone(), priority, shard)) @@ -5007,7 +5351,9 @@ impl QueueStorage { } } if !rotor_rows.is_empty() { - let shard = self.shard_for_enqueue(tx.as_mut(), &queue, None).await?; + let shard = self + .shard_for_enqueue(&mut *connection, &queue, None) + .await?; grouped .entry((queue.clone(), priority, shard)) .or_default() @@ -5027,7 +5373,7 @@ impl QueueStorage { return Ok(0); } - let grouped = self.group_ready_rows_by_shard(tx, rows).await?; + let grouped = self.group_ready_rows_by_shard(tx.as_mut(), rows).await?; let total_rows: usize = grouped.values().map(Vec::len).sum(); let missing_job_ids = grouped @@ -5085,6 +5431,11 @@ impl QueueStorage { self.sync_ready_enqueue_unique_claims(tx, &ready_rows) .await?; } + if ready_rows.len() < COPY_MIN_ROWS && self.enqueue_function_available(tx.as_mut()).await? { + return self + .enqueue_lane_ranges_tx(tx, &lane_ranges, &ready_rows) + .await; + } for (queue, priority, enqueue_shard, range_start, range_end) in lane_ranges { self.ensure_lane_for_reserve(tx, &queue, priority, enqueue_shard) .await?; @@ -6132,6 +6483,13 @@ impl QueueStorage { } } + if deferred_rows.is_empty() + && !Self::ready_rows_take_unique_claims(&ready_rows) + && self.enqueue_function_available(pool).await? + { + return self.enqueue_ready_rows_autocommit(pool, ready_rows).await; + } + let queues_to_notify: Vec = ready_rows.iter().map(|row| row.queue.clone()).collect(); @@ -6242,6 +6600,14 @@ impl QueueStorage { } } + if deferred_rows.is_empty() + && ready_rows.len() < COPY_MIN_ROWS + && !Self::ready_rows_take_unique_claims(&ready_rows) + && self.enqueue_function_available(pool).await? + { + return self.enqueue_ready_rows_autocommit(pool, ready_rows).await; + } + let queues_to_notify: Vec = ready_rows.iter().map(|row| row.queue.clone()).collect(); @@ -9977,20 +10343,25 @@ impl QueueStorage { .map_err(map_sqlx_error) } + /// Logical-queue NOTIFY channels, deduplicated so a transaction never + /// emits the same NOTIFY twice. + fn notify_channels(&self, queues: impl IntoIterator) -> Vec { + queues + .into_iter() + .map(|queue| format!("awa:{}", self.logical_queue_name(&queue))) + .collect::>() + .into_iter() + .collect() + } + async fn notify_queues_tx<'a>( &self, tx: &mut sqlx::Transaction<'a, sqlx::Postgres>, queues: impl IntoIterator, ) -> Result<(), AwaError> { - // BTreeSet dedups so we never emit the same NOTIFY twice per - // transaction. Multi-queue enqueues fold into a single round-trip via + // Multi-queue enqueues fold into a single round-trip via // `unnest($1::text[])` rather than one round-trip per channel. - let channels: Vec = queues - .into_iter() - .map(|queue| format!("awa:{}", self.logical_queue_name(&queue))) - .collect::>() - .into_iter() - .collect(); + let channels = self.notify_channels(queues); if channels.is_empty() { return Ok(()); } diff --git a/awa/tests/queue_storage_runtime_test.rs b/awa/tests/queue_storage_runtime_test.rs index aca2e36c1..b4f153250 100644 --- a/awa/tests/queue_storage_runtime_test.rs +++ b/awa/tests/queue_storage_runtime_test.rs @@ -17290,6 +17290,169 @@ fn fold_test_config(schema: &str) -> QueueStorageConfig { } } +fn fold_test_jobs( + queue: &str, + ids: std::ops::RangeInclusive, +) -> Vec { + let opts = InsertOpts { + queue: queue.to_string(), + ..Default::default() + }; + ids.map(|id| insert::params_with(&DlqJob { id }, opts.clone()).expect("Failed to prepare job")) + .collect() +} + +/// A runtime that enqueues through `enqueue_ready_rows` and one that uses the +/// multi-statement path (as a binary without the function does) interleave +/// on one lane: the lane stays gap-free and FIFO, each call writes its own +/// segment, and a store on a schema without the function falls back. +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +async fn test_queue_storage_enqueue_function_and_fallback_share_one_lane() { + let (_db_guard, pool) = setup_pool(10).await; + let queue = "qs_enqueue_function_lane"; + let schema = "awa_qs_enqueue_function_lane"; + let store = create_store_with_config(&pool, fold_test_config(schema)).await; + let fallback = QueueStorage::new(fold_test_config(schema)) + .expect("Failed to create fallback store") + .without_enqueue_function(); + + let mut next_id = 1_i64; + for (through_function, batch_size) in [(true, 3), (false, 1), (true, 1), (false, 4), (true, 2)] + { + let jobs = fold_test_jobs(queue, next_id..=next_id + batch_size - 1); + next_id += batch_size; + let writer = if through_function { &store } else { &fallback }; + let inserted = writer + .enqueue_params_copy(&pool, &jobs) + .await + .expect("Failed to enqueue"); + assert_eq!(inserted, batch_size as usize); + } + + let rows: Vec<(i64, i64)> = sqlx::query_as(audited_sql(format!( + "SELECT lane_seq, (args->>'id')::bigint FROM {schema}.ready_entries \ + WHERE queue = $1 ORDER BY lane_seq" + ))) + .bind(queue) + .fetch_all(&pool) + .await + .expect("Failed to read ready rows"); + assert_eq!(rows, (1..=11).map(|seq| (seq, seq)).collect::>()); + + let segments: Vec<(i64, i64)> = sqlx::query_as(audited_sql(format!( + "SELECT first_lane_seq, next_lane_seq FROM {schema}.ready_segments \ + WHERE queue = $1 ORDER BY first_lane_seq" + ))) + .bind(queue) + .fetch_all(&pool) + .await + .expect("Failed to read ready segments"); + assert_eq!(segments, vec![(1, 4), (4, 5), (5, 6), (6, 10), (10, 12)]); + + let distinct_job_ids: i64 = sqlx::query_scalar(audited_sql(format!( + "SELECT count(DISTINCT job_id) FROM {schema}.ready_entries WHERE queue = $1" + ))) + .bind(queue) + .fetch_one(&pool) + .await + .expect("Failed to count job ids"); + assert_eq!(distinct_job_ids, 11); + + let claimed = store + .claim_runtime_batch(&pool, queue, 11, Duration::ZERO) + .await + .expect("Failed to claim"); + let claimed_lane_seqs: Vec = claimed.iter().map(|job| job.claim.lane_seq).collect(); + assert_eq!(claimed_lane_seqs, (1..=11).collect::>()); + + sqlx::query(audited_sql(format!( + "DROP FUNCTION {schema}.enqueue_ready_rows(text[], smallint[], smallint[], bigint[], \ + bigint[], text[], jsonb[], smallint[], bigint[], smallint[], timestamptz[], \ + timestamptz[], timestamptz[], bytea[], text[], jsonb[], integer[], bigint[], bigint[], \ + timestamptz[], text[])" + ))) + .execute(&pool) + .await + .expect("Failed to drop enqueue function"); + let older_schema_store = + QueueStorage::new(fold_test_config(schema)).expect("Failed to create store"); + older_schema_store + .enqueue_params_copy(&pool, &fold_test_jobs(queue, 12..=13)) + .await + .expect("Failed to enqueue without the function"); + let last_lane_seq: i64 = sqlx::query_scalar(audited_sql(format!( + "SELECT max(lane_seq) FROM {schema}.ready_entries WHERE queue = $1" + ))) + .bind(queue) + .fetch_one(&pool) + .await + .expect("Failed to read last lane sequence"); + assert_eq!(last_lane_seq, 13); +} + +/// The one-statement enqueue takes the same per-lane reservation lock as +/// `reserve_enqueue_seq`, so it cannot publish past an open reservation. +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +async fn test_queue_storage_enqueue_function_waits_for_open_lane_reservation() { + let (_db_guard, pool) = setup_pool(10).await; + let queue = "qs_enqueue_function_waits"; + let schema = "awa_qs_enqueue_function_waits"; + let store = Arc::new(create_store_with_config(&pool, fold_test_config(schema)).await); + store + .prepare_queue(&pool, queue, 1) + .await + .expect("Failed to prepare lane"); + + let mut reservation = pool.begin().await.expect("Failed to begin reservation"); + let reserved: i64 = sqlx::query_scalar(audited_sql(format!( + "SELECT {schema}.reserve_enqueue_seq($1, $2, $3, $4)" + ))) + .bind(queue) + .bind(2_i16) + .bind(0_i16) + .bind(2_i64) + .fetch_one(reservation.as_mut()) + .await + .expect("Failed to reserve"); + assert_eq!(reserved, 1); + + let enqueue_pool = pool.clone(); + let enqueue_store = Arc::clone(&store); + let jobs = fold_test_jobs(queue, 1..=1); + let enqueue = tokio::spawn(async move { + enqueue_store + .enqueue_params_copy(&enqueue_pool, &jobs) + .await + }); + wait_for_lock_wait(&pool, "advisory").await; + let visible: i64 = sqlx::query_scalar(audited_sql(format!( + "SELECT count(*) FROM {schema}.ready_entries WHERE queue = $1" + ))) + .bind(queue) + .fetch_one(&pool) + .await + .expect("Failed to count ready rows"); + assert_eq!(visible, 0); + + reservation + .rollback() + .await + .expect("Failed to release reservation"); + tokio::time::timeout(Duration::from_secs(5), enqueue) + .await + .expect("Enqueue remained blocked") + .expect("Enqueue task panicked") + .expect("Enqueue failed"); + let lane_seq: i64 = sqlx::query_scalar(audited_sql(format!( + "SELECT lane_seq FROM {schema}.ready_entries WHERE queue = $1" + ))) + .bind(queue) + .fetch_one(&pool) + .await + .expect("Failed to read lane sequence"); + assert_eq!(lane_seq, 3, "the rolled-back reservation leaves a gap"); +} + /// A lane row without a sequence name (written before the head trigger /// existed) is provisioned on its first reservation; reservations of one and /// of several rows stay contiguous. diff --git a/correctness/storage/MAPPING.md b/correctness/storage/MAPPING.md index 546822098..ec5c8642e 100644 --- a/correctness/storage/MAPPING.md +++ b/correctness/storage/MAPPING.md @@ -37,7 +37,7 @@ The TLA+ lifecycle model does not represent the completed-history rollup cache, | TLA+ action | Rust function | SQL / DDL | | --- | --- | --- | -| `EnqueueReady(j)` | `QueueStorage::insert_ready_rows_tx`, `QueueStorage::insert_ready_rows_copy_tx`, and SQL compatibility `awa.insert_job_compat`; producer entry points include `insert` / `insert_with`, `enqueue_batch`, `enqueue_runtime_rows`, `enqueue_params_batch`, and `enqueue_params_copy` | reserve a lane sequence range through `{schema}.reserve_enqueue_seq` under a transaction-scoped lane advisory lock, sync enqueue-time uniqueness claims, append to `{schema}.ready_entries` via INSERT or COPY, append one `{schema}.ready_segments` row per contiguous committed lane range, and notify logical queues in one tx | +| `EnqueueReady(j)` | `QueueStorage::insert_ready_rows_tx`, `QueueStorage::insert_ready_rows_copy_tx`, and SQL compatibility `awa.insert_job_compat`; producer entry points include `insert` / `insert_with`, `enqueue_batch`, `enqueue_runtime_rows`, `enqueue_params_batch`, and `enqueue_params_copy` | reserve a lane sequence range through `{schema}.reserve_enqueue_seq` under a transaction-scoped lane advisory lock, sync enqueue-time uniqueness claims, append to `{schema}.ready_entries` via INSERT or COPY, append one `{schema}.ready_segments` row per contiguous committed lane range, and notify logical queues in one tx. On v052 schemas, batches below the COPY threshold run the reservation, ring-cursor read, ready and segment appends and (outside a caller transaction) the NOTIFY inside `{schema}.enqueue_ready_rows`, which takes the same lane locks in the same order; a ready-only batch with no uniqueness claims is one autocommit statement | | `EnqueueDeferred(j)` | `QueueStorage::insert_deferred_rows_tx` and `QueueStorage::insert_deferred_rows_copy_tx`; producer entry points include `enqueue_params_batch` and `enqueue_params_copy` | allocate job ids, sync enqueue-time uniqueness claims, append to `{schema}.deferred_jobs` via INSERT or COPY in one tx | | `PromoteDeferred(j)` | maintenance promote loop in `awa-worker/src/maintenance.rs::promote_due_state` | `DELETE FROM deferred_jobs ... INSERT INTO ready_entries ...` in one tx | | `AdvanceClaimCursor` | claim path spent-prefix advancement and post-commit `QueueStorage::advance_claim_cursors` | `claim_ready_runtime()` may advance the sequence-backed claim cursor only across a contiguous prefix of committed spent/tombstoned lanes. In receipts mode, already-emitted attempts are proved from queue-slot-local `{schema}.ready_claim_attempt_batches` range evidence so recovery does not scan claim-ring parent tables while old claim partitions are locked for prune. Newly emitted claims advance the cursor after the claim transaction commits. | From 18aa5b80007e92dfcc150ddd8d54f117d8f2d60b Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Mon, 19 Oct 2026 14:51:34 +1300 Subject: [PATCH 04/48] perf(queue-storage): reserve a lane range without dynamic SQL The one-write reservation read the sequence through a dynamic statement built per call. pg_sequence_last_value and setval take the sequence as a regclass, so the read and the write are static; sequence_next_value still covers a sequence that has not been called yet. Server time per 20-row reservation on PostgreSQL 17: 107 us on main, 55 us with the dynamic read, 30 us now; WAL per reservation stays at one sequence record. --- .../v023_install_queue_storage_substrate.sql | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/awa-model/migrations/v023_install_queue_storage_substrate.sql b/awa-model/migrations/v023_install_queue_storage_substrate.sql index 90a3fef25..660e83b26 100644 --- a/awa-model/migrations/v023_install_queue_storage_substrate.sql +++ b/awa-model/migrations/v023_install_queue_storage_substrate.sql @@ -300,15 +300,11 @@ BEGIN IF p_count = 1 THEN v_start := nextval(v_qualified_seq::regclass); ELSE - EXECUTE format( - 'SELECT setval(%%L::regclass, ' - 'CASE WHEN is_called THEN last_value + 1 ELSE last_value END + $1 - 1, true) ' - '- $1 + 1 FROM %%s', - v_qualified_seq, - v_qualified_seq - ) - INTO v_start - USING p_count; + v_start := COALESCE( + pg_sequence_last_value(v_qualified_seq::regclass) + 1, + %1$I.sequence_next_value(v_seq_name) + ); + PERFORM setval(v_qualified_seq::regclass, v_start + p_count - 1, true); END IF; RETURN v_start; From 95ccb4249e991dca3fa03f0e2c1dcf43df4f3d97 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Mon, 19 Oct 2026 16:29:17 +1300 Subject: [PATCH 05/48] test(queue-storage): a named lane reserves without provisioning its sequences Counts ensure_lane_sequences calls inside a reservation with transaction-level function statistics: none for a named lane, one for a lane row whose sequence name is NULL. Fails against the pre-v052 reservation, which provisioned on every call. --- awa/tests/queue_storage_runtime_test.rs | 56 +++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/awa/tests/queue_storage_runtime_test.rs b/awa/tests/queue_storage_runtime_test.rs index b4f153250..916eef1e6 100644 --- a/awa/tests/queue_storage_runtime_test.rs +++ b/awa/tests/queue_storage_runtime_test.rs @@ -17485,6 +17485,43 @@ async fn test_queue_storage_reserve_names_unnamed_lane_and_stays_contiguous() { assert_eq!(reserve(1).await, 1); assert_eq!(reserve(3).await, 2); + let ensure_calls_in_reserve = || { + let pool = pool.clone(); + async move { + let mut tx = pool.begin().await.expect("Failed to begin"); + sqlx::query("SET LOCAL track_functions = 'pl'") + .execute(tx.as_mut()) + .await + .expect("Failed to track functions"); + sqlx::query(audited_sql(format!( + "SELECT {schema}.reserve_enqueue_seq($1, 2::smallint, 0::smallint, 2)" + ))) + .bind(queue) + .execute(tx.as_mut()) + .await + .expect("Failed to reserve"); + let calls: i64 = sqlx::query_scalar(audited_sql(format!( + "SELECT COALESCE(pg_stat_get_xact_function_calls(\ + '{schema}.ensure_lane_sequences(text, smallint, smallint)'::regprocedure), 0)" + ))) + .fetch_one(tx.as_mut()) + .await + .expect("Failed to read function calls"); + tx.rollback().await.expect("Failed to roll back"); + calls + } + }; + assert_eq!( + ensure_calls_in_reserve().await, + 0, + "a named lane reserves without provisioning" + ); + assert_eq!( + reserve(1).await, + 7, + "the probe's rolled-back range is a gap" + ); + sqlx::query(audited_sql(format!( "UPDATE {schema}.queue_enqueue_heads SET seq_name = NULL \ WHERE queue = $1 AND priority = 2 AND enqueue_shard = 0" @@ -17494,9 +17531,22 @@ async fn test_queue_storage_reserve_names_unnamed_lane_and_stays_contiguous() { .await .expect("Failed to clear the sequence name"); - assert_eq!(reserve(1).await, 5); - assert_eq!(reserve(2).await, 6); - assert_eq!(reserve(0).await, 8, "a zero count reads the next value"); + assert_eq!( + ensure_calls_in_reserve().await, + 1, + "an unnamed lane is provisioned on reserve" + ); + sqlx::query(audited_sql(format!( + "UPDATE {schema}.queue_enqueue_heads SET seq_name = NULL \ + WHERE queue = $1 AND priority = 2 AND enqueue_shard = 0" + ))) + .bind(queue) + .execute(&pool) + .await + .expect("Failed to clear the sequence name"); + assert_eq!(reserve(1).await, 10); + assert_eq!(reserve(2).await, 11); + assert_eq!(reserve(0).await, 13, "a zero count reads the next value"); let named: bool = sqlx::query_scalar(audited_sql(format!( "SELECT seq_name IS NOT NULL FROM {schema}.queue_enqueue_heads \ WHERE queue = $1 AND priority = 2 AND enqueue_shard = 0" From 2e8884cc3468179c1b79a5ecc40a3c019c206b4e Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Mon, 19 Oct 2026 18:58:52 +1300 Subject: [PATCH 06/48] test(migrations): compare a one-behind schema with the previous listed version The newer-schema guard test deleted the newest version row and expected CURRENT_VERSION - 1. Versions are not contiguous (v008 is skipped and v050/v051 are reserved), so it now expects the highest listed version below CURRENT_VERSION. --- awa/tests/migration_test.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/awa/tests/migration_test.rs b/awa/tests/migration_test.rs index 41b7fcd62..b96019387 100644 --- a/awa/tests/migration_test.rs +++ b/awa/tests/migration_test.rs @@ -4143,9 +4143,15 @@ async fn test_newer_schema_guard_leaves_normal_paths_untouched() { .execute(&pool) .await .expect("drop the newest version row to simulate a one-behind schema"); + let previous_version = migrations::migration_sql() + .iter() + .map(|(version, _, _)| *version) + .filter(|version| *version < migrations::CURRENT_VERSION) + .max() + .expect("a migration precedes CURRENT_VERSION"); assert_eq!( migrations::current_version(&pool).await.unwrap(), - migrations::CURRENT_VERSION - 1 + previous_version ); migrations::run(&pool) .await From c89235758914c586e2fd68ac5cc1520e2c8d5e74 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Mon, 19 Oct 2026 18:58:52 +1300 Subject: [PATCH 07/48] docs: v052 enqueue round trips in the changelog and upgrade guide --- CHANGELOG.md | 1 + docs/upgrade-0.6-to-0.7.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd08ea4e2..8f4e38a0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Notable changes between releases. Detailed migration notes for storage transitio ### Changed +- **A ready enqueue is one statement (v052, [#522](https://github.com/hardbyte/awa/issues/522)).** `QueueStorage::enqueue_params_copy` and `enqueue_params_batch` send a ready-only batch with no uniqueness claims below the 2,048-row COPY threshold as one autocommit call to the new `{schema}.enqueue_ready_rows`, which reserves the lanes, reads the ring cursor, appends the ready rows and segments and notifies; the previous path took ten round trips. Inside a transaction (uniqueness claims, deferred rows) the function replaces the per-lane reservation, cursor reads and both inserts. `reserve_enqueue_seq` provisions lane sequences only for a lane row without a sequence name and reserves a range with one sequence write instead of two. On a schema without the function, current runtimes keep the multi-statement path, which also drops the cached-lane probe and, after the ledger flip, the authority read. At 800 jobs/s with 20-row calls the producer call p50 fell 19-62% against main in the same benchmark round (0.94 ms in the quietest round) and WAL per job by about 5 B; throughput and saturation (64 workers) are unchanged within run-to-run noise. - v049 lets restricted runtimes use provisioned lane sequences without schema CREATE in the default and existing custom storage schemas. Run `awa storage prepare-queue` as the migrator before deployment and grant diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 7365aacc6..e1eab3429 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -23,6 +23,21 @@ External migration runners must apply the complete generated definition before replacing lane helpers in the installed schemas. See [Database roles](security/database-roles.md#provision-queues-before-starting-restricted-runtimes). +## v052: enqueue round trips + +v052 replaces functions only. `reserve_enqueue_seq` keeps its signature, lane +lock and return value, so earlier 0.7 binaries and SQL producers +(`insert_job_compat`) run unchanged on the migrated schema. A new +`{schema}.enqueue_ready_rows` lets current runtimes enqueue a ready batch in +one statement; they probe for it once per store and keep the multi-statement +path on a schema without it, so deploying binaries before migrating is safe. A +running binary uses the function after its next restart. Runtimes need +`EXECUTE` on the new function, which the default privileges in +[Database roles](security/database-roles.md#runtime-grants) grant; without it +they also keep the multi-statement path. External runners must apply the +complete generated `awa migrate --sql` bundle, which redefines the installer +before refreshing the installed schemas. + ## Custom-schema discovery during migration Migration bundles discover custom substrates using catalog metadata without From 7d8a53fbf5289bd7ece0a71187cbdd5ab9f57418 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Mon, 19 Oct 2026 20:58:52 +1300 Subject: [PATCH 08/48] fix(queue-storage): no permanent caches on the enqueue path The enqueue cursor read skipped the authority row once the store had seen ledger, an observation that could come from a caller's transaction that flipped the authority and rolled back. The cursor is now one statement that branches on the authority row inline: the same single round trip, no cache, and only the table privileges the old path used. The enqueue_ready_rows probe was also permanent. A missing function is now probed again after a minute, so a runtime started before v052 picks it up without a restart, and a call that fails with undefined_function or insufficient_privilege forgets the observation so the next enqueue re-probes and falls back. The probe also requires EXECUTE on ring_cursor, which the function calls and which is revoked from PUBLIC. --- awa-model/src/queue_storage.rs | 111 +++++++++++++++--------- awa/tests/queue_storage_runtime_test.rs | 35 ++++++++ 2 files changed, 106 insertions(+), 40 deletions(-) diff --git a/awa-model/src/queue_storage.rs b/awa-model/src/queue_storage.rs index 0404e67c9..8ca3dd226 100644 --- a/awa-model/src/queue_storage.rs +++ b/awa-model/src/queue_storage.rs @@ -12,7 +12,7 @@ use sqlx::{PgPool, Postgres, QueryBuilder}; use std::collections::hash_map::DefaultHasher; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::hash::{Hash, Hasher}; -use std::sync::atomic::{AtomicBool, AtomicU16, AtomicU8, AtomicUsize, Ordering}; +use std::sync::atomic::{AtomicU16, AtomicUsize, Ordering}; use std::sync::Mutex; use std::time::{Duration, Instant}; use uuid::Uuid; @@ -2216,9 +2216,10 @@ const ENQUEUE_READY_ROWS_ARGUMENT_TYPES: &str = "text[], smallint[], smallint[], timestamptz[], timestamptz[], bytea[], text[], jsonb[], integer[], bigint[], bigint[], \ timestamptz[], text[]"; -const ENQUEUE_FUNCTION_UNKNOWN: u8 = 0; -const ENQUEUE_FUNCTION_AVAILABLE: u8 = 1; -const ENQUEUE_FUNCTION_UNAVAILABLE: u8 = 2; +/// How long an "enqueue_ready_rows is unavailable" observation stands before +/// the store probes again, so a runtime started before v052 picks the +/// function up once the migration lands. +const ENQUEUE_FUNCTION_REPROBE: Duration = Duration::from_secs(60); /// One ready row as `{schema}.enqueue_ready_rows` takes it. Queue, priority /// and shard come from the row's lane; `lane_seq` from the lane's @@ -3006,13 +3007,11 @@ pub struct QueueStorage { ensured_lanes: Mutex>, slot_fill_observations: Mutex>, prune_lock_timeout: Duration, - /// Set once the enqueue path has read `ledger` ring authority. The flip - /// to ledger is one-way, so later enqueue cursor reads go straight to - /// the ledger. Cleared by `prepare_schema` and `reset`. - enqueue_ledger_authority: AtomicBool, - /// Whether the schema has an executable `enqueue_ready_rows` (v052). - /// Probed once; cleared by `prepare_schema` and `reset`. - enqueue_function: AtomicU8, + /// Last probe of whether the schema has an executable + /// `enqueue_ready_rows` (v052), and when it ran. A missing function is + /// probed again after `ENQUEUE_FUNCTION_REPROBE`; an available one until + /// a call fails for want of it. Cleared by `prepare_schema` and `reset`. + enqueue_function: Mutex>, enqueue_function_disabled: bool, } @@ -3060,8 +3059,7 @@ impl QueueStorage { ensured_lanes: Mutex::new(HashSet::new()), slot_fill_observations: Mutex::new(HashMap::new()), prune_lock_timeout: DEFAULT_PRUNE_LOCK_TIMEOUT, - enqueue_ledger_authority: AtomicBool::new(false), - enqueue_function: AtomicU8::new(ENQUEUE_FUNCTION_UNKNOWN), + enqueue_function: Mutex::new(None), enqueue_function_disabled: false, }) } @@ -4288,10 +4286,10 @@ impl QueueStorage { } fn forget_schema_observations(&self) { - self.enqueue_ledger_authority - .store(false, Ordering::Release); - self.enqueue_function - .store(ENQUEUE_FUNCTION_UNKNOWN, Ordering::Release); + *self + .enqueue_function + .lock() + .expect("enqueue function observation mutex") = None; } async fn enqueue_function_available( @@ -4301,29 +4299,32 @@ impl QueueStorage { if self.enqueue_function_disabled { return Ok(false); } - match self.enqueue_function.load(Ordering::Acquire) { - ENQUEUE_FUNCTION_AVAILABLE => return Ok(true), - ENQUEUE_FUNCTION_UNAVAILABLE => return Ok(false), + let observed = *self + .enqueue_function + .lock() + .expect("enqueue function observation mutex"); + match observed { + Some((true, _)) => return Ok(true), + Some((false, at)) if at.elapsed() < ENQUEUE_FUNCTION_REPROBE => return Ok(false), _ => {} } + // The function calls ring_cursor, whose EXECUTE is revoked from PUBLIC. let available: bool = sqlx::query_scalar( - "SELECT COALESCE(has_function_privilege(to_regprocedure($1), 'EXECUTE'), FALSE)", + "SELECT COALESCE(has_function_privilege(to_regprocedure($1), 'EXECUTE'), FALSE) \ + AND COALESCE(has_function_privilege(to_regprocedure($2), 'EXECUTE'), FALSE)", ) .bind(format!( "{}.enqueue_ready_rows({ENQUEUE_READY_ROWS_ARGUMENT_TYPES})", self.schema() )) + .bind(format!("{}.ring_cursor(text)", self.schema())) .fetch_one(executor) .await .map_err(map_sqlx_error)?; - self.enqueue_function.store( - if available { - ENQUEUE_FUNCTION_AVAILABLE - } else { - ENQUEUE_FUNCTION_UNAVAILABLE - }, - Ordering::Release, - ); + *self + .enqueue_function + .lock() + .expect("enqueue function observation mutex") = Some((available, Instant::now())); Ok(available) } @@ -4369,7 +4370,18 @@ impl QueueStorage { .bind(notify_channels) .fetch_one(connection) .await - .map_err(map_sqlx_error)?; + .map_err(|err| { + // The probe can have run in a transaction that created the + // function and rolled back, or privileges can since have been + // revoked; forget it so the next enqueue probes again. + if matches!( + err.as_database_error().and_then(|db| db.code()).as_deref(), + Some("42883" | "42501") + ) { + self.forget_schema_observations(); + } + map_sqlx_error(err) + })?; Ok(inserted as usize) } @@ -4694,20 +4706,39 @@ impl QueueStorage { /// until it has seen `ledger`, then only the O(1) ledger cursor; callers /// that already hold an authority for the transaction should use /// `ring_cursor_tx` directly. + /// Current queue-ring cursor under the authority in force for this + /// statement, read in one round trip. async fn current_queue_ring<'a>( &self, tx: &mut sqlx::Transaction<'a, sqlx::Postgres>, ) -> Result<(i32, i64), AwaError> { - let authority = if self.enqueue_ledger_authority.load(Ordering::Acquire) { - RingAuthority::Ledger - } else { - let authority = self.ring_authority_tx(tx).await?; - if authority == RingAuthority::Ledger { - self.enqueue_ledger_authority.store(true, Ordering::Release); - } - authority - }; - self.ring_cursor_tx(tx, RingFamily::Queue, authority).await + let schema = self.schema(); + sqlx::query_as(audited_sql(format!( + r#" + WITH authority AS ( + SELECT authority = 'ledger' AS ledger + FROM {schema}.ring_cursor_authority + WHERE singleton = TRUE + ) + ( + SELECT ledger.slot, ledger.generation + FROM {schema}.queue_ring_rotations AS ledger + WHERE (SELECT authority.ledger FROM authority) + ORDER BY ledger.generation DESC + LIMIT 1 + ) + UNION ALL + ( + SELECT state.current_slot, state.generation + FROM {schema}.queue_ring_state AS state + WHERE state.singleton = TRUE + AND NOT (SELECT authority.ledger FROM authority) + ) + "# + ))) + .fetch_one(tx.as_mut()) + .await + .map_err(map_sqlx_error) } async fn next_job_ids<'a>( diff --git a/awa/tests/queue_storage_runtime_test.rs b/awa/tests/queue_storage_runtime_test.rs index 916eef1e6..8e5653782 100644 --- a/awa/tests/queue_storage_runtime_test.rs +++ b/awa/tests/queue_storage_runtime_test.rs @@ -16831,6 +16831,41 @@ async fn test_compact_identity_closers_do_not_lock_batch_and_race_rescue_once() pool.close().await; } +/// A store that has seen enqueue_ready_rows must not keep calling it once it +/// is gone: the failed call forgets the observation, and the next enqueue +/// probes again and takes the multi-statement path. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_enqueue_falls_back_after_the_enqueue_function_disappears() { + let (_db_guard, pool) = setup_pool(4).await; + let schema = "awa_qs_enqueue_function_vanishes"; + let store = create_store(&pool, schema).await; + assert_eq!(store.enqueue_batch(&pool, "q", 1, 1).await.unwrap(), 1); + + let signature: String = sqlx::query_scalar(audited_sql(format!( + "SELECT oid::regprocedure::text FROM pg_proc \ + WHERE pronamespace = '{schema}'::regnamespace AND proname = 'enqueue_ready_rows'" + ))) + .fetch_one(&pool) + .await + .unwrap(); + sqlx::query(audited_sql(format!("DROP FUNCTION {signature}"))) + .execute(&pool) + .await + .unwrap(); + + assert!( + store.enqueue_batch(&pool, "q", 1, 1).await.is_err(), + "the call that finds the function gone fails" + ); + assert_eq!( + store.enqueue_batch(&pool, "q", 1, 1).await.unwrap(), + 1, + "the next enqueue probes again and uses the multi-statement path" + ); + assert_eq!(store.queue_counts(&pool, "q").await.unwrap().available, 2); + pool.close().await; +} + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_prune_deleted_materialized_lease_heap_is_reclaimed_once() { let (_db_guard, pool) = setup_pool(8).await; From 540dcad0200b382fa0e06f7471a01ac86bf97154 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Tue, 20 Oct 2026 14:18:27 +1300 Subject: [PATCH 09/48] fix(queue-storage): stack v052 on v050, narrow the rollout claim, harden the reserve helper v052 sits above v050 in the runner, which only applies versions above the highest recorded, so the branch now carries #527's v050 and cannot land first. The upgrade guide no longer implies binary-first is safe for health-gated workers: /readyz waits for the schema to reach the binary's version. It also describes the current probe (re-probed after a minute, EXECUTE on ring_cursor required, a lost function failing one call), and the changelog distinguishes enqueue_params_batch from the COPY entry point's 2,048-row threshold. reserve_enqueue_seq rejects a NULL count, which returned a start without advancing the sequence. The lane-cache rollback test also runs with the function disabled, since only the multi-statement path fills that cache. The least-privilege test covers a runtime denied ring_cursor EXECUTE and EXECUTE revoked after use. --- CHANGELOG.md | 2 +- .../v023_install_queue_storage_substrate.sql | 5 ++ awa-model/src/queue_storage.rs | 11 +-- .../tests/least_privilege_runtime_test.rs | 82 +++++++++++++++++++ awa/tests/queue_storage_runtime_test.rs | 41 +++++++++- docs/upgrade-0.6-to-0.7.md | 28 +++++-- 6 files changed, 152 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b89bf8a07..5452aa4a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Notable changes between releases. Detailed migration notes for storage transitio ### Changed -- **A ready enqueue is one statement (v052, [#522](https://github.com/hardbyte/awa/issues/522)).** `QueueStorage::enqueue_params_copy` and `enqueue_params_batch` send a ready-only batch with no uniqueness claims below the 2,048-row COPY threshold as one autocommit call to the new `{schema}.enqueue_ready_rows`, which reserves the lanes, reads the ring cursor, appends the ready rows and segments and notifies; the previous path took ten round trips. Inside a transaction (uniqueness claims, deferred rows) the function replaces the per-lane reservation, cursor reads and both inserts. `reserve_enqueue_seq` provisions lane sequences only for a lane row without a sequence name and reserves a range with one sequence write instead of two. On a schema without the function, current runtimes keep the multi-statement path, which also drops the cached-lane probe and, after the ledger flip, the authority read. At 800 jobs/s with 20-row calls the producer call p50 fell 19-62% against main in the same benchmark round (0.94 ms in the quietest round) and WAL per job by about 5 B; throughput and saturation (64 workers) are unchanged within run-to-run noise. +- **A ready enqueue is one statement (v052, [#522](https://github.com/hardbyte/awa/issues/522)).** `QueueStorage::enqueue_params_batch`, and `enqueue_params_copy` for batches below its 2,048-row COPY threshold, send a ready-only batch with no uniqueness claims as one autocommit call to the new `{schema}.enqueue_ready_rows`, which reserves the lanes, reads the ring cursor, appends the ready rows and segments and notifies; the previous path took ten round trips. Inside a transaction (uniqueness claims, deferred rows) the function replaces the per-lane reservation, cursor reads and both inserts. `reserve_enqueue_seq` provisions lane sequences only for a lane row without a sequence name and reserves a range with one sequence write instead of two. On a schema without the function, or without `EXECUTE` on it and on `ring_cursor`, current runtimes keep the multi-statement path, which also drops the cached-lane probe and reads the authority and the ring cursor in one statement. A missing function is probed again after a minute. Health-gated workers report ready only once the schema reaches v052, so migrate first for them. At 800 jobs/s with 20-row calls the producer call p50 fell 19-62% against main in the same benchmark round (0.94 ms in the quietest round) and WAL per job by about 5 B; throughput and saturation (64 workers) are unchanged within run-to-run noise. - v050 drops `idx__ready__lane_shard` from every ready_entries partition of the default schema and of the custom schemas `awa.queue_storage_schemas()` selects. Each enqueued job writes two index entries instead of three and diff --git a/awa-model/migrations/v023_install_queue_storage_substrate.sql b/awa-model/migrations/v023_install_queue_storage_substrate.sql index fc8394e0a..c249db6f0 100644 --- a/awa-model/migrations/v023_install_queue_storage_substrate.sql +++ b/awa-model/migrations/v023_install_queue_storage_substrate.sql @@ -259,6 +259,11 @@ BEGIN AND priority = p_priority AND enqueue_shard = p_enqueue_shard; + IF p_count IS NULL THEN + RAISE EXCEPTION 'reserve_enqueue_seq: count must not be NULL' + USING ERRCODE = '22004'; + END IF; + IF p_count <= 0 THEN RETURN %1$I.sequence_next_value(v_seq_name); END IF; diff --git a/awa-model/src/queue_storage.rs b/awa-model/src/queue_storage.rs index 94837a465..e7317907e 100644 --- a/awa-model/src/queue_storage.rs +++ b/awa-model/src/queue_storage.rs @@ -4708,13 +4708,10 @@ impl QueueStorage { } } - /// Current queue-ring cursor for the Rust-side enqueue paths, honouring - /// the schema's authority (#371 staged upgrade). Reads the authority row - /// until it has seen `ledger`, then only the O(1) ledger cursor; callers - /// that already hold an authority for the transaction should use - /// `ring_cursor_tx` directly. - /// Current queue-ring cursor under the authority in force for this - /// statement, read in one round trip. + /// Current queue-ring cursor for the Rust-side enqueue paths, under the + /// authority in force for this statement (#371 staged upgrade), read in + /// one round trip. Callers that already hold an authority for the + /// transaction should use `ring_cursor_tx` directly. async fn current_queue_ring<'a>( &self, tx: &mut sqlx::Transaction<'a, sqlx::Postgres>, diff --git a/awa-model/tests/least_privilege_runtime_test.rs b/awa-model/tests/least_privilege_runtime_test.rs index 3d1593879..944a72e6b 100644 --- a/awa-model/tests/least_privilege_runtime_test.rs +++ b/awa-model/tests/least_privilege_runtime_test.rs @@ -147,6 +147,10 @@ async fn exercise(options: PgConnectOptions, owner: &str, runtime: &str) -> Test assert_eq!(before, after); } assert_no_head_table_ddl_locks(&owner_pool).await?; + for schema in SCHEMAS { + assert_enqueue_function_privileges_fall_back(&owner_pool, &runtime_pool, schema, runtime) + .await?; + } runtime_pool.close().await; owner_pool.close().await; Ok(()) @@ -277,3 +281,81 @@ async fn check_runtime(pool: &PgPool, schema: &str) -> TestResult { ); Ok(()) } + +/// The one-call enqueue needs EXECUTE on enqueue_ready_rows and on +/// ring_cursor. Without either the store keeps the multi-statement path; a +/// grant revoked after the store has used the function costs one failed +/// enqueue, then the store probes again and falls back. +async fn assert_enqueue_function_privileges_fall_back( + owner_pool: &PgPool, + runtime_pool: &PgPool, + schema: &str, + runtime: &str, +) -> TestResult { + let enqueue = |pool: PgPool| async move { + QueueStorage::new(QueueStorageConfig { + schema: schema.into(), + ..Default::default() + }) + .expect("store") + .enqueue_batch(&pool, "prepared_queue", 2, 1) + .await + }; + owner_pool + .execute(sqlx::raw_sql(awa_model::audited_sql(format!( + "REVOKE EXECUTE ON FUNCTION {schema}.ring_cursor(text) FROM {runtime}" + )))) + .await?; + assert_eq!( + enqueue(runtime_pool.clone()).await?, + 1, + "without ring_cursor EXECUTE the store keeps the multi-statement path" + ); + owner_pool + .execute(sqlx::raw_sql(awa_model::audited_sql(format!( + "GRANT EXECUTE ON FUNCTION {schema}.ring_cursor(text) TO {runtime}" + )))) + .await?; + + let store = QueueStorage::new(QueueStorageConfig { + schema: schema.into(), + ..Default::default() + })?; + assert_eq!( + store + .enqueue_batch(runtime_pool, "prepared_queue", 2, 1) + .await?, + 1 + ); + let signature: String = sqlx::query_scalar(awa_model::audited_sql(format!( + "SELECT oid::regprocedure::text FROM pg_proc \ + WHERE pronamespace = '{schema}'::regnamespace AND proname = 'enqueue_ready_rows'" + ))) + .fetch_one(owner_pool) + .await?; + owner_pool + .execute(sqlx::raw_sql(awa_model::audited_sql(format!( + "REVOKE EXECUTE ON FUNCTION {signature} FROM PUBLIC, {runtime}" + )))) + .await?; + assert!( + store + .enqueue_batch(runtime_pool, "prepared_queue", 2, 1) + .await + .is_err(), + "the call that finds EXECUTE gone fails" + ); + assert_eq!( + store + .enqueue_batch(runtime_pool, "prepared_queue", 2, 1) + .await?, + 1, + "the next call probes again and uses the multi-statement path" + ); + owner_pool + .execute(sqlx::raw_sql(awa_model::audited_sql(format!( + "GRANT EXECUTE ON FUNCTION {signature} TO {runtime}" + )))) + .await?; + Ok(()) +} diff --git a/awa/tests/queue_storage_runtime_test.rs b/awa/tests/queue_storage_runtime_test.rs index 8e5653782..93cef4f85 100644 --- a/awa/tests/queue_storage_runtime_test.rs +++ b/awa/tests/queue_storage_runtime_test.rs @@ -15750,10 +15750,25 @@ async fn test_priority_aging_off_does_not_stamp_original() { /// helper's comment. #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_queue_storage_ensure_lane_cache_recovers_after_rollback() { + check_ensure_lane_cache_recovers_after_rollback("awa_qs_ensure_lane_rollback", false).await; +} + +/// The multi-statement path is the one that fills the Rust lane cache, so +/// the recovery must also hold when the function is not used. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_queue_storage_ensure_lane_cache_recovers_after_rollback_without_function() { + check_ensure_lane_cache_recovers_after_rollback("awa_qs_ensure_lane_rollback_nf", true).await; +} + +async fn check_ensure_lane_cache_recovers_after_rollback(schema: &str, without_function: bool) { let (_db_guard, pool) = setup_pool(4).await; let queue = "qs_ensure_lane_rollback"; - let schema = "awa_qs_ensure_lane_rollback"; let store = create_store(&pool, schema).await; + let store = if without_function { + store.without_enqueue_function() + } else { + store + }; // Simulate the rolled-back ensure_lane: run the three lane // inserts in a transaction that we explicitly roll back. After @@ -16831,6 +16846,30 @@ async fn test_compact_identity_closers_do_not_lock_batch_and_race_rescue_once() pool.close().await; } +/// A NULL count would return a start without advancing the lane sequence, +/// handing the same range to the next caller. +#[tokio::test] +async fn test_reserve_enqueue_seq_rejects_a_null_count() { + let (_db_guard, pool) = setup_pool(2).await; + let schema = "awa_qs_reserve_null_count"; + let store = create_store(&pool, schema).await; + store.enqueue_batch(&pool, "q", 1, 1).await.unwrap(); + let error = sqlx::query(audited_sql(format!( + "SELECT {schema}.reserve_enqueue_seq('q', 1::smallint, 0::smallint, NULL::bigint)" + ))) + .execute(&pool) + .await + .expect_err("a NULL count must be rejected"); + assert_eq!( + error + .as_database_error() + .and_then(|db| db.code()) + .as_deref(), + Some("22004") + ); + pool.close().await; +} + /// A store that has seen enqueue_ready_rows must not keep calling it once it /// is gone: the failed call forgets the observation, and the next enqueue /// probes again and takes the multi-statement path. diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 7780292f0..3c1fad421 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -29,14 +29,26 @@ v052 replaces functions only. `reserve_enqueue_seq` keeps its signature, lane lock and return value, so earlier 0.7 binaries and SQL producers (`insert_job_compat`) run unchanged on the migrated schema. A new `{schema}.enqueue_ready_rows` lets current runtimes enqueue a ready batch in -one statement; they probe for it once per store and keep the multi-statement -path on a schema without it, so deploying binaries before migrating is safe. A -running binary uses the function after its next restart. Runtimes need -`EXECUTE` on the new function, which the default privileges in -[Database roles](security/database-roles.md#runtime-grants) grant; without it -they also keep the multi-statement path. External runners must apply the -complete generated `awa migrate --sql` bundle, which redefines the installer -before refreshing the installed schemas. +one statement. Runtimes use it when they have `EXECUTE` on it and on +`{schema}.ring_cursor`, which it calls and which is revoked from `PUBLIC`; the +default privileges in [Database roles](security/database-roles.md#runtime-grants) +grant both. Otherwise they keep the multi-statement path. A store that finds +the function missing probes again after a minute, so it picks the function up +without a restart once the migration commits. If the function disappears or +loses `EXECUTE` after a store has used it, the next call fails and the one +after that probes again and falls back. + +Deploy order: the fallback keeps enqueue, claim and completion working when a +current binary runs against a pre-v052 schema, but worker readiness does not +follow it. `/readyz` reports a worker ready only once the schema is at the +binary's version, so health-gated workers started before the migration stay +unready until it commits. Migrate first for health-gated workers; binary-first +is safe for producers and for workers without a readiness gate. + +Apply v050 before v052: the runner applies only versions above the highest one +recorded, so a database stamped v052 would never apply a v050 added later. +External runners must apply the complete generated `awa migrate --sql` bundle, +which redefines the installer before refreshing the installed schemas. ## Custom-schema discovery during migration From 5a18bc23ce7d3f350e1a8caf68af016d5979f089 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Wed, 21 Oct 2026 21:42:50 +1300 Subject: [PATCH 10/48] docs(changelog): rewrap the v052 upgrade notes --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 781e21765..029b6b798 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,15 +6,15 @@ Notable changes between releases. Detailed migration notes for storage transitio ### Upgrading -This release adds migrations v044 to v050 and v052. Run `awa migrate` as the migrator -role; the [0.6→0.7 upgrade guide](docs/upgrade-0.6-to-0.7.md) has the details -for each step. +This release adds migrations v044 to v050 and v052. Run `awa migrate` as the +migrator role; the [0.6→0.7 upgrade guide](docs/upgrade-0.6-to-0.7.md) has the +details for each step. - **Rollout order.** Health-gated workers report ready only once the schema reaches their version, so migrate before rolling them out. Producers and - workers without a readiness gate can roll before v050 and v052. On PostgreSQL 17 and - earlier, pre-v050 binaries scan every ready partition during maintenance - once v050 is applied, so replace them promptly. + workers without a readiness gate can roll before v050 and v052. On + PostgreSQL 17 and earlier, pre-v050 binaries scan every ready partition + during maintenance once v050 is applied, so replace them promptly. - **Runtime roles no longer need `CREATE` (v049).** Provision lanes with `awa storage prepare-queue` as the migrator before deploying, and grant the runtime role `USAGE, SELECT, UPDATE` on the lane sequences. Existing From 42398f3fe06640ddcdd650354dbcfe1dbaa1284e Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Sat, 24 Oct 2026 12:11:59 +1300 Subject: [PATCH 11/48] Redesign admin overview around queue pressure and operator actions --- awa-ui/frontend/e2e/dashboard.spec.ts | 223 ++--- awa-ui/frontend/e2e/navigation.spec.ts | 12 +- awa-ui/frontend/e2e/operations-fixture.ts | 242 +++++ awa-ui/frontend/e2e/operations.spec.ts | 294 ++++++ awa-ui/frontend/e2e/queues.spec.ts | 226 +++-- awa-ui/frontend/e2e/runtime.spec.ts | 2 +- awa-ui/frontend/package.json | 3 +- awa-ui/frontend/playwright.config.ts | 1 + .../frontend/playwright.operations.config.ts | 20 + awa-ui/frontend/src/app.css | 134 +++ .../frontend/src/components/QueuePressure.tsx | 138 +++ awa-ui/frontend/src/components/Shell.tsx | 48 +- .../src/components/SnapshotStatus.tsx | 45 + awa-ui/frontend/src/lib/operations.ts | 43 + awa-ui/frontend/src/routes/index.tsx | 834 ++++++------------ awa-ui/frontend/src/routes/jobs.tsx | 90 +- awa-ui/frontend/src/routes/kinds.tsx | 6 +- awa-ui/frontend/src/routes/queue-detail.tsx | 83 +- awa-ui/frontend/src/routes/queues.tsx | 567 ++++-------- awa-ui/frontend/src/routes/runtime-detail.tsx | 6 +- awa-ui/frontend/src/routes/runtime.tsx | 20 +- awa-ui/frontend/vite.config.ts | 6 +- 22 files changed, 1684 insertions(+), 1359 deletions(-) create mode 100644 awa-ui/frontend/e2e/operations-fixture.ts create mode 100644 awa-ui/frontend/e2e/operations.spec.ts create mode 100644 awa-ui/frontend/playwright.operations.config.ts create mode 100644 awa-ui/frontend/src/components/QueuePressure.tsx create mode 100644 awa-ui/frontend/src/components/SnapshotStatus.tsx create mode 100644 awa-ui/frontend/src/lib/operations.ts diff --git a/awa-ui/frontend/e2e/dashboard.spec.ts b/awa-ui/frontend/e2e/dashboard.spec.ts index 332398950..7676db74c 100644 --- a/awa-ui/frontend/e2e/dashboard.spec.ts +++ b/awa-ui/frontend/e2e/dashboard.spec.ts @@ -1,190 +1,77 @@ -import { test, expect, type Response } from "@playwright/test"; +import { test, expect } from "@playwright/test"; -function isQueuesListResponse(response: Response): boolean { - const url = new URL(response.url()); - return response.ok() && response.request().method() === "GET" && url.pathname === "/api/queues"; -} - -test.describe("Dashboard page", () => { - test("page loads and shows Dashboard heading", async ({ page }) => { +test.describe("Operations overview", () => { + test("overview separates current work and last-hour completions", async ({ + page, + }) => { await page.goto("/"); await expect( - page.getByRole("heading", { name: "Dashboard" }) + page.getByRole("heading", { name: "Work in motion" }), ).toBeVisible(); - }); - - test("state counter cards are visible with counts", async ({ page }) => { - await Promise.all([ - page.waitForResponse((r) => r.url().includes("/api/stats") && r.ok()), - page.goto("/"), - ]); - - // Counter cards should show numeric values (seeded data exists) - const counterCards = page.locator('a[href*="/jobs"]'); - const count = await counterCards.count(); - expect(count).toBeGreaterThanOrEqual(3); - }); - - test("queues card renders", async ({ page }) => { - await Promise.all([ - page.waitForResponse(isQueuesListResponse), - page.goto("/"), - ]); - await expect( - page.locator('[data-slot="card-header"]', { hasText: "Queues" }) + page.getByRole("heading", { name: "Current work" }), ).toBeVisible(); - - const queueTable = page.getByRole("grid", { name: "Queue summary" }); - for (const header of ["Queue", "Total queued", "Scheduled", "Retryable"]) { - await expect( - queueTable.getByRole("columnheader", { name: header, exact: true }) - ).toBeVisible(); - } - - // Seeded e2e_test queue should appear in the queue table - await expect(page.getByText("e2e_test").first()).toBeVisible(); - }); - - test("recent failures section shows seeded failed job", async ({ page }) => { - await Promise.all([ - page.waitForResponse( - (r) => - r.url().includes("/api/jobs") && - r.url().includes("failed") && - r.ok() - ), - page.goto("/"), - ]); - await expect( - page.locator('[data-slot="card-header"]', { - hasText: "Recent Failures", - }) + page.getByText("Completed · last 60 minutes", { exact: true }), ).toBeVisible(); - - // Seeded failed e2e_job should appear - await expect(page.getByText("e2e_job").first()).toBeVisible(); + await expect(page.locator(".work-counter")).toHaveCount(6); }); - test("counter card click navigates to /jobs with state filter", async ({ page }) => { - await Promise.all([ - page.waitForResponse((r) => r.url().includes("/api/stats") && r.ok()), - page.goto("/"), - ]); - - // Click the "available" counter card — it links to /jobs?state=available - const availableCard = page.locator('a[href*="state=available"]').first(); - await expect(availableCard).toBeVisible(); - await availableCard.click(); - - await page.waitForURL(/\/jobs/); - expect(page.url()).toContain("state=available"); - await expect(page.getByRole("heading", { name: /Jobs/ })).toBeVisible(); - }); - - test("failed counter card navigates to /jobs?state=failed", async ({ page }) => { - await Promise.all([ - page.waitForResponse((r) => r.url().includes("/api/stats") && r.ok()), - page.goto("/"), - ]); - - const failedCard = page.locator('a[href*="state=failed"]').first(); - await expect(failedCard).toBeVisible(); - await failedCard.click(); - - await page.waitForURL(/\/jobs/); - expect(page.url()).toContain("state=failed"); - }); - - test("queue row click navigates to /jobs with queue filter", async ({ page }) => { - await Promise.all([ - page.waitForResponse(isQueuesListResponse), - page.goto("/"), - ]); - - // The dashboard queue table has clickable rows with onAction - const queueTable = page.getByRole("grid", { name: "Queue summary" }); - await expect(queueTable).toBeVisible(); - - // Click the e2e_test row (the row itself, not the link inside) - const e2eRow = queueTable.getByRole("row", { name: /e2e_test/ }); - await expect(e2eRow).toBeVisible(); - await e2eRow.click(); - - await page.waitForURL(/\/jobs/); - expect(page.url()).toContain("queue"); - expect(page.url()).toContain("e2e_test"); - }); - - test("runtime card renders with stat counters", async ({ page }) => { - await Promise.all([ - page.waitForResponse( - (r) => r.url().includes("/api/runtime") && r.ok() - ), - page.goto("/"), - ]); - - // Runtime card header should be visible - await expect( - page.locator('[data-slot="card-header"]', { hasText: "Runtime" }) - ).toBeVisible(); - - // Stat counter labels should be present - for (const label of ["Live", "Healthy", "Leader", "Stale"]) { - await expect(page.getByText(label, { exact: true }).first()).toBeVisible(); - } - }); - - test("runtime card shows empty state when no workers running", async ({ + test("queue pressure includes available wait and state drilldowns", async ({ page, }) => { - await Promise.all([ - page.waitForResponse( - (r) => r.url().includes("/api/runtime") && r.ok() - ), - page.goto("/"), - ]); + await page.goto("/"); + const table = page.getByRole("table", { name: "Queue pressure" }); + await expect(table).toBeVisible(); + for (const header of [ + "Queue", + "Available", + "Oldest available", + "Running", + "Retryable / failed", + ]) { + await expect( + table.getByRole("columnheader", { name: header, exact: true }), + ).toBeVisible(); + } + const row = table.getByRole("row", { name: /e2e_test/ }); + await row.locator('a[href*="state=available"]').click(); + await expect(page).toHaveURL(/state=available/); + await expect(page).toHaveURL(/e2e_test/); + }); - // When no workers are running, expect either the table or the empty state text - const runtimeCard = page.locator('[data-slot="card-header"]', { - hasText: "Runtime", + for (const state of ["available", "retryable", "failed"]) { + test(`${state} counter links to its job state`, async ({ page }) => { + await page.goto("/"); + await page.locator(`.work-counter[href*="state=${state}"]`).click(); + await expect(page).toHaveURL(new RegExp(`state=${state}`)); + await expect(page.getByRole("heading", { name: "Jobs" })).toBeVisible(); }); - await expect(runtimeCard).toBeVisible(); + } - // Either instances are shown (table) or the empty/loading message appears - const emptyText = page.getByText( - "No runtime snapshots yet" + test("worker summary reports health or explicit empty state", async ({ + page, + }) => { + await page.goto("/"); + const section = page.getByRole("region", { name: "Worker health" }); + await expect( + section.getByRole("link", { name: "All workers" }), + ).toBeVisible(); + await expect(section).toContainText( + /healthy.*live.*stale.*leader|No runtime snapshots/, ); - const table = page.getByRole("grid", { name: "Runtime instances" }); - const hasTable = await table.isVisible().catch(() => false); - const hasEmptyText = await emptyText.isVisible().catch(() => false); - // One or the other should be present (if a worker happens to be running, table shows) - expect(hasTable || hasEmptyText).toBeTruthy(); }); - test("recent failure row click navigates to job detail", async ({ page }) => { - await Promise.all([ - page.waitForResponse( - (r) => - r.url().includes("/api/jobs") && - r.url().includes("failed") && - r.ok() - ), - page.goto("/"), - ]); - - const failuresTable = page.getByRole("grid", { name: "Recent failures" }); - await expect(failuresTable).toBeVisible(); - - // Click the first failure row - const firstRow = failuresTable.getByRole("row").nth(1); - await expect(firstRow).toBeVisible(); - await firstRow.click(); - - await page.waitForURL(/\/jobs\/\d+/); + test("failed job drilldown opens the retained failure", async ({ page }) => { + await page.goto("/"); + const section = page.getByRole("region", { + name: "Failed jobs to inspect", + }); await expect( - page.getByRole("heading", { name: /Job #\d+/ }) + section.getByText(/Latest 5 retained failed jobs/), ).toBeVisible(); + await section.locator(".failure-preview-row").first().click(); + await expect(page).toHaveURL(/\/jobs\/\d+/); + await expect(page.getByRole("heading", { name: /Job #\d+/ })).toBeVisible(); }); }); diff --git a/awa-ui/frontend/e2e/navigation.spec.ts b/awa-ui/frontend/e2e/navigation.spec.ts index 030eca046..753b5da45 100644 --- a/awa-ui/frontend/e2e/navigation.spec.ts +++ b/awa-ui/frontend/e2e/navigation.spec.ts @@ -25,9 +25,9 @@ test.describe("Shell navigation", () => { await expect(page.getByRole("heading", { name: "Queues" })).toBeVisible(); // Click Runtime nav link - await nav.getByRole("link", { name: "Runtime" }).click(); + await nav.getByRole("link", { name: "Workers" }).click(); await expect(page).toHaveURL(/\/runtime/); - await expect(page.getByRole("heading", { name: "Runtime" })).toBeVisible(); + await expect(page.getByRole("heading", { name: "Workers" })).toBeVisible(); // Click Cron nav link (use exact match to avoid matching queue names like "cron_...") await nav.getByRole("link", { name: "Cron", exact: true }).click(); @@ -37,10 +37,10 @@ test.describe("Shell navigation", () => { ).toBeVisible(); // Click Dashboard nav link - await nav.getByRole("link", { name: "Dashboard" }).click(); + await nav.getByRole("link", { name: "Overview" }).click(); await expect(page).toHaveURL(/\/$/); await expect( - page.getByRole("heading", { name: "Dashboard" }) + page.getByRole("heading", { name: "Work in motion" }) ).toBeVisible(); }); @@ -55,7 +55,7 @@ test.describe("Shell navigation", () => { await logoLink.click(); await expect(page).toHaveURL(/\/$/); await expect( - page.getByRole("heading", { name: "Dashboard" }) + page.getByRole("heading", { name: "Work in motion" }) ).toBeVisible(); }); @@ -69,7 +69,7 @@ test.describe("Shell navigation", () => { // Dashboard should NOT be marked as current const dashboardLink = page - .getByRole("link", { name: "Dashboard" }) + .getByRole("link", { name: "Overview" }) .first(); await expect(dashboardLink).not.toHaveAttribute("aria-current", "page"); diff --git a/awa-ui/frontend/e2e/operations-fixture.ts b/awa-ui/frontend/e2e/operations-fixture.ts new file mode 100644 index 000000000..32b95966d --- /dev/null +++ b/awa-ui/frontend/e2e/operations-fixture.ts @@ -0,0 +1,242 @@ +import type { Page } from "@playwright/test"; +import type { JobRow, QueueStats, RuntimeInstance } from "../src/lib/api"; + +export async function mockOperations( + page: Page, + scenario: "busy" | "empty" | "error" | "loading" = "busy", + readOnly = false, +) { + const now = Date.now(); + const ago = (seconds: number) => new Date(now - seconds * 1000).toISOString(); + const queues: QueueStats[] = Array.from({ length: 24 }, (_, index) => ({ + queue: + [ + "email-delivery", + "invoice-export", + "webhook-dispatch", + "image-processing", + "search-index", + "daily-reports", + ][index] ?? `tenant-sync-${index}`, + display_name: null, + description: "Synthetic queue for local operator validation", + owner: "Platform", + docs_url: null, + tags: [], + extra: {}, + descriptor_last_seen_at: ago(8), + descriptor_stale: false, + descriptor_mismatch: false, + total_queued: 0, + available: index === 0 ? 184200 : 2100 + index * 17, + running: 40 + index, + retryable: index === 0 ? 1840 : 10, + failed: index === 0 ? 236 : 0, + scheduled: 850 + index, + waiting_external: index === 2 ? 14400 : 0, + completed_last_hour: 128400 + index * 211, + lag_seconds: index === 0 ? 458 : index === 1 ? 135 : 2.4, + paused: index === 1, + })).map((q) => ({ + ...q, + total_queued: + q.available + q.running + q.retryable + q.scheduled + q.waiting_external, + })); + const config = { + mode: "hard_reserved", + max_workers: 64, + min_workers: null, + weight: null, + global_max_workers: null, + poll_interval_ms: 200, + deadline_duration_secs: 300, + priority_aging_interval_secs: 60, + dlq_enabled: true, + rate_limit: null, + }; + const instances: RuntimeInstance[] = Array.from( + { length: 48 }, + (_, index) => ({ + instance_id: `00000000-0000-4000-8000-${String(index).padStart(12, "0")}`, + hostname: `worker-eu-${String(index + 1).padStart(2, "0")}`, + pid: 1300 + index, + version: "0.7.0", + storage_capability: "queue_storage", + transition_role: "auto", + started_at: ago(86400), + last_seen_at: ago(index === 0 ? 170 : 4), + snapshot_interval_ms: 10000, + stale: index === 0, + healthy: index > 1, + postgres_connected: true, + poll_loop_alive: index !== 1, + heartbeat_alive: true, + maintenance_alive: true, + shutting_down: false, + leader: index === 2, + global_max_workers: 64, + queues: queues + .slice(0, 6) + .map((q) => ({ + queue: q.queue, + in_flight: 8, + overflow_held: 0, + config: config as RuntimeInstance["queues"][number]["config"], + })), + }), + ); + const jobs: JobRow[] = Array.from({ length: 60 }, (_, index) => ({ + id: 984213 - index, + queue: "email-delivery", + kind: "SendTransactionalEmail", + args: { template: "receipt", synthetic: true }, + state: "failed", + priority: 2, + original_priority: 2, + attempt: 5, + max_attempts: 5, + run_at: ago(900), + heartbeat_at: null, + deadline_at: null, + attempted_at: ago(120), + finalized_at: ago(index * 12 + 8), + created_at: ago(1000), + errors: [ + { + error: "Provider request timed out after 30 seconds", + attempt: 5, + at: ago(8), + }, + ], + metadata: {}, + tags: ["synthetic"], + progress: null, + callback_id: null, + callback_timeout_at: null, + callback_filter: null, + callback_on_complete: null, + callback_on_fail: null, + callback_transform: null, + queue_descriptor: null, + kind_descriptor: null, + })); + const mutations: string[] = []; + let failReads = scenario === "error"; + await page.route("**/api/**", async (route) => { + const request = route.request(); + const url = new URL(request.url()); + const path = url.pathname.slice(4); + if (request.method() !== "GET") { + mutations.push(`${request.method()} ${path}`); + const queue = queues.find((q) => path.includes(q.queue)); + if (queue && path.endsWith("/pause")) queue.paused = true; + if (queue && path.endsWith("/resume")) queue.paused = false; + if (queue && path.endsWith("/drain")) { + queue.available = 0; + queue.retryable = 0; + queue.scheduled = 0; + queue.waiting_external = 0; + queue.total_queued = queue.running; + } + const job = jobs.find((entry) => path.startsWith(`/jobs/${entry.id}/`)); + if (job && path.endsWith("/retry")) { + job.state = "available"; + job.attempt = 0; + } + if (job && path.endsWith("/cancel")) job.state = "cancelled"; + return route.fulfill({ json: job ?? { ok: true, drained: 184200 } }); + } + if (path === "/capabilities") + return route.fulfill({ + json: { + read_only: readOnly, + poll_interval_ms: 60000, + instance_name: "Synthetic / local", + instance_color: "#23745a", + peers: [], + }, + }); + if (scenario === "loading") + await new Promise((resolve) => setTimeout(resolve, 2500)); + if ( + failReads && + ["/stats", "/queues", "/runtime", "/jobs", "/dlq/depth"].includes(path) + ) + return route.fulfill({ + status: 503, + json: { error: "Synthetic API unavailable" }, + }); + const empty = scenario === "empty"; + let data: unknown = []; + if (path === "/stats") + data = empty + ? {} + : { + available: queues.reduce((s, q) => s + q.available, 0), + running: 1236, + retryable: 2070, + failed: 236, + scheduled: 20676, + waiting_external: 14400, + completed: 14820000, + }; + else if (path === "/queues") data = empty ? [] : queues; + else if (path === "/queues/runtime") + data = empty + ? [] + : queues.map((q) => ({ + queue: q.queue, + instance_count: 48, + live_instances: 47, + stale_instances: 1, + healthy_instances: 46, + total_in_flight: q.running, + overflow_held_total: 0, + config_mismatch: false, + config, + })); + else if (path.startsWith("/queues/")) + data = queues.find((q) => q.queue === decodeURIComponent(path.slice(8))); + else if (path === "/runtime") + data = { + total_instances: empty ? 0 : 48, + live_instances: empty ? 0 : 47, + stale_instances: empty ? 0 : 1, + healthy_instances: empty ? 0 : 46, + leader_instances: empty ? 0 : 1, + instances: empty ? [] : instances, + }; + else if (path === "/dlq/depth") + data = { + total: empty ? 0 : 1240, + by_queue: empty ? [] : [{ queue: "email-delivery", count: 1240 }], + }; + else if (path === "/jobs") + data = empty + ? [] + : jobs + .filter( + (job) => + !url.searchParams.has("queue") || + job.queue === url.searchParams.get("queue"), + ) + .map((job) => ({ + ...job, + state: url.searchParams.get("state") ?? job.state, + })) + .slice(0, Number(url.searchParams.get("limit") ?? 50)); + else if (/^\/jobs\/\d+$/.test(path)) + data = jobs.find((job) => job.id === Number(path.slice(6))); + else if (path === "/stats/kinds") data = ["SendTransactionalEmail"]; + else if (path === "/stats/queues") data = queues.map((q) => q.queue); + else if (path === "/storage") + return route.fulfill({ status: 404, json: {} }); + return route.fulfill({ json: data }); + }); + return { + mutations, + setReadFailure: (value: boolean) => { + failReads = value; + }, + }; +} diff --git a/awa-ui/frontend/e2e/operations.spec.ts b/awa-ui/frontend/e2e/operations.spec.ts new file mode 100644 index 000000000..a1b550b64 --- /dev/null +++ b/awa-ui/frontend/e2e/operations.spec.ts @@ -0,0 +1,294 @@ +import { test, expect } from "@playwright/test"; +import { mockOperations } from "./operations-fixture"; + +const artifacts = + process.env.AWA_REVIEW_ARTIFACT_DIR ?? "test-results/operations-review"; +test("busy overview communicates current work and opens targeted drilldowns", async ({ + page, +}) => { + const fixture = await mockOperations(page); + const errors: string[] = []; + page.on("pageerror", (error) => errors.push(error.message)); + await page.setViewportSize({ width: 1440, height: 1050 }); + await page.goto("/"); + await expect( + page.getByRole("heading", { name: "Work in motion" }), + ).toBeVisible(); + await expect( + page.locator(".work-counter").filter({ hasText: "Available" }), + ).toContainText("237,192"); + await expect( + page.locator(".work-counter").filter({ hasText: "Retryable" }), + ).toContainText("2,070"); + await expect(page.locator(".worker-preview-row")).toHaveCount(4); + await expect(page.locator(".worker-preview-row").first()).toContainText( + "health unknown", + ); + await expect(page.locator(".pressure-table tbody tr").first()).toContainText( + "7m 38s", + ); + await page.screenshot({ + path: `${artifacts}/overview-desktop.png`, + fullPage: true, + }); + await page.getByRole("link", { name: "184,200", exact: true }).click(); + await expect(page).toHaveURL(/state=available/); + await expect(page).toHaveURL(/queue%3Aemail-delivery/); + await expect( + page.getByRole("button", { name: "available 184,200" }), + ).toHaveAttribute("aria-pressed", "true"); + await expect(page.getByText("State counts cover this queue")).toBeVisible(); + for (let index = 0; index < 3; index++) { + await page.goto("/"); + await page.getByRole("link", { name: "worker-eu-01" }).click(); + await expect(page).toHaveURL(/runtime\/00000000/); + await page.goBack(); + await expect( + page.getByRole("heading", { name: "Work in motion" }), + ).toBeVisible(); + } + expect(fixture.mutations).toEqual([]); + expect(errors).toEqual([]); +}); + +test("queue filters and core controls use only the synthetic API", async ({ + page, +}) => { + const fixture = await mockOperations(page); + await page.goto("/queues"); + await page.getByRole("searchbox", { name: "Find a queue" }).fill("invoice"); + await expect(page.locator(".pressure-table tbody tr")).toHaveCount(1); + await page.getByRole("button", { name: "Resume", exact: true }).click(); + await expect( + page.getByRole("button", { name: "Pause", exact: true }), + ).toBeVisible(); + await page.getByRole("button", { name: "Pause", exact: true }).click(); + await expect( + page.getByRole("button", { name: "Resume", exact: true }), + ).toBeVisible(); + await page.getByRole("button", { name: "Drain…" }).click(); + await expect(page.getByRole("alertdialog")).toContainText( + "Running jobs will not be affected", + ); + await page.getByRole("button", { name: "Cancel", exact: true }).click(); + expect(fixture.mutations).toHaveLength(2); + await page.getByRole("button", { name: "Drain…" }).click(); + await page.getByRole("button", { name: "Drain queue", exact: true }).click(); + await expect(page.locator(".pressure-table tbody tr")).toContainText( + "0 scheduled", + ); + expect(fixture.mutations).toContain("POST /queues/invoice-export/drain"); + await page.getByRole("searchbox").fill("not-a-real-queue"); + await expect(page.getByText("No queues match these filters.")).toBeVisible(); + await page.getByRole("searchbox").fill(""); + await page.getByRole("combobox", { name: "Sort by" }).selectOption("failed"); + await expect(page.locator(".pressure-table tbody tr").first()).toContainText( + "email-delivery", + ); + await page.setViewportSize({ width: 1440, height: 1050 }); + await page.screenshot({ + path: `${artifacts}/queues-desktop.png`, + fullPage: true, + }); + await page.goto("/jobs/984213"); + await page.getByRole("button", { name: "Retry", exact: true }).click(); + await expect + .poll(() => fixture.mutations) + .toContain("POST /jobs/984213/retry"); + await page.getByRole("button", { name: "Cancel", exact: true }).click(); + await expect + .poll(() => fixture.mutations) + .toContain("POST /jobs/984213/cancel"); +}); + +test("mobile navigation, controls, job drilldown and layout at narrow sizes", async ({ + page, +}) => { + test.setTimeout(60_000); + await mockOperations(page); + await page.setViewportSize({ width: 390, height: 844 }); + await page.goto("/"); + await expect(page.locator(".work-counter").first()).toContainText("237,192"); + await page.screenshot({ + path: `${artifacts}/overview-mobile.png`, + fullPage: true, + }); + await page.screenshot({ + path: `${artifacts}/overview-mobile-top.png`, + fullPage: false, + }); + for (let index = 0; index < 3; index++) { + await page.getByRole("button", { name: "Toggle Sidebar" }).click(); + await page.getByRole("link", { name: "Queues", exact: true }).click(); + await expect(page.getByRole("searchbox")).toBeVisible(); + await expect(page.getByRole("dialog")).toHaveCount(0); + await page.getByRole("button", { name: "Toggle Sidebar" }).click(); + await page.getByRole("link", { name: "Overview", exact: true }).click(); + await expect( + page.getByRole("heading", { name: "Work in motion" }), + ).toBeVisible(); + await expect(page.getByRole("dialog")).toHaveCount(0); + } + await page.goto("/queues"); + await page.getByRole("searchbox").fill("email"); + await page.screenshot({ + path: `${artifacts}/queues-mobile.png`, + fullPage: true, + }); + const pauseBounds = await page + .getByRole("button", { name: "Pause", exact: true }) + .boundingBox(); + expect(pauseBounds?.height).toBeGreaterThanOrEqual(44); + await page.getByRole("link", { name: "236", exact: true }).click(); + await page.screenshot({ + path: `${artifacts}/jobs-mobile.png`, + fullPage: false, + }); + await page + .getByRole("link", { name: /SendTransactionalEmail/ }) + .first() + .click(); + await expect(page).toHaveURL(/jobs\/984213/); + await page.screenshot({ path: `${artifacts}/job-detail-mobile.png` }); + for (const width of [320, 390, 768, 1024, 1440]) { + await page.setViewportSize({ width, height: 900 }); + for (const route of [ + "/", + "/queues", + "/jobs", + "/queues/email-delivery", + "/runtime", + ]) { + await page.goto(route); + const heading = + route === "/" + ? "Work in motion" + : route === "/queues" + ? "Queues" + : route === "/jobs" + ? "Jobs" + : route === "/runtime" + ? "Workers" + : "email-delivery"; + await expect( + page.getByRole("heading", { name: heading, exact: true }), + ).toBeVisible(); + if (route === "/jobs") + await expect( + page + .getByText("SendTransactionalEmail") + .filter({ visible: true }) + .first(), + ).toBeVisible(); + if (route === "/runtime") + await expect( + page + .getByText("worker-eu-02", { exact: true }) + .filter({ visible: true }) + .first(), + ).toBeVisible(); + if (route === "/queues") + await expect( + page.getByRole("link", { name: "email-delivery", exact: true }), + ).toBeVisible(); + if (route === "/") + await expect(page.locator(".work-counter").first()).toContainText( + "237,192", + ); + await page.evaluate(() => document.fonts.ready); + if ( + (width === 390 || width === 1440) && + (route === "/runtime" || route.startsWith("/queues/")) + ) { + const view = route === "/runtime" ? "workers" : "queue-detail"; + await page.screenshot({ + path: `${artifacts}/${view}-${width === 390 ? "mobile" : "desktop"}.png`, + }); + } + if (width === 768 && route === "/jobs") await page.screenshot({ path: `${artifacts}/jobs-tablet.png` }); + await expect + .poll( + () => + page.evaluate( + () => document.documentElement.scrollWidth <= innerWidth, + ), + { message: `${route} at ${width}px should fit the viewport` }, + ) + .toBe(true); + } + } +}); + +for (const scenario of ["empty", "error", "loading"] as const) { + test(`${scenario} state is explicit without invented zeroes`, async ({ + page, + }) => { + await mockOperations(page, scenario); + await page.setViewportSize({ width: 1440, height: 1000 }); + await page.goto("/"); + if (scenario === "empty") + await expect( + page.getByText("No queues yet. Queues appear when registered or used."), + ).toBeVisible(); + if (scenario === "error") { + await expect(page.getByRole("alert")).toBeVisible({ timeout: 15000 }); + await expect(page.locator(".work-counter").first()).toContainText("—"); + } + if (scenario === "loading") + await expect(page.getByText("Loading snapshots…")).toBeVisible(); + await page.screenshot({ + path: `${artifacts}/${scenario}-desktop.png`, + fullPage: true, + }); + }); +} + +test("failed refresh retains known values and labels them out of date", async ({ + page, +}) => { + const fixture = await mockOperations(page); + await page.goto("/"); + await expect(page.locator(".work-counter").first()).toContainText("237,192"); + fixture.setReadFailure(true); + await page.getByRole("button", { name: "Refresh data", exact: true }).click(); + await expect(page.getByText(/Refresh failed ·/)).toBeVisible({ + timeout: 15000, + }); + await expect(page.locator(".work-counter").first()).toContainText("237,192"); + await page.screenshot({ + path: `${artifacts}/stale-desktop.png`, + fullPage: true, + }); + fixture.setReadFailure(false); + await page.getByRole("button", { name: "Refresh data", exact: true }).click(); + await expect(page.getByText(/Snapshots received/)).toBeVisible(); +}); + +test("read-only controls remain disabled and dark mode stays legible", async ({ + page, +}) => { + const fixture = await mockOperations(page, "busy", true); + await page.addInitScript(() => localStorage.setItem("theme", "dark")); + await page.setViewportSize({ width: 1440, height: 1050 }); + await page.goto("/"); + await expect( + page.getByText("Connected to a read-only database."), + ).toBeVisible(); + await expect(page.locator("html")).toHaveClass(/dark/); + await page.screenshot({ + path: `${artifacts}/overview-dark.png`, + fullPage: true, + }); + await page.goto("/queues"); + await expect( + page.getByRole("button", { name: "Pause", exact: true }).first(), + ).toBeDisabled(); + await expect( + page.getByRole("button", { name: "Drain…" }).first(), + ).toBeDisabled(); + await page.goto("/jobs/984213"); + await expect( + page.getByRole("button", { name: "Retry", exact: true }), + ).toBeDisabled(); + expect(fixture.mutations).toEqual([]); +}); diff --git a/awa-ui/frontend/e2e/queues.spec.ts b/awa-ui/frontend/e2e/queues.spec.ts index 0cc373a7e..a5c8be72b 100644 --- a/awa-ui/frontend/e2e/queues.spec.ts +++ b/awa-ui/frontend/e2e/queues.spec.ts @@ -2,7 +2,11 @@ import { test, expect, type Page, type Response } from "@playwright/test"; function isQueuesListResponse(response: Response): boolean { const url = new URL(response.url()); - return response.ok() && response.request().method() === "GET" && url.pathname === "/api/queues"; + return ( + response.ok() && + response.request().method() === "GET" && + url.pathname === "/api/queues" + ); } async function loadQueuesPage(page: Page) { @@ -22,24 +26,20 @@ test.describe("Queues page", () => { await loadQueuesPage(page); // Desktop table (visible at default viewport) - const queueTable = page.getByRole("grid", { name: "Queues" }); + const queueTable = page.getByRole("table", { name: "Queue pressure" }); await expect(queueTable).toBeVisible(); - // Columns were consolidated: Scheduled/Available fold into Queued; - // Mode/RateLimit fold into Capacity; Waiting is a subline under Queue. for (const header of [ "Queue", - "Queued", + "Available", + "Oldest available", "Running", - "Retry", - "Failed", - "Completed/hr", - "Capacity", - "Status", - "Actions", + "Retryable / failed", + "Completed last hour", + "Controls", ]) { await expect( - queueTable.getByRole("columnheader", { name: header, exact: true }) + queueTable.getByRole("columnheader", { name: header, exact: true }), ).toBeVisible(); } @@ -47,34 +47,33 @@ test.describe("Queues page", () => { await expect(queueTable.getByText("E2E Queue")).toBeVisible(); await expect(queueTable.getByText("e2e_test")).toBeVisible(); await expect( - queueTable.getByRole("link", { name: "legacy_queue", exact: true }) + queueTable.getByRole("link", { name: "legacy_queue", exact: true }), ).toBeVisible(); }); test("queue table shows descriptor description", async ({ page }) => { await loadQueuesPage(page); - const queueTable = page.getByRole("grid", { name: "Queues" }); + const queueTable = page.getByRole("table", { name: "Queue pressure" }); await expect( - queueTable.getByText("End-to-end queue used for UI coverage") + queueTable.getByText("End-to-end queue used for UI coverage"), ).toBeVisible(); }); - test("queue table surfaces consolidated capacity and actions columns", async ({ page }) => { + test("queue table surfaces available wait and controls", async ({ page }) => { await loadQueuesPage(page); - - const queueTable = page.getByRole("grid", { name: "Queues" }); - await expect(queueTable).toBeVisible(); - - // Mode / rate limit / waiting folded into the Capacity and Queue cells. - for (const header of ["Capacity", "Status", "Actions"]) { - await expect( - queueTable.getByRole("columnheader", { name: header, exact: true }) - ).toBeVisible(); - } + const queueTable = page.getByRole("table", { name: "Queue pressure" }); + await expect( + queueTable.getByRole("columnheader", { name: "Oldest available" }), + ).toBeVisible(); + await expect( + queueTable.getByRole("columnheader", { name: "Controls" }), + ).toBeVisible(); }); - test("queue table surfaces DLQ policy from runtime config", async ({ page }) => { + test("queue table surfaces DLQ policy from runtime config", async ({ + page, + }) => { await page.route("**/api/queues", async (route) => { await route.fulfill({ contentType: "application/json", @@ -136,38 +135,52 @@ test.describe("Queues page", () => { await page.goto("/queues"); - const queueTable = page.getByRole("grid", { name: "Queues" }); - await expect(queueTable.getByRole("rowheader", { name: /DLQ Off Queue/ })).toBeVisible(); - await expect(queueTable.getByText("DLQ off", { exact: true })).toBeVisible(); + const queueTable = page.getByRole("table", { name: "Queue pressure" }); + await expect( + queueTable.getByRole("rowheader", { name: /DLQ Off Queue/ }), + ).toBeVisible(); + await expect( + queueTable.getByText("DLQ off", { exact: true }), + ).toBeVisible(); }); test("click queue navigates to queue detail", async ({ page }) => { await loadQueuesPage(page); - const queueTable = page.getByRole("grid", { name: "Queues" }); + const queueTable = page.getByRole("table", { name: "Queue pressure" }); const queueLink = queueTable.getByRole("link", { name: "E2E Queue" }); await expect(queueLink).toBeVisible(); await queueLink.click(); await page.waitForURL(/\/queues\/e2e_test/); - await expect(page.getByRole("heading", { name: "E2E Queue" })).toBeVisible(); + await expect( + page.getByRole("heading", { name: "E2E Queue" }), + ).toBeVisible(); }); test("queue detail renders descriptor metadata", async ({ page }) => { await Promise.all([ - page.waitForResponse((r) => /\/api\/queues\/e2e_test$/.test(r.url()) && r.ok()), + page.waitForResponse( + (r) => /\/api\/queues\/e2e_test$/.test(r.url()) && r.ok(), + ), page.goto("/queues/e2e_test"), ]); - await expect(page.getByRole("heading", { name: "E2E Queue" })).toBeVisible(); + await expect( + page.getByRole("heading", { name: "E2E Queue" }), + ).toBeVisible(); await expect(page.getByText("e2e_test").first()).toBeVisible(); - await expect(page.getByText("End-to-end queue used for UI coverage")).toBeVisible(); + await expect( + page.getByText("End-to-end queue used for UI coverage"), + ).toBeVisible(); await expect(page.getByText("qa-platform")).toBeVisible(); await expect(page.getByText("critical")).toBeVisible(); }); - test("queue detail links to filtered DLQ rows when DLQ is enabled", async ({ page }) => { + test("queue detail links to filtered DLQ rows when DLQ is enabled", async ({ + page, + }) => { await page.route("**/api/queues/payments", async (route) => { await route.fulfill({ contentType: "application/json", @@ -231,7 +244,10 @@ test.describe("Queues page", () => { }); }); await page.route("**/api/dlq**", async (route) => { - await route.fulfill({ contentType: "application/json", body: JSON.stringify([]) }); + await route.fulfill({ + contentType: "application/json", + body: JSON.stringify([]), + }); }); await page.goto("/queues/payments"); @@ -244,16 +260,22 @@ test.describe("Queues page", () => { test("legacy queue still renders without descriptors", async ({ page }) => { await Promise.all([ - page.waitForResponse((r) => /\/api\/queues\/legacy_queue$/.test(r.url()) && r.ok()), + page.waitForResponse( + (r) => /\/api\/queues\/legacy_queue$/.test(r.url()) && r.ok(), + ), page.goto("/queues/legacy_queue"), ]); - await expect(page.getByRole("heading", { name: "legacy_queue" })).toBeVisible(); + await expect( + page.getByRole("heading", { name: "legacy_queue" }), + ).toBeVisible(); await expect(page.getByText("Descriptor health")).toBeVisible(); await expect(page.getByText("Not declared by a live worker")).toBeVisible(); }); - test("route-mocked descriptor stale and drift badges render", async ({ page }) => { + test("route-mocked descriptor stale and drift badges render", async ({ + page, + }) => { await page.route("**/api/queues", async (route) => { await route.fulfill({ contentType: "application/json", @@ -291,111 +313,73 @@ test.describe("Queues page", () => { }); await page.goto("/queues"); - const queueTable = page.getByRole("grid", { name: "Queues" }); - await expect(queueTable.getByText("Descriptor stale", { exact: true })).toBeVisible(); - await expect(queueTable.getByText("Descriptor drift", { exact: true })).toBeVisible(); - await expect(queueTable.getByText("Descriptor drift across live runtimes")).toBeVisible(); + const queueTable = page.getByRole("table", { name: "Queue pressure" }); + await expect( + queueTable.getByText("Descriptor stale", { exact: true }), + ).toBeVisible(); + await expect( + queueTable.getByText("Descriptor drift across live runtimes"), + ).toBeVisible(); }); - async function openActionsMenu(page: Page, queueName: string) { - const queueTable = page.getByRole("grid", { name: "Queues" }); - const row = queueTable.getByRole("row", { name: new RegExp(queueName) }); - await expect(row).toBeVisible(); - await row - .getByRole("button", { name: new RegExp(`Actions for ${queueName}`) }) - .click(); + function queueRow(page: Page) { + return page + .getByRole("table", { name: "Queue pressure" }) + .getByRole("row", { name: /E2E Queue/ }); } - test("Pause/Resume and Drain appear in the Actions menu", async ({ page }) => { + test("Pause or Resume and Drain controls are available", async ({ page }) => { await loadQueuesPage(page); - await openActionsMenu(page, "e2e_test"); - - // Menu renders either "Pause queue" or "Resume queue" depending on state, - // plus Drain. We just need one of pause/resume visible. - const pauseItem = page.getByRole("menuitem", { name: "Pause queue" }); - const resumeItem = page.getByRole("menuitem", { name: "Resume queue" }); - const pauseVisible = await pauseItem.isVisible().catch(() => false); - const resumeVisible = await resumeItem.isVisible().catch(() => false); - expect(pauseVisible || resumeVisible).toBeTruthy(); - - await expect(page.getByRole("menuitem", { name: /^Drain queue/ })).toBeVisible(); + await expect( + queueRow(page).getByRole("button", { name: /^(Pause|Resume)$/ }), + ).toBeVisible(); + await expect( + queueRow(page).getByRole("button", { name: "Drain…" }), + ).toBeVisible(); }); - test("Pause executes mutation from the Actions menu", async ({ page }) => { + test("Pause and Resume execute mutations", async ({ page }) => { await loadQueuesPage(page); - - // Ensure the queue is active so "Pause" is the available verb. - await openActionsMenu(page, "e2e_test"); - const resumeItem = page.getByRole("menuitem", { name: "Resume queue" }); - const isCurrentlyPaused = await resumeItem.isVisible().catch(() => false); - if (isCurrentlyPaused) { - await Promise.all([ - page.waitForResponse( - (r) => r.url().includes("/resume") && r.request().method() === "POST" - ), - resumeItem.click(), - ]); - await page.waitForResponse(isQueuesListResponse); - await openActionsMenu(page, "e2e_test"); - } else { - await page.keyboard.press("Escape"); - await openActionsMenu(page, "e2e_test"); + const row = queueRow(page); + if ( + await row.getByRole("button", { name: "Resume", exact: true }).isVisible() + ) { + await row.getByRole("button", { name: "Resume", exact: true }).click(); } - - const pauseItem = page.getByRole("menuitem", { name: "Pause queue" }); - await expect(pauseItem).toBeVisible(); + await expect( + row.getByRole("button", { name: "Pause", exact: true }), + ).toBeVisible(); const [pauseResponse] = await Promise.all([ page.waitForResponse( - (r) => r.url().includes("/pause") && r.request().method() === "POST" + (response) => + response.url().endsWith("/pause") && + response.request().method() === "POST", ), - pauseItem.click(), + row.getByRole("button", { name: "Pause", exact: true }).click(), ]); expect(pauseResponse.ok()).toBeTruthy(); - }); - - test("Resume executes mutation from the Actions menu", async ({ page }) => { - await loadQueuesPage(page); - - await openActionsMenu(page, "e2e_test"); - const pauseItem = page.getByRole("menuitem", { name: "Pause queue" }); - const isCurrentlyActive = await pauseItem.isVisible().catch(() => false); - if (isCurrentlyActive) { - await Promise.all([ - page.waitForResponse( - (r) => r.url().includes("/pause") && r.request().method() === "POST" - ), - pauseItem.click(), - ]); - await page.waitForResponse(isQueuesListResponse); - await openActionsMenu(page, "e2e_test"); - } else { - await page.keyboard.press("Escape"); - await openActionsMenu(page, "e2e_test"); - } - - const resumeItem = page.getByRole("menuitem", { name: "Resume queue" }); - await expect(resumeItem).toBeVisible(); + await expect( + row.getByRole("button", { name: "Resume", exact: true }), + ).toBeVisible(); const [resumeResponse] = await Promise.all([ page.waitForResponse( - (r) => r.url().includes("/resume") && r.request().method() === "POST" + (response) => + response.url().endsWith("/resume") && + response.request().method() === "POST", ), - resumeItem.click(), + row.getByRole("button", { name: "Resume", exact: true }).click(), ]); expect(resumeResponse.ok()).toBeTruthy(); - await page.waitForResponse(isQueuesListResponse); }); - test("Drain shows confirmation dialog from the Actions menu", async ({ page }) => { + test("Drain requires confirmation and can be cancelled", async ({ page }) => { await loadQueuesPage(page); - await openActionsMenu(page, "e2e_test"); - - await page.getByRole("menuitem", { name: /^Drain queue/ }).click(); - + await queueRow(page).getByRole("button", { name: "Drain…" }).click(); const dialog = page.getByRole("alertdialog"); await expect(dialog).toBeVisible(); - await expect(dialog.getByRole("heading", { name: /Drain queue/ })).toBeVisible(); - await expect(dialog.getByText("Running jobs will not be affected")).toBeVisible(); - + await expect( + dialog.getByText(/Running jobs will not be affected/), + ).toBeVisible(); await dialog.getByRole("button", { name: "Cancel", exact: true }).click(); await expect(dialog).not.toBeVisible(); }); diff --git a/awa-ui/frontend/e2e/runtime.spec.ts b/awa-ui/frontend/e2e/runtime.spec.ts index 6c3999c52..8138a0654 100644 --- a/awa-ui/frontend/e2e/runtime.spec.ts +++ b/awa-ui/frontend/e2e/runtime.spec.ts @@ -3,7 +3,7 @@ import { test, expect } from "@playwright/test"; test.describe("Runtime page", () => { test("navigate to /runtime, heading visible", async ({ page }) => { await page.goto("/runtime"); - await expect(page.getByRole("heading", { name: "Runtime" })).toBeVisible(); + await expect(page.getByRole("heading", { name: "Workers" })).toBeVisible(); }); test("renders empty states when no runtime snapshots exist", async ({ page }) => { diff --git a/awa-ui/frontend/package.json b/awa-ui/frontend/package.json index 35f3f69af..62bd44fe6 100644 --- a/awa-ui/frontend/package.json +++ b/awa-ui/frontend/package.json @@ -7,7 +7,8 @@ "dev": "vite", "build": "tsc -b && vite build", "lint": "tsc --noEmit", - "preview": "vite preview" + "preview": "vite preview", + "test:operations": "playwright test --config playwright.operations.config.ts" }, "dependencies": { "@heroicons/react": "^2", diff --git a/awa-ui/frontend/playwright.config.ts b/awa-ui/frontend/playwright.config.ts index 3a3349c7f..916333d72 100644 --- a/awa-ui/frontend/playwright.config.ts +++ b/awa-ui/frontend/playwright.config.ts @@ -11,6 +11,7 @@ const databaseUrl = export default defineConfig({ globalSetup: "./e2e/seed.ts", testDir: "./e2e", + testIgnore: "**/operations.spec.ts", fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, diff --git a/awa-ui/frontend/playwright.operations.config.ts b/awa-ui/frontend/playwright.operations.config.ts new file mode 100644 index 000000000..0395ee12d --- /dev/null +++ b/awa-ui/frontend/playwright.operations.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from "@playwright/test"; +export default defineConfig({ + testDir: "./e2e", + testMatch: "operations.spec.ts", + workers: 1, + reporter: "list", + use: { + baseURL: "http://127.0.0.1:4173", + reducedMotion: "reduce", + launchOptions: { + executablePath: process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH, + }, + }, + webServer: { + command: + "npm run dev -- --mode operations --host 127.0.0.1 --port 4173 --strictPort", + url: "http://127.0.0.1:4173", + reuseExistingServer: false, + }, +}); diff --git a/awa-ui/frontend/src/app.css b/awa-ui/frontend/src/app.css index 874caa0b1..28486f5f6 100644 --- a/awa-ui/frontend/src/app.css +++ b/awa-ui/frontend/src/app.css @@ -307,3 +307,137 @@ If you want to use the typography plugin (prose), uncomment the line below. outline: 1px solid var(--primary); transform: translateZ(0); } + +/* Operator views */ +.operations-overview { display: grid; gap: 24px; min-width: 0; } +.page-intro { display: flex; justify-content: space-between; align-items: center; gap: 16px; } +.page-intro h1 { font-size: clamp(26px, 3vw, 34px); line-height: 1.2; font-weight: 650; letter-spacing: -.045em; margin: 6px 0 8px; } +.page-intro p:not(.eyebrow) { color: var(--muted-fg); font-size: 14px; } +.eyebrow { font-size: 11px; text-transform: uppercase; letter-spacing: .12em; font-weight: 650; color: var(--muted-fg); } +.operator-link { color: var(--primary); font-size: 13px; font-weight: 600; white-space: nowrap; display: inline-flex; align-items: center; min-height: 44px; } +.snapshot-status { display: flex; gap: 8px; align-items: center; color: var(--muted-fg); font-size: 12px; margin-top: -10px; } +.status-dot { flex: 0 0 6px; height: 6px; border-radius: 100%; background: currentColor; } +.snapshot-warning { color: var(--danger-subtle-fg); } +.source-error { padding: 14px 18px; border: 1px solid var(--danger); background: var(--danger-subtle); color: var(--danger-subtle-fg); border-radius: 8px; font-size: 14px; } +.flow-summary { display: grid; grid-template-columns: 1.3fr 1fr; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; } +.completion-summary { padding: 24px; background: var(--primary-subtle); } +.completion-summary .eyebrow { color: var(--primary-subtle-fg); } +.completion-value { display: block; font-size: clamp(32px, 4vw, 44px); font-weight: 600; letter-spacing: -.045em; font-variant-numeric: tabular-nums; margin: 8px 0; line-height: 1.2; } +.completion-value span { font-size: 15px; letter-spacing: 0; font-weight: 400; color: var(--muted-fg); } +.completion-summary > p:last-child { font-size: 12px; color: var(--muted-fg); max-width: 400px; line-height: 1.6; } +.attention-summary { padding: 20px 24px; background: var(--bg); } +.attention-summary > p { margin-bottom: 8px; } +.attention-summary > a { display: grid; grid-template-columns: minmax(42px, auto) 1fr 16px; align-items: center; gap: 12px; min-height: 40px; font-size: 13px; } +.attention-summary > a:hover { color: var(--primary); } +.attention-summary strong { font-variant-numeric: tabular-nums; font-size: 18px; font-weight: 600; } +.attention-summary > a > span:last-child { color: var(--muted-fg); } +.section-label { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 12px; align-items: baseline; } +.section-label h2, .panel-heading h2 { font-weight: 600; font-size: 16px; letter-spacing: -.02em; } +.section-label > span { font-size: 12px; color: var(--muted-fg); } +.work-counters { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; background: var(--bg); } +.work-counter { padding: 16px; display: flex; flex-direction: column; gap: 7px; border-right: 1px solid var(--border); min-width: 0; } +.work-counter:last-child { border: 0; } +.work-counter:hover { background: var(--muted); } +.work-counter > span { font-size: 12px; font-weight: 550; } +.work-counter strong { font-size: clamp(18px, 1.8vw, 26px); font-weight: 600; letter-spacing: -.04em; font-variant-numeric: tabular-nums; } +.work-counter small { color: var(--muted-fg); font-size: 11px; line-height: 1.5; } +.counter-failed strong, .failure-value { color: var(--danger-subtle-fg); } +.counter-retryable strong, .retry-value { color: var(--warning-subtle-fg); } +.operations-panel { min-width: 0; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); overflow: hidden; } +.panel-heading { padding: 18px 20px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--border); } +.panel-heading p { font-size: 12px; color: var(--muted-fg); margin-top: 5px; line-height: 1.5; } +.panel-footnote { padding: 12px 20px; border-top: 1px solid var(--border); font-size: 11px; line-height: 1.6; color: var(--muted-fg); background: var(--muted); } +.panel-empty { padding: 32px 20px; color: var(--muted-fg); font-size: 14px; } +.queue-board { overflow-x: auto; } +.pressure-table { width: 100%; border-collapse: collapse; text-align: right; font-size: 13px; } +.pressure-table thead { background: var(--muted); } +.pressure-table thead th { font-size: 11px; color: var(--muted-fg); font-weight: 500; white-space: nowrap; } +.pressure-table thead th span { display: block; } +.pressure-table th, .pressure-table td { padding: 14px 16px; font-variant-numeric: tabular-nums; vertical-align: middle; } +.pressure-table th:first-child { text-align: left; } +.pressure-table tbody tr + tr { border-top: 1px solid var(--border); } +.pressure-table tbody tr:hover { background: var(--muted); } +.pressure-table td { white-space: nowrap; } +.pressure-table td a { display: inline-flex; align-items: center; min-height: 32px; } +.pressure-table a:hover { text-decoration: underline; text-underline-offset: 3px; } +.queue-identity { min-width: 200px; max-width: 330px; font-weight: 500; overflow-wrap: anywhere; } +.queue-identity > a { color: var(--primary); display: inline-flex; align-items: center; min-height: 32px; } +.queue-identity code { display: block; color: var(--muted-fg); font-size: 11px; } +.queue-context { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; color: var(--muted-fg); font-size: 11px; font-weight: 400; line-height: 1.6; } +.signal { border-radius: 4px; font-size: 10px; font-weight: 600; padding: 1px 5px; } +.signal-warning { background: var(--warning-subtle); color: var(--warning-subtle-fg); } +.wait-value { font-weight: 600; } +.queue-action-buttons { display: flex; justify-content: flex-end; gap: 4px; } +.overview-details { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: start; } +.worker-preview-row { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; gap: 12px; font-size: 12px; } +.worker-preview-row + .worker-preview-row, .failure-preview-row + .failure-preview-row { border-top: 1px solid var(--border); } +.worker-preview-row:hover, .failure-preview-row:hover { background: var(--muted); } +.worker-preview-row strong { display: block; font-size: 13px; font-weight: 550; margin-bottom: 4px; } +.worker-preview-row > span { text-align: right; color: var(--muted-fg); white-space: nowrap; } +.worker-preview-row > div { min-width: 0; overflow-wrap: anywhere; } +.worker-role { display: block; font-size: 11px; margin-top: 4px; } +.concern-text { color: var(--danger-subtle-fg); } +.healthy-text { color: var(--primary-subtle-fg); } +.failure-preview-row { display: block; padding: 14px 20px; font-size: 12px; overflow-wrap: anywhere; } +.failure-preview-row strong { font-size: 13px; font-weight: 550; } +.failure-preview-row div > span { display: block; color: var(--muted-fg); font-size: 11px; margin-top: 3px; } +.failure-preview-row p { color: var(--danger-subtle-fg); margin-top: 7px; } +.failure-preview-row > span { display: block; font-size: 11px; color: var(--muted-fg); margin-top: 7px; } +.queue-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 16px; } +.queue-filters label { display: grid; gap: 6px; font-size: 12px; font-weight: 500; } +.queue-filters input[type=search], .queue-filters select { border: 1px solid var(--border); background: var(--bg); color: var(--fg); border-radius: 7px; padding: 10px 12px; font-size: 14px; min-height: 44px; } +.queue-filters input[type=search] { min-width: 260px; } +.queue-filters .review-toggle { display: flex; align-items: center; gap: 8px; min-height: 44px; } +.queue-filters input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--primary); } +.operations-overview a:focus-visible, .operations-overview input:focus-visible, .operations-overview select:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; } +@media (max-width: 1100px) { + .work-counters { grid-template-columns: repeat(3, minmax(0, 1fr)); } + .work-counter:nth-child(-n+3) { border-bottom: 1px solid var(--border); } + .work-counter:nth-child(3n) { border-right: 0; } + .overview-details { grid-template-columns: 1fr; } +} +@media (max-width: 1023px) { + .queue-board { overflow: visible; } + .pressure-table, .pressure-table tbody { display: block; } + .pressure-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); } + .pressure-table tbody tr { display: grid; grid-template-columns: 1fr 1fr; padding: 12px 16px; gap: 8px 12px; } + .pressure-table th, .pressure-table td { padding: 0; display: block; text-align: left; } + .pressure-table .queue-identity { grid-column: 1 / -1; max-width: none; min-width: 0; margin-bottom: 4px; } + .pressure-table .queue-identity > a { min-height: 44px; } + .pressure-table td::before { content: attr(data-label); display: block; font-size: 11px; font-weight: 400; color: var(--muted-fg); margin-bottom: 2px; } + .pressure-table td a { min-height: 44px; } + .pressure-table .queue-controls { grid-column: 1 / -1; } + .pressure-table .queue-controls::before { content: none; } + .queue-action-buttons { justify-content: flex-start; margin-top: 6px; } +} +@media (max-width: 767px) { + .flow-summary { grid-template-columns: 1fr; } + .completion-summary { padding: 20px; } + .attention-summary { border-top: 1px solid var(--border); padding: 16px 20px; } + .attention-summary > a { min-height: 44px; } + .operations-overview { gap: 20px; } + .page-intro { align-items: start; } + .page-intro > .operator-link { display: none; } + .section-label { flex-direction: column; gap: 3px; } + .work-counters { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .work-counter { padding: 14px; } + .work-counter:nth-child(3n) { border-right: 1px solid var(--border); } + .work-counter:nth-child(2n) { border-right: 0; } + .work-counter:nth-child(-n+4) { border-bottom: 1px solid var(--border); } + .work-counter strong { font-size: 25px; } + .panel-heading { padding: 16px; align-items: start; } + .panel-footnote { padding: 12px 16px; } + .worker-preview-row, .failure-preview-row { padding: 14px 16px; } + .snapshot-cadence { display: block; } + .queue-filters { gap: 12px; } + .queue-filters > label:not(.review-toggle) { flex: 1 1 100%; } + .queue-filters input[type=search] { min-width: 0; width: 100%; } + [data-slot=sidebar-trigger], header button, main button { min-height: 44px; min-width: 44px; } + [data-slot=sidebar-item] { min-height: 44px; } + main { overflow-wrap: anywhere; } +} +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; } +} + +.dark .operator-link, .dark .queue-identity > a { color: var(--primary-subtle-fg); } diff --git a/awa-ui/frontend/src/components/QueuePressure.tsx b/awa-ui/frontend/src/components/QueuePressure.tsx new file mode 100644 index 000000000..f5a63fbde --- /dev/null +++ b/awa-ui/frontend/src/components/QueuePressure.tsx @@ -0,0 +1,138 @@ +import type { ReactNode } from "react"; +import { Link } from "@tanstack/react-router"; +import type { QueueStats, QueueRuntimeSummary } from "@/lib/api"; +import { dlqPolicyLabel } from "@/components/RuntimeDisplay"; +import { availableWait } from "@/lib/operations"; + +export function QueuePressure({ + queues, + runtime, + actions, +}: { + queues: QueueStats[]; + runtime?: Map; + actions?: (queue: QueueStats) => ReactNode; +}) { + return ( +
+ + + + + + + + + + {actions && } + + + + {queues.map((queue) => { + const workers = runtime?.get(queue.queue); + return ( + + + + + + + + {actions && ( + + )} + + ); + })} + +
QueueAvailableOldest availableRunningRetryable / failed + Completed last hour + Controls
+ + {queue.display_name?.trim() || queue.queue} + + {queue.display_name?.trim() && {queue.queue}} +
+ {queue.paused && ( + Paused + )} + + {queue.scheduled.toLocaleString()} scheduled ·{" "} + {queue.waiting_external.toLocaleString()} waiting external + +
+ {runtime && queue.description && ( +

{queue.description}

+ )} + {queue.descriptor_stale && ( +
+ Descriptor stale +
+ )} + {queue.descriptor_mismatch && ( +
+ Descriptor drift across live runtimes +
+ )} + {workers && ( +
+ {workers.healthy_instances}/{workers.live_instances} live + instances healthy + {workers.config_mismatch && " · config mismatch"} +
+ )} + {workers?.config && ( +
+ {dlqPolicyLabel(workers.config)} +
+ )} +
+ + {queue.available.toLocaleString()} + + + 0 ? "wait-value" : "text-muted-fg" + } + > + {availableWait(queue.lag_seconds)} + + + + {queue.running.toLocaleString()} + + + 0 ? "retry-value" : "text-muted-fg" + } + to="/jobs" + search={{ state: "retryable", q: `queue:${queue.queue}` }} + > + {queue.retryable.toLocaleString()} + + + 0 ? "failure-value" : "text-muted-fg" + } + to="/jobs" + search={{ state: "failed", q: `queue:${queue.queue}` }} + > + {queue.failed.toLocaleString()} + + + {queue.completed_last_hour.toLocaleString()} + + {actions(queue)} +
+
+ ); +} diff --git a/awa-ui/frontend/src/components/Shell.tsx b/awa-ui/frontend/src/components/Shell.tsx index a760aae31..4f586f3c2 100644 --- a/awa-ui/frontend/src/components/Shell.tsx +++ b/awa-ui/frontend/src/components/Shell.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useEffect, useLayoutEffect, useRef, useState } from "react"; import { Outlet, useRouterState, useNavigate } from "@tanstack/react-router"; import { Link as AriaLink, @@ -228,13 +228,13 @@ function useSidebarOpenState(): [boolean, (value: boolean) => void] { // Closes the mobile sidebar sheet on route change. No-op on desktop. function CloseMobileOnNavigate({ path }: { path: string }) { - const { isMobile, isOpenOnMobile, setIsOpenOnMobile } = useSidebar(); - useEffect(() => { - if (isMobile && isOpenOnMobile) { - setIsOpenOnMobile(false); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [path]); + const { isMobile, setIsOpenOnMobile } = useSidebar(); + const previousPath = useRef(path); + useLayoutEffect(() => { + if (previousPath.current === path) return; + previousPath.current = path; + if (isMobile) setIsOpenOnMobile(false); + }, [path, isMobile, setIsOpenOnMobile]); return null; } @@ -341,11 +341,12 @@ const IconBatchOps = () => ( ); const NAV_ITEMS = [ - { to: "/", label: "Dashboard", Icon: IconDashboard }, + { to: "/", label: "Overview", Icon: IconDashboard }, { to: "/jobs", label: "Jobs", Icon: IconJobs }, - { to: "/kinds", label: "Kinds", Icon: IconKinds }, { to: "/queues", label: "Queues", Icon: IconQueues }, - { to: "/runtime", label: "Runtime", Icon: IconRuntime }, + { to: "/dlq", label: "Dead letters", Icon: IconJobs }, + { to: "/kinds", label: "Kinds", Icon: IconKinds }, + { to: "/runtime", label: "Workers", Icon: IconRuntime }, { to: "/cron", label: "Cron", Icon: IconCron }, { to: "/batch-ops", label: "Batch Ops", Icon: IconBatchOps }, ] as const; @@ -419,6 +420,7 @@ export function Shell() { onOpenChange={setSidebarOpen} style={{ "--sidebar-width": "13.5rem" } as React.CSSProperties} > + - - + + + Skip to content + {/* Opaque: any translucency lets scrolled table text ghost through the sticky bar and fight the header content for legibility. */}
{instanceName && ( - {instanceName} + {instanceName} )} {peers.length > 0 && ( @@ -504,14 +508,18 @@ export function Shell() {
-
+
{showReadOnlyBanner && ( -
- Connected to a read-only database. Dashboard queries work, but admin actions are disabled. +
+ Connected to a read-only database. Live queries work; admin actions are disabled.
)} -
+
diff --git a/awa-ui/frontend/src/components/SnapshotStatus.tsx b/awa-ui/frontend/src/components/SnapshotStatus.tsx new file mode 100644 index 000000000..38fec8cc2 --- /dev/null +++ b/awa-ui/frontend/src/components/SnapshotStatus.tsx @@ -0,0 +1,45 @@ +import { useEffect, useState } from "react"; +import { usePollInterval } from "@/hooks/use-poll-interval"; + +interface SnapshotSource { + dataUpdatedAt: number; + isError: boolean; + isPending: boolean; +} +export function SnapshotStatus({ sources }: { sources: SnapshotSource[] }) { + const poll = usePollInterval(); + const [now, setNow] = useState(Date.now); + useEffect(() => { + const timer = setInterval(() => setNow(Date.now()), 1000); + return () => clearInterval(timer); + }, []); + const updated = sources.map((source) => source.dataUpdatedAt); + const oldest = Math.min(...updated); + const failed = sources.some((source) => source.isError); + const pending = sources.some((source) => source.isPending); + const age = oldest ? Math.max(0, Math.floor((now - oldest) / 1000)) : null; + const delayed = + age !== null && age * 1000 > Math.max(30000, poll.interval * 2); + return ( +
+
+ ); +} diff --git a/awa-ui/frontend/src/lib/operations.ts b/awa-ui/frontend/src/lib/operations.ts new file mode 100644 index 000000000..72ea53b44 --- /dev/null +++ b/awa-ui/frontend/src/lib/operations.ts @@ -0,0 +1,43 @@ +import type { QueueStats, RuntimeInstance } from "./api"; + +export function availableWait(seconds: number | null): string { + if (seconds === null || !Number.isFinite(seconds)) return "—"; + const value = Math.max(0, seconds); + if (value < 60) return `${value.toFixed(1)} s`; + if (value < 3600) + return `${Math.floor(value / 60)}m ${Math.floor(value % 60)}s`; + return `${Math.floor(value / 3600)}h ${Math.floor((value % 3600) / 60)}m`; +} + +export function queueNeedsReview(queue: QueueStats): boolean { + return ( + queue.paused || + queue.failed > 0 || + queue.retryable > 0 || + queue.descriptor_mismatch || + queue.descriptor_stale + ); +} + +export function compareQueuePressure( + left: QueueStats, + right: QueueStats, +): number { + return ( + (right.lag_seconds ?? -1) - (left.lag_seconds ?? -1) || + right.available - left.available || + left.queue.localeCompare(right.queue) + ); +} + +export function runtimeConcern(instance: RuntimeInstance): string { + if (instance.stale) return "Snapshot stale · health unknown"; + if (instance.shutting_down) return "Shutting down"; + const problems = [ + !instance.postgres_connected && "Postgres disconnected", + !instance.poll_loop_alive && "Poll loop stopped", + !instance.heartbeat_alive && "Heartbeat loop stopped", + !instance.maintenance_alive && "Maintenance loop stopped", + ].filter(Boolean); + return problems.join(" · ") || (instance.healthy ? "Healthy" : "Degraded"); +} diff --git a/awa-ui/frontend/src/routes/index.tsx b/awa-ui/frontend/src/routes/index.tsx index 6400e1d91..99925cdac 100644 --- a/awa-ui/frontend/src/routes/index.tsx +++ b/awa-ui/frontend/src/routes/index.tsx @@ -1,586 +1,332 @@ -import { useMemo } from "react"; import { useQuery } from "@tanstack/react-query"; -import { Link, useNavigate } from "@tanstack/react-router"; +import { Link } from "@tanstack/react-router"; import { fetchStats, fetchQueues, fetchJobs, fetchRuntime, - fetchTimeseries, + fetchDlqDepth, } from "@/lib/api"; -import type { - StateCounts, - QueueStats, - JobRow, - RuntimeOverview, - TimeseriesBucket, -} from "@/lib/api"; -import { StateBadge } from "@/components/StateBadge"; -import { Sparkline } from "@/components/Sparkline"; -import { Heading } from "@/components/ui/heading"; -import { Card, CardAction, CardContent, CardHeader } from "@/components/ui/card"; -import { - Table, - TableHeader, - TableBody, - TableRow, - TableCell, - TableColumn, -} from "@/components/ui/table"; -import { Badge } from "@/components/ui/badge"; -import { LagValue } from "@/components/LagValue"; +import { compareQueuePressure, runtimeConcern } from "@/lib/operations"; import { timeAgo } from "@/lib/time"; -import { DASHBOARD_QUEUE_LIMIT } from "@/lib/constants"; import { usePollInterval } from "@/hooks/use-poll-interval"; +import { QueuePressure } from "@/components/QueuePressure"; +import { SnapshotStatus } from "@/components/SnapshotStatus"; -/** Background tint per state for counter cards */ -const STATE_CARD_BG: Record = { - available: "bg-info-subtle", - running: "bg-success-subtle", - failed: "bg-danger-subtle", - scheduled: "bg-secondary/50", - waiting_external: "bg-[oklch(0.87_0.07_280)]/30", -}; - -/** Headline metrics — includes deferred and callback-blocked work */ -const COUNTER_KEYS = ["available", "running", "failed", "scheduled", "waiting_external"] as const; +const STATES = [ + ["available", "Available", "Ready to be claimed"], + ["running", "Running", "Executing now"], + ["retryable", "Retryable", "Waiting for another attempt"], + ["failed", "Failed", "Requires review"], + ["scheduled", "Scheduled", "Deferred until run time"], + ["waiting_external", "Waiting external", "Awaiting a callback"], +] as const; export function DashboardPage() { - const navigate = useNavigate(); const poll = usePollInterval(); - - const statsQuery = useQuery({ + const polling = { refetchInterval: poll.interval, staleTime: poll.staleTime }; + const stats = useQuery({ queryKey: ["stats"], queryFn: fetchStats, - refetchInterval: poll.interval, staleTime: poll.staleTime, + ...polling, }); - - // Timeseries powers the inline sparklines on the state counter cards. - // Returns an empty array on pre-v10 deployments / seed-free databases, in - // which case Sparkline renders an empty slot of its reserved size so the - // card layout doesn't jump. - const timeseriesQuery = useQuery({ - queryKey: ["stats", "timeseries", 60], - queryFn: () => fetchTimeseries(60), - refetchInterval: poll.interval, - staleTime: poll.staleTime, - }); - - /** Pivot the flat timeseries response into a per-state numeric series - * suitable for . Missing buckets are filled as 0. */ - const seriesByState = useMemo(() => { - const buckets = timeseriesQuery.data ?? []; - const byBucket = new Map>(); - const ordered: string[] = []; - for (const point of buckets) { - if (!byBucket.has(point.bucket)) { - byBucket.set(point.bucket, new Map()); - ordered.push(point.bucket); - } - byBucket.get(point.bucket)!.set(point.state, point.count); - } - ordered.sort(); - const result: Record = {}; - for (const bucket of ordered) { - const stateMap = byBucket.get(bucket)!; - for (const state of stateMap.keys()) { - if (!result[state]) result[state] = []; - } - } - for (const bucket of ordered) { - const stateMap = byBucket.get(bucket)!; - for (const state of Object.keys(result)) { - const series = result[state]; - if (series) series.push(stateMap.get(state) ?? 0); - } - } - return result; - }, [timeseriesQuery.data]); - - const queuesQuery = useQuery({ + const queues = useQuery({ queryKey: ["queues"], queryFn: fetchQueues, - refetchInterval: poll.interval, staleTime: poll.staleTime, + ...polling, }); - - const failedQuery = useQuery({ - queryKey: ["jobs", { state: "failed", limit: 10 }], - queryFn: () => fetchJobs({ state: "failed", limit: 10 }), - refetchInterval: poll.interval, staleTime: poll.staleTime, - }); - - const runtimeQuery = useQuery({ + const runtime = useQuery({ queryKey: ["runtime"], queryFn: fetchRuntime, - refetchInterval: poll.interval, staleTime: poll.staleTime, + ...polling, }); - - const completedPerHour = queuesQuery.data - ? queuesQuery.data.reduce((sum, q) => sum + q.completed_last_hour, 0) - : null; - - const totalJobs = statsQuery.data - ? Object.values(statsQuery.data).reduce((a, b) => a + b, 0) - : null; - - // Sort queues by visible workload so deferred-heavy queues stay prominent. - const topQueues = queuesQuery.data - ? [...queuesQuery.data] - .sort( - (a, b) => b.total_queued + b.failed - (a.total_queued + a.failed) - ) - .slice(0, DASHBOARD_QUEUE_LIMIT) - : []; - - const hasMoreQueues = - queuesQuery.data && queuesQuery.data.length > DASHBOARD_QUEUE_LIMIT; + const failures = useQuery({ + queryKey: ["jobs", { state: "failed", limit: 5 }], + queryFn: () => fetchJobs({ state: "failed", limit: 5 }), + ...polling, + }); + const dlq = useQuery({ + queryKey: ["dlq-depth"], + queryFn: fetchDlqDepth, + refetchInterval: Math.max(poll.interval, 60_000), + staleTime: Math.max(poll.staleTime, 60_000), + }); + const topQueues = [...(queues.data ?? [])] + .sort(compareQueuePressure) + .slice(0, 6); + const workers = [...(runtime.data?.instances ?? [])] + .sort( + (left, right) => + Number(right.stale || !right.healthy) - + Number(left.stale || !left.healthy), + ) + .slice(0, 4); + const completed = queues.data?.reduce( + (sum, queue) => sum + queue.completed_last_hour, + 0, + ); + const paused = queues.data?.filter((queue) => queue.paused).length; + const degraded = runtime.data?.instances.filter( + (instance) => !instance.stale && !instance.healthy, + ).length; + const sources = [stats, queues, runtime, failures, dlq]; + const errors = [ + "Job counts", + "Queues", + "Workers", + "Failed jobs", + "Dead letter queue", + ].filter((_, index) => sources[index]?.isError); return ( -
- Dashboard +
+
+
+

Operations / overview

+

Work in motion

+

Queue pressure, worker health, and work that needs attention.

+
+ + Explore jobs ↗ + +
+ + {errors.length > 0 && ( +
+ Could not refresh: {errors.join(", ")}. Previous values remain visible + where available. Use Refresh data to retry. +
+ )} - {/* Headline counter cards */} -
- {COUNTER_KEYS.map((key) => { - const count = statsQuery.data?.[key]; - const bg = STATE_CARD_BG[key] ?? ""; - const series = seriesByState[key] ?? []; - return ( +
+
+

Completed · last 60 minutes

+ + {completed?.toLocaleString() ?? "—"} + jobs + +

+ Completions retained from a rolling hour. Current counts below are + snapshots. +

+
+
+

Review & intervene

+ + {paused ?? "—"} + paused queues + + + + + {runtime.data + ? ( + runtime.data.stale_instances + (degraded ?? 0) + ).toLocaleString() + : "—"} + + stale or degraded instances + + + + {dlq.data?.total.toLocaleString() ?? "—"} + + dead letter jobs + + refresh every {Math.max(poll.interval, 60_000) / 1000}s + + + + +
+
+ +
+
+

Current work

+ Counts now · may lag behind execution +
+
+ {STATES.map(([state, label, description]) => ( - - -
- {statsQuery.isLoading ? ( - - ) : ( - (count ?? 0).toLocaleString() - )} -
-
- - -
-
-
+ {label} + + {stats.data ? (stats.data[state] ?? 0).toLocaleString() : "—"} + + {description} - ); - })} - - - -
- {queuesQuery.isLoading ? ( - - ) : completedPerHour != null ? ( - completedPerHour.toLocaleString() - ) : ( - "—" - )} -
-
completed/hr
-
-
- -
- - {/* Total jobs count */} - {totalJobs != null && ( -

- {totalJobs.toLocaleString()} total jobs across{" "} - {queuesQuery.data?.length ?? 0} queues -

- )} + ))} +
+ - - 0 - ? `${runtimeQuery.data.instances.length} instance(s) · snapshots every ${ - (runtimeQuery.data.instances[0]?.snapshot_interval_ms ?? 10000) >= 1000 - ? `${Math.round((runtimeQuery.data.instances[0]?.snapshot_interval_ms ?? 10000) / 1000)}s` - : `${runtimeQuery.data.instances[0]?.snapshot_interval_ms ?? 0}ms` - }` - : "Worker instances, leader health, and current runtime topology" - } - > - - - Open runtime - - - - -
-
-
Live
-
- {runtimeQuery.data?.live_instances ?? "—"} -
-
-
-
Healthy
-
- {runtimeQuery.data?.healthy_instances ?? "—"} -
-
-
-
Leader
-
- {runtimeQuery.data?.leader_instances ?? "—"} -
-
-
-
Stale
-
- {runtimeQuery.data?.stale_instances ?? "—"} -
-
+
+
+
+

Where work is waiting

+

+ Top {topQueues.length} of {queues.data?.length ?? "—"} queues · + longest available wait first +

+ + All queues ↗ + +
+ {topQueues.length ? ( + + ) : ( +

+ {queues.isPending + ? "Loading queue snapshots…" + : queues.isError + ? "Queue data unavailable." + : "No queues yet. Queues appear when registered or used."} +

+ )} +

+ Oldest available = time since the earliest available job’s run time. + Scheduled, retryable, and external waits are separate; a single + snapshot does not show whether a backlog is growing. +

+
- {/* Mobile runtime cards */} - {(runtimeQuery.data?.instances.length ?? 0) === 0 ? ( -
- {runtimeQuery.isLoading - ? "Loading runtime…" - : runtimeQuery.isError - ? "Failed to load runtime data." - : "No runtime snapshots yet. Start a worker to populate this view."} -
- ) : ( -
- {runtimeQuery.data!.instances.map((instance) => { - const label = instance.hostname ?? `pid ${instance.pid}`; - const healthLabel = instance.stale - ? "Stale" - : instance.healthy - ? "Healthy" - : "Degraded"; - const healthIntent = instance.stale - ? ("warning" as const) - : instance.healthy - ? ("success" as const) - : ("danger" as const); - return ( -
-
-
- {label} - - {instance.version} - -
- {healthLabel} -
-
- - poll - - - hb - - - maint - - {instance.leader && ( - Leader - )} -
-
- {instance.queues.length} queue(s) · seen {timeAgo(instance.last_seen_at)} -
-
- ); - })} +
+
+
+
+

Worker health

+

+ {runtime.data + ? `${runtime.data.healthy_instances} healthy · ${runtime.data.live_instances} live · ${runtime.data.stale_instances} stale · ${runtime.data.leader_instances} leader` + : "Runtime snapshots"} +

- )} - - {/* Desktop runtime table */} - - - Instance - Health - Loops - Role - Queues - Seen - - ( -
- {runtimeQuery.isLoading - ? "Loading runtime…" - : runtimeQuery.isError - ? "Failed to load runtime data." - : "No runtime snapshots yet. Start a worker to populate this view."} -
- )} + - {(runtimeQuery.data?.instances ?? []).map((instance) => { - const label = instance.hostname ?? `pid ${instance.pid}`; - const healthLabel = instance.stale - ? "Stale" - : instance.healthy - ? "Healthy" - : "Degraded"; - const healthIntent = instance.stale - ? "warning" - : instance.healthy - ? "success" - : "danger"; - return ( - - -
{label}
-
- {instance.version} · pid {instance.pid} -
-
- - {healthLabel} - - -
- - poll - - - heartbeat - - - maintenance - -
-
- - {instance.leader ? ( - Leader - ) : ( - Worker - )} - - - {instance.queues.length} - - {timeAgo(instance.last_seen_at)} -
- ); - })} -
-
- - - - {/* Queue summary — top N by activity */} - - - - - - Queue - Total queued - Scheduled - Available - Retryable - Running - Failed - Waiting - Completed/hr - Lag (s) - Status - - ( -
+
+
+ {workers.length ? ( + workers.map((instance) => ( + - {queuesQuery.isLoading - ? "Loading queues…" - : queuesQuery.isError - ? "Failed to load queues." - : "No queues found."} -
- )} - > - {topQueues.map((q) => ( - - void navigate({ - to: "/jobs", - search: { q: `queue:${q.queue}` }, - }) +
+ + {instance.hostname || `pid ${instance.pid}`} + + - -
- - {q.display_name ?? q.queue} - - {q.display_name && ( -
- {q.queue} -
- )} -
-
- - {q.total_queued.toLocaleString()} - - - {q.scheduled.toLocaleString()} - - - {q.available.toLocaleString()} - - - {q.retryable.toLocaleString()} - - - {q.running.toLocaleString()} - - - 0 ? "text-danger" : ""}> - {q.failed.toLocaleString()} - - - - {q.waiting_external > 0 - ? q.waiting_external.toLocaleString() - : "-"} - - - {q.completed_last_hour.toLocaleString()} - - - - - - {q.paused ? ( - Paused - ) : ( - Active - )} - - - ))} - -
- {hasMoreQueues && topQueues.length > 0 && ( -
- - View all {queuesQuery.data?.length} queues → - + {runtimeConcern(instance)} + +
+ + Seen {timeAgo(instance.last_seen_at)} + + {instance.leader ? "Leader" : "Worker"} ·{" "} + {instance.version} + + + + )) + ) : ( +

+ {runtime.isPending + ? "Loading workers…" + : runtime.isError + ? "Worker data unavailable." + : "No runtime snapshots. Start a worker to report health."} +

+ )} +
+

+ Showing up to 4 instances, stale and degraded first. Stale snapshots + cannot establish current worker health. +

+
+
+
+
+

Failed jobs to inspect

+

Latest 5 retained failed jobs · not a failure rate

- )} - - - - {/* Recent failures */} - - - - - - ID - Kind - Queue - Attempt - Failed - Error - - ( -
- {failedQuery.isLoading - ? "Loading failures…" - : failedQuery.isError - ? "Failed to load recent failures." - : "No recent failures."} -
- )} + - {(failedQuery.data ?? []).map((job) => { - const lastErr = - job.errors && job.errors.length > 0 - ? job.errors[job.errors.length - 1] - : null; - const errMsg = - lastErr && - typeof lastErr === "object" && - lastErr !== null - ? String( - (lastErr as Record)["error"] ?? "" - ) - : ""; - return ( - - void navigate({ - to: "/jobs/$id", - params: { id: String(job.id) }, - }) - } - > - - {job.id} - - {job.kind} - {job.queue} - - {job.attempt}/{job.max_attempts} - - - {job.finalized_at - ? timeAgo(job.finalized_at) - : "-"} - - - {errMsg || "-"} - - - ); - })} -
-
-
-
+ All failed ↗ + +
+
+ {failures.data?.length ? ( + failures.data.map((job) => { + const last = job.errors?.[job.errors.length - 1]; + const message = + typeof last === "object" && last && "error" in last + ? String(last.error) + : last + ? JSON.stringify(last) + : "No error details recorded"; + return ( + +
+ + {job.kind_descriptor?.display_name?.trim() || job.kind} + + + #{job.id} · {job.queue} · attempt {job.attempt}/ + {job.max_attempts} + +
+

{message}

+ + {job.finalized_at + ? `Finalized ${timeAgo(job.finalized_at)}` + : "Finalization time unavailable"}{" "} + ↗ + + + ); + }) + ) : ( +

+ {failures.isPending + ? "Loading failed jobs…" + : failures.isError + ? "Failed-job data unavailable." + : "No failed jobs in retained data."} +

+ )} +
+
+
); } diff --git a/awa-ui/frontend/src/routes/jobs.tsx b/awa-ui/frontend/src/routes/jobs.tsx index 57202d6bf..2286c9096 100644 --- a/awa-ui/frontend/src/routes/jobs.tsx +++ b/awa-ui/frontend/src/routes/jobs.tsx @@ -4,7 +4,7 @@ import { useQueryClient, } from "@tanstack/react-query"; import { useState, useCallback, useMemo } from "react"; -import { useNavigate, useSearch } from "@tanstack/react-router"; +import { Link, useNavigate, useSearch } from "@tanstack/react-router"; import { fetchJobs, fetchStats, @@ -39,6 +39,7 @@ import { RETRYABLE_STATES, TERMINAL_STATES, } from "@/lib/constants"; +import { SnapshotStatus } from "@/components/SnapshotStatus"; import { usePollInterval } from "@/hooks/use-poll-interval"; const STATES = [ @@ -279,24 +280,30 @@ export function JobsPage() { )}
+ {hasSel ? ( +

Job refresh paused while rows are selected.

+ ) : ( + + )} + {/* Queue context banner — shown when filtering by a single queue */} {activeQueue && queueStats && (
{queueStats.paused ? ( Paused ) : ( - Active + Claims enabled )} {queueStats.description && ( {queueStats.description} )} - {queueStats.available} available ·{" "} - {queueStats.running} running ·{" "} + {queueStats.available.toLocaleString()} available ·{" "} + {queueStats.running.toLocaleString()} running ·{" "} 0 ? "text-danger" : ""}> - {queueStats.failed} failed + {queueStats.failed.toLocaleString()} failed {" "} - · {queueStats.completed_last_hour}/hr + · {queueStats.completed_last_hour.toLocaleString()} completed in the last hour
{queueStats.paused ? ( @@ -334,12 +341,17 @@ export function JobsPage() { {/* Compact state filter pills + search on same row */}
{STATES.map((s) => { - const count = s === "all" ? total : statsQuery.data?.[s]; + const count = activeQueue + ? s === "all" || s === "completed" || s === "cancelled" + ? undefined + : queueStats?.[s as keyof QueueStats] + : s === "all" ? total : statsQuery.data?.[s]; const isActive = filters.state === s; return ( +
+ )} + + )} + + -
-
-
-
-

Worker health

-

- {runtime.data - ? `${runtime.data.healthy_instances} healthy · ${runtime.data.live_instances} live · ${runtime.data.stale_instances} stale · ${runtime.data.leader_instances} leader` - : "Runtime snapshots"} -

-
- - All workers ↗ - -
-
- {workers.length ? ( - workers.map((instance) => ( - -
- - {instance.hostname || `pid ${instance.pid}`} - - + + + + + All failed + + + + + {failureGroups.length ? ( +
    + {failureGroups.slice(0, 6).map((group) => ( +
  • + - {runtimeConcern(instance)} - -
- - Seen {timeAgo(instance.last_seen_at)} - - {instance.leader ? "Leader" : "Worker"} ·{" "} - {instance.version} - - - - )) - ) : ( -

- {runtime.isPending - ? "Loading workers…" - : runtime.isError - ? "Worker data unavailable." - : "No runtime snapshots. Start a worker to report health."} -

- )} -
-

- Showing up to 4 instances, stale and degraded first. Stale snapshots - cannot establish current worker health. -

-
-
-
-
-

Failed jobs to inspect

-

Latest 5 retained failed jobs · not a failure rate

-
- - All failed ↗ - -
-
- {failures.data?.length ? ( - failures.data.map((job) => { - const last = job.errors?.[job.errors.length - 1]; - const message = - typeof last === "object" && last && "error" in last - ? String(last.error) - : last - ? JSON.stringify(last) - : "No error details recorded"; - return ( - -
- - {job.kind_descriptor?.display_name?.trim() || job.kind} - - - #{job.id} · {job.queue} · attempt {job.attempt}/ - {job.max_attempts} + + ×{group.count} -
-

{message}

- - {job.finalized_at - ? `Finalized ${timeAgo(job.finalized_at)}` - : "Finalization time unavailable"}{" "} - ↗ - - - ); - }) + + + {group.latest.kind_descriptor?.display_name?.trim() || + group.kind} + + {" "} + · {group.queue} + + + + {group.message} + + + + {group.latest.finalized_at + ? timeAgo(group.latest.finalized_at) + : "—"} + + + + ))} + ) : ( -

+

{failures.isPending ? "Loading failed jobs…" : failures.isError @@ -324,8 +392,72 @@ export function DashboardPage() { : "No failed jobs in retained data."}

)} -
-
+ + + + + + + + All workers + + + + + {troubled.length ? ( +
    + {troubled.slice(0, 6).map((instance) => ( +
  • + + + + {instance.hostname || `pid ${instance.pid}`} + + + {runtimeConcern(instance)} + + + + Seen {timeAgo(instance.last_seen_at)} + {instance.version} + + +
  • + ))} + {troubled.length > 6 && ( +
  • + and {troubled.length - 6} more on the Workers page +
  • + )} +
+ ) : ( +

+ {runtime.isPending + ? "Loading workers…" + : runtime.isError + ? "Worker data unavailable." + : instances.length + ? `All ${instances.length} reporting instances are healthy.` + : "No runtime snapshots. Start a worker to report health."} +

+ )} +
+
); diff --git a/awa-ui/frontend/src/routes/queue-detail.tsx b/awa-ui/frontend/src/routes/queue-detail.tsx index fe9873ce8..84d72f2b1 100644 --- a/awa-ui/frontend/src/routes/queue-detail.tsx +++ b/awa-ui/frontend/src/routes/queue-detail.tsx @@ -9,6 +9,7 @@ import { drainQueue, fetchQueue, fetchQueueRuntime, + fetchQueueHistory, pauseQueue, resumeQueue, } from "@/lib/api"; @@ -24,7 +25,9 @@ import { DescriptionTerm, } from "@/components/ui/description-list"; import { ConfirmDialog } from "@/components/ConfirmDialog"; -import { availableWait } from "@/lib/operations"; +import { assessQueue, formatDuration, formatRate } from "@/lib/operations"; +import { HEALTH_BADGE, SPARK_TONE } from "@/components/QueueFlowTable"; +import { HistorySpark } from "@/components/HistorySpark"; import type { QueueRuntimeSummary } from "@/lib/api"; import { usePollInterval } from "@/hooks/use-poll-interval"; import { SnapshotStatus } from "@/components/SnapshotStatus"; @@ -52,6 +55,13 @@ export function QueueDetailPage() { refetchInterval: poll.interval, staleTime: poll.staleTime, }); + const historyQuery = useQuery({ + queryKey: ["queue-history"], + queryFn: fetchQueueHistory, + enabled: !!queueName, + refetchInterval: poll.interval, staleTime: poll.staleTime, + }); + const runtimeQuery = useQuery({ queryKey: ["queue-runtime"], queryFn: fetchQueueRuntime, @@ -111,6 +121,13 @@ export function QueueDetailPage() { // Treat empty display_name as missing so a declared-but-blank row // doesn't render an empty page title. const title = queue.display_name?.trim() ? queue.display_name : queue.queue; + const series = historyQuery.data?.queues[queue.queue]; + const assessment = assessQueue( + queue, + series, + historyQuery.data?.bucket_secs ?? 60, + historyQuery.data?.enabled ?? false, + ); const descriptorSyncLabel = queue.descriptor_last_seen_at ? timeAgo(queue.descriptor_last_seen_at) : null; @@ -131,11 +148,7 @@ export function QueueDetailPage() { {queue.queue} )} - {queue.paused ? ( - Paused - ) : ( - Claims enabled - )} + {assessment.label} {runtime?.config && ( {dlqPolicyLabel(runtime.config)} @@ -145,7 +158,25 @@ export function QueueDetailPage() { {queue.descriptor_mismatch && Descriptor drift}
- + + +
+
+

{assessment.detail}

+

+ {queue.available.toLocaleString()} waiting + {queue.available > 0 && ` · oldest ${formatDuration(queue.lag_seconds)}`} + {` · ${formatRate(queue.completed_last_hour / 60)} finishing (hour average)`} +

+
+ +
{queue.description && (

{queue.description}

@@ -228,7 +259,7 @@ export function QueueDetailPage() { Oldest available wait - {availableWait(queue.lag_seconds)} + {formatDuration(queue.lag_seconds)}
diff --git a/awa-ui/frontend/src/routes/queues.tsx b/awa-ui/frontend/src/routes/queues.tsx index d676a5430..d9999b658 100644 --- a/awa-ui/frontend/src/routes/queues.tsx +++ b/awa-ui/frontend/src/routes/queues.tsx @@ -1,42 +1,96 @@ import { useState } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; +import { useNavigate, useSearch } from "@tanstack/react-router"; import { fetchQueues, + fetchQueueHistory, fetchQueueRuntime, pauseQueue, resumeQueue, drainQueue, } from "@/lib/api"; import type { QueueStats } from "@/lib/api"; -import { compareQueuePressure, queueNeedsReview } from "@/lib/operations"; +import { assessQueues, type AssessedQueue } from "@/lib/operations"; import { useReadOnly } from "@/hooks/use-read-only"; import { usePollInterval } from "@/hooks/use-poll-interval"; import { toast } from "@/components/ui/toast"; import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { Checkbox } from "@/components/ui/checkbox"; +import { Heading } from "@/components/ui/heading"; +import { + NativeSelect, + NativeSelectContent, +} from "@/components/ui/native-select"; +import { SearchField, SearchInput } from "@/components/ui/search-field"; import { ConfirmDialog } from "@/components/ConfirmDialog"; -import { QueuePressure } from "@/components/QueuePressure"; +import { QueueFlowTable } from "@/components/QueueFlowTable"; import { SnapshotStatus } from "@/components/SnapshotStatus"; +const SORTS: Record< + string, + { label: string; compare?: (a: AssessedQueue, b: AssessedQueue) => number } +> = { + risk: { label: "Risk" }, + waiting: { + label: "Most waiting", + compare: (a, b) => b.queue.available - a.queue.available, + }, + wait: { + label: "Longest wait", + compare: (a, b) => + (b.queue.lag_seconds ?? -1) - (a.queue.lag_seconds ?? -1), + }, + failed: { + label: "Most failed", + compare: (a, b) => b.queue.failed - a.queue.failed, + }, + name: { + label: "Name", + compare: (a, b) => a.queue.queue.localeCompare(b.queue.queue), + }, +}; + export function QueuesPage() { const queryClient = useQueryClient(); + const navigate = useNavigate(); + const params = useSearch({ strict: false }) as Record< + string, + string | undefined + >; + const search = params.q ?? ""; + const sort = params.sort && SORTS[params.sort] ? params.sort : "risk"; + const attentionOnly = params.attention === "1"; + const setParam = (key: string, value: string | undefined) => + void navigate({ + to: "/queues", + search: { ...params, [key]: value || undefined }, + replace: true, + }); + const [drainTarget, setDrainTarget] = useState(null); - const [search, setSearch] = useState(""); - const [reviewOnly, setReviewOnly] = useState(false); - const [sort, setSort] = useState("wait"); const poll = usePollInterval(); const readOnly = useReadOnly(); + const polling = { refetchInterval: poll.interval, staleTime: poll.staleTime }; const queuesQuery = useQuery({ queryKey: ["queues"], queryFn: fetchQueues, - refetchInterval: poll.interval, - staleTime: poll.staleTime, + ...polling, + }); + const historyQuery = useQuery({ + queryKey: ["queue-history"], + queryFn: fetchQueueHistory, + ...polling, }); const runtimeQuery = useQuery({ queryKey: ["queue-runtime"], queryFn: fetchQueueRuntime, - refetchInterval: poll.interval, - staleTime: poll.staleTime, + ...polling, }); + const runtimeByQueue = new Map( + (runtimeQuery.data ?? []).map((summary) => [summary.queue, summary]), + ); + const refresh = () => { void queryClient.invalidateQueries({ queryKey: ["queues"] }); void queryClient.invalidateQueries({ queryKey: ["queue"] }); @@ -71,31 +125,25 @@ export function QueuesPage() { pauseMutation.isPending || resumeMutation.isPending || drainMutation.isPending; - const allQueues = queuesQuery.data ?? []; - const queues = allQueues + + const assessed = assessQueues(queuesQuery.data ?? [], historyQuery.data); + const needle = search.trim().toLowerCase(); + const compare = SORTS[sort]?.compare; + const rows = assessed .filter( - (queue) => - (!reviewOnly || queueNeedsReview(queue)) && - `${queue.queue} ${queue.display_name ?? ""} ${queue.owner ?? ""}` + (row) => + (!attentionOnly || row.assessment.needsAttention) && + `${row.queue.queue} ${row.queue.display_name ?? ""} ${row.queue.owner ?? ""}` .toLowerCase() - .includes(search.toLowerCase()), + .includes(needle), ) - .sort((left, right) => - sort === "name" - ? left.queue.localeCompare(right.queue) - : sort === "failed" - ? right.failed - left.failed || compareQueuePressure(left, right) - : sort === "available" - ? right.available - left.available || - compareQueuePressure(left, right) - : compareQueuePressure(left, right), + .sort((a, b) => + compare ? compare(a, b) || a.assessment.rank - b.assessment.rank : 0, ); - const runtimeByQueue = new Map( - (runtimeQuery.data ?? []).map((summary) => [summary.queue, summary]), - ); + function controls(queue: QueueStats) { return ( -
+
@@ -358,7 +361,7 @@ export function DashboardPage() { -

- Waiting counts claimable jobs only; scheduled, retrying, and - callback-blocked jobs are excluded. Trend is the fitted change over the - last 5 minutes. Pause stops new claims; running jobs continue. -

, - /// False when the schema predates v051 or the leader has not sampled + /// False when the schema predates v053 or the leader has not sampled /// yet: only stalls and long waits can be detected. pub history_available: bool, pub history_since: Option>, @@ -345,7 +347,7 @@ pub fn assess_queue( if history_available { "Needs a few minutes of history".to_string() } else { - "No queue history yet; run v051 and a current maintenance leader".to_string() + "No queue history yet; run v053 and a current maintenance leader".to_string() }, None, ) @@ -441,6 +443,15 @@ pub fn build_report( .iter() .filter(|a| a.health == QueueHealth::Paused && a.needs_attention) .count(); + // Draining that takes a couple of minutes or more is an operator-visible + // recovery; shorter drains are ordinary burst absorption. + let recovering: Vec<&QueueAssessment> = assessed + .iter() + .filter(|a| { + a.health == QueueHealth::Draining + && a.clear_seconds.is_some_and(|s| s >= RECOVERING_MIN_SECONDS) + }) + .collect(); let mut others: Vec = Vec::new(); if count(QueueHealth::Behind) > 0 { others.push(format!( @@ -527,6 +538,26 @@ pub fn build_report( "No queue history yet, so only stalls and long waits are detected.".to_string() }, ) + } else if let Some(longest) = recovering + .iter() + .filter_map(|a| a.clear_seconds) + .reduce(f64::max) + { + let names: Vec<&str> = recovering + .iter() + .take(3) + .map(|a| a.queue.as_str()) + .collect(); + ( + OverallStatus::Ok, + "Recovering".to_string(), + format!( + "{} draining a backlog ({}); all clear in about {} at this pace.", + plural(recovering.len(), "queue"), + names.join(", "), + format_duration(longest) + ), + ) } else { ( OverallStatus::Ok, @@ -835,6 +866,87 @@ mod tests { assert_eq!(report.title, "Keeping up"); } + #[test] + fn verdict_through_normal_incident_recovery_and_clear() { + let history = |depths: &[i64], claimed: i64| { + let mut map = BTreeMap::new(); + map.insert("email".to_string(), rows("email", depths, Some(claimed))); + map + }; + let live = [summary("email", 2, 4)]; + + let normal = build_report( + now(), + &[queue("email", 40)], + &history(&[40, 42, 38, 41], 300), + &live, + true, + ); + assert_eq!( + (normal.status, normal.title.as_str()), + (OverallStatus::Ok, "Keeping up") + ); + + let mut down = queue("email", 2400); + down.lag_seconds = Some(180.0); + down.running = 0; + let incident = build_report( + now(), + &[down], + &history(&[400, 900, 1400, 1900], 0), + &[summary("email", 0, 0)], + true, + ); + assert_eq!(incident.status, OverallStatus::Critical); + assert_eq!(incident.title, "1 queue not being worked"); + assert_eq!(incident.queues[0].limited_by, Some(LimitedBy::NoWorkers)); + + let mut draining = queue("email", 1200); + draining.lag_seconds = Some(150.0); + let recovery = build_report( + now(), + &[draining], + &history(&[2400, 2100, 1800, 1500], 600), + &live, + true, + ); + assert_eq!( + (recovery.status, recovery.title.as_str()), + (OverallStatus::Ok, "Recovering") + ); + assert!( + recovery.detail.contains("all clear in about 4m 0s"), + "{}", + recovery.detail + ); + + let cleared = build_report( + now(), + &[queue("email", 0)], + &history(&[1200, 800, 400, 0], 400), + &live, + true, + ); + assert_eq!(cleared.title, "Keeping up"); + } + + #[test] + fn short_drains_are_not_called_recovering() { + let mut map = BTreeMap::new(); + map.insert( + "email".to_string(), + rows("email", &[300, 220, 150, 80], Some(80)), + ); + let report = build_report( + now(), + &[queue("email", 20)], + &map, + &[summary("email", 1, 1)], + true, + ); + assert_eq!(report.title, "Keeping up"); + } + #[test] fn durations_format_consistently() { assert_eq!(format_duration(2.4), "2s"); diff --git a/awa-ui/src/handlers/health.rs b/awa-ui/src/handlers/health.rs index 61aa2ef70..62482dcf1 100644 --- a/awa-ui/src/handlers/health.rs +++ b/awa-ui/src/handlers/health.rs @@ -153,7 +153,7 @@ pub struct FleetEvent { #[derive(Debug, Clone, Serialize)] pub struct QueueHistoryResponse { - /// False on a schema before v051. + /// False on a schema before v053. pub installed: bool, pub bucket_secs: u32, pub minutes: u32, diff --git a/awa-ui/tests/queue_health_scenario_test.rs b/awa-ui/tests/queue_health_scenario_test.rs new file mode 100644 index 000000000..7f211fc3a --- /dev/null +++ b/awa-ui/tests/queue_health_scenario_test.rs @@ -0,0 +1,239 @@ +//! One queue through normal operation, an incident and recovery, as +//! `/api/health/queues` reports it (#543). +//! +//! Job rows are real; worker runtimes are seeded snapshots and the per-minute +//! history is seeded rows, so each phase is deterministic without waiting +//! minutes for the maintenance leader. + +use awa_model::admin::{ + self, QueueOutcomeCounters, QueueRuntimeConfigSnapshot, QueueRuntimeMode, QueueRuntimeSnapshot, + RuntimeSnapshotInput, StorageCapability, TransitionRole, +}; +use awa_model::queue_history::{self, FleetHistoryRow, QueueHistoryRow}; +use axum::body::{to_bytes, Body}; +use axum::http::{Request, StatusCode}; +use chrono::{DurationRound, TimeDelta, Utc}; +use serde_json::Value; +use std::collections::HashMap; +use std::time::Duration; +use tower::util::ServiceExt; +use uuid::Uuid; + +const QUEUE: &str = "scenario_email"; + +async fn setup_pool() -> sqlx::PgPool { + let pool = awa_testing::setup::setup(4).await; + awa_model::migrations::run(&pool) + .await + .expect("failed to run migrations"); + pool +} + +async fn report(app: &axum::Router) -> (StatusCode, Value) { + let response = app + .clone() + .oneshot( + Request::builder() + .uri("/api/health/queues?fail_on=critical") + .body(Body::empty()) + .unwrap(), + ) + .await + .unwrap(); + let status = response.status(); + let body = to_bytes(response.into_body(), usize::MAX).await.unwrap(); + (status, serde_json::from_slice(&body).unwrap()) +} + +fn queue_entry(report: &Value) -> Value { + report["queues"] + .as_array() + .unwrap() + .iter() + .find(|q| q["queue"] == QUEUE) + .cloned() + .expect("scenario queue missing from report") +} + +async fn set_waiting(pool: &sqlx::PgPool, count: i64, waited: &str) { + sqlx::query("DELETE FROM awa.jobs WHERE queue = $1") + .bind(QUEUE) + .execute(pool) + .await + .unwrap(); + sqlx::query( + r#" + INSERT INTO awa.jobs (kind, queue, args, state, run_at) + SELECT 'scenario_job', $1, '{}'::jsonb, 'available', now() - $3::interval + FROM generate_series(1, $2) + "#, + ) + .bind(QUEUE) + .bind(count) + .bind(waited) + .execute(pool) + .await + .unwrap(); + admin::flush_dirty_admin_metadata(pool).await.unwrap(); +} + +/// Four minutes of history ending one minute ago. +async fn set_history(pool: &sqlx::PgPool, depths: [i64; 4], claimed: i64, live_workers: i32) { + sqlx::query("DELETE FROM awa.queue_history WHERE queue = $1") + .bind(QUEUE) + .execute(pool) + .await + .unwrap(); + let minute = Utc::now().duration_trunc(TimeDelta::minutes(1)).unwrap(); + for (i, available) in depths.into_iter().enumerate() { + let bucket = minute - TimeDelta::minutes(4 - i as i64); + let row = QueueHistoryRow { + queue: QUEUE.into(), + bucket, + available, + running: 0, + scheduled: 0, + retryable: 0, + failed: 0, + waiting_external: 0, + lag_seconds: None, + paused: false, + claimed: Some(claimed), + completed: Some(claimed), + failed_attempts: Some(0), + retried: Some(0), + rate_limited: Some(0), + claim_wait_ms: Some(claimed * 50), + live_workers, + capacity: Some(8), + }; + let fleet = FleetHistoryRow { + bucket, + live_instances: live_workers, + healthy_instances: live_workers, + stale_instances: 0, + leader_instance_id: None, + versions: vec![], + }; + queue_history::record_sample(pool, std::slice::from_ref(&row), &fleet) + .await + .unwrap(); + } +} + +async fn set_workers(pool: &sqlx::PgPool, instance: Uuid, live: bool) { + sqlx::query("DELETE FROM awa.runtime_instances WHERE queues @> $1::jsonb") + .bind(serde_json::json!([{ "queue": QUEUE }])) + .execute(pool) + .await + .unwrap(); + if !live { + return; + } + admin::upsert_runtime_snapshot( + pool, + &RuntimeSnapshotInput { + instance_id: instance, + hostname: Some("scenario-worker".into()), + pid: 4242, + version: "0.7.0-test".into(), + storage_capability: StorageCapability::Canonical, + transition_role: TransitionRole::Auto, + started_at: Utc::now(), + snapshot_interval_ms: 10_000, + healthy: true, + postgres_connected: true, + poll_loop_alive: true, + heartbeat_alive: true, + maintenance_alive: true, + shutting_down: false, + leader: false, + global_max_workers: None, + queues: vec![QueueRuntimeSnapshot { + queue: QUEUE.into(), + in_flight: 2, + overflow_held: None, + config: QueueRuntimeConfigSnapshot { + mode: QueueRuntimeMode::HardReserved, + max_workers: Some(8), + min_workers: None, + weight: None, + global_max_workers: None, + poll_interval_ms: 200, + deadline_duration_secs: 300, + priority_aging_interval_secs: 60, + claimers: Some(1), + claim_batch_size: Some(32), + dlq_enabled: Some(true), + rate_limit: None, + }, + counters: Some(QueueOutcomeCounters::default()), + }], + queue_descriptor_hashes: HashMap::new(), + job_kind_descriptor_hashes: HashMap::new(), + }, + ) + .await + .unwrap(); +} + +#[tokio::test] +async fn test_queue_health_through_normal_incident_and_recovery() { + let pool = setup_pool().await; + let instance = Uuid::new_v4(); + let app = awa_ui::router(pool.clone(), Duration::ZERO) + .await + .expect("router should initialize"); + + // Normal: workers serve the queue and a small backlog holds level. + set_workers(&pool, instance, true).await; + set_waiting(&pool, 40, "5 seconds").await; + set_history(&pool, [40, 42, 38, 41], 300, 1).await; + let (_, normal) = report(&app).await; + let q = queue_entry(&normal); + assert_eq!(q["health"], "steady", "{q}"); + assert_eq!(q["needs_attention"], false); + assert!(q["limited_by"].is_null()); + assert_eq!(q["flow"]["completed_per_minute"], 300.0); + + // Incident: the workers are gone and work piles up unclaimed. + set_workers(&pool, instance, false).await; + set_waiting(&pool, 2400, "3 minutes").await; + set_history(&pool, [400, 900, 1400, 1900], 0, 0).await; + let (status, incident) = report(&app).await; + let q = queue_entry(&incident); + assert_eq!(q["health"], "stalled", "{q}"); + assert_eq!(q["limited_by"], "no_workers"); + assert_eq!(q["needs_attention"], true); + assert_eq!(incident["status"], "critical"); + assert_eq!(status, StatusCode::SERVICE_UNAVAILABLE); + + // Recovery: workers are back and the backlog drains. + set_workers(&pool, instance, true).await; + set_waiting(&pool, 1200, "2 minutes").await; + set_history(&pool, [2400, 2100, 1800, 1500], 600, 1).await; + let (_, recovery) = report(&app).await; + let q = queue_entry(&recovery); + assert_eq!(q["health"], "draining", "{q}"); + assert_eq!(q["needs_attention"], false); + let clear = q["clear_seconds"].as_f64().unwrap(); + assert!((120.0..600.0).contains(&clear), "clear_seconds {clear}"); + + // Cleared: nothing waiting. + set_waiting(&pool, 0, "0 seconds").await; + set_history(&pool, [1200, 800, 400, 0], 400, 1).await; + let (_, cleared) = report(&app).await; + // With no jobs and no descriptor the queue leaves the queue list + // altogether; if anything still lists it, it must be idle. + let still_listed = cleared["queues"] + .as_array() + .unwrap() + .iter() + .find(|q| q["queue"] == QUEUE) + .cloned(); + if let Some(q) = still_listed { + assert_eq!(q["health"], "idle", "{q}"); + } + + set_workers(&pool, instance, false).await; +} diff --git a/awa-worker/src/maintenance.rs b/awa-worker/src/maintenance.rs index 38432b071..cf4d4691e 100644 --- a/awa-worker/src/maintenance.rs +++ b/awa-worker/src/maintenance.rs @@ -1312,7 +1312,7 @@ impl MaintenanceService { use awa_model::queue_history; use chrono::DurationRound; if !queue_history::history_installed(pool).await? { - // Schema predates v051; nothing to write until it is migrated. + // Schema predates v053; nothing to write until it is migrated. return Ok(()); } let now = chrono::Utc::now(); diff --git a/docs/configuration.md b/docs/configuration.md index bbafa8e3c..b76281d50 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -782,7 +782,7 @@ If you're connecting to a read replica, increase `--cache-ttl` to reduce load. T The overview judges whether each queue is keeping up from how its waiting (available) job count moves, which a single snapshot cannot show. The maintenance leader records it: once a minute it writes a row per queue to -`awa.queue_history` and a fleet row to `awa.fleet_history` (schema v051). Each +`awa.queue_history` and a fleet row to `awa.fleet_history` (schema v053). Each sample costs one queue overview read (the query behind the Queues page) and one insert per queue, issued by the leader only, beside the maintenance loop so a slow read cannot delay rescue or promotion. @@ -795,7 +795,7 @@ sees that started earlier. A runtime that dies between samples loses at most its last snapshot interval of counts. `awa serve` reads the tables, so every UI replica shows the same history and -history survives UI restarts. On a schema before v051, or until a current +history survives UI restarts. On a schema before v053, or until a current leader has sampled, the overview says so and detects only stalls and long waits. `GET /api/health/queues` serves the same verdicts as JSON; add `?fail_on=critical` (or `warning`) to get a 503 at that level from a plain diff --git a/docs/ui-design.md b/docs/ui-design.md index 1c44ca5f1..0069e8f39 100644 --- a/docs/ui-design.md +++ b/docs/ui-design.md @@ -115,7 +115,7 @@ For queues needing attention, **Limited by** says what holds the work back: the #### Queue history -Job tables record current state, not how a backlog moved, so the maintenance leader records it once a minute in `awa.queue_history` and `awa.fleet_history` (v051), keeping 48 hours by default. Runtimes publish cumulative per-queue counters (claimed, completed, failed, retried, rate-limited polls, claim wait) in their snapshots and the leader differences them into per-minute counts. `/api/stats/queue-history` returns one-minute buckets with `null` where nothing was recorded or a count was unknown, plus fleet events (version changes, leader changes, lost instances). See [configuration](configuration.md#queue-history) for what makes a minute unknown and what sampling costs. +Job tables record current state, not how a backlog moved, so the maintenance leader records it once a minute in `awa.queue_history` and `awa.fleet_history` (v053), keeping 48 hours by default. Runtimes publish cumulative per-queue counters (claimed, completed, failed, retried, rate-limited polls, claim wait) in their snapshots and the leader differences them into per-minute counts. `/api/stats/queue-history` returns one-minute buckets with `null` where nothing was recorded or a count was unknown, plus fleet events (version changes, leader changes, lost instances). See [configuration](configuration.md#queue-history) for what makes a minute unknown and what sampling costs. ### Jobs (`/jobs`) diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 50863ddb0..b6d9c23f9 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -131,18 +131,18 @@ For example, extract with `awa migrate --pending --extract-to ./pending-migratio into a new directory. Execute complete generated bundles; individual discovery tail files in the repository do not include their bootstrap prerequisites. -## v051: queue and fleet history +## v053: queue and fleet history -v051 creates two new tables, `awa.queue_history` and `awa.fleet_history`, that +v053 creates two new tables, `awa.queue_history` and `awa.fleet_history`, that the maintenance leader fills once a minute for the admin overview. No existing table is touched and the migration takes effect instantly; nothing needs to -stop. Older binaries ignore the tables, so they keep working against a v051 +stop. Older binaries ignore the tables, so they keep working against a v053 schema; history simply does not appear until a current binary holds leadership, and claim/completion rates stay blank for queues still served by older runtimes. The runtime role writes and prunes these tables: the default privileges in [Database roles](security/database-roles.md) cover them, but a role granted table by table needs `SELECT, INSERT, DELETE` on both. External -runners apply `v051_queue_history.sql` from a regenerated pending bundle like +runners apply `v053_queue_history.sql` from a regenerated pending bundle like any other migration. ## v050: one lane index per ready partition diff --git a/skills/awa-operations/SKILL.md b/skills/awa-operations/SKILL.md index b45a837ee..050a9c04e 100644 --- a/skills/awa-operations/SKILL.md +++ b/skills/awa-operations/SKILL.md @@ -368,9 +368,9 @@ externally reachable callbacks with a private admin surface, run The overview's "keeping up" verdict comes from per-minute history the maintenance leader writes (`awa.queue_history`, `awa.fleet_history`, schema -v051; `queue_history_retention`, default 48h). `GET /api/health/queues` returns +v053; `queue_history_retention`, default 48h). `GET /api/health/queues` returns the same verdicts; `?fail_on=critical` answers 503 for a plain HTTP alert. With -no history (pre-v051 schema, or no current leader yet) only stalls and long +no history (pre-v053 schema, or no current leader yet) only stalls and long waits are detected. A queue flagged "Not being worked" has claimable jobs waiting over a minute with no live worker serving it, or nothing running or claimed; read its **Limited by** (no workers, rate limit, worker capacity, From 2da25e157399d273788da2085cd642f40777b1c3 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 22:16:53 +0000 Subject: [PATCH 18/48] Keep the history migration at v051 Renumbering to v053 left a gap the runner cannot see past: it applies only versions above the current one, so a database that applied v053 would silently skip v051/v052 when the open PRs claiming them (#515, #538) land, and "one version behind" stopped meaning v052. Keeping v051 turns the collision into a merge conflict in migrations.rs for whichever PR lands second, which forces a deliberate renumber. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- CHANGELOG.md | 4 ++-- .../{v053_queue_history.sql => v051_queue_history.sql} | 4 ++-- awa-model/src/migrations.rs | 9 +++------ awa-model/src/queue_history.rs | 4 ++-- awa-ui/frontend/src/lib/api.ts | 4 ++-- awa-ui/frontend/src/routes/index.tsx | 2 +- awa-ui/src/assessment.rs | 6 +++--- awa-ui/src/handlers/health.rs | 2 +- awa-worker/src/maintenance.rs | 2 +- docs/configuration.md | 4 ++-- docs/ui-design.md | 2 +- docs/upgrade-0.6-to-0.7.md | 8 ++++---- skills/awa-operations/SKILL.md | 4 ++-- 13 files changed, 26 insertions(+), 29 deletions(-) rename awa-model/migrations/{v053_queue_history.sql => v051_queue_history.sql} (96%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 551e5a7e6..c25b622b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Notable changes between releases. Detailed migration notes for storage transitio ### Upgrading -This release adds migrations v044 to v053. Run `awa migrate` as the migrator +This release adds migrations v044 to v051. Run `awa migrate` as the migrator role; the [0.6→0.7 upgrade guide](docs/upgrade-0.6-to-0.7.md) has the details for each step. @@ -73,7 +73,7 @@ for each step. `awa.migration_lock_key()` expose the runner's advisory lock key. - Python prints a diagnostic to stderr if native shutdown has stalled for five seconds. -- **The admin overview answers "is it keeping up?" (v053, +- **The admin overview answers "is it keeping up?" (v051, [#543](https://github.com/hardbyte/awa/pull/543)).** The maintenance leader writes one row per queue per minute to `awa.queue_history` (depth by state, oldest wait, and claimed/completed/failed/retried/rate-limited counts) and diff --git a/awa-model/migrations/v053_queue_history.sql b/awa-model/migrations/v051_queue_history.sql similarity index 96% rename from awa-model/migrations/v053_queue_history.sql rename to awa-model/migrations/v051_queue_history.sql index b42441742..909fb944d 100644 --- a/awa-model/migrations/v053_queue_history.sql +++ b/awa-model/migrations/v051_queue_history.sql @@ -1,4 +1,4 @@ --- v053: per-minute queue and fleet history for the admin overview +-- v051: per-minute queue and fleet history for the admin overview -- -- Job tables record current state, not how a backlog moved, so the admin UI -- could not tell a queue that is draining from one falling behind. The @@ -62,5 +62,5 @@ CREATE TABLE IF NOT EXISTS awa.fleet_history ( ); INSERT INTO awa.schema_version (version, description) -VALUES (53, 'Per-minute queue and fleet history') +VALUES (51, 'Per-minute queue and fleet history') ON CONFLICT (version) DO NOTHING; diff --git a/awa-model/src/migrations.rs b/awa-model/src/migrations.rs index 7208bd7d4..9b24ccdc3 100644 --- a/awa-model/src/migrations.rs +++ b/awa-model/src/migrations.rs @@ -5,7 +5,7 @@ use sqlx::{Connection, PgPool}; use tracing::{info, warn}; /// Current schema version. -pub const CURRENT_VERSION: i32 = 53; +pub const CURRENT_VERSION: i32 = 51; /// Migrations that require an exclusive (no-live-runtime) upgrade window. /// @@ -290,10 +290,7 @@ const MIGRATIONS: &[(i32, &str, &[&str])] = &[ "Drop the redundant lane index on ready_entries partitions", &[V23_UP, V50_UP], ), - // v051 and v052 are reserved for open PRs #515 (per-slot claim functions) - // and #538 (enqueue fold); the runner applies only versions above the - // current one, so this must merge after both or be renumbered. - (53, "Per-minute queue and fleet history", &[V53_UP]), + (51, "Per-minute queue and fleet history", &[V51_UP]), ]; const V1_UP: &str = include_str!("../migrations/v001_canonical_schema.sql"); @@ -352,7 +349,7 @@ const V47_UP: &str = include_str!("../migrations/v047_replica_identity.sql"); const V48_UP: &str = include_str!("../migrations/v048_claim_cursor_catch_up.sql"); const V49_UP: &str = include_str!("../migrations/v049_prepared_lane_sequences.sql"); const V50_UP: &str = include_str!("../migrations/v050_drop_ready_lane_shard_index.sql"); -const V53_UP: &str = include_str!("../migrations/v053_queue_history.sql"); +const V51_UP: &str = include_str!("../migrations/v051_queue_history.sql"); /// Old version numbers from pre-0.4 releases that used V3/V4/V5 numbering. /// Also tolerates the unreleased inline-V6 branch numbering used during review. diff --git a/awa-model/src/queue_history.rs b/awa-model/src/queue_history.rs index 2a2010d06..fc8f00722 100644 --- a/awa-model/src/queue_history.rs +++ b/awa-model/src/queue_history.rs @@ -1,4 +1,4 @@ -//! Per-minute queue and fleet history (v053, #543). +//! Per-minute queue and fleet history (v051, #543). //! //! The elected maintenance leader samples queue depth and differences the //! cumulative per-queue counters runtimes publish in their snapshots @@ -242,7 +242,7 @@ pub fn build_sample( (rows, fleet) } -/// Whether v053 is applied. Lets callers report "no history" on an older +/// Whether v051 is applied. Lets callers report "no history" on an older /// schema instead of failing. pub async fn history_installed(pool: &PgPool) -> Result { let installed: bool = sqlx::query_scalar( diff --git a/awa-ui/frontend/src/lib/api.ts b/awa-ui/frontend/src/lib/api.ts index 2cd0a088c..da20f1116 100644 --- a/awa-ui/frontend/src/lib/api.ts +++ b/awa-ui/frontend/src/lib/api.ts @@ -606,9 +606,9 @@ export function fetchTimeseries( return apiFetch(`/stats/timeseries${qs}`); } -/** Per-minute history written by the maintenance leader (v053). */ +/** Per-minute history written by the maintenance leader (v051). */ export interface QueueHistory { - /** False on a schema before v053. */ + /** False on a schema before v051. */ installed: boolean; bucket_secs: number; minutes: number; diff --git a/awa-ui/frontend/src/routes/index.tsx b/awa-ui/frontend/src/routes/index.tsx index ebf182eab..4e778309d 100644 --- a/awa-ui/frontend/src/routes/index.tsx +++ b/awa-ui/frontend/src/routes/index.tsx @@ -51,7 +51,7 @@ const VERDICT_TONE: Record = { function historyGap(history: QueueHistory | undefined): string | null { if (!history) return null; if (!history.installed) - return "No trends: queue history needs schema v053 (run awa migrate)."; + return "No trends: queue history needs schema v051 (run awa migrate)."; if (!history.observed_since) return "No trends yet: the maintenance leader records one sample a minute."; return null; diff --git a/awa-ui/src/assessment.rs b/awa-ui/src/assessment.rs index 8b8a080da..bdbe612da 100644 --- a/awa-ui/src/assessment.rs +++ b/awa-ui/src/assessment.rs @@ -3,7 +3,7 @@ //! One source of truth for the overview, the Queues page and //! `/api/health/queues`, so an alert and the screen an operator opens after //! it never disagree. Inputs are the current queue snapshot, the leader's -//! per-minute history (`awa.queue_history`, v053) and live runtime summaries. +//! per-minute history (`awa.queue_history`, v051) and live runtime summaries. use std::collections::BTreeMap; @@ -125,7 +125,7 @@ pub struct HealthReport { pub title: String, pub detail: String, pub generated_at: DateTime, - /// False when the schema predates v053 or the leader has not sampled + /// False when the schema predates v051 or the leader has not sampled /// yet: only stalls and long waits can be detected. pub history_available: bool, pub history_since: Option>, @@ -347,7 +347,7 @@ pub fn assess_queue( if history_available { "Needs a few minutes of history".to_string() } else { - "No queue history yet; run v053 and a current maintenance leader".to_string() + "No queue history yet; run v051 and a current maintenance leader".to_string() }, None, ) diff --git a/awa-ui/src/handlers/health.rs b/awa-ui/src/handlers/health.rs index 62482dcf1..61aa2ef70 100644 --- a/awa-ui/src/handlers/health.rs +++ b/awa-ui/src/handlers/health.rs @@ -153,7 +153,7 @@ pub struct FleetEvent { #[derive(Debug, Clone, Serialize)] pub struct QueueHistoryResponse { - /// False on a schema before v053. + /// False on a schema before v051. pub installed: bool, pub bucket_secs: u32, pub minutes: u32, diff --git a/awa-worker/src/maintenance.rs b/awa-worker/src/maintenance.rs index cf4d4691e..38432b071 100644 --- a/awa-worker/src/maintenance.rs +++ b/awa-worker/src/maintenance.rs @@ -1312,7 +1312,7 @@ impl MaintenanceService { use awa_model::queue_history; use chrono::DurationRound; if !queue_history::history_installed(pool).await? { - // Schema predates v053; nothing to write until it is migrated. + // Schema predates v051; nothing to write until it is migrated. return Ok(()); } let now = chrono::Utc::now(); diff --git a/docs/configuration.md b/docs/configuration.md index b76281d50..bbafa8e3c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -782,7 +782,7 @@ If you're connecting to a read replica, increase `--cache-ttl` to reduce load. T The overview judges whether each queue is keeping up from how its waiting (available) job count moves, which a single snapshot cannot show. The maintenance leader records it: once a minute it writes a row per queue to -`awa.queue_history` and a fleet row to `awa.fleet_history` (schema v053). Each +`awa.queue_history` and a fleet row to `awa.fleet_history` (schema v051). Each sample costs one queue overview read (the query behind the Queues page) and one insert per queue, issued by the leader only, beside the maintenance loop so a slow read cannot delay rescue or promotion. @@ -795,7 +795,7 @@ sees that started earlier. A runtime that dies between samples loses at most its last snapshot interval of counts. `awa serve` reads the tables, so every UI replica shows the same history and -history survives UI restarts. On a schema before v053, or until a current +history survives UI restarts. On a schema before v051, or until a current leader has sampled, the overview says so and detects only stalls and long waits. `GET /api/health/queues` serves the same verdicts as JSON; add `?fail_on=critical` (or `warning`) to get a 503 at that level from a plain diff --git a/docs/ui-design.md b/docs/ui-design.md index 0069e8f39..1c44ca5f1 100644 --- a/docs/ui-design.md +++ b/docs/ui-design.md @@ -115,7 +115,7 @@ For queues needing attention, **Limited by** says what holds the work back: the #### Queue history -Job tables record current state, not how a backlog moved, so the maintenance leader records it once a minute in `awa.queue_history` and `awa.fleet_history` (v053), keeping 48 hours by default. Runtimes publish cumulative per-queue counters (claimed, completed, failed, retried, rate-limited polls, claim wait) in their snapshots and the leader differences them into per-minute counts. `/api/stats/queue-history` returns one-minute buckets with `null` where nothing was recorded or a count was unknown, plus fleet events (version changes, leader changes, lost instances). See [configuration](configuration.md#queue-history) for what makes a minute unknown and what sampling costs. +Job tables record current state, not how a backlog moved, so the maintenance leader records it once a minute in `awa.queue_history` and `awa.fleet_history` (v051), keeping 48 hours by default. Runtimes publish cumulative per-queue counters (claimed, completed, failed, retried, rate-limited polls, claim wait) in their snapshots and the leader differences them into per-minute counts. `/api/stats/queue-history` returns one-minute buckets with `null` where nothing was recorded or a count was unknown, plus fleet events (version changes, leader changes, lost instances). See [configuration](configuration.md#queue-history) for what makes a minute unknown and what sampling costs. ### Jobs (`/jobs`) diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index b6d9c23f9..50863ddb0 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -131,18 +131,18 @@ For example, extract with `awa migrate --pending --extract-to ./pending-migratio into a new directory. Execute complete generated bundles; individual discovery tail files in the repository do not include their bootstrap prerequisites. -## v053: queue and fleet history +## v051: queue and fleet history -v053 creates two new tables, `awa.queue_history` and `awa.fleet_history`, that +v051 creates two new tables, `awa.queue_history` and `awa.fleet_history`, that the maintenance leader fills once a minute for the admin overview. No existing table is touched and the migration takes effect instantly; nothing needs to -stop. Older binaries ignore the tables, so they keep working against a v053 +stop. Older binaries ignore the tables, so they keep working against a v051 schema; history simply does not appear until a current binary holds leadership, and claim/completion rates stay blank for queues still served by older runtimes. The runtime role writes and prunes these tables: the default privileges in [Database roles](security/database-roles.md) cover them, but a role granted table by table needs `SELECT, INSERT, DELETE` on both. External -runners apply `v053_queue_history.sql` from a regenerated pending bundle like +runners apply `v051_queue_history.sql` from a regenerated pending bundle like any other migration. ## v050: one lane index per ready partition diff --git a/skills/awa-operations/SKILL.md b/skills/awa-operations/SKILL.md index 050a9c04e..b45a837ee 100644 --- a/skills/awa-operations/SKILL.md +++ b/skills/awa-operations/SKILL.md @@ -368,9 +368,9 @@ externally reachable callbacks with a private admin surface, run The overview's "keeping up" verdict comes from per-minute history the maintenance leader writes (`awa.queue_history`, `awa.fleet_history`, schema -v053; `queue_history_retention`, default 48h). `GET /api/health/queues` returns +v051; `queue_history_retention`, default 48h). `GET /api/health/queues` returns the same verdicts; `?fail_on=critical` answers 503 for a plain HTTP alert. With -no history (pre-v053 schema, or no current leader yet) only stalls and long +no history (pre-v051 schema, or no current leader yet) only stalls and long waits are detected. A queue flagged "Not being worked" has claimable jobs waiting over a minute with no live worker serving it, or nothing running or claimed; read its **Limited by** (no workers, rate limit, worker capacity, From d5d259cc1696337f0d42c3ddbd8fb3d2a4bf23d5 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 22:28:35 +0000 Subject: [PATCH 19/48] Replace the README screenshots with the new overview The README showed the pre-0.6 top-nav Jobs and queue detail pages. Use the overview during an incident (hero) and during recovery, in dark mode at 2x like the images they replace. A new opt-in spec regenerates them from the synthetic fleet: AWA_README_IMAGES_DIR=../../docs/images npm run test:operations -- readme-images Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- README.md | 4 +-- awa-ui/frontend/e2e/readme-images.spec.ts | 24 ++++++++++++++++++ awa-ui/frontend/playwright.config.ts | 2 +- .../frontend/playwright.operations.config.ts | 2 +- docs/images/awa-ui-dark.png | Bin 250989 -> 0 bytes docs/images/awa-ui-overview-incident-dark.png | Bin 0 -> 420220 bytes docs/images/awa-ui-overview-recovery-dark.png | Bin 0 -> 407593 bytes docs/images/awa-ui-queue-detail-dark.png | Bin 164450 -> 0 bytes 8 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 awa-ui/frontend/e2e/readme-images.spec.ts delete mode 100644 docs/images/awa-ui-dark.png create mode 100644 docs/images/awa-ui-overview-incident-dark.png create mode 100644 docs/images/awa-ui-overview-recovery-dark.png delete mode 100644 docs/images/awa-ui-queue-detail-dark.png diff --git a/README.md b/README.md index 5c364f6e4..9c03d19ab 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Awa (Māori: river) fills the gap between Postgres event queues that are too narrow for real job-queue behavior and language-specific job frameworks (River, Oban, Sidekiq) that couple you to one ecosystem. If you run Rust or Python (or both) on Postgres and want priorities, cron, DLQ, and transactional enqueue without Redis or RabbitMQ, Awa is built for you. -![AWA Web UI — Jobs (dark mode)](https://raw.githubusercontent.com/hardbyte/awa/main/docs/images/awa-ui-dark.png) +![Awa admin overview during an incident: one queue is not being worked, another is falling behind its rate limit, with recurring failures and fleet changes alongside](https://raw.githubusercontent.com/hardbyte/awa/main/docs/images/awa-ui-overview-incident-dark.png) ## Core Concepts @@ -49,7 +49,7 @@ Awa (Māori: river) fills the gap between Postgres event queues that are too nar - **Operator descriptors** — code-declared queue and job-kind names/descriptions with stale/drift visibility in the UI. - **Postgres-only** — one dependency you already have; no Redis, no RabbitMQ, no separate scheduler. -![AWA Web UI — Queue detail (dark mode)](https://raw.githubusercontent.com/hardbyte/awa/main/docs/images/awa-ui-queue-detail-dark.png) +![Awa admin overview during recovery: three queues draining their backlog with an estimate of when all will be clear, after a hotfix rollout shown in the fleet changes](https://raw.githubusercontent.com/hardbyte/awa/main/docs/images/awa-ui-overview-recovery-dark.png) ## Correctness diff --git a/awa-ui/frontend/e2e/readme-images.spec.ts b/awa-ui/frontend/e2e/readme-images.spec.ts new file mode 100644 index 000000000..35e80a50a --- /dev/null +++ b/awa-ui/frontend/e2e/readme-images.spec.ts @@ -0,0 +1,24 @@ +import { test, expect } from "@playwright/test"; +import { mockOperations, type Phase } from "./operations-fixture"; + +// Regenerates the README screenshots from the synthetic fleet: +// AWA_README_IMAGES_DIR=../../docs/images npm run test:operations -- readme-images +const out = process.env.AWA_README_IMAGES_DIR; + +test.use({ viewport: { width: 1440, height: 1180 }, deviceScaleFactor: 2 }); + +for (const [phase, verdict] of [ + ["incident", "1 queue not being worked"], + ["recovery", "Recovering"], +] as [Phase, string][]) { + test(`README image: overview during ${phase}`, async ({ page }) => { + test.skip(!out, "set AWA_README_IMAGES_DIR to regenerate README images"); + await page.addInitScript(() => localStorage.setItem("theme", "dark")); + await mockOperations(page, phase); + await page.goto("/"); + await expect(page.getByTestId("verdict")).toHaveText(verdict); + await expect(page.locator("tbody tr").first()).toBeVisible(); + await page.evaluate(() => document.fonts.ready); + await page.screenshot({ path: `${out}/awa-ui-overview-${phase}-dark.png` }); + }); +} diff --git a/awa-ui/frontend/playwright.config.ts b/awa-ui/frontend/playwright.config.ts index 916333d72..8eb0ccd1f 100644 --- a/awa-ui/frontend/playwright.config.ts +++ b/awa-ui/frontend/playwright.config.ts @@ -11,7 +11,7 @@ const databaseUrl = export default defineConfig({ globalSetup: "./e2e/seed.ts", testDir: "./e2e", - testIgnore: "**/operations.spec.ts", + testIgnore: ["**/operations.spec.ts", "**/readme-images.spec.ts"], fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, diff --git a/awa-ui/frontend/playwright.operations.config.ts b/awa-ui/frontend/playwright.operations.config.ts index 748a3adf2..553278579 100644 --- a/awa-ui/frontend/playwright.operations.config.ts +++ b/awa-ui/frontend/playwright.operations.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from "@playwright/test"; export default defineConfig({ testDir: "./e2e", - testMatch: "operations.spec.ts", + testMatch: /(operations|readme-images)\.spec\.ts/, workers: 1, forbidOnly: !!process.env.CI, reporter: "list", diff --git a/docs/images/awa-ui-dark.png b/docs/images/awa-ui-dark.png deleted file mode 100644 index afae0c44031e7e021f490abe1442920cff3e2142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250989 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

96$@fhIU*bTC&Bx5}zu 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

6&JL_37{t$;d7)97?Jdvd9~%4` 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

~=|Er!E0?^0!I8nq9^RhzNNU^KVEO}Y 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

oau5VY$b_$r+l9f$H%tP#T_n@R>`; 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

O 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

jX6e@_ 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

140PsdnGU4@MPR>;8 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

;?Vf_hO(90hP-ByVsiWw;XrN9$Y?^~3l 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Ⓢ3D6q$4HF`2$rk`?Et*4LObgM0Fd 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℘v;UQ_Ym(d${-3_-rIAEnCg%m4?JW%!%ySE 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 literal 0 HcmV?d00001 diff --git a/docs/images/awa-ui-queue-detail-dark.png b/docs/images/awa-ui-queue-detail-dark.png deleted file mode 100644 index 3d1d4ffd260c01d95a0d6b13e893e84afaea803d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164450 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 pKks0Q4FUmw_!-dwV#Fcll7_dr?3FHdI*% Date: Sun, 25 Oct 2026 22:56:12 +0000 Subject: [PATCH 20/48] Run the schema-trust preflight before v051 Every pending bundle must refuse to migrate a database whose registered queue-storage substrate another role could inject code into. v051 does not touch queue-storage schemas, so like v024, v025, v031 and v035 it carries only the discovery bootstrap (and its preflight) ahead of its own step, in built-in runs and exported bundles alike. schema_discovery_owner_test caught the gap. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- awa-model/src/migrations.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/awa-model/src/migrations.rs b/awa-model/src/migrations.rs index 9b24ccdc3..3f62c71a0 100644 --- a/awa-model/src/migrations.rs +++ b/awa-model/src/migrations.rs @@ -290,7 +290,11 @@ const MIGRATIONS: &[(i32, &str, &[&str])] = &[ "Drop the redundant lane index on ready_entries partitions", &[V23_UP, V50_UP], ), - (51, "Per-minute queue and fleet history", &[V51_UP]), + ( + 51, + "Per-minute queue and fleet history", + &[SCHEMA_DISCOVERY_UP, V51_UP], + ), ]; const V1_UP: &str = include_str!("../migrations/v001_canonical_schema.sql"); From e9d89821d9b8041868c76ea7f69e45b9ef6dc7ab Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 23:03:30 +0000 Subject: [PATCH 21/48] Name an unexplained stall and count recovering queues in the focus title "Spare capacity" read as a cause next to a stalled queue; "No visible limit" says what the diagnosis actually found. The focus list already includes draining queues, so its title counts them too. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- awa-ui/frontend/e2e/operations.spec.ts | 2 +- awa-ui/frontend/src/lib/operations.ts | 2 +- awa-ui/frontend/src/routes/index.tsx | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/awa-ui/frontend/e2e/operations.spec.ts b/awa-ui/frontend/e2e/operations.spec.ts index b51608fb3..74006ee43 100644 --- a/awa-ui/frontend/e2e/operations.spec.ts +++ b/awa-ui/frontend/e2e/operations.spec.ts @@ -28,7 +28,7 @@ test("incident overview leads with the problem and opens targeted drilldowns", a await expect(attention.nth(1)).toContainText("+2,500/min"); await expect(attention.nth(1)).toContainText("7m 38s"); await expect(attention.nth(1)).toContainText("Rate limit"); - await expect(attention.nth(0)).toContainText("Spare capacity"); + await expect(attention.nth(0)).toContainText("No visible limit"); // Fleet changes are listed and marked on the total-backlog chart. await expect( page.getByRole("list", { name: "Fleet changes" }).getByRole("listitem"), diff --git a/awa-ui/frontend/src/lib/operations.ts b/awa-ui/frontend/src/lib/operations.ts index d0a6c4695..4e508a548 100644 --- a/awa-ui/frontend/src/lib/operations.ts +++ b/awa-ui/frontend/src/lib/operations.ts @@ -76,7 +76,7 @@ export const LIMITED_BY_LABEL: Record = { no_workers: "No workers", rate_limit: "Rate limit", worker_capacity: "Worker capacity", - nothing: "Spare capacity", + nothing: "No visible limit", }; export const LIMITED_BY_HINT: Record = { diff --git a/awa-ui/frontend/src/routes/index.tsx b/awa-ui/frontend/src/routes/index.tsx index 4e778309d..c84ad2efc 100644 --- a/awa-ui/frontend/src/routes/index.tsx +++ b/awa-ui/frontend/src/routes/index.tsx @@ -305,7 +305,8 @@ export function DashboardPage() { Date: Sun, 25 Oct 2026 23:12:40 +0000 Subject: [PATCH 22/48] Cover queue_history_retention_hours in the Python start config tests Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- awa-python/tests/test_start_config.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/awa-python/tests/test_start_config.py b/awa-python/tests/test_start_config.py index eb404d444..12482c0ef 100644 --- a/awa-python/tests/test_start_config.py +++ b/awa-python/tests/test_start_config.py @@ -294,11 +294,24 @@ async def handle(job): [(queue, 10)], completed_retention_hours=1.0, failed_retention_hours=168.0, + queue_history_retention_hours=24.0, cleanup_batch_size=500, ) await client.shutdown() +@pytest.mark.asyncio +async def test_negative_queue_history_retention_raises(client): + queue = "cfg_history" + + @client.task(ConfigTestJob, queue=queue) + async def handle(job): + return None + + with pytest.raises(ValueError, match="queue_history_retention_hours"): + await client.start([(queue, 1)], queue_history_retention_hours=-1.0) + + @pytest.mark.asyncio async def test_maintenance_interval_kwargs_accepted(client): """start() accepts all maintenance interval kwargs including heartbeat_staleness_ms.""" From cc255857d8b477364926027d00c9295407eef7e0 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 23:12:41 +0000 Subject: [PATCH 23/48] PR screenshots: normal, incident and recovery (removed in the next commit) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- pr-screenshots/phase-incident-desktop.png | Bin 0 -> 167814 bytes pr-screenshots/phase-incident-mobile.png | Bin 0 -> 185750 bytes .../phase-incident-queue-desktop.png | Bin 0 -> 86784 bytes pr-screenshots/phase-normal-desktop.png | Bin 0 -> 93415 bytes pr-screenshots/phase-recovery-desktop.png | Bin 0 -> 168315 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pr-screenshots/phase-incident-desktop.png create mode 100644 pr-screenshots/phase-incident-mobile.png create mode 100644 pr-screenshots/phase-incident-queue-desktop.png create mode 100644 pr-screenshots/phase-normal-desktop.png create mode 100644 pr-screenshots/phase-recovery-desktop.png diff --git a/pr-screenshots/phase-incident-desktop.png b/pr-screenshots/phase-incident-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..db0999b0d321c5f62b01ced7bb07b2cb2d9a418c GIT binary patch literal 167814 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%0Ad0s4Yf^l?rTj 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

9G=JYyYG`oBaXuA%@Z!Q5^0b| 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 literal 0 HcmV?d00001 diff --git a/pr-screenshots/phase-normal-desktop.png b/pr-screenshots/phase-normal-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..26d4ee32f7b40951a9dfb1844d8bc05696eed87f GIT binary patch literal 93415 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 literal 0 HcmV?d00001 diff --git a/pr-screenshots/phase-recovery-desktop.png b/pr-screenshots/phase-recovery-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..c1371bd743dbd8c4f6a92460f0ca819249890ff2 GIT binary patch literal 168315 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�*- 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 O)^SyBm29Q6{{I1u-wy@= literal 0 HcmV?d00001 From 2eb1fa7ab4492ee0fa74b37099fe7afcebe0e544 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 23:12:41 +0000 Subject: [PATCH 24/48] Remove PR screenshots Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- pr-screenshots/phase-incident-desktop.png | Bin 167814 -> 0 bytes pr-screenshots/phase-incident-mobile.png | Bin 185750 -> 0 bytes .../phase-incident-queue-desktop.png | Bin 86784 -> 0 bytes pr-screenshots/phase-normal-desktop.png | Bin 93415 -> 0 bytes pr-screenshots/phase-recovery-desktop.png | Bin 168315 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pr-screenshots/phase-incident-desktop.png delete mode 100644 pr-screenshots/phase-incident-mobile.png delete mode 100644 pr-screenshots/phase-incident-queue-desktop.png delete mode 100644 pr-screenshots/phase-normal-desktop.png delete mode 100644 pr-screenshots/phase-recovery-desktop.png diff --git a/pr-screenshots/phase-incident-desktop.png b/pr-screenshots/phase-incident-desktop.png deleted file mode 100644 index db0999b0d321c5f62b01ced7bb07b2cb2d9a418c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167814 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%0Ad0s4Yf^l?rTj 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

9G=JYyYG`oBaXuA%@Z!Q5^0b| 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 diff --git a/pr-screenshots/phase-normal-desktop.png b/pr-screenshots/phase-normal-desktop.png deleted file mode 100644 index 26d4ee32f7b40951a9dfb1844d8bc05696eed87f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93415 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

s;2;?oOi; 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 aR3!CiIrY}($(O%Ex_?(iwnW-6@V@{a@PB#$ diff --git a/pr-screenshots/phase-incident-mobile.png b/pr-screenshots/phase-incident-mobile.png deleted file mode 100644 index da271fb2e690dc63165ed0c0ff14f7741784d222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185750 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�n>p3oN&0mL(?>HnaJ@%JnwS%lHUa0g8%f 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%0A8_Q~_u0(lvkcY^KSEJf}`UEqSE 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 diff --git a/pr-screenshots/phase-recovery-desktop.png b/pr-screenshots/phase-recovery-desktop.png deleted file mode 100644 index c1371bd743dbd8c4f6a92460f0ca819249890ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168315 zcmdSBRa{kF^aY9{pdg|GDy9}^uP9SI2uQ{dfO2_z(xXe1=$rR!JWog}=@ zcqF9TNCI!UrL4l&CQ#nvD3G9TahLi?z2?0wE_NH|c0e{p8GCja{29|nd-~wPH;UoM z6zH*cucCkX8ee}n#o=InNc)H?dFj;F%1TSSv$MT(qqEbxs~s<;yBRH=8ds}Sf(e&SUog}cXp#6RAZ*!gX@5|_Zp6b7s zLrNgNdh74o6#KVL{=R&j@_+l%e!q~SugxtiDDPDrKHCxgAT_+3oQ>7uPI!hStSK$2 zge+Ns*sBU~q4{%TTPk-$LP7|u>2L|pM%&xJo;r`)o~xb32+N>0YS{z`TTn|6WyB}M zHr8N$6GmMBfsXm(X51wfkBZS6N2%pJ*9ya*CE&V#1?|kn@qKm9bo<4kxT?a5CtX@{ zJNJ!mr~a&Vmu%+tb#m(`f1mHok~4BNt1xG2L3wDS&mHrhM*f7DWCOFLi+ZWaB3zZu zf3A7E7LRaiHJ}@h@WqQ9+XKRz*R290Be}82o;+#vA|l4cwLd%3?NKu`%Vp9J#Uvb7 zP*C`O`U0bKE$O3rwjTo;SHs}y;x8_;4ui3<|E}ny@`P$7B5SiEJw4qn2_YabGBUEX z5;%(>X2Wyg8g#`Ri{iriMY6E4AW^ESB~zh4bcxf}+FEH+qdwcXj&Z;9mqT^M5M3m{ zONZ{1_vz`|w{PuE_EK#2SH`=T%EiZM!xlKuF$?LFTmReM*Tf+qQBkjMSe-JbN|2qe z45YQRwTTOEHGG#n*WL$lO;MvDC6%m3*C6DyQ#;)7)YBuIqY|Hp4}Kwec8*L$xME7SrhSd@P=%vnZjS68?ERE*RVXs*t4V{- zr=%<&?;3G))6LDz4Q42C8I2E%MsbpnJF1b^X|tDHt}StNiq`F@pfL7D znVn-|U_e?@GEKXScwvEQq?ugw%$tNugmNdE8+mo$)Hi;-)MB;zv$LL_rtSX9^2P?I z>91><*LB+Z4*37%wQ6`DGl77JjrG&Uc%-L*fPhkw5e5n-yvWTp8;?r9wi&zgYR4iX zghQ@0hJsq9N-txZ#+HOI=V&sPht(eW;`wKB)x^>Objs|BUAsH{db+ysS3KM&IQSh_ z$_|%is|Nn{8#m+%4N$0g0xtJgS(a8-PEJp=6idwJn#DC+{pBibgo9`&iqC!!vD0#L zUhHUM+1fS*2S32iGZ@)IXM}7$HvB5Qf9`Ad~m5{mc~m~ zFU~K!o6}^o3iRfM*vBDYAMv<8Q!GyYmNXE&jQ8sM&H4Wl{Pg9)CRc2Xc%ed(*VzL$ zHRGX7CeILN!`dHsyn2Xd7KoLbx2n4D3kTj5MhN-@1cnS+PR9@0>pCGH@o;#frzz`H z-?@t|SMSr?+k1JIXMD1UH{Z7U^5x3{F+)58~RY@_6&rIs7x z0wN-}%NpzJIju~hVm%;04wriTdh0$TqZv$;8ulmOv9YnqQm%-l-(Bd??}@cGFi4M4 z#U&w`TIdMNP$+U3E6iXt4;@XBT!f!!6^p0q-ThKisb(8J=VhPL(0H2p!TTSV9yZ%& zq^E0W#5c$sL7MZ#XZp26dazgH?3S)n=Jl8W!GVftCRZZybErQ{MMYjdn>1E{$MvRi zfgTw-YnajL*BjU+vD|+S(!)ek^(M3V{1meqZy#UZ_A#OvlEk;2)9>C1Y?P{^ClCnh z4Rb1(>S>*Fzhgo2=!C6lTC{xo_I;8F(Wmv%iCEsW@o_~00)0uzK5TLkyR)P1-h?(- zn-4COn;(>Z;y-v`@`xEwlu0A__+SZ@g+m!>Tl-cAGukq>tuM~3;c-VE58u`HD- z$s`d;bbSMZ_CtkjA{^WR)*8c)L*i-@Rsv*X+(jv-rrUgce2iNg6Q^eLAKzk(SJ=wR z$_~}n$5V)k3JFPxi^p8i)C@Q}vXXg9OY5a}9~MEL+Cf82?XIjw*JGZJy_^?vQa-0|&yoLprK#K1@GU#uJpTd> zB{g-K$;{)_713~tVm|dcSI^SYdAaoN3frQQyv6HuvdcBNLIMImRk}BXL`CVQuKEY` zXDA$2f97G(5|WgX3TLwjjf;!RGuP+kMH%FAd*2el{z?9Qa8g3T$Qb(%0v5};<~w$u z^@lQ9bi`B)E+izr5Mean;n)oi53dd9I7eP=tJiMNHjNeHmd`O8hKq)?_QdgH*(mY2 z-HHpcTk5Wn$&i=$9LZtZn`wD^u&$Q(3*Ge(jC`0C!f;l$~)b8ShPP+@nedEdUmMeA`mZ=g- z6Ejn2sF0;{$jHbTTLoB#h`mq{fxfX4pOP|?C`@o-XSq39@l#Ve{e6yVohuGsx?)Lc zG(D8NgYA-xI7wvz0kX%BYdbS(J=eNp>H?@`3-Uka=H|W?jL3`xgqwL~}ACfU0q=kwP+2C^3jn9S6rB zQsDdMccjZGGMNVNE6a%;AKm1l&io)cRhbf_GE8IeUmm`ABPTZkDQsau%Y0EpeYtV5 zE6SVDbfWAqI!@i5hX*;6wLevJGWs)7TK1eE0^y6kHIxxV;jYFd8$VianWg@iPI#=h zx!sin506BhDekn%|1#XtNFiY%RT+DU>##y3igTjsvYO38kIQPSdwBS$2Dv7Mu%)F1 z71dRWXLr|Dsw6jhltH_597>o;EiDqQN@a7TzL7HZvuA5_E!e_g%rn;l(o)8XHb3O8 z3}tP)Vy?bClKbMU5*89-(vYFu#VuuhkEpLeAFapet998Yl48q_)vXz&ajfK`4|B&i z1R4FMO4RP+;7Ao3$f2*j<-bM9O7Y@F&A|Q>S;99wJnCv{=@}VSHm$u-wWOq^^7HfG z@;`m@L@HSfkc0Ng$%%?RTg5#K3yU5f02|-Ff5$E>2mBo`6hiO6W5T=3xvd@~Y;N2+ z{wHBOeRDW>6%Bq4%fB*S^8MaDCNncLVh)=(Df~gS>!B>h&qgnGOh-!0rxFB*j@&Zj znaoX>>(1Xc*tsM0_)hd^JRj}#UrJId*lFEQAjo6Cm7-E0BZq=3@reew2z{j}gBz<&u&vc0d^g|lHHI=fMt_Oemy^HT}FfI0T_oiA>YVx$XjVHez ztPB)5*ehJHxvKHI9rh=;bNL5dj&PXWGq1iAaJvl^Dg-vs=KXu|aj89xy){~v#x_=t zJuy6_LH(JE_M<-g$b}u-3YO*RvFL}MzJ7jy@Sf1oO~nh$l8Z({4DReL_u-gyKS4vY zMQ7cZtQbp^?TU|&KRw(WN|79^t^L&#*Hl^gDU{jJY_U^`N=sWiDLMHaGK-N_Lt`V` z%aZL866#ca4>MMDIoh6QFw_;YA~|bUOOFA3;o^8W+0URuyLI&p@18o3|#Tx=7ZU9U|Fj7pjI-J$lx?nsZ zBO@Xr3VbGqkVC~Svsh&&PbM79R2Z^6+~6oOo=SA88yX72UU+CAlO%HEWb=czdA7-1 ze@fqVRs_4DVTNvB<04VirZiQ9noJpIpV#KF<@s7R-#ROWYFJjJb4!WrK`+wlGV%F4>#Pizgm``FmnWMpI<9LC)wo<4zroz2axwg-w?${a79 zj2ZI`H~C{~h*;WFVvIi|%8m$mUl8b|B%5v_tNGoHMJsithBGl*?g}U@|z$+ zLW=cxIsNcp;2GV~1o{s<8n)cRm}NiBChueATi>kY65Aa&hQySGsTrA9>XNP*;_k=N zx%9fNtr_4Cmwk#_vO;H)$xQ%^P8iq=4y_lh+(cI4b-o$04rDnB# zEW;57??n?Bi^v26Jvu#d?_ML^vQNL6YSZz4aeJ>OubBnS?p3n97dD&2&%|7+?;dRZ zy4eMnR)2EAbd?9!bh2#0JrqK;@`7xzj4ETfhl9z`w#8nUWQ21w%|)fcF)T1dyeyaUkY=*d-WJj<{sT_COh{KukX$w*7Vo=878%>k^rx7Vq)4JtkrZSsW*8+dkgeS`mXqY+k}L4)Pd_* z9g~#FQ8s%U-^A9=yk%sfq@=_JXVU8U`T6GRmf@kVsRi!bEoNqBTq>#CL{pg&(+A=A z>6F#ZokzzoM8^Cbctn`&-1bU~d>nt!ha-liqOivGKX+8Z*@KqmD zT`;f)M>sF+eZmPBH9a4xknbxaE}f^9`Ox8lye{K8f8m(){_j&cZOTY!n>=5oBa)vk zC4I@^;ySOXQQ+T3)!Z!b?%k94r~KrNl&#I81`|nMF(F^l!*j#GB$~-_Sgh0Ey-SIw z%iW_Ih&u3u^@w`<=3k=lh#P?Q+}uLrlZGTsEsB;F>K3Ya%|zn^R?F!?1swx_lh1b* zX~{{+G7@5Cs`O}ZtrP6DACplsRqa0S3Cpe~x%rQjJd6HSE^J^mUWPnr)I-7r*W4o2 zOwepi(Y;Ai&)ZYBnMQbSw|Cf@nEeE;}-|3mlf9D!{dL#h5} zvf^>!vFWe=QJrGf8t_c)Iy>pRdkeC(5>lg|&`<^hpSb&eKk|g{-rRa|q zNVIX4Zk3J~Fjjj^;#T>tDa@5y3&aJ&^&VuGTKg0zyjjIs>kDJivIBZlbw(GzMKbwiz} zq+}g6Q&)nL|6Hvai|PWKtd{ew<2#X`eu3h$5*dBc@6P3SHFpO`{h^6lGoVc`yZCcVAY zAz5Btm(u}APow#|hrb%WTkkI1!k_!g_`miM(9qH{L#mQ8+0tiVz}`qIHl1xu7FSoU za-d=J?e#1%U%W}e`QtR9wzf7^mL=|Urc&9)SdrV`Wct`IoWqtGZA-AB!M=ZRa1Iff zmZlH*ip$~bU7e++CA62l-QCgIq#PU*b#Z4aJFOH2Pf zI372(O{%jF%{!;Rc{ymSs}tP6&p%QV$x#MHp{5ZH1;t{0^nAW8h|zB5OPHS@_TP|9 zzyyN3s-e>UlwucK^aA!;aDLN=H^71 zca(g$#KGE#AlWhWZy$2L`1z?=r9ai-#JW;U#<7(rJP4l=dh6j`iPW_DuFyn4a;e{`&Q6 ze1a}tf5;N}R^W$DRty?sQnnIU+1Roj*q|;owA$J_;uS*+Dldu^7{;WJsDln<2j#t44|L;jeAdT`%xm=( zZV|D)FEUc%;i;2Old)W*ct>HmK1#zjmZ87`PaAyI3)m}ri$b+DsUwN_goH3=-1d&9 zCbxhp>%OoHeSLjx4UKVNpRqMaR75sj|JAD;Us2wgri+e_e)#B-Pgt0Om@Ez@Wz>a= zMC8S%&B^s0O>Zd2udII=tExI2ZcMNkPj(*>bCmX7+8%E7IZ8_hFzFBOm_yy2{yOB| zEpg-njNv^c#7rLU?mz;g@g(%Tep1gKJ^H+J3&94xD4#bm69_-(?1V%_##8sM5u&1^ zYH4Zxsl?SJn4me~CSRyzhKm3e`uX#x9mdzMcFXtU?2dQ#s+7tsQ&X|;Vq=R&u<;7i zr$}ml^=kz%`VBjBzUBt<^+4`#u}ChzP(qf)>g#RP3Bt%l9P3mCU#=|a`W;=5*`EH`kRk?NKQVKAh-y3 zTUMqL%;h*alBfN$W?jT4PlORVayUJuu(nl>Q{@<~wmCPlwnjXTS0pGna*B!$4-P8L z7rp%br_09U1+YQ?@-VZrw6UA_a1=@lRzsTlUDq@*?H;`o_!@#pQSbyzEe> z(kFBCS^mii+s*D6Qr>V?JG)l{-43JcG|peXTpTYVkWNOs;17x zXfV80i^6gso1?~y&m-K;SnVBu65E1A^EE5PSa{{yeDqTJ}4QaO^NFO34TWIZ1;G@?dRmB?f$ zpgZt;T^FGQdWFqq?;Dge9c#f zwXW{$9j7bE=#H(>E2jvb4(E{e-_8JjFHhUM&JF8#0Vq%hj#KyS=!TtY>SlrdP)%Fg zch{75;J{A~)>$l8^3kw}bFX$qa>QMQd=O5rxiVeD19gHQYjeD$u1mG?M+hn3kND4R zL3CXa?B3ECFI79=?8cPzyc!|mgJOf|5=J0?eXV#^Xgp;K@=W?xiyygeFKAvbk34&t zmd}p!aLgYN5PbIve`(&hJ~jzC=2}an?LRKyHuY55Cu8P^)YM}Mg4#U-828#$AXF0& z0T3#iQ;v|$x}k;x4Kg}9YNjIDY|wzCNx6rsj=WZn8Jn4@49zD#>;9r`1=7J7OfK|`KUb0u%y zAta2CixZyJ?g#}oA~J~188#BKgDz-WJcntrkKi=0+m8-RPDbjv(#Yq>%50$HQt9aH z8;=)H4iCpeg#hAt=IexAcOBF%5M1q{!~g~MhNTc0CE} zW&@gC6~Po03k%D$XU|@|Na4d|017Qr<19SkPl5E;Yp}i_kfYut_T@G{ek(EHDz9G8 zAUYNJ3@iHV62aXu4uv9ei{pxIP@+H4EKk6^Qim$6|UFVGJ%U+m11FYsOQ z*x0xa0Z?ya4MaZVlHIR2W&s?$!Aj{USFPiN=i7kOT5vE`Y7utz)(MoPi#hj8$cZ;^ z-ZYxr+nA~%K}+C2-kD$WK79d-_uhs%+1lbWl>Z(tTIzR#fBKYf4e_e+tZtK#0Et{;cZ|-=hd_Ab z{t$^^V=^3_>m*Xa=edH0LWYxabado!bUWzhPp8hmXb{OE05avl#zYYynjS%^)*!m5 z$jHptSUqFoF20N1E^c%b^bi3T^po&uuZ$YCS!85nOia(==VUm@XtzARePeZ;^vt~h zv5p@S9`5h&|IQTo5(mFa#fdaD40r;mG#SrWPhhWAsy0frI`nchft$eyI(qf&S-5A+ z?XSJqBEy=q+q2}cv9Xj2a``$lZ9$Jf@;%;~aSjcYpD4BX*Sj6zdN531zhOO)E|&)~ zL5|ztVBw=jkH%T30JydV(tuLXSLNt<;rbL5uKiuxT)SiXgKP*IAclyEWkGEmhTy%Y zER`W25bMXFEt2Er&+Sj0Bq=t9j^kr6RXNewDS|+xDwP$gNv26-@1ec0JL-ltG_57R ztz%?kQ#yXRDVhTTL_;GCwH>lFB!7n!|K3<$^N(JCd%3MN|05--%DPxyjJ(`j*rHsk zZC{8~PZF-022C+=V*m)wy$X~zoX1xmmu{m_aM*m*CWYKe^58)+2+Ke@11I!pZ8$}L z$Owfd7Q_xHMN>KI{GjznNlP~*;^X5N>J6C9)HcM##E@_~C>9x2gvepS_KOU=eXFQA zhcW_f$y)(LovR2pcMU{T<38oz8?5Tyd|)D#BGFJcE71|kB%A(zq{z6c&dvKK{+!uL zzW^kXN}(Xy2#9>CDhGSgIJ%(>*he7StbxzeY}131O2NTlKU0f>Li0vcH0be-P#!=6 zyENI>yH9!QS_|~#@E$zqjH>!D*X*-a85TaR748XgOuJD_N_zTuH23+BA2&VJ|2dhC zcs+KRb6|zQMG%~m^TPIMYo^X{?3$9pEfUV&)>aSCo40O33K}Z6Hvdjv2Pe3@`?+M_ z3ap@F515oVZSMt#hDt!#ZdM+W)4h1Hz1)|CiW)GoPbv1sp~X<`4}6&xl?cDm1V)tm z&)&cGxn`?lsH6>KVl4yZJ!qqXJsF=TGk)4oBqB1rHGTQ7=YtNv(+PR{^x^cM#d9Lr zV?U_**Qsv_|NDRcr#tTIA^Wr7pTWWP|6QYc6XAjEbcuNPuGngO1vEN(`d;bO2e7w7 ze0;9dSHKu^xXFdjn$2>ku(MNYF;g2b-?nHzH9x~s6&)SKVQYDZ!14S<*k%9(dQSp& zspROc094rRv8u~=F6cH>MNAGwENo$>)Iwr-xRVx%qNLbc6QRFr|V5r+J9Q?JXdT1<`o?SgHCOR+nJC5?OQW0anM}> zezn@uwYu+QZiO%yu^5f#78Oa#(t&V_psM@tCZgCZ#y@FuOzrVqUSqdhV|bq2oJ0VE z!g#s0o4dP@3$LeA*@gAa9OZv_SPWgDGm;|=`6%JnFHSvueKRt5s$Qv-u}b^Rk-Yo0 zwU0r?h1P0bfu3P^cVptRJ&H?7RJ6!!9-*Z*09Zs==to`MltcsF%a_N~HM8#S0&oUe z{qM{Sx4DCj5X~ZjQW_tQmi3E?_TzZ2GV&X`~ojNxw z=$%netY^w@J6@de%8SX%vkf@t3UfLLMf>F6fu4_=f+9JYB5$4Ndm`pzO3LL`+sk_Q zKEQ!PgM&~XRjH@vEdWwU?)5_NIaTGY+Z|0?Wds0Sx!h`hyaWm^>Hm-QN1K5bo6x2g*~}2enVDWqA zO-!IOR8+end8D=zOUcfAkT{+tKN+y_^z^jc z7rihzk_kRw0txG~bRumoYx-SJV|eIgi?Sz&h^>M6YLh)$U*!xZRyH$B+P>mG+9c{FDxOM{m&O%HtF*fyYz3A&DeS&q&gBU3JVGn zr9&CCO+W6jhaxOydEC4d-uFj$uYd@tHpa}z7_Rn^CWB5@#uIJpaE9WUrZ2|TCD4yPfkQ4HBO^p`qDEA2@t9)lgMeC+dGGV~IP2lR}L z(I<{tTBsRVWUPCs2?+@lhH`mY3<(bk^c8yby7^bbCUul2JwyEb+8hzO>KkL9-YY3_ zOf_)W%oSPhdKDM5DovP$hT=>4Zc=}hc#wmVkd!3pFciz{7aWXrW_jzDgQk(PA7)rs zScL--Lbns-po6uS@3599#&b1U5|sY!y*=#x44?;>S2zszC)W_vHv48Tm@|8ebC3%R z1mC^O7N~P8>ozGd8UI-{hkx>GEPcea^5=NHNOklpW**744 z{5VCo0z_1NU1Q^>1u%oqFpKJ~U}0h^R5{=koUyYp2Xojy8c+vw&$|I#)#?}`f>WTt zA_hHHy7E8j4c}LAY~|$hB5c1wohd~J+#EipWH>;HuSufF0RaI=$C6AJqXh&wCSaQ= z%1s?8F}I}>5RCD4M%|y+ez$%M0t0YGQU3n%Nl7dXWH|oe9IKVOeN>k6{8mR}t3$?? ztAo(72(|@wXpXc(ph!wcyp{d&=ALEYbsp+!^tm$42ZhlIf>rJ2y9*Ki+$ObeqXEcf z$lu6}j(PP3g$#Dp!Dx@ZE2;`;NJI|JAV{~P1^PYJV9VMyLQ9>KY**EJAMz^|l-;$p zwHNBHk`HTdWbH=}Was5+?Zy~1^yE0)nbOG_q9}Y}ySD@c2CWTRnhev_1O_Y-K%S`1oH5c2EEdbiKHe(XV=O0fCmv%0pV^ z@{^;S%Xk5GR&J@74yrUNDyp@9C*Vmg%#dhkFcE}DAz~H&m;gkX=;=dI!9c+1c(D^i z$CKQ-JT2xe+`%rII)(p0N-aoNY`(8Q-^R-7>(cLjYA{vWygitbnYkc^tjcJDO>MPH z#U2|EZ+~0;SGwHyVIBlF1z}9Ha}<~E_^^A$&+6)jl}`%Rn;Purw3D;4($W+*z$Z13 z8d7d`=at3E@Yk=`QeS1g&xynZ4+P7LlsBZy?sio%jg77j4p(BS!T)xCY<}{%GH@Gx9-EdN!7b`cHFixUNRK@`QewA))S#eH_3$*0Cg?d=j7zX zY61)Co{Q@tb+l{rKRYv>^+8wH^z?wJ#|QXbj_q{WUZlpLzJxRonm%kEhBqT=t z&D$pyn@dZFg@qOruUk4hV_eT&Ftj})4Y|WM7*HO_$w^2^)YANXTXMSWWNi>Cb{3FiI9unDXyCR-P zI+8bu$Abn{K59UG__(w#P6UTfKY5r0k=37NET~Xj8>_|r9a~*fGskd@*h6;-xk_)~ zO^?9dodm<$!$fY=E7hdXBRa$XK1}c{K`tGPE~aVP-wb> ztck$Yfi0JgwJ*E$6hl9MQb<;mx>wj&936S1WDs{yy?XVf)x5TiXE1Z(?*02+3yznS zA1-ooO#9!8nnU79kZm2j>hvf9|6G<6Hs+rI)X zyLM3tjMXJiw`Q>YKXo@Qo}y9e^x;m(7CAo%g^Fq+)7ZEBl)WhSn=vEZlxNG0Q^ypk zlv*FsOiY5&yfxCP2KN|W5s?EppUH|Pcc=I%B@=(VEzpw&IKn!!I0FWI0GYbMlP(O} z^$j4!as)Dh+D1!V)W%UzDR|Df#j;a3LM>8$9)L}sn_>{$Q)0U8#y z`e-8d198Kj6qJN;aztEDeJL}>?Ba^9^ zm6C!-aQZp*7cSM3n_CqmDijo#9CbItk=*b22V4$9OOqAYW!LIDJ8kA$F>l@4FSA^) zHZ4(a6q1pVaX4kx8%)0{`aDLiM_;bkL~|rJHA}_qV5ui$0?)t0af;JgubPB4yQtJg z?nJ-4+VbpZ86ABG&@wi;*FE+yCoSnR%M55UnDl~kU(~slK-=y9#$##e6O>K@0$Ekk zWu}v(@q{1M0H-8w=14=wxwSG724pJ#$h8W_QKw@gyq=_N>ywkoBr#gE*3-s6n#dqrb8 zfgg4_>uk1W+lJ|^>;2r~a(os`R*Mxv!(tW{{pajB!W6)nr$t60qxwr;g~cE!nQHSK zNHECPe6};(-CwBS5i@A5WUC@W=S}I}-PeapbG$M@AT2!)e!+X3T`<;=ot+I7o7h`l zG&b_Zp3}{J|AK^InVZw#9s1g#A}Z>=De?t7^6@s%-+Bj0_d9Vrz*!Bp z3AOve-TLuw-S0+yiNw8kPh{V*Qe80fx&og;Wd21;3T1kkXLa>`0HQ#%$1Mp`YxLO< z6d9q(AF~+0(ItH+D0qK+evW#|Q_jC(J_5@{-}cbxj=ecA@7uTFclWRm74*4HhBrDY ze-;eI9Ec~0UjDXLTNQ=hS=(s}6Lg_{hc2gC{%ohZ{(O8ive|=mb^ymDjLD)1#OO%g z1{^G?^7WsmdvQ1QhsxXAQ`Mb+|8n&dDoD;aRrhG{XEU+MQXS4q!?&IhAavcZKD}UJ znSD(`Mpj_G+jwwb`3J74p#G;kE=K%op}FvA(@=k33hw0p;+&Jip%Wq!G{+E5k`77<&dpP%EP7{oL9C~w}RGUY8aoqdXh6*W&=bO!MwDQOW%A5zjda8eGH zn3IF6(Lq8=svj6jkZb@F_5#NQKn6b~Ft8A&AGo+K+uMHty28Sve=j29^+(Y~a^e!y zWph^V2rXD2`&4eR8tCi$3&c{Oi(opbQ#3&U98m7=H-OY$>r0{|5NKHFQhA3w-x@Gh zY}yBb_&=Q3?AeCB$re2W17(bfrIGzoH@D4jg)NKrVj&2gmZo^k=uk+t$BT0qvrT4V zLB@kAlqAp#p)vdP@#AobIlJd(e~P-0(6c|P6cUnSxP&=s6HJZF&d#15oSW&nR#a4k zgp7C+upC_lZC4E$c)#dN(a57d81_)W@}{Pxb@nFaNX*C(KED3HUS%p1>lPSnfsG)3 z9?dm>Cw3OBJj+!}?}&)j>+7E|gG3jToZRdRdIqcNCc&QL#`w#*~4ayLaGr+8RhBrc*&JDZU9D#4beN|K{p^B!oZ+Ky8K8 zN!3aSg9`=u`5-{Nuv`lUo?WTf#I)7Fg>kaFIvNyOXh*t-hO)%#3=Y;xz>9l+Vqc=h z`{s=rNVwE8>CMgWprH%&@exmx$)MO@>W+zvjNFLfL7ShSXP~EtRPwzT|K9=gz%j4h zo&^K67valtAPZx7+)~ogKoC)_{kmf0xW*toDpp}BeNO%_b*Dn0`o~Kq1FiI$2;EW2zw5F z>duat;td`W!Y$e6jt-8K6;44GMh#rqF^ic$Hy-^2bPeg$c+pEZ;wci10ngz>WQ)&f zH4>`O2sR`OGQarW{2Li$qM}*jP2TRhy326Q>MM?%2y`sh@s49h~s=xn>3ygUF zp`nO3ZzKew>S3KP?DlAOzT38OF^UaN|M}EuZJ(f^uI6SC*2QirKPjJe!}MqRn;4Gd zaBwK5o97S@He#OcqY>sydDk~?OeVonAL3g8tsEgJcpaLs+nnIC?xR%+@Tnp$} zC@3gB+41ojAR>S&2IE{7|33VoH;5j<-vN8IcVYhnxJW#Pr=ekCIonX|h&lJlJ}$46 zS}1({m`}MMogMe{7>2@N7|sNk97sTlFh1bc1YE2v_)Lx$gz1EZh5ua{e3*HDJ+<_6BfU?kwibln&+Gyki*a{v0Y)DZzK}Z~2%ErlA3?MDTgdK* zbORdb%(gn0%rFR{#C&hxX1g(3Z2uwy^*}ja$5cb(34!(6@CzzGP+f_8?I1r?yTUvW z5E}Fv&Dr2^DK0JDS=|CxC3r~>mivMlqh4A2{!0W??@dt&!NW0CZVg9Z|Ki*YAlJ(B zaz~@B%_Jd%7L{kZY*#2ccqxj1hP>tF<+A=YRiJ-gPEO7t9tM3gGS)%T)@21U68s-f zr3@q#6$v>YEhPY|H--^8kT3A?@g-ED3Z(~uot893$jFG+wiSdkkj$D~p~vC2_VDm9 zv$X64j}3?i{G{e)W}xd`ba7oSt*(M`MB>c!WKZ|ssyfIvSi84Y*m_gg18)312SBS- zYPpxZx;^_v(P`%@I+J|9PI`2-$$n}OgiQonAWFv*X6C>P*-V3n%#+p8y|ALiZ@{SE zGC4UpAZ=313rR0U*Aq@jx^jgFwTa6nxF;q$)(JVj6N8$rJDC2`Kcl&=jSGh0pfZ7( zJZT&3Nj-givwsip^e5@?D{eo2>;XY163*I}t10Qhz-DP+4jl=-W~*4~_Oc{8FEJEA zKOY}F#$@A14B-5s(7D@@I=yHLtLZPp$~sJ^Qu)PGTvpa`r@rcE(s=O<86~ClX`wfi zE)KiH4J9KZqu14a_h>?gl2r@U8d_nG8Fjj=TUx}0g+2dgN2Os$3-kuYi%ngU7CV5M z?Fu*5?{AK=SY2RrxV#``1gbc}_D}@+o%@`A(C98ZnrsP*SgkaH)dv$`kyP^5uLcYr zp13!Wpr#=3_(6pfq<#m|CXD}LSR*7P=;tZH*?;r`yxKcEUle+Y**=;8e(?`Bm@Ma& zk%2*^3?jCV)BhHyNGkjaTEc_RpKA<98K<&UOOlcfp$n!{EPgXvkk5F!zbeqfXJu8t z&{3w>pS-X%9336vPoq$%*>(@Qn2n*Vs7#|{AdH}nYV9qF1He$Ow8O*w>F1Yp36j^c zGb!@{GJ%-5ICOHp6)^4@>JNTA1m9OtA6(A)xWK@`B}tGBU;@E-sxm|IC6UZ)P*TOk z0hk`{E_UU!T3a7)ZEbNoyTV8j{=d{$ZJfr+j+YSp@X6eOKczYBT~ilejfltK>8yW_NU6?Bb`V{6TT^j*e^*Msa zWU;F(L%!eyO#10|Va%N{Oap!k7&);%KiQvak?iQu2RT(dS=G?6%xs06wIT5K8dpjmZ75H9Q&_OWbW85EyWjq|v7WbIh+@zz+5{q-i zlV$Yr@qszDocw$+O3m?u8|7jk?Pn;Herj^EiJ0#{D04P~Fs-fuyF1Tim5ng^**wCy z+7xU+7aru1;o*wl1OddjzrSBnRSg4RXZx# zl-X#!zH9TwA%B`w%3VQKuyqy`_~`!E%~odtP>6m2Be9pg2^edeTQfWmKx&7?U=r8` zQMH6C6dpEeDh@Ppa6rBOFM&91<~p1YPEX%v4i60E)E|sJJtWC-19-W+NayYD-f`$2 z$0w{+5ovFsu?+qYHto*4%;1eE?Cv(Xh2&t2aX&Nu{K4h@+qWO!;W2462Ll^)97t!U zSE+KwWx$Wt5UW8ae&t9oIW5S-#N;+nU#60RVB08;2{`;VXJ;k-FH8mLNFPC-cW}zj zZ?AK6fF5P$nk*$30Dv;{Mb5HwLd+_Mb3O$H>M3&QvU;1Ff1(bik3h%_1k!|gc%3n5 zXluiO?H5e9ujK;5!t+Sehxc%B#;Y9Z9GawaVk^tb?b2jA`unAJX|fU$q?`Ngs*W6o zy>5A+T)pLVS5-%6I6KDAtqE5oo8O@UjSx-?C{O$AW1OJ6gM^=3m^u54zPq~m_1ZGX z?SPIeELIOdG5{OR`t%1db#(&)?t%OL+qY;n7GoR9V;}?iGxXW5cb)_?0h|QG1}W%8 zu3&12NmEeXbI-p8<_(=_e(wz!WR3j{KpX};!M{QA@ZoD1pRcWrwcgcY4A{J;157G> z(L&N^a4Q8;%WlBT5Ek((oyl@*NGiJAj4=JUJ)9HA_}pgi0o&~)n8H3FCnEzhAYJM;Q<%GboVVxpsyW5ffm-WmP8IHz%XG6~)E zI{|?JA0PN`0C!Iz(JmA7GO4P{bgWLc3UzZ!N=f;xE+xc20dO-cMP$^Zr5iv3xk8rOY$dA=K7LE z!4U_+;OXK*CcViU^^VdxL316jOqJF47Y`tPY2dp95CN%RkhxE@u(Beb7Kl54t1F5t ziT4^BTHjel`U;HhdnSTv0^dtug$}M1#Gd;{liw@}v-{n9A|@1geW?MEKS;qpDC~0$ zs9w9~pD|FXMc%#p&=uSMg<~G3{xAuc0h(?n2nOjsInU4D25)0}d{h((!R~ZT9V#ZF z&hp3jcaCmYBr$G~<<3I8bK#-6z}na3eXhd|=F0qTXne)zx)#K`bv@uL5@UQ1g>Ri0 zSzm{dDawb@2==mP^UHmUIF8-bxtjWR_TaS}+}_z4DLZ^^vPF$=4b=GXFcuDNa%$?z zN?@Aeh!Y8*)tMEWjqaFP;BR?&NVPf@gZ)UaS3+}bK3y$tz8kuyo}=4$D^>7YhEOF2 zn|Y(*>fprFr;YxRq9OF;^z4wCd^JuQ3{I zact84FjmN+CRtVb`;2u?BT?M(XWe2tZVjL||H2cyTjy%O>>cNDegZRg;8X?N3B1eh z&qsAXJktg<4I4bf$)a$f-O7Z10BoGb6Q#TiirF7jp)$iQRNpw54LaRhZn~eBlN0m) zbKpDkFjiAv$i?96wb@&8fNqA$6>q)>+_?RXf{P1WbRk{s^9=6AauA#ZT z<*m@B7V4=>7WYG^6k?(neTd_d?FOJW?pewb*={A_EhO}8(^-)NlqAxMkv#J6!bF_o zE|uK#t-6vj6l{@|nky?fPHd3ddox|RHh&zDd*a`q1-8}OYG)4Q{>$aD$(EGQOZ|MF zjObH6HBsnS&|Yt2+`Jk7T=g!-9k3EE&dmi!MsjMkzqff;;*_>}1D*AK3wX$H;xj&> zrq+i;f1kE^yP+Ar?EuO|-VCVaoo>Th)IxGA1~mi6+TVn zOSwK;U}0&Q*dU%by}AmnI0buqdzm$uO*V)Iw_Nzc?BUj4Oq*i+Q<>jXte3Yp*o0T% z+MVGqZD$)X!K`>Oz{|%6;}?cIa{|xer$x7$1w}+ImL)Gea8Z(;MzUF?e%h>L1ki+r zcn__mNM1rn-vem#MZ5IZT0;TQc0{lngOivLSa3Iad}L%5u;28j>mn@np@yPfyC#z& zA*ZC|d37H08>p$d)M#z~KGE0WDR$$1{f)YjIDF`FTG@4~BETVW>*OUj7b2j+>lBFP z9a;*`3sOzIXA=*hXZ`gxhY9z?vg?++5BL(b>+aoSn*GHop#~Tr?szxoeD^A1p!G>Qo1{(yIZ=uyW!CFZD!v0{rvBl@nQ6w z`@XKd*Iw(lYn%wRbme`c$#RmD-!qu}JFUhIQH7wU2x3)Qx;OYq-Y1xWqw|&Kdi(j| ztA85P^1uxUa9Lh+=$gEEO=avK$9xqjy5!7pLn;t-`~n_!>Wur5f@hSW*nM@hTvq-N z5E9bl7NyP3&ZhpPqxjpR-rbP(E&V4g$u_QoOfJr2SwNLhqe7oTLruL%Drs>5Ng|rp zFq}br@SD*ogV%L;6_sk`pTrhWYC!1_DRSlvOnByo2eg34v8I81?rKg>PLz}#`i6$d zV3x5{izkV|oA1Xw%mYKO%5SJ3z!7neggp)h8*s8L+_q@*zKe6)|0BXql&)bY8|tX2 zCpr(*o(LE;HT$nCm)G4b7ng@>K>p$slf90kO;6|+R{QhM-7!sgb>NIwF6VvO3qpj zTUS@NufPAezA$sS8e{W{h8pJA5cl|rqxSIEuhh3Z7{9{8QWrcjFwYr;G?20|yl(V_ zNOJlie?h{Bg`H1hnNMONy2|Gu2KqK_$HNRVy7H_9=RL)mC zSp==s`7-KYFd0}4^4Ti7)71iy$Is6vtE_Tv1oz7mpsp|#tbrpB-{y9B^~XBPA(S}k zjBlVDruYadC=9g)>1AiV&<}wC2+sZcX(=gCiO`8Y{T0O9Ym}rWz@PBpVD0(g;Xz}$ zYKCk}dq+nkK3_xq*LxE8-@aQ~LVp=Fdpk8D7&2*HUmu^F{I3>JQExVNC&we{cmLeT zG4O`Y&(A$563KWk|CE6Wc(_yAb=tLqtZb9$p;naOdbK0;`MLae9?de##K2$nnpkKz zn%1@^(U8_bVPODOC^nQ&EG^w${ki$?J2ra{>x))gb~aE1n>{rv?H-d}1U&WrNg=XF zWt7(;&ptbPf1}*55`sR^*!2-agoY}R`_d(a2XuvPO(<`R78e&cH#bA84R=E?JobKm zesC5xpd+@Y)JwHAKLetv29P&7U+{38mEMg&D;BVp1 zhR6tZdr1E$@&^XfQy{ElYqv-wzxr+{6-0%RbI)X?XLhPeM8MMzw7+cWM9wpdza=_T zVGTFm=4U8mueFB|n@&~I|0OA?K2yo7w?*uv{%Uo+cvvfm{~r#KjuDYXQRI00>XmJ) zO-?u%&9%?%>iBd(&e_09kBT!{)|sxp;FzWK`1)0HaB$GT4z5M`j%IJ8xo)1|5H_-N z^?wM+RxSv|K?vm|poc@Dw}lQE1&<53Z9ot(h%=k!880?j{AT+tnn~{^<_ncV^Ydd1 zJUSw&k9;DZp`%S|1c#cqfI#3ceSLkuM~rW#n_y0jNycNmHn2*}W}4(hrf_=0 zJP$^Xu!n=o&@f`-%?hjs$ zO!D4Pc7?y+z3Avj0-5lot0i&jPR$oi45DpLnpih*DL5T~=%WjMGUTAPW5%{rFe&M| zPIn9n2n!z8zvcMNQPJKqu1}Qh``~59@HmT#*ugX}>7Lu!mA@SOtS%9>RCFt45Ixks z1>N?;NMtuJT3Va0oA+~ZqJ66lRlnF<)0skWlPT9imT0it+GKR~5w`>KBbwpf-X4t0 zKxA26U4`5U_30=fZ-5F7{6?_O_kMAA={r`0afTK^0ma2#3*~2K>a^jdTpKO0lIo$e zJrdiP`1bVWJIP$9_9!%`ig&&Q>Ex$9?@4Dbo87X4ZOOj{&iAK za)Vk}?j|c!X7fdO!p6!>w>up3KGRVg1*5eAq+HZoGq;b54BMMYxNP1~P`ER^|J?+{ zHB>ATX6rR1gd<_Nn7<2e=FaZPkxE@_YZ{!(Q1!wcLk?dH#D`{l!3G}5u(VBbA zI#IY9MhV@O9u=RRy*(+9(>MQ((E_xqEPVRgCTcV^G*GPJIO7%m1IIUfCf5+CvWGpT z7TT;34p>smz2r79Z~K)zJ39-{NpSerTaIkT`eeAcPwD9)xAM>BouCGRYYAA0$B?Tm zGMG2k()wdIeF^P;0ngM5O!nfkaKNJtG5>f}poZ zy@u2*6s%nr@f#ai95;^F|NHx1>r#y12WK@Iv#b{r1A~h!i2IntLsd?M8{1?vl+RR@ zR8;|xC~q9@1NyVmUL!9wtxdXl`iy93Ug@%_d9yI0>6>`WVViwIX7+;k{tbsf!xNW5B2URWPY6f%E z&p`GF?#R32iGx@hf|yLi!T*>zqy$R^QQ`!dArw2A&%(v!*qcDfELChgN~idSngI+m z^S&TK8MFr0m6$p1+sY+t!7PrD%jU(j2M<;0grY^W-zo%l=FVEB6cpf^eDkT^j+6@BDC7tZ%#?RLTfu!kb|DM6Ylg3{kYZwYRK>#6UTD^Gh|;r-Z4~fo=N=J2e&!7@;-IqyW0?1ktG+2M6LpBU@qn#_S{5}m z9Lm9Un9x9H4+2x%Co8LcXlL+bj!*WNugcP^9kg_4@+`#QqM0g zz<)!lkOgUt(H!;hr!kBru2;OsEVmS(w}Hpi_L6*a3cMHSzauLv&*4PEh#!2`^}g9y37 zPNaYEA|A+k5|b5&8=G_yoIU9m$3xDBa>wgA4G=aRt2`0Y+=IW;KyPnX$q3tK5BlD5 zJ`l?^w|dwt7w$mlKmQ*XfB>H=T%$25-W8?y;RyS(+)hyk{ z6C=sDDclnHHCrkdC0k}_+S?=LU%l>2|0pw6TdLMXyGR?pMoiPTIL&sB=Q?dofURz~ zA>JTvI7B*~VM{0GxRuL@SjmIWt?#WD)+Wr8!b@sPwtDu2R(Gz|>K~{h;ShNhG}CGY zU(?mX`?^cR(La>h&3+G}LGsBI_K#?6ZtgRO>Dc6C_x=&14%Xv0%sQ=7M1X+$0KHu) zS%0Oyn3-9fh}%DN5TLSfWk$Td27~Vqv^nZ)Tyr_LCr%c>j5G@NsJxB8F^CDRl<@37 zLbnn;jy6W2snTct&=LlrZJPJ-^)O-rRU!V?IykEEs!Qu{`D!r(YarB=*>K>_D(ZI? z$Jv>Y(5iM^sbTJ!&7p~enBrEJC(0b7kuOO}hcgHiZ!LnekaEIY}x~p+9p|mTZs&B&6j-7c)G$R*JW_1{j%D2TbIQ z`$XEg0J*b6X=Q0Otj^9JZw*mEG_UG%8w1|?hR)9DWMViU#|sU#t97dlyh0iB5ywzH z?!-Hv1-zI{Q^+3Mofm29!?Xlqv4kB~gu4Laf-DGQ%C(<>Xi9z0=SycEV(gZ z!XZgdZv-x}n!tKE&$UBt0ty8(!Xu-j7WEX{F!}0bJcSA*8mcsAgTLtgyQjyyI3qg% zXMp%cZbn8#czCJPiO+SWxnUJhD4^Nrq@*acKGfFcHLpKy1GD3v1ik7ZFE>UHEwtQ= z^nkulJ|uz$#PXyJl7?JAqN7#nZ=T~`lypsPTL)mWrF|Z4OYz=8+!GLG{&3)5IwxCH zSvSO2Ks`KSbI|zthc7!-{@(b*WIJUFgLnmfLE zME9XliBvtHNUl}yvf*BS*@veM0J9`n5IM7 z8?VAIu_h33#k^f#q{v(+l+d5llS&L=F7o?!8w~Mvbw5pp8feLEkWqQDD?Xr7*B`nR$;!JhEXTAZ z21-hyn1OT9*Qw3ja+s zs#2K?U2?GnM|WU6FI5j;vj21iJJ^4|fQzd7>!Gk~B& zo?eW9FSRXG+iK%d)U3w92*5fEjM{NJAaurzu8-9>QVY5)jm`Pt&U9hV>nh0D(i4r5 zN;di`%OLD$XL*Qh|H9=R(8tT|q?nAY_3ALJjBSrKrr3wYNHZ1Iw;5d!qvW-Fg+!bZ2t6K!r8|Zjy9FKB9(M38a8(o0! zk46{nf*dgKgCR2Y!|%Vb7j?YOP<3IEj`;@seq*l%3M>II8i@ln94E_*;l;PGw496k zShGq=3z`oQ`%-Sdd^)!Y3MR;*&hXASjo);6F3LvDzHlo5e!JDbn+)QP!6y)$1W@fHX;S<5eD6XdGBQxPuPA?E>G~Dw1Phe2W5%zT!2q-c zhr#4zG?qVrK1RmIn2m-CMMH9J?+5<=U4~c0hCR4DL?rkKXO);$brgG?_HbIt4zti?!jEQoYL;99G1v4}7(3PWJu|Psh;ccy~ z_B^dUgU8trsY*39$u6=|VzJDO;to4?$Vj09ljDaoa7YcIgg{V*ld3YHd2B4gALIxB z)Kn^}d%kc09m3F!^)l8K>kVA`dy8W3sF;9q65~2mj|Utl^mM^hGMB6155bN61hi^E zLR^5IiuD>)ewsK)%wqTq4TXB?OG8i3$HNVp3GDtJsZ>9AOfYPuN+&i$gL-&S)!7Wz zwh%!Pk?|3wiqcYWJQeIh+nYotL?lUua{97Y&v)DF@Z6s5lrV*?way(4PZtFu#Bdmo z*4Ea-m5cqTC$^d%3Jo1^;R+j4kXC2r=RsGiecWdoqC&pH7O7Q6%vSk~vIE?z;k>Ae3Oc;0Bps(9`1AQv8=oalZ2EcJveQjr=p2S9CNA`Vs7cn{wdxL5vmy7KjNp7TgdmF?}R+nFOqI+wA- zVn&55P!sg9=iqq*>aO{R;PTk z$@s+3M!0<+IJjAv z1H%&Sj?ip;{H0(8smHs6P14Nony7i0Sy+<4cMTp4B#ROF`(*(1cNShRa63ZN$H>in zae09jHFIX5Se*65ePgPs1uAxr3)@>T{&)%5Sw6sgn?P!!vjOZ-aW1?F?e=wM;G)NTIl*maD zCLLO&qSEIwk!yVjx&DXdJ@Fh=Sz_V8fA{Tj4yvvMI)nUxDCMLii)8Yx; zXG}?Ldr0O}io{0Y&$_yBrCdV45C7b7B##`8GH!ltH!S8@pE}c!I-RDi4S0XwuY#!~ zo&@gc77gIZ58#I2$oxvLJ!`z0kQ5P-7qAn15Yjjx34;o0GHt=szGs+}^5Tns41TX} zJo63qb9EG!l9x(Jm-ED#3JO7gmh!w`Kzx>4bgH@P$9KmTf*~0iRq+zb5KBConpcBt zSxL&(p?pR4n(Do0Gshkd<5$a0H}O!C?`EI%Os8~+;Kz*3Ud;6_Qk9%>7OrlO6c;{Y zx#w&JonkB3l!!jK7thmor^^NCgux1zJV~(GGScvv8=Z^$3a|=Un%FJ`w6qiylW+nT zIl;hgW3s{wsb4p#M>82`5BwAVU%?>V0gY|EL+t*~9{gj&+6TmEvlC?nFR)y|qX~^# zVj_yB7eH0WXQ*4ZN6cgY%>U;2+rfAN=O#@fE0aQe|u5j)s z1K(nSu>i^_`kgya zsH3VD0-f#*CNkivfI)>dTZz?1V-WDJp$JPg8h*JE+7awmS`n+qR0CPG#KeZKXg3OP z0D8azgZ~~VF^Jo5zq?%9%E~fkeY=?u^juu6$dJY3L01z%7tV8e*$|vSq}b>~Q$H zyTkOAA|11>r6nw&J#BFnp8o-dh2^7_aY-JpT;hq+p!fhD6ddTJWtjRp=@fLm-3P96 zaa;eMz9_x%jDwtpzDZCqG3FN$3TEGxD+7<7uJirdICq1c9~rKz5=Zn};px;AChILP z= z3r`~?hj?q#mblf3Y(@|#E2q9*!duF(FIqk0#W{Z%^zLU~c%MJlkF7<8)|%a9Y~Y$a zZ?p@2s=nDpGiez z)+=D&0C0K>_Sy02Ra$d|X+RtB?YMz&4vomyvk0j8cQG>HVge%wRB+vQ`G3E|LYHcH zc?M@2ux%u30zjz!sJ&vl)rRAG>Wz8Fj#IlCA90-1%) zWGo3*34mGS+Il=gyi1UunzYbwfm%U~LB;NOa%75tZxGloajjoGx9@oK=x$Ans>K5h zBR)NykKX6`bNQ2RZUMvK68|6~3fw_Zg5f5A{94C+YPl~7RF6Ni$_0BI9pI+w$WjkB zW5BbBqtL8+eNn5*uMB2 zmUg~GWs%3je%<+LTmE0?XHQrbftRTfQGK8+*eY6bLD#*VSo6|4(%)z_Gv+=07Mrj< zYX*@;z1{W8{ucq|lW8MtnkS!colFU-ei+PXPQa#_|9Gpd zt;zLy2iZK^rn|ts3g$xKUx3P=^0l^h8G@z8GEmd31T~t{WhNoF3B|#LWIS^f6nygD z(9pw~QASpFwI835uqgpu!o1)J#PxEucxW3SCG6yU#VuuSY56Pc>Y=)?MjVUn772(d z=z`54V@_|vXzZo(pYPX&!Bo(nX!R#WNcGzsT*%v5ilC|5fvgDeP)s~BEaiIz75 z_uk!NhGr=yARs_3o)&$P3*b91v&1T)&RS6YlEHYsN_;Z)&zG7?rBSjoWY2n;k3gly&lMBEKS=^Vw=jEuW3LXWFiX^3@KQOz2^KfpBy zL_h6F`1T0AF`(kfkahyeTAr@X#B(@X6&(2ml@*N;6xY<`!^|%=y?-VzBXh+OOF7-I z`t}12yE_F9jRDLOAd~q!JUoxh8d~@)49WKKYkHD1sHD;|GUZ@|T|_Z{GfiFB6%U8$ zEs;-05Z6y5r_wV3V#I61{5X?uo0C|D-5S#@Y@K*=_ z{MmN&@XxnzjZma@N3bw4GXCtV>x^XkLCPg8vV3M%f?9*`JaUcm|8e!sjC&fxc~z)} zES4u(N=6x(3R|t9s%`Gg&kKze`Ed^HxJ*U1Sr;FO$U9%`A=Q^$l&T97Mwr=;Lw+l> zR56&5l_ve2a)b)0Noi5tcI`USpcVi*APw}0~x>M>PTEFp1zkfTxc>65g; z^`0(oQLQqelXqb@HES1cbGn8q(U?0dx22tWK7M}gQXxo3Cw4mjZ4i5C)iWh!X|9QP zV4_|ke(|AyV{e^Ckw$e)6D)Q(_WItFEpgU{J&A)1RvOXSPcRLRKd<8w@{SvEP)Ga;D^ zfGVxa^Th;L@P)ya5~TRPx34ec8bK5P^RbR!q{S1)CNE51F*6$vW-NlBCmqvc6RQt(w*KdDJjt`Ha-EoA|$+E@F6cX%mSr= z?u92XYX5*t3MxUz-@h;twcH#V+BjuAT!fATp``SPioGC_BpcdBHmJz@g?m<4;o^mc z48XPA_Iq+x`zrR1b@91^(4xZ#SlHyb+%yO%aku{IwF-?xoE$TL>Pu3Ff*&wGxxO7~ z5P`Nxp7_u0b}TLlBcHLu%`>GRJt!RJGb6k6dZn?t5bXio#iEIPTDe!^^X0kjbyCXW zyYHFZl3!%9?%gTUFVmOPg-dXH$d&HA7Wo0I6P~QR@w3b~89xNFO~Zv6W&T8hQPn*b#EiHnMA zriS`pg$xP`yQ*zfWMy*X=pwVbj1SY-d{`5evlYhhLO!7JIjFk7 zFn83^&S$VTMMg#j;>({AYvg_8;TrvBXb;s0K3$vXeL8aTUO;nVK?sJ#9GBqqK5U%Y z>`SJj!~j7>t=cIa)W?5wg7+}#;2qcf_>mp#&~O3{Wm4T?0WbOp5c*&_gR&tuHkV zBnUhg;o7kxF_2-}`CI@s5AyYUF|i;zM&3_nvQq174slk?HWS_Q4?F1FMNVz;A3Z`` zoOafCoM#+i_z*aYqTPG+_EvC9J{`MVe@f@a0}_zKQJll!GHzab1mc{Pjj4Jt%_NHa08rw{B9oK@^l(L=#br4->XPeW5IWG;cL&=w@`(SQ zVZsp-=>V@e;2unj4Ywy9^?MVPnJ)q5P&jRCW7_2-?VbU5grg(hN8lEMJSUEaM@pIv z%YhU!o|V39A3mCb)BxyIpB4cZfscdJU$PzMs0^SXTL4f2)(CvW^eW7sHNXBK!+|q) z@6;L`!j|r+HVO(SYEeS6>Evv$Ujw&O25~;u1cp{qhpS8N_TJH>h$YwMF6Yz7ECzFe z4I#9vY^EE}$`z2oFV)9-h2df)9~|MbHtaZco71Gh!@6?^5P5BbnHtj4FqkSZ1#k_0 zfJ+)YxxJY^J=Ehl>PCkA+k=^6Q@*-$^9I^|!yGVge_a)I3oRhup9cJ09fJoGU;qPp zfP@6*@%|2meR<7QKP=?wi3EK^J~cph3L^m87s+wMzu}*>uJhDp6LD+JN=o`@WO%XG4Ekm zNJzSDO9rGUVO5p@T|{rY?24%>lTSypncY4MEHOhlyAR0sZScMBkM@B{qEC=j$wrh8| z&>?jY!EV7{Ef#;;45}K(Y*{`Saav0N%c`Be=!tXw#-w+6IQ8qzTc-e81urG`KqCxb z91T}tm0h_-!}>}u#ofDi<>Ek28n{QtO4iOZvPz7&BiHJTnI0q1Vg~kvWM$YocE?Ou zY8mDOa8YY9<*JXJm`U;=Jf!@VK**f60XkCcQ%@0)%QqW2!G7@Xin3%9GA%JEzxMhEHv;sjtC&); z7GJp|?FP9cSUrgVV?H#v;730R3{=c|T#ZoYt_msW zqT(EC8}Ccr*U`D`ufj3$^2Pz?N=Au(FJ%67mj0eVs4%Wv z?SbZlL2`F@0r2PleJm4gbGRX7y*}0x(f=^L9%?nGv97|UV8Z02BuHMQd^CcbD;O`4 z#qF)F5C)C1aX45X_o27wO$fnN$*1&j?n8fisGR)dORQWE+6UaKGniG#T`4N0yf{WB zqn5hgAXDS^nLkq`7Jn>LR_$Gdh(js>fcuM0#ELH<@ckQB)(h3V;c9XdjzgL(gC zob@GVQaqh1HrxIX304GuU|$(cuwP9PVw`evaSo+c-PBb@_JJ#=H!q%>>o6g#z@Y!o z2k)SXrwYZnFYWnO%YjDPk0kg4!FlDyLC#89S>YHZ0^rnltbcNI{|NvD1ND_yT{ zR``VC6eD+TqIo!g{+g8amFF%*6jpw?qLVh0a3a2-FRS0axQ9tfdwkeiVhpnAiAH(H z-JCXV0i&m5j|HsYP_ctGrCQqBX6W9bP=FOdj6VN2EG+Y`v2O>hxs-o%vZ4a=JiWc! zD`){V70(2?%0a@ny5Z_fMuPG)=x6jm%5-=rH}<5ZrtPd$DhrOGT-xg#`Ryr8l@8Gk z^O{z03jpZ)`1n{yR~Hh)v6sj1gPp+(AdO5YHXDo2SCurck7aUswn;_s@^2~^d8mT9 zTSb(f6=H=*p>pU${ME!cl@dc;x zOf3%-wco|9ZEFM%LIKnz!$iQ+oTFMIv{7GQnf4keBW32ZFEYeri@f^2saIh2kf75_ zT2DgWqQ#&1{Q-`I`Rkt?@clwnBhq1~0+#CcB1+6=tzRbUG&zpIE z*miVFAyN2})VbFO21;LP7mzOjy4|ZHEnm6w8)j{$b#4qSWDXrbOu&8gNKhUjVg6>e zzuK8NM?cL_JXVG%?yr7pAminw{6MZ}{)dcw*8~ zYl0>58&jp#@?)yjrw#hgq5S_$fG_=sFEU~ZVe>jH+^xE6Xh;EYZSbGc*H`k+2#e+_ zS&jwvOVCljY7dn^x9&*ZO{gM9UZLRQM(w66OT%byyI-V7O4#U+rNZX-vIJ?KcT7(1%D9Nd)8bi~BR2u_{FxLPFEkk?-)s6G_I!Q@r z>_w?HbeGju62^pu&QnN=^<^8Pp=47g6M5^c)I`l3VA{j6w+vAfC>!)Bz?d~&WW?oi zURv4NEi@eu%UV1pdy*gop=ObI%QKoQeKTI##)dWf?q-W8Hkr*u`Nt4_20bIAjyf|~ z+En`^L$N!Q2!=VB2y1S=Ptrm14EBg%&C~$A!S^EqTwJPVX4Cb0kAU-Pla-UBH!5IQ z;=2F5FmNw8TT0*p=#wL5jZq($=|noaI0rF@-&^??&O`Wb*CR0r(8($yh$)oUuhDI8+R|R$#7N8G6Pzk5{n-p!g zS^4R~=3aJGfq&cdQ{SP~IE{zt2~DVJeAU2T1Ow`e1<2se;#TyiHZ;rno(`nXU-G6- zKxR%#_ApC1Xy3Wb#pM$B`_484{ZZ@BASjK5oP@G&eXdTO{qp5)#-~1#5djtX%gs2^ z*Q!=9`FD^$*Tn!jjIcVV|=+cp&9D_EW> zDoLFQfWy`bd5jZI?8g&ku&th)JQuPo^)Fv*?Oh=8k?*y!=@ib}v#ZftsBAZ0Jhb6@ zmC+BIsr%5aJX{X+Wx`%wZ3$2p*`MqIHH;Dql(}!t>#`)@Rw%@$864(m6Lf;P>#c@3)!)>(0s#y4RwiAkK@q2FJh;B3Nux zIv&reGB-Ew(9jjMWRr$9Xc4Ld{R$@~uVcY|xZ2k{ef})KeQFCVUi7JlW&$d={;6Jf~PTb7$%{ou$74CGjZufs2S zoKJBd9Y;kxy@!d3vAUA+ovRQMqe?16zXGWnVtbqK=BN_#xvKR-K$ho}PTvq>bTA(} z@v5)*p`Lsb-9u!YN++MM~a_SmV2UK4t#gdz%wyfdTL zQ-?U484yd3k0-cox1P$g>Q4$XNCO-ydBm-GUt7@Y>Wuca!Gi?xT$GR`cfH=Pl~rFZ zj=l)G9S|LyScPV7)XZWOS&J>$&d4DB+g`?g!o|e}!y<+~r~GWAMsylNH^4U?J-g4R^o~lD1RQ^(_Y8u_1DSQ`yHrlaLQK!=xzx>ET|6 zk}WyKrq0LrlH-JT_&yYWi{p2ht5y?oJq!=vVAiIQpUPG_9_HZUVuRq&#y?R`yw`P8 zX>0<#{o`KWAFu81F0z?WQsc{^&2Zhku-Gs~cuc=|tNERd5H|w%SLBVi(uKvAao2}n z=H%6=)%?ASqP#TTlKs5$=A{YA)TAWjV1KEd&}e)}BdI+4+%_4k2ACNTQj6U?17F%s zblMbDx2j;bW@fG~e7Lf*0?+OX1-}#-9D=J?%*g2!4g&+4UM_0a^W$X3&`Ei^ZNeq{ zc2}KSfK`-cNfh#ZexAJjroATpAo5a6dmbK(r6n8tiBi{biS$!GN&7R_z5%3IOByJS zYA$IH`F+3pIJ8LIkCS`)=FK0&K{NgL)KRc9q2g?DV1Pls6uhjf zjoEPFmHpmEUf!LEcz1ydvuN++WDZImph-gs{SoZ%ac)B*Nb%J7EJhLDJicz(>%&#Y z;t?>W3JwNsPsq#^ROG!X)MwiY^egLs@0vCgPS?i$xIFh<&NW-xET({&RL>xhZpt*WL!uH2|MqW zvp9UPCMS*@(`t%}jszsYRh@eaGYRPhL>Q-ucL6*xRde+{LrJce6OfQx(J_VkC%BuK79p_VY$aFOsz7240Jmv<#C8n`<+^yKG1g)du>pMP4;IS6L>ZYnQGW6^f za+W=aq6aM^qvFsNg~i0QA?*Y#CarE=lL5Km#oKHs`j9qrwDNtaAN-4NagoIb{$3CopJ;1~VSQfp^m2$7F4A*a z=gi7=0LFt!eg9xxs+~_T7L+I&8s()GX~nT5WZ;lqo!cTHS3kUF;_W9`1{Dz**xZli z8Pb*+m&@dAtWP23)DJt`99p>FTy7p*wBvPG#!k8M7}$rsBcmOY?kT@GwwcG<8#J1# zguM->gz@JC96F1@MyBgIx+TmJq;C8Y88;Lx30|rGpjqB(LIz zmpZwIv&XfJjdjd4w=d2Z*vKDqSl*G3Qd1Kyz=JZ6qQa*d0^G1_8_Ga7)u0@8E}v}h z3}u6n+ki9;RR)N;1y;V-C&ZZp!Em!HisrbuFOo~Uxe-#%q#SeYcc+ZX zym3Spi9cGPI6-Kd7w))2)D3M`r&55gtQ!q6YhO4+crfay-{_+hgB@ z_4O7iGUekOS_!ditF4y}QK2|M!$lo`!D@~HzT%rS<(+C4-bnLIzQ1 zY8;CWDVfaYI@_m8fdB;oB%|2ey?xN3jxo+Wj=nr9)oF`zB4{-GkfD$FS|CF}Sg^Aa}El3H0#X%G9U1J<$_+cqY~iZ;GAu#-!oY-9Q3O>z`K_4>fCf;*}cvMmu0;M zvB6?GY4uLE;+_!SAUJI0N^q;T$Jl6e&KAyYo;??eeQ#_$k@smHf*0*a2r))cFD#Sl z?bB%fA^76PgmC}xAUEycsmL+q$Umk4WXiJzOy^YCe1L!Ew%*U{mR-s^`k*+t@g?CJW9Y!`h=0AFr~b_Q zjPDLRq;xiKwy@p3=Oo?uWj^;8EDuMli~tJ_2>9erpY9Z3ZDT)wk zn}GOA{`mSoy3BCtfxdfuygOg-Q83a9TXo<~1B6M=3TZ&7%!`>;N0-i{le^=a$GiQI zCW~RWK%DGx!fYLW0_gsmAhR}IqX*B2CGW7Cd!yG%f`kG4d+w%iBnP{>!QOZZHFbCc zo|jhE4-7z)uAIy^Ia9rhN3Y2f>we{U#RKn+IG_{&_xy|O_s^g2rF+R@P0ihW`TSsu zVVTw*PO)mHf;iCo!87_|Lq;)PHkI`q+qLaPv5pWD9T)PjlLda&+BN`=HhEZ*-TjuW z^!1+!egQA{8m8;@FTl|SM=};QB0`~s-t5MW>NeOU6A?kw-Y!ald(ZjbA923<^yyOo z{v$y`2KrkC!XVbHhE}hul-F*@Zl-n$__pV*Fxqo;oR$#lNP{EO7vKM67e2r{ckTe$ z4+^r?jfp6-t4rs<&Hh})W}1q}r*`&}<>s^Pxof;Du%<${V`vW>7B-sWi`{A5mOOKJ-{N-YbBUlUH_}`hmMBpk6rEAOg08Chwh>*~7x?`F* z5AL>e7cjz_Kj5@l`iGKo5!%iZ9*?;n0$vh%?Cy85U5N>fe&S4hc4_iC=!LLR7yan7 zF$NfwuCC}4R1?8U8W4nWD#jgpdo%hN>e;w;d*XU=fBO16!3zw?_!^eNqM}mX>yRb< zI(9xeGAPU zgQ=<@m%EigNRHYu=VfMAQ&;b7Xn;`?z&<>$y)V1$bacL-LHhn^Z2V4EUM?8+?L7ko zPkRPF-CHC1MBxK?paK8%AF)a1DX{hH?n?4XO9f(M_`;%v_5M^Y-tO@55zEE)-;t5t zFJXDrJOHK&N#SZ!%~lzNow2=9&~|^;(h}Uv)NPM@k3FLYk*FG{6C&MQkfPAheTay3 z4N3&g@Rp%i9i&VmK*k=4cjA5t}z--GoG?5;?Il9%e7dC_;}yKepSk7|*jC|6Ka zl<_IJ@zoP9{)R|%{;w7=`+sySDWPckttD~rd~L0+uaAxlc>DO+n5R*dzXqrQY`^sL zqutkjh!X_fp7?Yh3Z1Ma5*XLtz#0u#=8g7-<%iQtt0TbkANYxA^1zR z#0ggSzPlwJ$@x2SIPQ0US8Opy6LZ4ZhcVwiNAh9#>9LFy9n<#Dk>le7fCN^Pd_Cl!s1fnoKhIZ9-Z6YKWcy!888T%LXyC6Id(_O zb%4FrISdfa4s1X^QSw+wjW>KRH&9VIzxuJMV;vvu#elkb& z82`~G7pPzoyf{z|4h;`ytB+f5Pq}MolyJ;SIPNcz2AhKPh!agEF9&P{g9EVm%x`XX z2!H+|eyRM`$pb*NHLgFDo!)|%?bbeuA$P$v03komUwRUYU+X(>)3 zr{RAVo6$R9;PL1FgntK#8buZZA&FKnILjj!xg6Msc7wk3(&K+Qzp(c<5sAujb z%pO3}6e7$iEW~wQG*E1{OQqEOIqbx?6ZJ9(VV?~!8ZVx-wA>3`2J2k}x~fWqtX;lV6X#e9 z`ta2YstMi2GkzcHS36CxSfo8vJ~1rsbLVr>r~1!Gqqjz_0<|zOe2JhYzdUA)HzyKLbb(?88}w2Hqt1j2w}<-a zBr7H%GiyF=1WqDYTQD-J?2GA&CqHixR^@tC?8NZ;>H!)SNunq4Xi_bCn}?4si;UP{ z3uil?7nHE$@ncx>97N1{biFTAZitd{K8ogXj#&xkadwb;B%SEF z8cJWGkNx@6CmUGk)*gaceJ}?bc@Bc9|ak zqss)`3d9#s@ONA;R}C%p=mA`+D>1 zHbyaM%Hm#lYGBD*r@iliO&BbjeNn65YhWqRdH3y2N}%fXf62}+S}7yGN7^Iy?sku< z|0PU9p3^9&XmHo9(&J+GV?iec3#vQ~xxhNJ@Xedn^%(00FQ#(~6t7eH+N2jlT%2QY z_WzC@_;;HS%Cfn1&s$6tn6|)-{3DEGN-Y}3r>0&q?K26%(yT6=Xi*NDO?)6MZ*CYn z96jEHb-(oV+5gAQ;=zM`Tii{AT9VLq>}`&>dSY&FPuS-hDgzs|ykJU2l+${&s zql^N-BY(9oI_I6F#3u^-%NVj3pq+lKroa{x!x&=h0eld+Iy6dhShClE*$mMi3|I0( z$@x@Z4Z$Mgxn_U5eRXb5(bVNX$vrNSmY5Qy6^WIlp9IioXx_K8>toW~j9+;7$ozbH zj8L}UZ~%QUj!)eIw%Nj{Uae6=jz*_bUaorcc97;B5ZGhiD=W7R9^5#pTKNdbcn&Q+ zzA&36y!W^ar``#PPWeEA5E7iO9vLZpK+!Bq>2)RyEdb4A_-kDfdGa*fkCWx}a1mVX ze)l3$0uprx8>|Uk{2ovAZffAxjg@zZtqFq!?KF>|OWC~#Mv*a2FWu@AbqK>v~$yhFFGaXAe=sx^jW<(i2Xk=bF0K$DY8*SQ@sKa-S~iz zQ1_$MPmepu$s|rz-uFmH@u0>&%((>}*Oeac#>OOY>aMM?!v*Rik(`>h#@QJ)Cq1^= zvr9|5kcV)8L@1As!A_kT=lp~?MfB|Z100xt0dm}n?hAm4m%B#`Q`@<``-13I6>^me zPW}=eU2`RW^6`8p?B-B@L{rp!UL&DqQK!T^`PySuNgi+b?Y?H~~zXtgZ zc$0rofdZ>9!f810jB_oqQb|m#ATHH*eds4yiu;FCa&wDS+2aVSWHbOgY?s*W8luO? zayv?R{V1Hbu{5mZT-`mW0+OmyqOi4Ow<;Ev%|ILkWj;tVQ&!`4j*X7`XtW7u8^Ra_ z+>r0MC`7|f-W>N*)IiI{%$j-|MP*%!mu%s?AF*k6artY z>BO;D1ChNHuEkcVIuTE&U^2dMdb^iHNm;q)>+?tfX(?mZ{giH~^9IHgV2t$tD0|DW zD%YrOS40dD6a^6wP?7HLR6yzO5RmScn52M!fCxx;gLHQbNT+m3cS*+{ylbuZIKJ=C z-kTrm(51+n&wQTy9`_j6bzZF}Iye?KO`Xp&#s61*w4z+LvpA3gI>ptCv*1-6L$ISI z7bkD>x6SnQbQ^(7gbQN-5S!6BwG<`&oDSv*4*d{enC|d(`mSgx%)2C{k`DQKn;u|b zfU%EqbC=?`LEA{O#R`D*q0=#>)8X2>N-SW}mnrjFISRI1DChgQmGUNms!(b%gNf{= z1_}pq!`B2{OHd9EN3%#6@gC?(B``ZUJg~DXg@QXHJzcZPmV|W43&dtl{|edJj>4=I~_U1MJp&Fp?>s^l&wjh z?|0QyKvn^q*SxPGNaG{jVP1bm1cn5B4t-KA;d5^7XpUZ^Y+GYYjcj=^*(&)vDhJ2? zRcsmll#~=9B#AUpYwsNzhFh=7AA`;Fu7z9bDNC%mhjn7RzxXKERe&?B}uJ>xT(9No=X z1hcb|!5(nUa}oj$OS}3S9}%?eIX~r$efy5$M~)&fDOw$Cl$f%IH zyl-mN%hEUfd7E8P`!TGW?-v0*0B}|cC^h|Qf(Uu+Ae|HMon0&Ju>Jdx{o)MCsE}l} zn-dX9&R&#?sEU~&Q6(|HpPD@d`$Cpt$4KbNNu!rY$t3__@>EM@N&@_Wu_9;R>;u3b zR@Zae5t9(|LXICA)r&Elm5C&TJfaE?y2d**MS9D1i21l!IcxAsc11=iNAnGbu15GA zj(gKZXhMluoz;|Z#2;0LEQHSt6}`YBLnFKNoxyqFMS zD~CIKy7xR@pasB=VyCh_lWblrfj7+?uro`sVJ~rU% z!gxQs?kETNuZ$#S;~)q!y9GX4d@h9MLl!I%M+ameh)`)}R_A2A#uzju`b1zwRgk>1& z!C#n|$Ntq6aHjkvRlhi<{^zIU0hgo*3iRbKjJ5Uj(jXMCPx}Lq^i4PJSXdAh-o%pX zim#2FqVdK+f%B1`addA7=FqJs4Efs+w%AM~(W;w2Loln!`nU`7eKBG3FIyAkTm(58 z8E8RbSpwd64Kf4Zua!o|Mjy&Ed)F;*y3iV+bvx4|&^|tlTCN$NCA|p04ltg2dWa`6 z4+ttC8#es$Ge$&u%A3MzVKJ`jTKcuEt!=tEt_U)a@6yGi5Fi-anWK#@$mo)YQ7js9 zHcm{}Z3970Kdn#nLDq|{7QbRF;Xcjdg$|n`{o#V7S?YVn8o-s7($Puw_x}aCQLyBu zic*ukwd^JnkL=G3K_+PK&#Tny)c-;3gU6Cx+!JWXCV|@+$?%$^@iK2@qCCX$cd@BT z={0Nr29Lu(Y7!#}C^I00lUA8N^pQGQ#%)-R^!~b~>$IXu#k*8$vlBSUcH*x)O3F`j z^lhUmG0)9etY$hi`(STa-zFx0o$cr!&Vd*Y)ZA|HsO4x>U}C-2#n24aI%hORh?#i_ z8GW*~H*a*EhGw1&m4{)e$KzOsomcF~!%#r01Y<)3PsY4SDs64ID=IWc9<$}pHnL8q z^|U8$0%pJdbxHEo(6WD|K={Ujp49&)2v&Pytui8{-|n~pD;AQRk86Aw8J+T1y$9to zr^0zHOsx(=#kFr$S42Pg{a-Jj_okGPkmFoa6qKqdY1c`fy@^Vj|4 zq2yuF2ZCfqMy)!ljT*`kA87fY8>c7kLe8{&?s%2mQJ%&f!!u}Z^PEbIRaik;q*$ISA!qNJJ-0?KSu&j{p?7t zGmJpsMN4-vKttc36yzo8csEV@sAx;no^shgO=}4IBUd2lY;pPI_JLjcHg&0Ik?-aN z*Px_6~JsuBha{c)?TbboQdJp_qF@ z3R}5qp(}4AT`vM;<1qrS<2N#T`+&MgF`!2fy~oV_YhZUEng#zFr-{A&&bKKDit6C|X6SejAewO4aPIQ+OA^n%Icj%ksN70l2*!8l zr$LQJ)byKdbp@()&T|e7`QZ5nuP@HeDQXf49$tkJi%7~gtGc+{9Ol^EsOu6?P|#bG z7f=*rkuv@acntK5!gtJ6oUUo^UdHZF;Q0jyLsqPi6>_yEZ1Lw1=sOfG!6Nl5c;BpZ zo=z()G&Bvt$yMxyw+?gM<7Sm?=INRfizNvwb~j@N0s()`+_n^sp{)JwXXK@raj)kL zi=RG~U*IxHq@;B#M5cTG9FjCbSaCoypd*0<8%_P)VoPkQwL&CO^1bN=?Jy2`rgAjU0i_aOT~hvoTK|KCFR%*~TBuKyX>G|6T_;laI?*kE3Z!3gdMJu^ ziV8Y>Vbc$`w#?OafIfIWBN+k4s3t93GC*1C9&U6b+>$*`IR`E;4b4@qhv{fREILG- z?=fZceHctvh_&?PcS}b8R2NLmk13?}Q=^*I+uK_KsFMex{KoOvwfktTK@d%-JtKPA zV)P_&>M%0#v}w5 z!R>;O^E&Ud?cd+eww2<89zyv^#>sZ+mn=0_YC?>k$gS7%S->>d0mMG8R@}y;iDk7w z5aATXs=mGj>{AUegx$KPucOU~C>9jH9tDb#fq z`mME5x=)vCIkeOkeK9%!jFTk$d??`W+<*8bHM`~fWDr=Q@7jDzi1p}-wd&&!$XJO) zEk}N+z}!78DXE7@2VvJOhIZ@O4Zb%e3=#qYA%~2PodB)#V+}5*?E`pX8ZpN>(&7{f zl+XTuQ~OGcUXK*>$FR}>@)*E@1`t3D40fzQx$dv_+Br&eyL(j#h)lYMpii-J#k>yt z)NbW&DQ$^I?_E9A*By+LqbB?9Vt6R_kxqZap~Mjnz+QD@lAjOdMTUgDsG=ahG^k~` zXtx$}iDEK~ttqd6L_0q-oKpU-q};5Z=C#RNA}_Ed)mUVDdOj2SGx;FVG6P(GGqxSI zpfQ!|@16K`k9h3$uX^&0jOSm*jrK37{dmijS&K&R&~0n{%=~V>K0-j0P`%uv0cjur z@$fe+zDImYqkGZWH$uCB{^;!IE)>{8Tt@?gRCFU2xcn4?2?oF1D6(hkBECJm`kMWc zkFi{^FR0L3&nr1BmF{DIK3fu2{3R6Dfigd$wp*XKZvEfP$CG#z;j?4_lUuh2_Tsqm z7CNU`Hbwf>?;k1c9${QHKcBsE`~nj*#NJ-Zr@5JUZ!JrR;*|g+fj79D`Ioi-|E?d~-9b6>xx_FO9RqWEW%gK?EN` z$ioSA9C!e7O@1GGPmaZ8Kt4rD=NAa77Rvb9ia1}3yGwC|jW9||n(0eHx*$}q-x8wg zU26bSGlVanpWKbzamaLWB(T}X+rX-xS2f4%_o#!^>UyUVcKcek*C8hW6jo79`1-Yd zBz786$QBmgdRp`K`}gFZ!k4RHGo}8;3A`>x=b6h9F4E7U?~<0r+}zGb{V(cM{9Sm( zl6x=i;YU55ei<~ab((@BMx?=3-g!>3&fTArC-|C}yc3Xt|9mX1ZEld}kmmmwG0QR6 z%J__bRitrdZ8)HEUar!b1jALVv0wYyXG1e1qP@I^gjW-kEI@1k(BTKF&fE1T`XyPi z#1xy4FZ_aR%dFq$m}SziFPD7O5**%h8&YzG0U06TZ!b^5mCw*rL>cmFyrA};{Bg_G z?;ARMCWhr~14CVes_}kF0ey-w{+*qS3hUO;@n*<{*qImFfx-PK3#krxqL|IbYe38K z%nT;ye-t5*MGoF~%F?uawQ@U1{FPTIE6uHiHW!Gp0B1W@Y2()U zT?4>xiCsEit5nFrL&skd^!o^rY1PX!01uAmMbuf&i5qwRg1BZIS{+?zQ3paT_j+B| z$VgyDaRifi8(jM5-HJfEFrPkH9m>ibRUw2UxIwq-!EECnPCM$9lo=RR%#+EyyF|t5 z*N!hOUGzW}f#&AsNbX}j+!8#PtHQ|jLjV}yHHA9AOGw3Yi^+WU5D>~Pg0`=}aR$_n zs4C`GMtzA}kg)6fAR(1R_W0!p8bvO>*TyJcaaQEyCt}33D;99kN&y z&dw?wELvL|^UJgr>gF8~3nmG_u=u*d7DNg}Y#&}eVi62;Xs6UB!#KGAh>C^9?qu&T z7AXeaPy}OEvv07&>Hrd(0+RboACV#^3i&--{(&kx8;ry^$U)GI!loL@NK4x%>uqUk z+n#WUjGkJtto%v_*#KHVWgj}2vB3gzV@y<(k%56o_-m!#as*uV;1XL?3A3Gbg+HQH z_<~mT7q20BrLQq6TM7n2^=W#%8bY#*#w&eD(ByN;zAfK-{*%@vB@^GkZs_2X`G3y z?;IDpU0r(mmq38-O8@IOy_~eShO3PHU>US@I7$rP7)T=^p*96f@A&?5BQ)E!A6%T@ z1oO#~*(scDMQ7@!U{d^MMp`w27f~f=7cH?ikahtv+|A81vM92)k#4joxG?&UWV65( zdK#OUAT|hKCb`z|x@`HWICiV0NQP#>L_NX8eAm1|QL_G?M;)tZay~gR5!7svaO4Ia ze-NRpEy+02M<9SOvkU`sr1xIF?X2@wDqGkz`=QSO8bA%HxfZJ-Dgg=E$!xmD1{$eY z-qOO&88<+zKUSc9HrGtnlBaTkfOQ1b;*fU_SR$=+1`ZMXj_fIPc z4z2p?G-B2rsdh|b@FPlXtc#56?@|*eT92;1Jv480PI{7zA~cyI!WH6R>DYk1n`g4h4iJ8W0OaBZehpku z$mO;KLkK8+=KM*as2?i%3FC;fgA*1UkwztyJN2wgRE?ecnSmO{M|Ur^x4!D++&fxl z`-0bCGL%V(xmzZRO^h4W#F+p|PlzL0AIjR{?28NmUYH=A>_10Aam)_)vsdQ-qg8V^ zIa;~Z-%0+#LR&_LL5&N=3SRVDhl|4ld3N?=J^dvE*YuPzU=WV+Q$ZN)zl8MLgMH4s+*|vV8q6H*A@KKgZhWfGP z{8QjFqO0A_3G!28>4q00XZOjDhm|vuk|cK@nhnGD>aSs~1)tCi`{{KyjNL?I3Ogg` zY3+|6@2wu8%oskr9)J7){wG@ub8|FrG`t=6S(v$WimkbMPmSZ?*e-Lanru!fq-G{3 zyFi#+zk%Il&BVbf)9w2!QmeOlz?(DWjb?7Q?t0Hz^c$srSn6{Y}rj`&S{0PcRkSPh#+v!pphD^Jdu&e*Zd}{N%zXrsLWq zoW8P_Q(N2jK)X)k!IQn)*av|yqilk?fq!h*|s z?ISP;^BMNdLRJ)n3npHXzKWIKhSt-5x`VhlaP)^Y)Nezyq}7d?9GL0BAt!H$ktKIJN9p%#-yrC; ztB8sgxgx4zhqGy-1S92DC6P9yH=ffR-Ed8Z!9J8>|C3Pao=>slPRzrDX!HyRseG?9 z=qNSH%~#ptSm|EKz`b82608Z#R9F}mEEHqI!fc`Y(DJ4+(CsENGDSv(?dmmY1iYkN zfJFeqdP<5e1pQ8wZ9+{n1es)~+e=G5y@xQo0`{meprfH|tv*A6s1tlP?kvPN&g=$HD9&HXh!ShdXa1B+P)G1fmFyI@Jf6|LYOh5I|}>**Av>J=Id+ za0|%mkC&`M&+x+{Oe`{g{BYSAl>sCIutPKe!T^a-KmSMJ11~{3I(*K*x70)v>cZu& zDD^%X%Bd;3v$H#_W@`t-DwWk*$LAcykSzwdROj7!A%Rv1i0?SvN%<O^%h(GhOqG6aX>+0w@9c_8r{u?7PFAEE`g@u25Ah+$s zIUR0zLx~N(rjdr(b%%YxbesZ6a3o)gj*gB`r==ZY&Rha^Bl0Yp@|H$#W!>4LJ6htr9aKni4Gd=E$1l_IlOdu8 zx{RSWgW&Awe;fwm3>kJt>xE3vb57Mb+5imxJQW~{<>s5uFfm_HP(+1>zSe~loZf#m zTl^GCT}XEzfieb8771DndyDHF+EsH)_J9ZP2g3J4U1yP=7(|MLOBZs$HN*Bmy#p*G zXP~k|O8_o$?T3z+t^+N8k0BKW81PC8G~nw?2Xj3r^&42@qv+)=NM+K?V{$5zo#E{|$L20WZ4RzZ=HpKM904 z&fok)&=-=G{YJ&m>Jpz+Wu!}A&j;o17??*!p5c)R|z11@RdoR~#|)jw}yM-DXMu&h#2 zQCX3I=j!}~ob*R_Hq-BH7UzonN(V(r)_-qplI_h2$U)G9{;Tx;6*YON)pyeasaYud znk&A9^_K_#gDk%x{S97mQ`0m^vQ;D`yeaj7p6QQ-i1?72#-kP#qh4&Jg6lnd?2zF_ zm};Q^?+q>eqo}x;4IVy5rBZX8A_01^^Hisz@t3vCaKyQAA6lQqCimIxjDk|?ZHG|UdNf4*EL*{Q>Vr&RvpXP&G zX@&uni(Px|Um`sJuC|JB)K%!ic~Qcf7{>u`&xyD=P*-pN&(-07_ulWPQ~>K!_+WmY zbj&dPbIp$L^>vW{^UMEF@zeg5q5aSnb99^%efO@@AscpN@UwtEjq(FVV`C%iV*tIu ziCXrWoO}i_FV`>dTL?vghpZwQ0<3^eXVRC5RQ3JVzdxQBdl~l`oN1vLk(HNcWXk!z zolsNL1mPY)yFrWU2&aMw&WZn7N2)}O2gZDdIG83P=(mMoIP5t@1kRI=aVzd=+`YKEYe%aZSJlxKT z=ak<*eR=~E5lEfG<|Ps(;^yHQ14j}s&@wA4E3qsK7$9^QmaJcp#tQ;_0M4we7=mwI z2Wk*lzz%jQAdDLpr2#+`fy9+kJ`+-MXgHTafekCuKsz|Z`kIGxe)ko}LeAdbzc4EU z(cX1nU4JYE!@YZsi(9lQIXPmjz|~-}oJ|DO5$yc1RYEo}ESYkm*^$+B|9+nC+lpPK z2jNsWr^k~J1lI154Y~&ysA|Re0p<@DQcq7$;GKY56TmubxVWoON&p~{g5zWmpoPFC zlV}~upW#RPR9+4t)#DIFwLY9v59>GJ3yY#4O5AFx3pcqq5aP;43m=nEw*?c0hlYwt zNzIfP?SH!W2S_i1a&W0ZnVkZ~|1~2S`|#+9O0A3L=h z#S8r3W%x+?Jmbarah#~~6&_qtXaK;?ys@xAPD2wK6XU#}&L;G%=_Ur0*f89LD2;Ce z=y)kvS-{e-236D!QB^hk8`nX8W@ZQOj%g4?fpbG@7?n==+&Go z)YX_{>K~@D(AIW^zYm)1$jC_GiFybRM1pFF>b4v8|n46k97Td5d(E}c_=?n(|J69|%KcUkU49J8N zYe#4sAmgsX6Ry9Gd9Vx`cGnajhiuIUy%QWQzP|M^QAt~GDmON`shYs`VQ#?{pojL*5M7k4eC z)tj4}y@bmQ`#lMmw406rc?pnBc)|d%y$LceP|GK~+rb7041g@qyfNu_-N(SlgY*~( zb2l~nje>&G+S&?dzRsbc4TvJ~#sQI%5D@nO>PbmT`aLE_Oc#crKmWP%H~76}qIuX$ zO0oxL0&wy>+uwF}c0w{%al`$rEThS>TPFQYqHo^30tVenf{mwQVgYc8Kv-IK=S~za zVjKYOR`+IxjP1dIeSpaqj#AQ0{Pw|DIKmtBjL8zpR9$kQy zY7n%wXmsor({RX~0YWTOEL-akoUz6Bm%4HPePx;SZ$`~=(iTtua%pPTP2SPQdj8^t zxv}wNj*?RP0d&GoPEVsEpF%DPBgwa~UuWm$wBJj|ZC_CQfU|2bQQYFf2MKZUr{rd? zu3%aBx&O~U%l|Ii8lswSJ)HgL_wIc1(Y^ov8g4|Y|Nj4t8%e%5{wss;^4$8bWa3{5 zUoz1_`XmUSm%O|-0@jqH<;u%V$mFlE42`t2+KmwaYWdJLlQF)>lS zd?_lHlU-D#!+_IbMZvJKKj6uuVl*o)==WmxoY*pPt~Z<=TR`PClu~upXqGLltz;x= zE2~CK(uabAbr1@enMrn5ejR7;DkEp5{>yU~L5MAMrXJ^^!@rjMe_XFy@GAfLJ{lSgSy_J%YsguC$5o%1 z#ZId?7jYJ=|32~Q|MkN-8nf>HLXW>dyZUr+aNo#CJ?io%oZAi#UhX?RizwR3LBvZk z(M#WdTN{2GgCy+fqh7w7cknJ_XW{MLzJ7Zj43=jVG~G}(?U5|}+N>zh>L-`y=XLI5 zAu4ANoZ z6c#`EKiOwk3j4OrnrS8!vLq$TftP`C?$w`D}wWOI1QtC6q!dOd9#7 zr(+w8@1EigW76}nX*)ZftgXn)$;*H6r=h2R3+ttv-0K}v4j9(+*1goxVYD+2=x9GT zkX2P3U#4>$8!P%Lj6z!YXr`vSyIsD_yfv&Ep4`u$+gn;*o!$Z3!mVB~_iimOTNoQd z@aoU7w^sK0_ku#Is{wL-3g-k*g8(={p`t3v$fSP}RIho@K>YkUXs|QvH^*Hf{=&4< z&yRwBU~*DjMP+PiikOzR45F~$Ccl~??0HH+5QoQNOs_}B%R9IJd)sb38d=|&?>}9D zWn16x)YK1;AHUv;got(-85s=?f;tm&%6+=Q070Q0wRhtks|Y8j=)%InDyK#lb|$8M zz_VPVw;32P3w)Z25f`T{^z?o3DZPH} z)an)10Jr<|Qv!0)0b*U{enNpI=&ZKG?TKw*@O}0vqy;iOfBv@NzC1o$h}b&UzazQ1 z-QDYQ`p|^#?VE-fywR7aD92hS^h`l(pz}1DDA&6pFTO|Ng)N2I2+k$UaBgbrIf2v` zs+=eAlfHhV%t+){S3l2Iz+YLhY})`*U#ov9R{4Aoc(9Hp%8C3{k+(VK7Z>-B3w7sq z7h!6!uC0v;gK+(CJ?-t0%tnkFJ}dlStI6KE4;_y5cdo7pC_rR0g(FlFLvO+rI|X@F zf0 z$0{agPY6Wci4)SnIJwEn6|2ILZndJXq0!6tW5xi-`s{3C)=4pg&p2_F?J79kUZU1oi462W z7%{?CrdZ;#(d_l6F^cQOHMMIUY(XDHn;{GjV%eH85;*OgAfju7Ug-O((n@kOf11~g zJNyCwU8;5Z+qKx4QEs6{M@D91Qtc*>jT@#gBXHc~bmx2^Ky`jN(H-{HM8hUoKzHHRNLh%R4e zr`qLrITxlsKD!`jj@L-U0y|FR#jT|kz7*fbMvea4FHB^F_Gn0K*7VBPlj_utym-1r?9ChvCj96&HiN)Gn-QMAaFrSmnXl1Cbx zgFZT*Sm&hZA-3*X{$0!c{F(8AC6*j0qQONeEq~NJIywsDTQwDxzgslq0hf!WkOc*m zd3rXZ#s+MTona}erP;+wg@O1=z~eH$x+Dh8r2b{u%E~Cfl$I7RDk{Qe2TrQV*$Rq` zai2YVRk0oJKL6{A?e7WPPfI;E5HYWTr05CP5VBO+}g^6R|TwnLTtQBCTZIgn0o*X|4$Gsi8v^95OdU}Mw{kI z68;Jf!hi!*;=Hq30EPi~3Oa+H(XsJ7y~Ltss3gw8g0`~0jzKu-1~@lJUmwmk0ti>G zRDwAvsj#?fn%;0W&<=u!`$4U}#kjbNhi5F6U_DL=KuiPEuGN6!C3FqsnkrkPtA&o@ zzCKH_PExaR%hR8OX^8D<;?D2g5YR(wtU`K4`4*jGdb*CqL=lb>9fi6E;KZSQ@3lJ4 zWVaSpYGO7#bZbge0Q(D^HX+2@%Ll-x5dAj|I-R1DLb`&bc*1iV&;?ii+Jv zm|L&NGJ=P`3SmRuWv<&v3Prr8Xs+rSZFI(X+G9j6tC35?r1v|b*u^e!p;s+`6=?^b z@xDp7r-@GGF#fnFviu=Js>sfD=xM!pTsQ%~+EG7&Ovm1q3)bVuVq^p)ugX4U0F zlgtg+$spgumfVo=163L4H16I0Cxi2IiN= zjQrKGzd`P8-4N^B{=h1`?nrC-^1Q;B7_w^LtVhae{@I`x(!-)rQ!UaZUy{vvlF>tY z{H)ULilKB_u1UGhWfLa5M&%LnLP?gWj#ty(s_r5q6A~Ze@z^2g&KB`#W z)r^@sgp>i#CJ7$62919AL{k7^Wg$a~U~_Ym&*fP8;~FTmv!;c@NgAmz>G4V6+;f10 zd|PG!9CeM5dKp#kk*8BKxB{)IVw2xUChJd%iemFFh2nf_+G-(d%%Deof$(VNmmscd zTLdGK>I(_gN^3+YDLR-=9qHn*4wkDGOhuP8WkrIXJ;K3}YK(Tjk=;dAVyG=JLGhjm zB)X7!3CaxytNAyaaRJd1uxXY;SIyWwiphX=yB*p~OtB`Xem>~<(vCh&KVTaE5hg~^ zfs3-1Iahzlz_7Y1H(t(rprx$LoFkV(+H5himlqrKI}qO?U6Me`k$T2torn`=5 z$Hy)+D>!ZrI4)3*sMLJa_P9c!{86;lC~)!zcp~I~rc2jn;TNj|JvZ*YU|s2YGIf5= zOZMt~^?lY#6IxBbGyq&&4u5N9N6&A<)qpVm8Kz;>5r+@WhUoDk5%b^-o)HQFDpH z0iE=e*98zm1X-&DAS(l4ryaHQ(EfqH`Wi|=qd`(=gd}C7>?`dOMwt9Imt%+%y$`*Y zTB|>Y)3vb`H^K?9u@>M8i%SH;DSZq9h6({083xJ(78rC}NCe+Moa9&=9M^nNZojxlgiy@9 z$O_A!E)_QW)gc~iSK9meq#uQ?V@62!9Wh^3qfDAr`FRLYRQ)Ej6w#jiNL>pJS6~up zTLuq-LG{Q!si`JDt7-Me-RMFq0?ucEQArZTpO@Jj|?8T>0);fy>r!kfmnH zyOy62bg-2&32k@XyyH!Izpf6Y`UoVCGUoe-xuI!#a+H?9o{nDQ6ThS}Vr9jLrl&%E z9mmD|c&S=N+-QKHWBXKfd8HImBKIeq&n0&ZBh4C8t;x6`sW<3^7-hA1?>}RYMBSC&)K-#>UmIph*^eVg=ll{PLttYgXKq4+EBC5_r`IZ5L%t*N0*gIm*QV7;W8$@@e#SOoPK|NLQdyDVyN zCqD%$_$2vp)ATrhjP2qtbW}Cz^%59NRF{HeYav}q)O90&VoU>`y@aA7#<=Y;44?qD zA=chlaeuU|&m_~49$ti`7GQiQk7Jci$Tig7D()ZYiDcM^fdKOD`vrw69p`4(+UoYD zw%}MQF_{c)k3W!V;<{yZHANk^y{n+8m~4n6kycRmU2*tkL{D;Ab^}TH+`|5~uLp!K zuPMn)$4k77k#3fyf`YdOS4id-meSLnKzy7`of`daJXF>GLJTxCgEj~*gMP5pW7)Q# zSW=`$6^T_!eOiHxUI5BuQnWTD8wm?9K`+|q4&(VDO+-QhU)&VbNbem8{#m8cS3)x( zFb~T)ZP1q%U7pm|)XpaE<-Wxo3|p8+di8uozG=uIXgSmNd7 z!vZ=p&THpDc2eFG$F)244eo4e<$|wGNnFdLcg(Ml$Dlp?iD(^#WkaZT7KB1|T10 z7(NlFZDca{26xG8n2q4Enzp-tCBGniW@`*J^J+hFPh8pt?pp)8&>2()(@}m{i{|tF zAAPTPyW!pEx=vwuBhCBf6&#@$n3xom@?UJM3SYK3Z5&V^qD7h@=k@ zt?m4Nk%3~@6I&UUJID_`UuX#z5NEyGT|!?rpCb`tCwQ|u1d!!N6V5f~yM#EWbl~mg zay~54?`E%!&LU-X*ct#)^xu{K*0Hf%eF^08oJkZiDZ*y^h8Mu#NWO7rQB2&GPzc=+ z9S_TNWY+l@n%QZBKl3zVM#)?iaqh z{LK?jtA{#dm|?(}k94WIR;p|&Fr9E{mD`V0FN3sw70*VgiPwdhio%CN3lQmlc;kYy z-`TAV!8y<=NAWu-LDCuI-C|fw3f)_gk-dx{_Mt9_#}As9h7K}nkFkTzXIw$Lrp&2) zf4N~ej>Y7Koat^*Z{7B2?&L`HkzW$7w)S>O_Mm&@w{N?PHUp=zvRoHmuQpDYA0qy8 zA`JO;Tj-lZMc%yWT*Z(;ZKhFSyk^-m=~JiPmdz%Urqsh9cr93mIG!zXKGH8EepH$z zE96=IK7n^?YX9TluVLo9kJ)oNQB4g9ZOn@Nbl%4Z3^W> zY;T9{ODnNxAD>fTss+@K13^XZoz-=+_(%)yMxtsdRDDM71L5ui88IeQ$rQM`<)j2 ztAlA`ZH2lV7kK1J02%QgVf|>y=M&nmpi#Uef>XTkLGo^e^HI;_!RqXe3vlt})zWX% zj9at1iVW98G2t-Oziv=~z!Vn9Er6p^hB1sbHNa2ew9q~`6SoOv*hZ)pV9Z|}Yxe93 zOh}hzlj0*&t}#=)OpZxYY;Ml*tOsz`!Q*XZ>%#ESQj0Zbxz=_7X|Y;i1GO?jUXpd4 zsKR>jCFjch4AM#I9mEgDbHbZ6{B!fDC@d?=a_BBAeJ`ZqM?p7o*5GkriiW;OSwm1= zQc^M+BJN0`PrJL&!9+npF5#?5`X)phjStKf7o9SY5tPCLy*u@YCf68_U%wIznB!_JW@Mvs zi8WMKv|O*I{REf6kOst;4!BZ=XcWl;dN2fZ0HzTw9E5)PODP4w@&+Qx5L$68E#18o z{rhBF2`g)-em!qg_hCbWo&~>lG@RaKq?bWbH1NO@B0zax zEto)WqM{dBN~$-p;HAb*ijOr$gKP6YKKZkNFZu7^3(PdgtI#agx2ttpy3apWZMRN{ z7}eI*ZB7$gzO=?9h$9N#PG^>?d{v&}3zqF8kEx#wt5^xLtw8WF`>Axm#L%>K6R#^hO)c~}0 zU`y%gjZwr~EbmFtH)_vUd@i!kz zmVNJ9=Nqgj*&R8#90k3CbH)a3cB^2?-&r~Xdqu;>`Wd7g-6rQ3mjYgO0UwyrJ@YL( zzMwP3n6#CbbZ@^PcB_|`^n*Z#=?(fc)NE12rTT|}uQ@rsv9Z+QQ)Bt^8;Oi^hK5fs z(w;mL>m<_nWazd>NYMB#R-@(=l+Uy5c3Fc#fQr;uxo^I&sIO%)XvD{49yy!NFzdtwHM=NZM(r z_k2c%qR`5vNsq`p3!~ScM)Q z0w;VpVfBuasna#bNI~G!l73g{d}Ka3{l`VF!d-OfXJG7dL$10?K~x-Nro4|U90(x+ zvNx8aHH^-9D}74LtN^%XLptIw`0(I7bg>%BMZlHa(D!tStv94e)J5juSE2!75M~FD zTN|Ol-O_aAuzHpJh}%23QmqG(POXrD+I2p25Y@imYeY_9oueFPO`ZeII#`-uc3q>> zYMs3!J)GH6EHj^!jiz8h9&~m3S8R*M-wh|G7sn27z{+Csc-bmrs*}*c-r{ORg>Lrv zN$uUMTpcU75XlezmlhLc83<<+W9P&JQWYmQ#1W4z=>z*7vBE>NV|t{?|}mq&b;iNElqz zVj&?iLuFZ69ge6CAhV`Gg#eCr&|#OG8Wn!%SOW?t_^J7KM9H6UnNNO#HXo2Al3;Ee zmQHcZX1zd8mQlWVSYUe`@pog)ZYc9bWu>Fd5_S5IVs;+lkNI&YUXI+&d>K0ka?%;S zEYw#NCrqVc-`Bj54Vg$KqQ!B-!67dhNnh761n{LnUr|Zu8EREnVk*dh9s@-8kgK-e z=*4m3oWNV#8_y#qU>=>pJ;U90RFRsV{^YJW2oQxE{?J!smdNBN{*9oUQBhNa%+;bm zRg@hb7hA*BR98X_Ww_eN_p++krBh%$dU|3^EDBQ2A5fCgCjg28j z$TrvY-ItLpf741*IvyM%J<$I7;-uyHz_91f(=_=UhDDRvhPoP_ZNsZUt7U{l{;bkr zdRp2p;d4rR>Ejrh!~T!c5jszb&0ejh6syHZ%2shM9UhV7TxO7nifc~4XIZxQSutU& zIYq}%ujpFo+D$!*^&MWPjU_YbGU^#ntD-+VoWfE%+PiOAkon;qDDs`8@u^Fb<=lx$ zNF?4L?&;QBJyw><;<=La__iVbgaxHoPv?7?JxiG- z>;q{+WvjzsctTQAl4*oEUgD>gvl@gZG@zm94fi?D_8^-wER{*OgP|J+)kmpFusKLy zKKzQPti(mh&SVyBbvg{JXZE3FDzV871EA7j_3~S7k~;EpM!qk>Qsmhe-&whciM<@G zM3Zk?ygZKL9jgh^;-ro{a+C{Y4859xBAEeP{2dlV(;$U`Oer@L)@(ZX(Dh)7Gc;Ol zI%ZvUlhF-3?XiDMF^axN##}F?l}9jNZK+(HwMAeSD0tJTv!5+?mP0)OTL&+}5jNG6 zqTs0G*De86R#sL+hEfzKz=k={PMF`FZA7ku923q|=r7LHyDjH=5YSTQP!QL5kwl&c z5O0U*F-eit>V2cf((O~-meS=;HUsuUEuv6 z?eF(6{#^1NvK=7PcLZ<;O_e-H_vAM0KIu!ooo$iT)zz)AP+??c)pj5*O{XF!w`39q zF=6^g)GO3bH&%F*LIsnoPWFcW;U6O%*etN$iwe~n}=Pyn7o-C7Zr{9?OM#CW&?8TothVe$~JGp39 zv!>}NaRXfEWp3=xQRj7^n+kCTQwjqj~2Z=H-R;_X~Ucb_B|?mB$@-`clC?N1g)%8DaB1*b$D zKBnL|nvAq^apxcm^MAZBK>v24P!W5ssK-DeImdW$ReqxYdA>eDRkUmDWN>rhK?Gew zZ#-StbS7pn;^FO5e=c_Jl!InX@~lc~28MU9Q`&uR;e?MzR0=MR3-EzU3u2j?Xmz!S$Bi~R187BmfewYn zAMz6!CTpnSxNMJOdQI!B7fD%a*o<2$tx7Wozb2o|)LneBwV5GNe{XTch(?|q znA_EL_8I)s;ZGp~Pyf@NvFv8&4-{T$SqeGESgzQ#p+s5F*vwn@7EQ`c$3UB=!x=54 zp@ufO{quY&3DfdXVQ@pH=9D{ul!R8-RXzpQH^>*&U)Q?7eA4H7aAd~21)AjEe|AsY!4jEPvvnC8Y_^Hkk2UnvCS{1PU(3h6nk$@Om4mP&lwqOF-jITO{phYH(>2NBYBK_gRE3PidWH}$7vAkd?4-@Ba;&13K zCp~C=N%158>q99kC)B*bNDiANP{lR0d>W7CpksN;=lYE0TVEdw(Ok#~Bq&TAXyyO z7QZ%{5LG}ybDNi`=_)wnF(tmSu!?>>oJ?^hvQOQ9+Vf{D=l<+Lzcf*wlDZJd$Kmlz zF{R`@%?Ii=>hhA3h`#*J^|UnMz%{I%(c)$Lv&^>!2ERdTQqVh}R6oS&G}olSYRS)K z(2XZR$45(9iZ&W0{|tOLFkqz(y=w10J94WF{pS1yuuPCnj4#?H?%Es|*zJ=d!jb<1 z!ulNT?RzS1lnmoa^tq}7>Z#{srWswimt{@N&Fl0!6+3t3n_+2MWZpG803-oy}48^tBO|zyPsC zT~RwBd(hG_5U3L+^lpSwN6yC)gN(QYD-K6|7i&3LS{^lt7>IZt&^c07VZrAtxdOaJ zWn8aO$mh>QCm$kc3CLgT=Jd(`1rX9!08YJ?$p;VHkB1v1Te>J?j|iMI6l5wQXsUkE zpZrzWvV8xZ-`JS(4D|mx>~_IPetxl6A#A&MBLi{Fx`0qZG0U#|Q~Yo#+WNJ#4+arp zWlw-?C{64)V2hf5{tDnkhttKIw%z7CJzj4qgk-p0R%h$zC)GIDW&X*@{&mmS+gGG0 zU`LZPU_ARKd96e&drYkc=u%>Xs{Q?C`>Q={f{NQX$v;2dngKc?`kgyAJ^^y-3@j{* zgodZFJSHMc&)5sDmbzgzH5+F}%>~7-69^lN^}Ewq02vRNu(4X8N>ESMZ7Y+MB%-+4 zv+!GGWoWA}iN-=Y62}{vyp>j!nTq{*0=P&~$@#e`PtK=a6VJW^&-DJU(L!AS`yrO6 zYtM*9f|Bzu&TQiQbuBEUlhu*5iz?Z#l#8pt6HTI!}*F%}F>7oX$a&ve+X166bSb1sy@ zN-+f>KU;I33XLm;?J}Nt948aXcMXG|5p{lJvNE9Yf3KXWyz?M4gkfd$~TFUCjU zeah*BSgFo*>|CvUYpV9Fy@B7N!Cezds)sf0;PcK?Kf$z53iUJ_`+vB5%cv~d?%fwr zL_xp+K@hNzlI{j6=?3Wr>FzWLNh#@WlrHI#?(UTC?%0#p=UwalkMUn?e_4C)F}5F` z4|+dv-`9Oz=Q+{VrVC+FSc1T6%xt>N`&#q zw&M1S)2gKfJ>6UC<8xa5Um2x}P4WJ$2)ZdM$Yw}QJGU}yU4(q1v?x)ZObTrEo3{V0 zJ-RaZ1F!f&XGFd`id<8ZCzRZ8&KbSnWC!4g*r*g3RRfT%^4g-yZ z5$wHi?R0j^ePt@M9uq%t}Agb~A%BL4B%hJz?R;+adGA zu+Wdyvzf_J4J={$cNrK8otQW!;$}I#t+0bdW5@JLbA=4BOB=f4Wx$I9A!~J?iJJnK zUP-lafZT$?ai98i&Ce2@)(N>EjMCYkTWh>@M+=ZXJra=0tjdTL68i)-?O3G)6P9_V zM)Q#Qh)`wohx#u;*E1&b+YOn_2IBEuih)0Wu0v#3smZw2#u$a?o@eN2TwD#w1Bko* z(rWfJS%l6`=i>B$lz_+UvdQ1*(Q8qy@!Ode2QXShL5V5-Cf)dkmDMw6X8jxl)9Fdh zAH4|o#<65FW5g2glXY3DU&*2ap?7T{6UHzw#{T195=so3xwPe*gN7qCjVyvnMR^b` z3MUY4xKV&uxkKev8i9>eO*#)NuWa`dmS8IZc)U+m`ojTX70KxT$OpRrwE#Wqimh;7 z9pD-3f?89C;j60LpC+_7Z=z^wlDSz^ChG&z$L!Azhl&>An<)%@_r}l1tx|#L&>&&J zd@M_j{6@|DXFHgW!f-PAqsSCM|GadT*GKyh7gs#;Ior=vxiDJZO{dA+)+A$X0DCuPa-t>* ziv&zP5MP8=-8p_<{ul$7{u^VkzcuwUS>{|)E#bTTYo9+=Qz|nCvUwV!hm!WM&|A!X zI4t34^UY-O#l7#N^c5T!(4U3)!?9d-u4=mdwP7v}j?d#v5J}I8DeHQE{QT?yoQ=@n zaXDN!0F@*(u`}z3N+{9=nUGLPmya(m*fz(56X&+~P^lRhblQT`)6EpG_%cPr#b>8X zM6#=apk8jC_~k%ZRn?{KbVXV=CNi^f8K%eCXdbytnCFN4`+(w05h0Z^MznP`z{fT$ z-rm_seHalJ$Ee!nTk|Xolawn_>FFMuJ%-q&)BPrhv=P_3v5f|>v{|<KSni;&A^_u(~CbQwfM=3dX+9-A~ZE*GU^}!O;?UHaacY1Q1h`E~IMDE4_ z%I=0T2|wY75-rZ$^t@@ZoIBi+_ri4O85msG7Wa3%iNH!z-|*5P{mGNCdFKb_CJS<8 zUY_L4%n@XP6YMc4{z^)$Fv1595ATk`TM;RTV4tWOxwv`NiNQfRC8acOL9X(yzGIM2 zhqv+K*+J(@rvZjTlZe46?07VDr`Z#3Z6zGPgubOZz?;cQOjuY){YIk}UBQK~0( zBFAOzFQbwrPut%1uC4tB4jq|Cr)CrpkjtRk76XmKd$c@gYxM4rpVMPIpp za24_e_I@};0NX)f(N0pT5cmzELcMdKs-R$xqb!&Z{CIwsIQ{7G@DLPoQjJ!%?ztrI#HJaFQIdy>}q*qcJRL`hL`b0j}@%ij&Y%E?l*+^VY2 zU%!q*urg%%!8L6A$1YJ@lLA#G^+`9{RGwy7?4(DwvK;_)GaVq+iSduq3ujXS{@kI4O^iTavH;^5Bv{~j^#c+TyazSnwml1 z?l;G#n{ocNz9JxyB}=2jucAuDW3%O38=~Ogs6xE?`H4UZzwe@+UK4{M4s{L07H3BU z`aHnGVxS|ReTnmrdy9J{%+>v~Tw&S`7aW9dx+nhs?gjk)814lMZU56jMB;XBa^X=? zc|%Sf{n1je;@=*Zda5HhuA$#-bRSUuFCLz|;{1}P_h;PQJ{1*NJ36x7TnMmb+c-~3 z0|yb(f8+W2pRf1xvxXV&%>~MrFGFlOWo})2TiRXz_tqBK%p}|g4?4Nae7(Kl<{&pD z3lLGfU)gQ&u(Ot%=GlQfE_0}));spAJ5N6xTYZvw5Q=w;c_#iDgb}97LD&r2%>@$X zD5}0+JHHR{_g+A@>BCxQ4yZTI7`CYZAcr2Ao)GL6NlEEim4eN{&>Ar z_@>uG;d@_~2tVFLbIXYU>yFn5OfPZVYrw81&YO%Pa|mWH(j46T_g}qu5e3Hn9eWy@ z-^apGjoKO-8cIuBYG~ZSmmx#L)F*u!&h_!X@j3;kg4gMVy$<@h&0jZ|r~_!&eFFjj zN9Kfj{#^06)3z6J}@C;!c*zYrq(MC*ZoeD1RFbmpILzYQ7x$3OQo z_wxU}xd+Tz|GfGO0ph?dR;NsA!&8w1|xa-H8osE7G?Kby#b@$B7 z=l@(SN$G_Fn&(th5-Kqp6u}BHC#2#QOI;MFa15~oDa~T1lJU97%N^Q z!R-5?AOW$l7#O7|drP1%*56;I*;l9j`#}&ScS3h5$l$Su8F*f83tXErt8hj`S+}-O zi^ej34;aoBxX>({>FCTyF~E2&6EFbuumlEzVet+sDjYJ*Bqe*A1G}ObO`s$8Laf|= z=V2o=Of?~?7^)*+R)s+=3(Z1kgw?mScvtM^cmzm)kynA0=iI29qlI=O zd5O^4*K7t-G9Y>_HYXfFw*Z#eOVHp0=pNoYfQirE@-}?vfKlKIwm}!jZz0*BX?z@n z($%UJB@hju|Ia5&SPv7#K!5O{YdYA*?VX5-)8)BGWF#rxWI~SsFk0XWr6nb?yPWzx zA{KW&-sS=J2k_|AKm*+8o{{lEMMdSh@%RQ1P}{o;BIG~5!{%!-%wjn3!AA>BWj*&m zKT5If3yo-4t8qDDTs4;u�*- z)zm;ZTDX1;Dw!v^xSX!%l0rfTs{^ENC+6{AYV$Dz zyMYvu*6HvKZb>n8A=XNun>hrfT7Unw=V7AE>Vq?Uc)$z&`|%=i!rFiG)X-3lM5)dd zz9>fXnVF7`4p61q*#%xJU9CSaW`aEy>W34`%l(x?=;OoRdBT0JkX@kp8T}2Y+-z%m z^27n%{ZW^H1fBSNyIMrI{>#pKEo|${xj%kHXJutYMy`Mq1QG>oK?Y{DHnjfl&5c{} zM?&{Z2839RV}Gu+-$`;hii4X^w?cJ02Xv+%x8^{H2KH3`>=?ZCmOx$1d%wV9(66qp z9uH_$OTi|HV2aVLb-$cIT9}`|tU-%W_#wINaT&*9RO)heZMt?jI}{NT!Utsr$p8Pb z(jtWB`&`~bmo6qF?z#W?aSmu~si>|tV;`}_$;0eOx!M;87nhZ-LPtj@Pn~pbd%0IT z%^o@i$!TdNy6q+4BHnBP!$r?9Xpk-3;EXlAPJOoe7`WfKkpPc}CJ=mvUlkPqvWb_k z{~x!?^+)vvXx7dg5*kzjK;Bb=qa#Fa!Nmir4@@e?s+_tLcs@fb6YJrw96!H@DxbRg zbYr8(cf-+w1*mSiW7)V|PDSyev8JXtVbH(ao9qNsg9t6)BTkju>_yQ00nHyAn7L7G zVfr67_Y%tBpUT62Y~!#q!Mq_jCiCm)v@4n3>3XucrqdY$F2$GE!0$ z`w?BzhpinQI&C;-_X0f8*2H32t0TH+?!O@;TLt;owHL-^RbLZU0s?|KI4Q!`E&BBq z5)u({dPD@y-sSy9s-d6xFp*5k1ha1CBKA8|Koi9-qrdg5PtY2 zFw9E-z8?~d=g+4hvNtrW{biFBLFcfNlAJ=Wn%0N+(WFGHC$21b{6rm{YqV~)wYA)} z129|0B2WainF~&a#z-}ux9Q(6CzP0jBlg?3EzAiLFW09F`%xp(ex~O(tgK^0LqiMw zb+?7#NH6~W{jDUtzyHI6ADI?pV#6l_r(K}3EW$1FHDy`gbHKS2JovDw{R zQK1Ox@288P^+Z6Hb;W$$(bZLlr}_5+T%u$JNTvS#>100h80+ur5&ny%_&-X6{|Bp% z|4)8&Z4F?7I2akflbS$og}kh+>Cn#;swH4rr2qVR4mZ!=@4&t9WfwxN87@!=-oIyN zdjlcppag*2BRD&M_4cO5f&^zDfDHqU7@|~RagXdPG@HI$UtfoYyk#@Y>n34khvf>g zUqLjq3J6IEXY&UH_efh9BQgd-6q6amK+*rLS0r)42!3or$i;egdTLn%d9dD>Fimgn z+Po(-y8xh$g$0^aGO!H8&O_f*2L)Dl{py8prM}xbf}!1sbZsW z=$1}Y*u~r8{_7V=uJ92xIXYh?#nrr^$MyZ?tvg0&JNhC*c2)a03up?Z0j?S%GM?SYso$#EY@71Jy0~D+Ie90oEgHqU!dN!_^pun$!@*U6 zH-fyquD^e;_0ie-`cqWjMJR@5OfgKds;XSzKrx&X`$IOfz+@a9wpqwLq{@2)-2x#u zkhnFurXn=QuoRLm_vdRPpTZes2ChS-euG`qw?@F6`BIzN9`~`cvkr zc$yelBK^?D?IMAd1Pjdmp@`uB@Z3A^x_62PN{v(zCX^@FG(2$m!qx+uQH|S`sXs0Q zNje-@&l`QQ`T6+ZTLQvODa1V%>TkfQTO75|81Nq{H$aXORRm@p*d%}%R|Xdkv(nt! z8a{ncP7YHw(nYXt9|uAy$OjxiQr~ zc#7qCda`kJBQ6^hdO4a}RtxTvMF*^gQC1RWogH0cY_@mV#=Tucj0{#s_v1wyG%cj| zd8u4fisTpsidRQ}+N$ENJYHwo8%WD;SY*sG5LVydm>N}Mb2jwJt}cJfc2FOUY+4t; zwmKL!ruoe@jF6&0Uwx|h$Q&gwFz1JYlVfw;#Ln9r@VK0l>g$KYS4n%d6_E$(J`^U< zo{kR=F8paeg1u4$5ZDV+A6~MtIYG$_ zcO?*ApeF=el3xycwq0fOZjbVNd1a-S``x=ce^-vO7#9Z#RjE{egOGs5 z#|qONLfsuCmj#y()H|`!-@E;Z$g1qyL|%H0U+l7Y@SK7!_H~)Zu?x!KY}d)ubpM$X z0^09ajr}i(<0rFn67g|Psv5I;1LDN#IiE8`e)ks<(pd`h4ou9=Jo%CI1osWW{C;Dy zIKu^UPOiZNpAS99R#aPP(-omF-UuiS=CZL^PcbvF5l25DxPBxg;p*t>F0Aw?@wdCX zyKhcb^m;Wx=s2kH`4kk695@dRu&=YuYmA@j!1?L)^pqYZ^dMlQq$DH_Fo)A@Wo0Ft zF|3zs9XLI{er*jUjd}lO{7AFqzWDO&V&}N%p!~me^;86?^x&<7(whI` zWyou>450aDYwpZ>>@zSkdtbsSBjOT*nsY&G5AAR`7K7r%Sjq^No0J-uOnMN*QVuJ0 z-#s{vp<)Ei1n9Gwf~@f`SS{?GyzNk!U0?;1F~w^##zfVc`TYSS@xw-S=keJ7C!>+w z3iwuuM|Pb1^CQ`yDiEQYfeL}zS~%Hr%=ZK}qRJ%d=N!P>HM8^OEFA51fy( zj2;q*XZzuesa*DMDU0!pvUpn!mxXD5uEL;cdh#p*&Gx$}0G8zCq>T>nyiLm&1)nyWzk zo-7j2w=|!iw|{za(i_3^nR$}w*40G3Mk%P8eAqneAMtl~*y7D{^3v1OueXPH|K)&a zGP#1{uxJNXSU+E187Zkmw>{WK>D7Rv^smY-gRiTmT*9rwEUpfJujjx<#WKmKQp@78 zM0dx4~9AL)lwRSrexeN!n#m?*{Uini}Juh5dP2u-DK9KVF`8HVYtU0rHrmRJoAV;LD? zVRGW)=x9Z4`o_lVi;HpL;es;CMR{7gW@MV-ViFR$az9GKYhF5q+nVSgh!6kDh5@n?@ga;nT*szFXYeUeGX{ z1nli`ijA@UWUhA&5Le>wy#|9D*ahMX`-j=ya3!TBi0<_djLhG%Ey+k>w&j+Rk9&a&cVWR^|Iz^F zI9>lx|0@(j>x}UUi-q1_+EnNP>X(Ow{evJump9rltmm z>U1F(ELPcVxdN}3)Up232b8|xjmTbtA`}`X-$Fxmno*C-xOx+L&!AF;aJ3@i(JbXs zg3f4V2oghyh`eNFWi2o}Nz29Dg{h&zP=^)>bAd)4!EEu+A1dOwU(D&l5mi+;FHC?} z{dW)es^W0O%t5a0JYH=g8eI@?VR9vXCC=Rv<6O&=-4y~@3 zQAS4c$n&FgPN&5YnBw|a^t^)JhL1XE={!`sJy4hQy5kN&u@l8N8w~XfyX(345k(fS z=RI*Dp~M@9HpFjka2*lDF4Gmm!eKHdtE(FZx3BF=pTq8aD}Sf4j?O@lK?wBk^t+ic zm{RRKp;(6?Q)q9L!)^-&sAP&>XVl<&g|?NY<;ZZIWQ6BGk2htdYsRye!@7)PsPf$&9=Bfmz1i!l zjKiSu#p_Nf7klmWb>Oq1VN2+fEUB|&XVU(7k~h$>X!hDePY00D^71lf1THrA(#ncr zg)P3Am_K4jUw{APBnNapMk`o^7nX#9V#~(P9#c^Qu$ycZ13K-dedsVej*EOj3uK}v zv^p*M+Je7cl74|TCnr@-jQ7t{&B=1_9}qoRZ;UOpg|+`}F<}OOkG!0k4ta~i#K{~m zRx@GNoIN(Uk3}WJ+&f&rwx2u7r>1I z8fU42_QuSNJv5D9*EHOjJ~=yB!^Xr^(Rii%6FODo?BK9!ciLb6r-jKy8{7wb(Zvvu zFke(!_{@C^{#KMBllMzp*B&K^y8bSpzGirNcr<~P0r1TA{&Xrf0TmVJiC_6(hn-{N zTKEjd41J$O?Pm0S&Fhs9qUf{8eiSnri0+`@_JIPmc3OedOe*tfWmOd+@Eal{<#N?H z;N((cGyG3O4jWc^_nKB_!hb#G2$Hk2|A)zB|37Xc{Oghwu4ai?g#~adA=_I`3La>tB*1 z=L55w8o>=~K^GTSE`l~BJRBPzUpXfJ`1IiHGqME81Rh~xLJuS{N6k|i2`eP|kCiY2 zKq-=c7>AJ=0#xnZ`4f=lRykoPD=|L8#!k-#**44!-U8<$HRaXH+GpfLu%IMndSC;5 zGLp?MGcppuvOY6Gx^3NC?E&~_6mO!0-+9xe&R;k!73x!gDpVig%XDkVQjSU)*hOQG zWXRG*B_&&cyP#C`f$|#fh7BTRry~Lo_fZ4+ke^?XhbL|pQ&tNmF7l;0U%`2|)nVQG z3;e~pA4JQNoe#iNQWPJ#`*xH8--z`W(1CpX{DvUPBacZq?bG~f<3v2s)L6Zc2jwmO zt{Ai4`cDrYj*gB(|3P2E+|I6hWQ5sd!w^JCqNIs)rx4ZX?~ew6f?FMcGh}i(MQnQn z&G9j`gTM}BgWR+g+378XT=>EmUH`}9u@t%ErtjA7p|_C_qbCN za&wIg4fzOJWk{aZqK6B=djTK(YQ0^ztsOWU!`b6+brDQVC{VfpP&6^k^{q)?N2l*Q zrs+mXup>A3{XI5U2OiSbKB(YXp;@rMku;)!rL%L&kl?OkQzmD$@5s+Y+hpe z*%>jJj0tHz0CNm6R{8zoQCiB&(MRW-lY;HvN8uDjllles`@@I9e*SBB z;>2WSQ$W24lX+2(y0i>viS)&RW2GQp5vWG}NqU#rIx=MXUcSEMCU|BfK7CVXN0i`~ zS1r^do#wZ`IiFxVMk*E&j}G0$z@Q?#FIgd2VVgZweL=0kz4g<% zXpfM?a)#g&^e+ltLfdWSHy}k0c6O2_ywFWnjCFUT-C>5Z1K-0b*30CvfjDkt57L_+ zOc9KMC11L%+a3Y51juTSF)=%$8A&pM2vo8G+L!^^!D1t1B@F*Ww~f(41wzhW0~wk< z)m04RS`AEBi9bEt!s)pd$gab35iSW#Z_YsQP3DbCIdT!)w9u7}4PO6z>&pNfng~R~ z&<`-Kpdu$1Swd{&i#RV*J;v1AmB;}j1vFcuqoZjSNM6m4XUYIRIIh7&55hs0OH7=O zHpbi7@N{XdRTCENUM92Bci^l4dRL3tb^^VRW+xuaB^d4l<5?V3TO>>geTb@#prg-C zN)p}3!9*mW&&Y*jHzwsDiiM6JKG*|wdwG|yM%+g4Mx@ zzaX{G)%RT{PGDGOjCeppB=b`M!(fzsA*ZQ)d{~&vQrFF>kOKKE8ZecFWe!=y>uv*zG<0Q&uWw1BPT~4 z!w|hBh^En=1^)t6GY#{0%_XI7!gmWS{@l)1QWO#v?%|nt;y&3Ve|`0viH0W0@z)G* z?WMI6E^(f;EWxe<$R1??Fn=3X!;FM?*cPw3Sauej;5RRcF&16yQ#m<0_KRnzsmAAA z-b6l3Ec9&Mnt6mBUi-R?i=Ay3Rf8+!KK@HqX?pGjIaX2Y66x=|5O96ULWa;kBt68J z8Bh`8u+zD4DIY+A0K*USo+o&Ogwp`h-oznG0>+o*RGWE}Ac6DA!`guKzT3L2qOQ$n zAn6AImK49y*`bSUeL|3IccSkjw)FVvCFr)&#l%orOjRz>*QBMvoo&}0SM{6QBPCUC zqtSO5dT4#-u#w67CD$M=<`++jGQ7uy=Xe8lB9KjCM|?EHJ>GA1Iojm44g((OSiW{m z{51BW`dbT*a#y+&1s>My<#|iHCFj(KLbkSyNSw?2ijaz^S`WCp4_A^5Uvn0$@21}{ z?4DJ{+Iq)Ilesy&cIGkmP$7G4W^PX4<;FTCoNB)dpTKk;isXbgEScNKrskHGv_yg5 zzU8j2$^mslgyHcGqXf&FM0X!NkRqG@saEwB-@vG1VXSyOw49_4SSFw3TQGyJBx%{K zmv1p7w6?WTBVb8zbI-t)S$PUL*5vvVST8W1GE)*0<2`u-E-1%CMyKj@Y9~vnpg2Pw zIB4s)1%>n@XX)=w@o^X58Dm7D-|iBK?0}6J0ILw{GUA9R!xxkg!2;qJ`bM4+)aD91 zLK3c%m);zlIM z@`(tAu>e>!ujdk~Ny}cw%9dxd7WezNj-gc=J2e2LNpn?VE4U11j(6x}sZvWaV6qPG z(%1qcvKE-?d(}%gQ;F(;_`8TOBSKJF+&6FbUbT=1wki)`rBl<=<`x(8?RUsfYSL`qQlgao4Ws*!8{L4Rr*tlsg8O)}ng}1FQl75VMqK!vf5sua)hi+AC z?XJy24`Oxp6UL2(kon`q=Wh7?BqK7P&8nMyOWgX?Vlgce+|g4Xwb4yZR*eV|i;pxm zHC>*J@>C3uk6%ll`AsO~+#XY^?3`F3V0DAx7X0%5Thk2@S8>B{s>>$SJMxjZG0+jv zQIz}CiBhlVT_n%$B9Zzk&4W%6Qr{z)E$ACEaTHQjerh(HIxnR#Q!+UI1TC*;CYt^= z&+`RE7@I<(b#L!P>DG1(i!Vf|lDflaz^Qyn@IdUUVD=oLtSS{*g1zc0&a@IO(Qq-!-0|{89NvAtI3r$t~!Hy(z zBfxMA^B_SUk!&3JDdBBGA+P;)cXKmgCa|Cyb97&l?dH}iLsDEiJsh--sABJ&f~F=L zkfng}hVL+E5l~~2iC&~P2cl%{KSO!5jL2m=kpXTq_?^CF6ayb*WXBR_TA~<4GK zL6sy;QnkK3$9i2;D)RpQ@&3xATOAcPm5^@7OTT0Xtg!39iSYC2Cm6#V+L-z+! z1ZZgChqnjyn*F22Z5Rz5DC1RP!y$XQEzI|W#_9eE91-zoQwU9#T7p6VUnhOXFV-t+ zh!l~(HQLg^NB#KpRBF`S(oA?myIK5fdsb$$yvaEPg$l*|jUugrm{=Hv6f-L)bd}LI zC{c=wOid2XPmFAA80ZRXM#*`o4IgW1bHETwO7>i;C$)Xw?+GeNO!J}W8*^?fOiYxm zAFu~V-u<{b`x*I2d-%=FeasIIWHDaUZg*qHf`cC#Uxk9y7Bg(iA_T2Mc5Uc8B<^W? zK@JHC-v?9E)ukoE2M-1ld6k8qS8_>xD*T+pwO{IJKR`@Cfrn&A?N2j2+pPwO}WSyjt)?gNqwOG>a3;{m-o zBQP_oaXetg$IWEt^I)-EoOU#RKbXZ8fSyhL@}=+FdvF|JFqFNz%E}6tl8V^6y|%U{ z-Ko_q1B1+tj@|Y_2dR-*{BJWe17Rbf zDgzA>B*8>vWF-Q-D&G99xW*wU?4~cflnJBiY|C0t#j-t|izsp;w(+I0Ks~ ztjT(0)WWI8`H_e2A3qYX1!q<7yCL1WCBq*}YJFWxpqNWKxQla}a#S9BC72WJmVz9o z*CK^l42mh3B?}g2I0s^Hp`t-d0MK&3f?!zs{_l>C2-~+G1!5n@;8RlO$o4#xRJwzP zMn`>|Kfdw|WtrwTQ}~%LO9=uDgv=#<$rlpD#k-({k(Swm2^*WOvB>BxC$@MX+m|Ba zAAx|z5zK`dB~29sQ6amyw#+a8EX6c66$4SSlN(8Z=Lp;=g?2p3iVW$GOA>jTd$Gcq zYIzhO!wIvTpin}JbYlNEX3*_rvSPO@Te4ZHJw*Oa()=(9BV{C>)W<%{QgyL!q4>36 zO^^=3+!%+04McIZ&2NnW8{Ag!ur7zF;d>F>m6`61^IQVHqRFUHZoCZI+hJ%IUP={E1~JakRI@G z@O=h)!x8osikO&9+YrfpI^DLXc6M8kPDQO7BN(Qfb4i@Sl7gah+{j`sdt-6&By@e0 z&SR_ra;n4*=D&S26AACqC!@|{mpS=9yME&dtHAoZQ;-kH_?Ei_Z&kmDigJ?iVkBmgao|LEj^sDEvbb4vq5HfmG3b9=D+~u6Ep4|q z?}#*6E0E4rW>q$+7Do_go;*c(I>31y1rLB}>7XP{-aRNCD3tX?deIIO6=fS;4pvP- zYQw-&=u(9v&Ny%kHvDy@b-+d|?YqQ8VF^!`o`A~cNtcON&U*jB z6Y(8Yp8}i1G{tHI$W=f4A#Va@%Tq?<1Wy4h!+niQn#DyubaX0udLTKnFnBp0h_37> zKC1iuWzTODR@}a7pTIx~35gnDP|h}%d2v%Ku^^GJ@TIMOsk)G14T_Y0t54}cF(M&_ zxBh3(0dizvl>y;q(!^(zvjs7{Pf}gH2e%k)PEK4B`?6DsmOMP1_XrW5zcm>My#`8! zDqUvoS}pf{1wA4*gH^J?K^gHdq@+b!4!|i>bsrisCySj4X zkFYZrWi&?T^l4K)Z13~O2-%DzUvc=kF=4lhrhgVQjlRC)gn(ZyB zVs=uIWo{=SG{>?XMV>$8H{Tux6KStG^u}$hi^SurHB3$0)M&^!wU%KQW{R__~k;o5%v$lfpNYEG(?!vdl9kH8v+a$}7_T-3u_ltcl=q zYy9?H8+ZbAh69ou9QdAAUMXOA;0KyM$QGg3%n9}%{5DkV9O?Wp)$fRe);AJTGwhq0 z(0Z_ZbDjcmANuZ=Z{JFTGbGYY6f#v;PMfRRAh$t4-QRDuCoHZS{ppCHkdVd1uO}}B zM0JiFZcOlQw-Y8EQYtlkr*Hy?Xn#&DgN!gpV#*v31P)~eZsXw&B^kDMMEc&ohr_?% zH&w-gL9qxoq1#(fARn%i!lz0b0D4(mmYlIEoak@dzm8!{Z%71pO3Ar^^@?83*;JsyMoBJUn$kK@5g{>lf$iE02I1 zq3wAX6rWMZX=uJi4Ij%FDq53}4u~N=Ad{hO6jv^3kcO0ush}Em zb52gzqB~oKO8}vBK3q=)4GnhTcV!;QR9bp^6?OHaaANz9E-;fjgXIGzd10A;KJi;L zCxIIf(701>L+*Q$!C9w|?4QWoK9KpxwJZ(-lJoMs;f!%20m{mU|M> z#+{bc?}L#MS%JHuk8AGyPK%w6u zQKq~}2KA;YTQt3aWL5bM7`D7!i*Fl*?j1Cq)WIfn#*TiR4)j)a6_rYW05s;Fqy8C% z>GAoaf5*dQOtd|({pjWQkFCPJ=l}F%W$s>W4d~m#|LQ~Cg;5~ZM&bGn`#ZnbW(wsE zp@VVJKVy&oRo2meOhEn@VKx8p#^adbQt-F5YD-&2r2MSxQ0X!^CD<$V_Mx78@gi8u zuafyCag+DgzYdIA)a&pY&Vs#&k&enQZ(eV0Au-rX857Y3KGGNJ0;2&A(Om&KX}+hL z@G{T=TwVX7goOF^%I*D{QFUHwpR(Wjv|kk+37NBA;FdrqX)7I=pc3NJvY|?{oNDSBR;jrPe3C}R zSdzx4EcS&3en0{(H~hkx^prO~rm_QZc;}LD1lX?vun=}>7?)f`H4!HO;rAV z(?moWZg-m(DToy%$pv71e32P`l_57q^*>uVu6bwEhH#r*e}?|Z(TqjJ zw}>m$v!ug4B#`@a=x`R1AlNMFBPTrdSn3#EeJ(3|a(&sG8nz6WWOKpcy%_y;M5 zQ?l+luk_b1n0pUoNF~>%XuV$d_I@XfP;?v6ofARvoMqBoGO#Ca;(&f|f1e(_90Dy1 zditrZd##;q-l&s~F-Trps$)OpCkyEqF&S=dp@57k*1>|WcHfT3EBiA4d0Gkc?7ND^4VDm)T0V@vZNPmKT)5~iK>OR1WNZa#} z?fX4tA%p8KEDXUm$*1iI7@~E1wF>bhRiv& zJPkdV!uV~&HUkRX3GmuxX3eau45s-XfY;37Wm#%*7Fa^46bnLM7{PqQ=z7#YX@G`? zmPQM6O7Ov5Y>YEG2%<2%B+TvY?E!xMR%15FxJs!h#a7DPD`PS)(HQ0v=xtjYf?LmS zr4Isuw4qrI;p!ETb({ubG_9qgLN<{nGm&)ZPo866%*LI4ubZPqc`^4eawllfmr}u? z&!3H9by6&F5&4pPc;qR4mHGci8y zYp5=(sV&S`o0YK%Q`T#h&9CzETenZ!TU)^l{w*^F&i~V30s_aGW%C_QmxNDy2M5I^ zrfeGASK!2c93k8BMU1!}?j;a=t_*;JEa}5AJk}`Pwh%n!V+yFF8gQ8VQMZeWSx>X) z4SCy8NVu9=(6=N^zsTkILsF`f?#U8!I6~8>Gj#Vs?1%g)ujn$~q0 z*XAW6q}@OUd#5u}a`Kf`Lu?$vBImG}ulf7~rA-7~ivbun7vH=)o9hxx z-twQ|9B|SkG}ew@U2Co|c9b-q3C0r8m+&F~p2wt~$qQ|Eo=sM+nzh|ICu1GddDpc{>u2ZuUL|z0 zz2ZOR=aY!2;KKmfdhL*=)k^7iwTVL88S7K*5g|HpV{ZvDRyva^cQ;8<*#Xhgp@q`G zblaymm{`I$OCPUGe+x>^R2)^DWb9m)o;DOOeIQB{97>ciS``Y{vbxX|e$RsGMZjg8#&iJ+P-iezwDN^T%WwU~*1a8#rip;Fr)<)2oP z*8RA+#OkLjS#4;AKU3e3hed|*#{2z@`MIv5Bp2T_Xs~lU(2<|LDyy)hLcCmWd!gO) zsCx@-{|Ehm!ronx1f&yFO-uQ>0zRbG`UiM;Y-UrRK&`lY*hl>Js}RJW>Q&4ER2kf@ zQbDQQ-Gk7Pkj4+LCp5-e1j{P=Q|1q5TRp`_*oMx`R!y6~zy4V_1g(^*$z)U;H|VJ! zQGX?+LX&NbD+<&65?T4B#aa9A>C?TXi6X5X=BnI)5%ZfnoaI*^K7I_I154WoV*|8T zpf_7lQGththx-2a(2(u~B(Xo%@@Gy9a;api z%IhE<7(A^&FN92+rW{QOyr(xdFmSkbIZ&y?V&|#EKj!sc#<^vZjtP6?F(5R@#0GLc^4dm>Dr;pQW zQA5i>Lh#ozI%2W$HV^t#>zo^MIwMr#A#gZ1~r=JU)ma zw_X`fjgpKArt=mX##9iHgeS{6I66LlkCo~L(N4MV^PP{kHT}M|i;MKFu?SY|=^Pq` zrEws3<+h0jghhyPW&$!YcaU)|!D@wzskL;aT3A-aX8cBl3FUb8{Np)6 ztV@>kQehF{jbBcB10NSI>^jngFlFAG+n)I!q0>v)irco!Y3s$!?=RZy9xYdDuF~aV z%9bu5|NGbHR+V|tb0hesoZc6y5ISf*5C(0 ziFCyF*D0_2shUz>G5$0?ubbYRFN~hh#bB@gnJzE3&1FB^`I$ihgGfK6Z}|3Y0g0-q zY5T2~oR5ev0w<><)`m67!u_;L@dHd1o4IIdm|00F8LVnPAMN+&k|u=(#qMyAb;=!7dCV+R%z{oCu zGA*Hine8bQ^A8>vn5t2;FU{?K_2Ha|w#=ld1TRrePR!yRvQ6+GD!xBoe<;!El9OZl ziJ0fE-w)EAGOu-ha?+zO6V+67S<}KC=S03INAH!D$H&Lh)2+Ii!NS|v+>E;U{MyF_ z@fu)dFHjfx9-#>M-HkB|B~CatKgGunr%;~ysrV>s1;o)VJqgc?vf#;trlT!Lpw`bp zhXBo?)Q@?2)MI|2E^lvX`Qjz$hsQJv54Y%!q~yVc)3rmc@CR9&7X~FXJkW7^qAzeC zJzARI4@$xV@9FLl26P76K{o=TuEgYIF^l^sZkX?5v>pSe+YJKZ&JGUNN})_8Ba2yz zmi(YSUQ#unXP`TH4vA$j64xP1`FIoAay%6xHCE^62NHN(4$1NFu)c?53fQ!gJQv{I zI@#OruMYl!o-P2KFSF%iw6wwaq%->;eR3gv8bxS3_SG}Zy`%^#k8P44n!8&Xj(dwHYeQT{y)beB zhY_Yk486fzy$34JtYDpQRD%hBqZ|7-lDS6y$Sejx#Y>qDh3Jt~%39_*naX?m7?5w` z5WVzGLC~+}+F1!v2AUm8AXAyMcxpr7nLKT^TenZZ_bWHb6thB=5^)n-=EJ(=nBROJ z0%&EZuG58FduMi?QVmvpeGw=(!Qyu;(%muQxU@f~rmcVxA*?P~vf67snzxs`g<(`z zhD}NIvQv9aPRQb`=k2CKaT8W9tA364uGW=IRvES_3)iW1gNh$pan2~aqa2PqeqAxP zbSQG`PS&$_uJK>NLd1W{VC1IT#dzwt(%HaM;krM~wm&bdq<30TY`fbRW1GDhttZN^ zb>^^SQoWW)(joaHM-Vb69-pFPG*Jmv%YUz2rt?PasCC)u*3w|&#fJi=2t+zL_YIUn0&3RP153)U_=sa?wY$SABfM7Ds7cU zw(>6Xj*#irc@pQE*RtH~mqMnjkZ1<2jdn=TiinJKYXdb;nAiJX>%)b#vT+b0hg-Go z1hfnkskYrWB1ZjJ*46dA(BXI&A4?>{l zpRIM8T<%FkvqDitxt=oL3^nPBIoc7LgJKpSN{h)992^%@H8Myj2mPa?OQb$mh)7(z zO^c!5jkbT*BWN5jF%Ezf-|)JJEl^^&7b@GOqb(oDS$z{@W02cRfg!@%YhN*w7Ldrr zFNx*eCElVT7v#~>zz;?%dR1l%%UIa^LC`OZBHoOb`)!RK0zo%i(OMH9lN)xo@Yu^D zJ0mXK`05;@SZL)_MD5VFPvDnR&IS^*;5=!l7D%$;q5Gm$t!rz`GE4o_MHN!=mY0P* zJQZ9E0ctk(O71Lu;!#hHafcz1O@GG63`6><^^(xS04?B}vT-{_ z@X-*Qo4TOe)+{r0gEDz_%Fe|lmCr>ET90qaV8#T9Bo#fql*Uu#8c*#JS}HCMI)Ut& zzgmq+yo~fQ*!U)OZ%V173t!Xx!b@T2<%JZ!9pEtGmU0Cu0~A%ydY&gf;c88DL&(Ko zKGB7~*hbu$E(_CpQ9m9V`yG00U}1rG{4>U_eS#ir5zFlfTFRs2*;ep{-|%_U_>Crq z#$VKbQX8>Xj}dr}=Z<^D;ng~kX2dD>h^8v9SW7~}vxC@X%x48esOCvZf7_nFv18q% zCq*gklH1^rw0&!|l3@sZ>u1 zc6j%+_g>(T3IB=CP!p_m>Z7`+PG0+cdm@ddmHx@bP)U0J{?Gva2LQk&XNlr7QtET&E{2-V8p5u-b_+NByS>Doz8?<|kN zo7VqJ-tfX_umTP7=zLR&Q(8)Co=}6=U@t#@yoPpyVaf^ZuB}QQ(F&MEz=Grs0Z#>9 zHFX}K?;jW%`f9gu#b53*Q-2C7SU}sNG52yil~KuXp(1`SPT(AjU-4R2xWsfce632z z*yy22RL$pSj^gCvl9rKKA}LpnVC&rtp#Xc?qhJV#rcXTL#~ zl8bDB@+PpUptQ~Xa>4#yVdcu&4AP>eh}edYALA*x3V_NWcNK*XmL^IkQrvhhu0X=B zbn3cw^BxG1LHmb6IB?ZZ)y8SbH7F(h#}7g+T~`e1-Y9%{?~(=E$D@~zA@4dPgK~;A zFCzo*!2`v)>)8et8Nb|>4(JCU8!V}HhYlo5xSK43?-fXB&UIRbE>vF`2< z`AuKGd{I#y22-PCye=T-ii(QH_oj~D0_kSphapyB4lUiLm@40Qit-FK)rWOeu(p1x z{q6CSC&3x|V0}~oujB_@8b7h12T&IZt5wZ4NScHfdU%|J0J?(5frw~Cv(}LeX(@X* z9HOre;Yxt&S`j=75G(`5>~N7*?AGWn+Zhyl$O`J`v>1BGZF2z*^>JcUM*nqRwXBb) z{sNWgJdG2c9jc0~FYuiarneizAuJY{Oi^O&V&`louXW|*LadQ}mlLS`=`}fm8m?Ge z51(a^FlB$`^^&5L8xJVVOOW9_dA|2TA{Q;WXL=0gmurHj^F>VCcBl2oKj zZw~TG7K^lOr74NnTvHQC8OgvaAsMBJ(^eVoGY)gDx&nmHXp{Mj`e#HuW`6sntE;@Q zg_5CWC;LunbwL%Ec~W?^#!x2{=Eh)WNxg@mVqJ>w%DLBR*wy_DtOxB6CBANcKWMf& zGJj+qzm}pU%t|hWTI79BoZ)NgD3c%udhJ$yx-k9$!v^gpvdv;1nbze`0Rv#xSFu#&!)q#S?qd&KMIczWlPt2L)^X3;- zLNpw}n#}VdU`~Sm;0cua-d!0<*L6m6htn zbcvP)b3zMkbRxTAPwVa8W?*bSZws}4JaV6q(8NkR_xa6djpyRTGuyDKpZ?#aM^)Av=6;Zv2#yxGVIEk$2@RBD*2|S6rT@kbgchu@ zh*{h=7u6_9*FkxAcXvlejC0BN^vbk}@$uzh>aucj*AXL-+DS;^xExHHeX%}_xyts# z7SYC`rzZr4X@~vVTXLy5gQKHbwO?Q1vvAo7Yux`_>ISWvukb^7WDR++8=g8^$i}fy zJeq53s0BM7h|TH5Tobvgvv}?vhcHCHEpXHNRbTYFkb+s<^5b~w(DviJpuj9?PBh%t zw4zcBmvC^jutnPTD(St%Q&x#go#a=^q4je3JX>2>B zGY8wuj0f(RRtgHx?AK`oFfv$RkUe~}^9gdQTTODh%)R3Wop>fQ-%0z=8c{h7aRk+T zE7lxdJWz>!zJoH%tAYB4^`N!U!GVI}~VKLU#3l3p%5`$?M`Y+0!oPIq8pdhPsvT^Eq{1ya=yW<)v8?3Qw!F9M!3H+(TS?0Nuuu zpc*n&1w7;+KRfq9UXR&2KR4bzV`?;lY}66%u<(KD~hH`3!p8?QFBs@2-3= z%e+pxiyYlz!nw292&l)5yU*`y6CLgEFYxUHmJ1Ck3h9Knj!3#AsAh~144{@f!+Us& z5J-jFkdcN)RZ1#c>s?e#jFPHqdblj2^%K!U0HL!OOI`s}0?Yumb4@e#teI$r0C)v| z=2U0ZyLaC2>XM{QRAXWu06=%S_Y`m)kjI3A$rFZ=`^*5|a`Xq{*Kay5z)5IGB9Q>> z*1+J8PVI#!0j;VUkfjPt=IZg?H}1S-@Ng4%~*&8WBFcu(~J&1d^=m z6BBH!HFelQpa26Nq8$J=H3~$GvT(CM(R1fqGaK2!yx&x}BXpyWF5q2jY=5@}T7lS$8-AsJ&hWC9AO#fUUh_Zu#fs?6P7B&A2-XFBD3uphFaw}|NI%E2>`S2i z;e{s`vOa$0BODo5ug%pLBF0P8gCs*r#)j6US5)AxvtIqm-rME*&+4(o518DcYcF>W zF4XPNiWQ688M^4f6B=Pi0>1yklD}?evGp9eR>#e4@m?opH(y#LXb_I*xtU+}V1;@c zyl6RQf{7eVW42g+b90z2EnR|uc;`}JVnS~9t3lu#{=ktaUF%k@PqE(MQRk_^3-4oc zlJRnX-`qjmW0$WCIcyPl_(L0q0V~J-5-I&F&01HSmqcY)t&jCJJ(M}!@}cVH)^N&n zR;9_|AR(I0sLC05Qa4(yBYei4|5RVDBQPo%xWKzj?|g6Gys2`Z*Lm|>bv4%U5(wO^ zbKjo~WXpgFCuId41H+gO)Udv2l^puu_=I$`y#+eYi`C7gB~Ir}9>8ZDWhWW~Q~`QY za3S4{c842heQk}`ez9Fo?!8jhQ>OBQVq;19@yifK`B;4*!6`j7Y(-1_bhlR-i{4!E zB15a1oRifi&;%?1p_&BfDy`57`}+Edh=^!a7JT}62)h z#@U|41yvQ@4nmot?)a%o|9{ zaX8qe1r#DE%A{cokj&xbU~3!4{RRP9=HpuLz=#NbWwr^A15PHU=!Pq?hslCo5ywnj zQ2S@GLeb^zboO=^ZqlvI-T~L6y~U{U?a6A;5GVW5dt@o-!}mj<4S!*W*(n1?jkvhD z_Pgw?^t@LUj6$i}QOOBWk>L+)y;U_u(=;=S8?_ZmMw4JNEYVOGPqsgOyxSdBqC1gH z3!P7~;c1v4>r$QH=fgx{E~^o}21<5*%9%YvuYn6*ZmvK^da>ljRX%%dcUzX|RZ3>v z&{{{;%9St-X@|w#IO6L06x*5N&nL^)Cjo;*RDNvu*A4@`weGJ@NG?zFIP3U`nNr5x z%orEMTea0hqz*R^FsY82-+VJJ{T6pJ^2fn6bwXP|#r@1La^g5Q%@@Ln3lPd^B_Bq9 zI}IMpXz`NzVFhcYd_KFPC2cvApexeUulCyFl)KPUFIo=`M@Rcon!M(dvYL~bGoD`D zYIMv^jMDdHTxhJ?ye_|ObY*$zUis=z74g6GvcY#FTXr;()n9*IsgrbaLY{pol**7x z&FJ=8DX}R}bRr%_6)(ndh5xO)?S8_+AJRuTP~0M;V|@-Q^x+qmQIqyG*+J1laR|-X zdTGk(h7jQSDQb4k_`8J`#40cQLr^e@6#r=H>48NGcZzHGaD#hsaj`pYkDc`CE0$Ev zNBQP9r+@LW$fk@Wz{&rqvz$rGo=i#7gn+M(ed-jdH9|r{PTRRhnqlwW{Qw~Z(HQ1-Om{V#Lt86?>`t`7<&Kx z`5oAOn}wkCg828V`g4^2fdUJoiq+NrLDN3noD#^if2vj0)btjYXL~TWE+}YnwLi&{ za_b6k`JG)|?DzoKtAp|Ec%gbKVC5#7p-C>*vFwWa^j5W_qeJJrXZ%1P%zjoGvm2rr zeIN_F(R=z6cIM;vvMsf>wcIw^MhsLi@KmwIyOkpwK?)deRIzOc^z{KjF%^pez;zHn z1_t>rEYyITlFkV^iWI!O@ec@D(yl6+9JAhrwu~637oFd6kv}#X_oAJJQMI^ zl;oiHqNIPEdnG07SdJEVh=-%0>sF-1T(TXSj?0?qL_ZDS*e70>SPgClD_;Cz; z5--p1Q73fs$~Zc{mtd5CaD~8o8u;7?<6uBRWmtXGP`Yz}Blb(u<{64O;5*GHnSL_U z2o$+lJN!7#y{p#k!$QX`VPu#%6EaDXSf7xeHD3|eet>q!h4XqofZ&~?)bz$$jh5cLlbnJYnJQ2?+_d>{{RH)!xoZcLRX=%}`!H9Di}0Pl4)h!G>Jh zun3aXQ?K6c?t$T9L`yNHNr-emAb-I)>VtSIaii~ zySUF7ap6w5Tatm}d=plw9_N7l508m?jlf(})Z4drfbd6eQwmx}UO}cQy>xf4?>np- zjow?bsojORFrUXhp?C!^|F=&!fa%!Q6l@DcN(M0N2{+ORHBV z8nZbowvLAQnBD_JQKV{ z!#8h+qCKVK&iyn0<7W75Z_n6RrlMtzl1zJNkfiAc8C7#}Md4LFKY$ilTC`ga7vLj3 z!uV_mavyJX-rGF8824_RAhRm6j`qaH`}jtDkaQ-)jZ`eNQNd0NjQV7l?TYa}JDWzC z;*#2zr-)g(J__w-LxPceG!;KqrJHnIXH*S#QWCT|QOIpb3 zYKBT`I_s*DMJ9J$v_2)p>$p!~LM_U(vmAxp6^Som2FfD%l+d+)>M>3$wsGr2@$w8Y z-22nl|Nh3~yTEVy_v?Q~O7;JX-5VDOu4#99-DIWjMMg!(#&;3+_81`^C}N9ii;5}* zhZC4C{(Q)a{jcNP_4*<-Nx*eWjF0`?x_H@;hQb_JWV{T{nhuTNPj@q^f8P5*xGY z%S7=ugY`y}yb5Pj^lJij1A&(QP<$XakBB}Zun3drHCcQ zjcYHO1ZlCG_hoZbO8G0gsElv2e}ZgE;f>YF@c40i$C|*b6a)!g!BXtc9*k9?7adsp z_1v6A2~WV1Vkt6?`)>%#RGsQCHggOaWH3`$Ys=D?wek9ccZD`h`mL6+xY22 zT!6&L<~P%}>%WBQX+=%_Z2w?Dz9UHNqO1^+YP#nvn`ua1IZ2*w?frbzwDI&+U2-?K zxTkwMm-U|PV+K{1H!SUK$p;mET^esDO2YmieE~h2gZ+H!4D2VjS6AEl{Dg@G+z&Wd z@>pMYzp}QT2Gt9z0#U7bP)Rg`Px4@t1Htb?ts4#=U;PWF`F5k8J6_dL}kPxTRKDl_dPd)Z^*u-t7vUS0{rqS8{^ z?JSVrD5r3Fp4^qT2W?Ug$1fEnPkC~*Z2$=7Yp?_Pu`VY&x`W*>ZS#Vy&zOdm7UU&a zBK~slxdpx!_kLL-s4zu%)prnt>)-#0{ z6EX0x%#|brp0ypWaAPL-{CnZF91edgmte_eM<(ekQkU%P5o*-DEG$%4j&a&W+p0J( zlQ-j6<`2Or2sSr=OwoIFGo;qyZ%dJds=B&9BJS-Lfi9!^1Tf!V#8J7MB@_Epv1JFq z(ykH{V_&4@`*!#D?d(p09+!@c{y?dY94XtNCf-<&v`nKnUcULNUtEQux+g`z1;*e} zwe<}G;34HQABeiO5A*Zy@ZI3sGS#~(2E?N+0a4h`&rg;$ub?0&i@GP7&!3*%QFDA; z2R3a>kYOyBGF4Js?7TkYmLsa9JXmEj%?D9X|B6~F_g=yz@OF2$;)f68-i#xm=7E;1*L|CL9+X$ z9~Sv(mmK9)8jJrR8J~DU_cIDg&C*9i5IK1gg#NOcSA%TV{QIQ9NDpE|2SGOrrNJ>s;wiaWXCds~0jm(8T1ZmYB3 z)M0PRa`ny>jg9wca=qmF7nFHp|8##LIWsn1DlJ3{keYFxwQe1Ty>-Cmj*`jTgnv_h zt}dC|`aUbm`sN1Z&Kv380xKOJ-A3=1FJocd@__yzChp+i0J1M2{mQRe!2f9zaLaq* zSao!ClD{8;?{uP;v*_JBCHr5(osuuIX1g4(vV8WA$SqV#0O#5sPBm5nIT~mf7>m}{ zM}Pm8SMb%n?kQ;QLX+%DVu5c-_Hn`G{L``6-J(HzBJ@4VD?)-aLVrd zHN-3jkBB2x+f3_zvkeam>-)RJXtsE|pB*^_J7XL3@$U9KE=(CoNe-K-M?5EOq^xgd zcu4tOr`pM~AOYL}i!Iu0cLeaLGbL6+Nhizn%vDiQ1E9d3BCN0X z)U9`AciBF;Rks9I1&<>V&5GB9UXAg!ShzvB)WDq{P=pqz18glDOtp#eN(vbn+EzMX*h2L~6Ip3h{i@#j($ z(~+CG<`E-5{lVT|L6JX$%E||(MMsQEKDoONJRL4HHa02Xe@RFnLjDDbs+Qve15MAv z{3%k@c{cy*bBvUj{7*IN6l?D$5p(4P+1N36d9jxX*n%D3Mna0 z_v+qrcfAPHn%LBx$#xap*IZ_m+H)c}(sDNldmlVSy0U_YK6bn-{LbkYEnVsU$R7s{PODEhGjxLm$Qd0jNLt<~+-2{}oXjmt>Y#6;ZI5F;Q`#Wo zx2fAbJ!e92JmusT9v#U<^K^XT8+HhX!f3|L{?0@DfnY=Raq;Re3*_++Ns{qm6KZCE zc$}?`ex+k8cSt$?5W;)*M1av>aKE=PTPmKnhHQ3Tu6}NcR2u0HNj-s%Jr2G>sNg=S z&n9w+@#y`;h#&X5%RNYA6ZWRKzwB(&m31VYQ_#=tN2zWIrstbnQBXU87M5YDRg2^{7;F54X2qi^4)!RBntAkd75*Q*|EconZhE-rmX ziY5W&n*u`3)m1YnDgv6xk=1}Gz-BDzvv+l@2L{igoSa%vK%T?M!x~m|pp3}oxx1r8 zF65nYLt2;2=wBTO2bS_U*x=XN!&|0GY;0@}*DuZJFJWH2zbv%>6}H^J^#};$f z%l%K~G5rpyxgistDnATDN_zT^xA)JW>VxNG0p$f+=0#-0@kmi3ea10l$98wiI@bqv z(FI=Gjf!iS_@ZF0(mgz3K71{ZJ^b}lPWs>~&uZ%Zx$1a38+|)d*sK8U)2C7N!%X}$ zvqHbezTG=!6#M1t+lV-gOhk~(WZY7C5@6o3f%0-k-{wUNla=`N*@@#;+8ULXQ*P%~ zjr#GjGqKb{Ut{fTuDKSkd3^HmRtC-jAV@8h2A^j*ZDKnda_^bNzX=-#h799hmWuDTG*1qnG}n z;*-qvtSUz4Eg^oprKo#I@W842IsMb4Qlpj%>&iOz>z}E+_6^Bp42X{Qv}-l zzM))$CnQvy-n&Lk_>Y=nO|Ude;&McM*i8TbsphDgn_fmWkH=beQH+STGI?b^GR_@f z9*_JwuK&l^q5x-Ed-tHqYN6X=TEip!hwJ;lZoaG=UJ-4}O>sYE;#%sf)_bhb0(td% zd5UMS4^|=Mv(@(jio&?m5TXLe7JM!|bgfWf=Dn&gYI7zE4GYV($C>o<%}!6pCQv^m z?@~`$q!G2LiYh*SWIf^EjoXtQC%pm-WLWMou|yc+ii?Za8(myn0C1unA|(Kn;s#W` z)Mri+e)J>yMiuXG*=|zbyhb4)2I;QX1P-I@;DrUD@3n+Odi_5MN7j*)^gd8E8A=UQ zu=s8D$&qMI&t_s)h3UFw`KFQ$Wop|Yftl9U`Oc_U~sv`DY~3*2sje|`!Y z3VGUAm0SGUt*~D@8youuaKJOB?e-vo5^=Fs1&7&%wj}XU`0QwYOU=9|VpBfb_za)O zW+)E?@#x|s?_zf)~DIp7wi@mh$jQzY>W2 zBFe6Nx35(fX?^!bhZULX)5^b4i*d(YNWA$yd+_CbAKULP@)GeMO!RvoAua{w@TNAd zHU9Q9CkcdG@fXHGI3qKDn?ZrRI9I%#qIe>OY;u6U`GQIp2Mw4f6^9I zC1%Zf*rUMa?N%3>TsNdnXGL{SvL;UA>wz0d?@Gd37}*8wBi_se5oZB7t4O(6SyAua zeawQ?N(!7Lee3D+=Wko4rz?QSCE|DBbI@+rlh6Zl5Ip6%qal4zD_BFriPx;4uD%dD z^gBFJ28B2_f>ApO8=m=+vB01ktu*!stN4ZKef!BAH1!{ur#lpxAJ zRd*aWVHQR*4$7bYw0A%NsRkO*?=KogAe>-l$6ZeSv#`MKw0;163V4Yi&A4X-a=mM9 z|73uy5$!V|Vue8oj4cQI>hig*E#N2j&Uc%ey|M%hDaJ)vv)gOdkA8lnJhr>Tg#;hz z{sij1M%!*#T)Z|@j}~c7efdU70vF^)V33CdN^b zxj_=b7UiMqeZ<3GRd~djPKKywD)Hm|O+EjYxPiGbt4Ug1Ehk^D=h7(FPGTfKCp95F zB{C5ghqO0YLrYaeeM{nrnvSBFqS{kIntZ=ypH3+>Hv1_98jX)b7stZ=zuKibO1;EC z6r?@ju7n)kcw(!v%S3RgiQUK7Ut(NGK@J{u3h2v z1hh{XA|MN(cK3bIgG<*qy=&n^+P}gFe-~?zo{oMLqUQZe%pFddm)nn`E z*$-^AVXeG10Mk@W_3(IK$O1{PRRaUl63TxB=p?{#4QaP9=w%w4A&DlViH6GOWdcWd z_5Ljr%cxwtMo0&dkZ4mW{M9j%BO7n^`n5ZJXD}@(A=_UeydV$O^uy=3gTUoEJ97t` z15h5X zh`(;`oBY9M)FMigO@oJ4)yK>NpNEwv4X9ES6X`PDiMxO zk1B_|dMVFLui4*VU`)K(NJFe}$6v z@m)cpIu7mvn7t}1D}k=pSwsdfzxwB4UXPh15~UO)i1(jXL?H9r?&|I)d4?B#-{-$s zfa5DLVSz$_EEMAj27=5@W=^JohkfH^dTkc1jWv_cIX7)h(fH$z@4LFWU2oCi{N%FVoPXTC^ zV5>7k>{QxJ`@uj6-TbXc(^^Z^O*Acq`yub_6;)C+WW&gXLO*@-gw2~v_h$+b`X9`% zSY|sr?T1);yh>9ghOYVq$46WSm2~8TYQ+TC4 zl!wIlUEE*K^HTpZBva%|t=Z#CI@)KIEls;8tBU8bppcw)@)k53ZSHzQUa{aM;;W`R zBmZ&k7(r%jP3JhllAWiQ`u|C)UWoe8%irj5zEEM((AKxX#m2<$HL-^|B{t*f3^P|D z4let5)6Of;cgA&imeLVD&s3BZ$-VSjb04L`sg8TEBtJcUu%e7}mOMKzaF77&W|$zp zQu(dA=lpvYf@kgQXWFhCjX8Q$N9hldWi8(n&@vAjZf(&P+6)yJ{EYGw$&z%KL+-MB#}rz zrt^=r!CcVu&4UzKWmTizH6PMQVf;b(nD{(VvQp*BUm6?sqLA9==->c#=F7-#E<%K)0Y)G$C1r zg+^&=Y8ns}r2gTkiA}6%5PWZ=BO}{jh}pj~LNWk!_jN@bNFw%}goFg-$@08pT8dVK zIbeqA%3GJz8yryLQBhi|pEh>j-h=7Db9mUB()}TCCoI%&Y9f6!sE@C` zq2802V~%_dvctLn77DY!sJOTjfRj#ElOL@1$LHVp?Ta)g4`=XY=_P*9vqKB@bGyc` z*#?(XxYiF+rtJ{JUTDVG#pCXWXyh2f6%FvIv~pvuZ9ET>oAm25Y9mkn8km7)l_&hK z&>-+^4Ou|k|L2F}X+dtPAO{gqnM}WmT8yAiVe#IEBH&y*=iYfvbsVhAzx}&llDuy4 z;n}n7mbcvAHkQR?IQZD4vsF8b_mIr80_*3ukn8SjCe7-z(uG=Psa_s6PqRf_@S$5h zjhJ^-!v@8^x)LOYMr zEMEEF+d^i3rShNJpuXf;@m+Y;LiS?hY=9A!3yj{{XlQ)u4psH^Tn^W>0oV>T)l)B^ z>gAMZY6@)=C9<2Y1FBdebaBdC37lfhACpWSe%q!BP6L`#JZxF?$hvDf=(* zLIz?zLG!&78XOW517DGmb)KhesxuHjD@@fEMqX{d6vnj<;J1*6tbtxHz@+}P@-usM zctV1^=0w;eJ0}NEz{;jZ-F5hj!XMOjcGycbLZ?{cz&mVCM@MJ5Q8h(qY{I+ZAt`zP z*k&+;1T-3QAu&w6eY}wBlbt+Gh=OLPJI;DEXyiQRM7r{`f17RGweu#C0#_AByj}Oo z9LH=6yI8jIM(}j;OqRa-9#n>HZFIZe89v5_D{euc9>i4z-Wr610I;lJNWQ6j^OLP! zHPUYN$$$Kjf@gw)dYuP!CmG8GAeAjFv}Ek;M2~CZ9E;6(sEViR+P1Q^1c@-&S-B7d z&^wb#c|(jl38}#(J8NU@YTgHre8N_-kCp3^u5r(yC|6HHL$0g|1JY%(X{akz8Qo0h zGCXB^WO@u3q5|l2Z;R77mEsvSe5+K?|Wl(e!(aOOQWT1fnGzbHfm*1(5 z$;kQJ)Rb21)H8O5^IS}UhZT#Ms~$ulR@ja95aXI2M0y;MRiC#ii`;)J(%xbJ;zAJ8 z=@ex}#l&D2rx@M@{(dd3!lp=32)GjRUgZA}grjuIpN^ZRVm14H0lG~%%?uE)z#w2! z>TepZ?Ixt`jl-hG!?FM`>Y^toSZVMzZ0I>J*;}4V*t)7_`xw$3bibZTp z>Hk1TOfYR#o?E>&nw}%X*o};sGz#Dc>Nk+Jt`;+Rgl;PZr+5%M7Hc)l3OI-#E|F6 z2PVFS|F}vOM*Aog$VQ|@iM@vZxS4{HUa;1L^vAxLB> zOxkT9@zIWN?7p#>uEkG@rNDzBFN^S9WU9A5pDqKbFz#ki|1e$&_-U+?rAu-vUn=17 zrO2DI6ZDG+Zz@*)ux^d*nAWJ+ssuw$Jj7pX9w$6Rz^EkBjpycs{H`oW3a|g!{9?uR6RHuy_*c6N0yVXQ2(`UK_OrFu$9 zN&l-oh~3^WIPTw&ryKRx7h{f!FD#&^Tc+LcFG5$rm!MURZJ)<3X7P!*=m*6JeH9w9 zpV-U){9R6jpl`f^Cf(bME`ODH$$2|7PR5fqGA>#j^m}AAJa~Wk*>a8Z)rF(VlnDOe zt9-x>{B`4okYW)FS7bnkK7(Mv55JtHd?~wH`!u>cw&UMSi}%_Mr3)(kR>c_2Uz%sp z!w>ZB9)y_uv1Xc9 z!PL2iu{>{obS*g%vABnu@>I4TQ%%&Jtd(bR_xZhcf|M9_5xJk56(9bfD%14a^bJft z%bK;JnHI-o{fD|jYY2G@`Zo{-adAADAq=wd9bH}U#<-kLZHJxwva61?wy=m)^gF{( zQh~VwYRV!KYSMn#a^Zw-8a2Tz8AWPQc~&<=Apr*>M8Wk@SWxgO=!%X+o({4&cVn3m z5DYaiFo66(R#Fn&^TWS?-#?|>nI7LvRu$3x+Ng_4%)*f^Cay-{Ll$qe5kLG~Y)BHj zB=QQAjEqcBP!PgfGBSjYK)+cJDYm;l!1z@f$j%4QI5SH?L_@)PUr_ISs|=JQpc=dE zO3jI!?EFam_MRkQa%S^%Ox zE;rl$A5JdEpFe+2lakF|UR#rr3OdHqzpaa&HlIn--O|ENOPf$m`@=sB$H&o87FPCw z37RKEkD{!_MMYKemHZArNk0-`px*1c!>S?1N@E z2?n_{1^eGUSkxgQA!&9(y6<8~WSo!eD^1^73XS5bzoF-uoG8wI*WPaHc1o`CAu&-4Mvds*vTHT+sWTi3t^;4ql_4j# z`yPPvNqFszyWI|Om45|zw$2xf*b;^ZDQ|IT zVX!4TDP?_n^f7Y*ow4wJUF?YMVmrOZc`gyrI+Xn!Ey0A5ogDUxvS#r&|F4>d=X)4d zGka^DMj~2{1|O8|ox>yRzqgqhFL4zW>%P<&`N8?^N?%vIgp{ZdoIg1XvT{IQr`m44P70<@kLt@6tpJVPCIP06rA3c*nthh+%^ z*VXM=E+|vsFTFEaUEOp7Jx_KHt%DGp%n%q{1${#9U%9h0&NzlL$P$|}0d$81K9Yz? z%e>VMPWRj_>S%LEDsJwbxgQH)8JKGHIfuMq2%&}z)r%Zad+>3Q@IZ(pw}Xz7X@-;1L#&b^|QKfgH0o z=g_a?P8{+bZeH^+j)OJo4}0@r=FO|)KRPr7F>hHipTh#=dQO45z=$yOZamxW;H2{~ zN9~B$@f+y&8^(w^PL^Eo%@l?`($?Zm{{(0{5@-vHN%%Qi)%0|NXlszqbzJwGm`)sY z8Z?#pFb0a0D)Y9?P5BIhok~FWI!T^7oS!4~MXVa~fyOzz`76y$W~E|h1p{TI>RBuu zAh&N^{diMgMoLDqlGU88y*zU4YM-;OMDOW$H%YCTJim^EP+!1il`aHL1XnQcOnC5o zY?By#(|@sf@_DsXM85c&&*hiLRI@cHOS>^iPl?I&8ppJGOP$81esR8BNtt1wq91P5 zI9Kj_b4S9z|AsYFo$$@N`5oy_9F^Avxw+2@m35q5*Yjf?`WhR!OB_H}kss?ly}mKt zfEXyTJFKlO*twu$=0kqmAw4kKMmC#M#V*y;orA@+w8u2U`?%H|GbEDv(ouEEPh&(W zCc3k`GhJR>O-{}EX;Fdv!unTNPmAR-HK&3?ho_4w5p@XGRd83JoT(D67oL8g`TgFr znuV89zNUOC8;FDa4$Hy)nLZraE}LWFlmvTwd*G2@l>QTZ6A48U7^}9h_Ja57^z?K{ zNXXhP&*k9h0Ngfcv&@yk$fk>mw7_}-7^65JaY?il+QNc?>_K6s(I+o?e1D72^a0_jZ zS7?EZ8c3^DRGBcMUoFgA^}&&c&5EK%f(gI#3UKDNzW!zVLe_R zz2kn8LIj6hc5@TJIkU2ONU1<8`PtK>tf3*LT%kY9ddJ@sD2hZ6SNlt=oGb5~liA zTqKD=^1o4{zPBD=Y3o(L;!F@my;Wt}Gu(pSx2+Pb{><3tDsO=V?Y_J7h9)$EWZ2(pcMS`w1`}MZVZi@F=<)^!m|5I=en{m)b zwIs`{;$;cl7H9f)vOUjtl~Ki@!;?zZ92=unNh9+>M)KktJ798&hd%W%^=tlzS-HKjcT1t+I5kHjOcF&{vJv@@jc(}L~An*jd)Zb7?TU)cyVkS)BJ@Y(!rbPT228DSXKw>|B z;p+#CG-a34)eH~<&NmBO z^Yin;gq$?_iRk|Qyy9YUSj%mNIoO{`_J@EJ{`C9~*r-eqA%Wzzh_)G>w_;_71~_utaq$M5HQFokOf~Er=XFQgc zbcvO8@wzgpKQH=;rW-tbe7w8cos#@|JbphVo*mB`aBcoXYxK_{7Cdd?QJ!-(OYgjBXRs5JZ`P zG!{H6utq8UcoBxYn>aW!QtPntpxOlk3kwUX2BkF=Y;5d5eveF44@&m_`0|ngZv{icFAzJSA`C-27iUGv?NTGV{ zc?8b-?rwWVhMrFde(~Imyr|9kBr06Bg!PfK4VKbB?{5~^OP{wfW&f?R{59>p^VMPT z;v^~y5>yW?M-ZJ~tW~^E4_n^xt&|Pg)Oj(KJeoCMVwLel;dQG~W4t04ep7GPU69hc zknL|4_p3i{%=t9i%b)g1i5aIo`d>jCI|X$W-4U1fOA+ZHeY8<-L_Ht*t)?@Al_H1K ziy(g-I?iu3Qcsq-x>PRXF{&$Yz-n)ZMA~vV8kWcSc#tH@c*%Uxyp7wBR+PI~r!iyL z7WLqB%;)+>v(&h}u}zznotnn(-mYxy3q#@2dkM8!eXc}T5nV_+(e~~iGOTFqcSM|D z5JgTX&GgTFrzFWe{=4r#FvV%kp_f_ub4phJ1~8yUqBS zykTOwhJ}U2&{WUG%dxf_=8|eF*$=#&L^nFntKA}|Hw})K)NpjZA_my~+uPg0d>_l8 zUF#T7R>rE#3oRk3khgYC?3>LA6JT?~ao}z*^SH*r<=AW%aW#zz0;~#i&k(Vsg{7q2 zdvgl)8ysoMbyYJT(eDL4=*h{c3BWaleEOeFX%BYHAjuqJ%Tibj@T#e~x!;@}1gH>j za&r^&+D9Z$0}IH~FVf4?`*_TU_Tp$Btz8^|Ez|{Hq`$KFqCpC54WfHt#65`|SBr;uP#Kcbb0X0Xx9LHf! zIecaQ4d6k4{|?(0E|du4k3w8PD!x&@J@8+$?RaL13u6=p|M$VoUpVYqugJrGTAH!JPasTfU6MH-Ti@COh0mA6*A`=t=LC zEg>bis6^}a-D|`;tYoW7V-UcU36u%0+-eEcR(Q3$m|5r~5QHClTxJCJ+V5Bk2ehRS z<4fw&XG@Um-TaYsb@q!uHi$cN3x-=VdMc~0b^<$=XR{X4bA!N?fXuonqe+9tL*`n~ zHZqXg+OzpASojV@2}Pl;^8^Z_u)i~}KjjWV0yDATK&@$4EoNKgR+nJR`zrUIVUfLj zDeIRB&MekHdQ0)x8)~g;lA>gLh}JhV)X#L~I4)>_xnph4<@2iJg+ z|I4lo4i!bsqyfyFtPRYw#tapmFKI9gz3=gJm+jyc5Th_zk+MTQ4j_hcJr*h|eZ}uSU`$n% zl`-Jk0&Eka#f;iNBe2K?wHn+V3=Ak*F)J-M_CrPJDz&P&ZDyv*fmJXi%*lygm93+u zCjRP`X{`{PRaEy+!k9FG%kQ=fQ?@KSI3XX zl+hkfP6WSyM}Sr0OLrWAFoOvC4CaI~iFV>xjX=`{FuqiVm+dQhND>$1IR}E>?GUpZ z%*9!>slKpr=W^>^6#R_bxutn5^U6~W zv&`Jd7NZJ-ipwAJy`D^t^#5k8!$U*=)`B)*U(fAw_wqbCDj}MJibBlE_$a&fJ)75P zmT|V}qH+H`2cGmwxu=?uE%2V=&11F6o;G}?6X2_GBdutYxz`~nJ)P2+cq{aLyTo}` zh?$ns-TvF6_>g8ZL(T*;1<-0OS)Q!eKriMDy;SD^ZxABywN<@bysX zjdJ|Ts^8QE<;oy^Np0;j)nAYm|Fhvy3{e>;2S;2Zst2-vx#*z}kwq6;opTh?=`)u! zhwVQX^L8jc)0wJym9~GHk-LxQ9Zr9Nuuod&`;Vxp)PZsn#$^vwuS-nrDn0RMS`D73 zD&wdGPfiByy~UhL^X-a>NQ2M+q!{gmm8L7HSR7q&WQPXbn==(VkH% zXpSK!93HQ-zT98wg)EF`_KP0`RviAD1*lv*4GMV?`Ve0U!dY`i)T8ZS7(j4X7#9~7 z%IH}hB>y61r=!bV048=%c1U{2AAXI&HNZSskUj^@;Fdc@1?w!NRu5Z2d- zVp3OsMI_sSohodA!XP2}>Xr5jCg%Txy|;|2vi5>uw2?`!1Yt$v)!UQ| zr^<1jP*w!vR&SQocR5WihYhl(ycfOR%J{nedi&n1!^SE!vlQu36c&t!+H?Bmbe}J4 z-fS-w7%qHz>t{F!l?g@PlE%nbc0G>}kN@i`_T@h#zfAmtKh5FdtPxfy2&pjAFnpTo zJkB7(48?fWDvQWIB6{cj;wCovBlEOjx;K$;-yM1<&Wa&Ze^L%!VG1bBNU`4Kv*Q+a zLL(F7KxMoP4-NcQmc7%&@wk9JoGe*)a`&55P*A4c$8GLZ;Ur);BHp(HvwkQHD&Jt~ zk2)6FYMO)@u$Olbg?nDVb`4Lg>d!l6XsH$%jSxO@voGxM|pWq#6K}_2kcGN@o|NjJ_3H&5`rYD6{yQQL}8Zl^s=(rC)2c) z6cjK3chJ(PF=#E8B_rD5lO{L-ivat|TST-($|1N<=N zQTSZGfxM!znf&#qy`RdE+}sVdOedJ5Xt&{j;(I2PgQEsi3P9YvFO6jbG)?KEm?jV~ z)B_RqCi9ft&KwwatAx>wmy&{yjjgqHmH8}tj8>g(!q699W)x>1NL7vF^O|2=RIhOk z0pjZX_VJ)zfBJlTcmebYMTM^pZ}pbdfklmcra}`>5@m#f(}7*4=KlQ1ZdbH8_BZ9w zs*9O=)Vr3J1s01EHPt_$R>+W3Ke-Jhd7Ml3sBD(Uf3+ycvTtFlQ*5o9k%+p}$1Nt;7?1vcwSoDK(5w9wE5eEphNT>QbA z+{43z@a5Vqbl;`H9C;0m+>{j7bKoMqnDm_qG#)*;qD&m({7euO2O;1O9pR@IZ{Adc z7sF=v<0C%cJ(|VftgW_{88bll+VB;~1?RI{ckJG432} zRQ5G2c?mu<+2~%E?R0B$ay%nsq2j(Gh4?1S`U0;iIVp+LdCd-7El;>~ov)XExgI+b z8C4#)nw;iTVoB!|Ibp9SV)0CQBH8(Y*YK$AI0whUR4Zn3$D$1}+w_*fL6$w|TY=|| zi05UbwxtUA%I!;x-@2ZyvEMPfy`{2lCZX`oPGz(@i2V))hksz^S(g35b(>D(!tW1S z2@LzoStiwlR035WH9iogTZ?wFK@FiE(c&sZ_$s%5_8 zaC0JFGBfz~7&>8>35<87nVDH$KLPU!GN}7*w_)BZkyYQ24hg-dI#GcLt&6-k9vHLB zp`mWkJ-@_*@~g&j5i(N?(nJHN$AV0qFE3QtSG9%8m4O=3RH)x;IQTNwTU1rm7%Vbp zoBXuN0mS~q%R2*ZE~#Y6IXN!JJB|6`ET;vH+PH@A&$m(y^{;P7^zbH3&K21O6ZOsJ z*tsvVQc`C~-TX!*Cq1juZF{g5&gJwrYw(9in@q7Yzk$LXPd<%SWP>*F18Nu zdu=x@GVw#*^8*YPQ3}CfcT1ap|^|~9K@OGGi^l}qsD5;Ku zfkRXtxbqiQx(9szc9plL`+FZmaUp#m4QjyN&T#wzu8rk)2^*88zsuA z9K|L0$9Km5^OeBPp}7Xvp{=(kO*=iZ9Q$)M)XrI{nKPNZ3nh%xN50(+dm9+mjF#wh z<(`@AgNcF(7VNrlKpa`QTdDYjoju~h#oD^9OpOc#J%q<Hu+@4iHjiBc8BV=VcL5%58aUUZ=3QX zY?+NotWVPv%g}me7S~5CVp4w#zw?$1I%2Be?H(A&UZMq4X=!N>pNSJg2Lj(tx`8uA zNqI}``#IUAjnusVvpX3$#p)+;3E(hVHr;tQtHi;1%D z?i7;u5z*j5f>#opR{nCIAZ#=v6$uc*Z8vXp%fK&3lWEGx`sN5pxye@u`5=vk?wFp< z&s?tszwGY%{)|Z|%Qw@_x+HEMe$3!(Mf|9;j}+0ebeBQ9^&<)}OdzL$<)rQ2Ef97x zUIY7x+MGkL@%U?B=qLl;w_^Xyeh@mHROUL+P8R9uYQ!phb^&OXNaNeYiI#BFioQ0EYr8R?5s54XL*4t^H^BTnQC1bHrwp#VvG6Wlj=b z({18RA?%}ai}=|)&eJjcOVZqX-dEfe7kZT|It)P)%BLRQnqABHAB6@a4(@(prh)%N zs&#QM=0os~f%wNE zqE`MMkS%1qEpF)F_q=~O-g6_7@akwtNz?z6nPLYg{qKus>gm+Ke?2;f1(hq#;Nnw)%ac8s2S&{;hX4Bf={z0jD3{)LXO>GEK@8#O+6etP%CKj-<$Pq-#$_iSvWDP~I@kEM)^_B_xRNlBC5 ze#4WMkf=SgL&v4V!o{_eeVBhF7B`%-@_FE5YX-0dy<5|2!EcC<}GyA9uc?G@O$ z?m-t8==6RQz)YR)*g8o4S(rGm06SpV{+K6U6sL9@^abcGYu_;h0LDP;Vwr|jg6MD?VF|Z zLJ!FcR9xFKUS3}C)FS3OBR(J{z5ftrX?3-C3*Hy;(pU+B)*Df%uQfYmCh+D>G}RVl z5F~x`Y}GF-Z0PHIXj2H~IYPKqNN=d6B~8Fr4rH@n0ST55%YA9+%31+FKFQ{#=i2V> z?v?ht5kxwx2Qgfv%S%gZlP*^gL2K(w;L@pB?MRBDXJ8=J;ev>7#Lm(c5itUl0$jWG zHL~ri)9nC_CZKDe7nYI=gcxh)kAEa=I{p2-z}s)gJTgjMvM&&DQexto4~?xrn8}-M zkEwCRSzKQi&3gy-?;Ddfo14TE1{l;MjyB>_>DKeD*e4kXBV!|@<$%t=_p>!%XIp%b z$THcJ|NipgdS5?_;5R&htn|W5C~RkBGzO;85R1LI zaxwy`6(GEq5#Q*JyI#K>5p4O!E2tOUa@VsfnyqKc>+S|K?Wsu_e5uq>HMkMM4T@os zw~g`TOTf;vs?H(gT`+yf#S%;CS!Pxir8u}$jn6g*z$6Op!dhKNA4tN=k6|_4fayDM zNA18211fOR5(b)$7N)!uC0lDzA4*? zOQUcPW@I=x2Q!W60IU@o8@H(^Rgl7nNkx7V=N^#TnIZLg=h zI~T-vXXJ4|r@-0q_itXvTuO|A>ICS#y(2r}bMTQKJ_5>cUJ!`PC1hlRqY}Z#4qTQW zu^6;NaslP}GB9__EMsfEd68Sm9%5r3w{QJgeQ7>(!$t!FN%ktn`c1%Wiv#*<$VGd1 z-AG7V_i#Qs7PO4|`udEr%rA}QzI#qUH+CWYW@R4-5?t_Vy~RSIH{)FNV12KWb~2l7g4?897i5;~zbxqKc?G zbEhn;NYoKE<_bzoGB1C!eQ|NqVp#)`KbN-WjTT?W&CJUr712nVT06s`!Yqq$45v6dwb&} z5EIwdX#S~CkkYST!*pH2#lw4LxveD-017{R0ah*`a#^8s3%nJFr54J7}{x0ox&s zwRMry>hVreuMajg;H~0s-h%h_aeHpOwU%Ilk#`l3+X2=&_}OSu#hHw=@BKRX<{>~r z;0@$;?!xeJ#WV!fh-0X4o1v0@aw2OGtoyLNbo{&U)I#~xp98!zAm3;;eXBB?{t^__ z3%J?(+8Q$pi&CLpr*1lI!cv@LohBAmR(t&!gT+R}>{d(niUWhvbjePF+MiDLm>iTuw@Ge@Wk_&j~n_S5Q#+*#ybyR7o#jqk=_iQSHH- zr`H;ZAF@ZjwqIErwydxjwoHk5W&RtUB+w~Ff;|>27EDZ*O1hrC2~;W6y`b5ggpF-? zffnW{ADeSjD_)XvL2-bIj-GIGd9cp0GQbj_`5DU#Hd%=BprfXSST!nE*04|ta&l!G zP9V9K7>^1aUt3Sw+S>Bb`J+3o09%2%rNboz8-RHc0Un;!=0sH54WU>gW8*M7)wd2m z51P8;_+({*+x+Da3k9(5x}2Z*0qqs6;Srv*X;uH6&;FZNjTN_~B!a`%L|Wv9{Z1dS z>tH<*qOe&TqNAnl&`k$ZA);5gE>LSg0vs+D)(Xr;53k)wKLCH$3;6IL7)lNs7?2CT zrl9mPt~;?$1eO?z#MsZ+)N&T+`c$Z1)OXa;aoP_L?<$mHjbgmvx3n2xPu4Wu&dtjUhk<6rQ#e_G*(SiNsAzwx&TUAH9barR z1NE&Rf$@hALe>r=O~3-ola~TRE6u$n2B2jLzXS}!8AzTMhuES5Zy;_(SGlAZ+&&v1 zPnRk}Q((18snRab&(By>GY%rX!Mx}>;ApLEmJ59&MXT8=WxQoAU^ipO_kfP;mpI&U zMIT#W;gqnqKOV1GAEvhY=L}BOJc#eLLYWFfy9Kjih7Zno>CGp{H_y8TWZXY^2M||5 zEOBdVtDHq3c-EVm5`&DR*ugu72HY>0x2=@N0)h-zx<3mzI@Ddd6pEb;wATG11tLQv}8?k<-$W!p=ZVJ=)$LoQ4*m zDJO?>TB?2`jE{$RurdBCKBHCS6mAi?O7L7~K!QzOT^(%sI-3Ijzb8kxKl{n>ZLPC!r-JCbr^S zgyHX~vw~%B@(R1n+H)!@c+jv;m^kgWUT|^6fkT!Ec3P;$Kc^{H2`XS$3p@gX+%Aga z`o7FGV?)C>uF3_DN9`TqUqqI5;ssKhWFz)-K7k9rW-utzEAtoQhOX zrg9`zR3ZZdAs;O#Iaw;j2>C9r#72Jn|(vpFX`cFd!gG{AuuImIxFmCe97p+0U*n zsf2<89wA{s0VlXtW_5q2BqPg)ZQ0MzmMFy`W=E`U{Wbg~24eavrc}T6 zO;mqdIIu%{(<~7&2*Li|j7a|vK$`!~y9d_5e_#J+z|#NvnO(UdT$W~67>KpFI5_`4 z>fE?cK~fR2nmCr2a1KEYb3&(HJp-N}@UHe88|WYT>e(UOQZqfo*H;)QO#nM4C27yj zJ~;Yzyb<*)T(KVLw|VrZhr~P;6f7(u@YKJtgkJmvQyq?2@|>2|kMn?ygToTtbgc9} z$N}25)Bn`feI^?#G3ADfEFlV|d+IaRlEaIOi?J|h6%r?*$AImWc~>~^sj#Hved#Qy zCDtJsHcNRBd^Dj`WSCS!H5u65Nn(n^SX^8LVVCTEJi^EOY}NjrYNFcKCYlN#tn_#b zMV*A7K7BedE!A6%aZ$QCofJP4-&oa*@BHj1?ticV{pB!@%f!84%g#g3!nMq2IdhK} zjPXL!z86l5YFVnY;C;{Qh=K`ZUD6Mlh)kES%8#TLlcn-V?m>77&)Zo zYVt89`+$3f{_m6hjNC)B2~yz(51|>W#Ekd-fR_nTpC)I%(6ya~%GLE?8G< zeiR6&e};tICnk2-Pj{=VJcHU3g!@0$4Su_C7Ybd$LFsoJNrO$gYXOf5rBnUwG6!*v zDAyJRN>f1tjtnsc;2iil?ZJ&Cr_G*vuew2U{^OpG=yooCaN$0+;+^V%e69V)b5^ z1-6^ja9==*&=<6zpr9NTbFiN5=E;czxL--h-J&^00~tPh~r)a$MV zNsSa6%MTFF2#Sl_PF7c~{e;A=Pe)tZFrWlmh3Tm&v$dhGz{dtzJmOfp#@Pv!$wM`l zND-G{;Q-m0c;I%xhRy*dnyTdD#adpM$GWN2)m$F*uz3NH_KVXYG;=MC=>qtG0LxXo zTuy)vzq1p(-RGfL2WynRfq@y5@hj{qVQAX<97V!#B2PzLc6&?)A`DE`$UBAhFd`ftFLHfBI=+Io&6ZjZ(xIrOglSY01atR4xTOo)?y8$ zsepU;2;b6b(5^;I+AY3Y*T@g-35j|6nt_ag_PG0Kes*+!mT9DRfrtfLR*8`HL+l4D z*95l_DBabnt+Hh^aHIpZK{gQavoD2*n}oy-lLCr|>FH_c*srQhJAZQ-z=$T2gmD2G zSsQD8Tp&cd(HcSxDFZUn(xWvl^t4IwB$N)!an`v-Mc_si=r7g*A%49Uz)^fdLQX~o znGB#v*}a=d_vffz0+tGuA+&oUAZ_UFWfD@IfoOCQ zQki4jiz&Br!jQpfYmuU$zw#zcq5+k}+#&Xz*Nz<|%%+@5`5KHqj6$>bSe$ z_v6R?`W7Nas&a|4bi#M5VC;a$KA9Ax%I;DHw`|q<1^~j)lltL|7a4+y+o4syu*qaK z-|NFodSM9^U&PChtTdBq`?J*}HdlGP8(D+~ib-YpjRXfW(ueW3gD(8+Dgn&(ViF z*@i&GQlqVG7k{9fdUr54PoEDN^(Id6Z0~(9tQ*2@WWg%ktXmoKbbyp<(9gpZDGAKM z4)MsJJ>zZm1$fkSD0dqW93vQk{A>goj5(N7G6w+~B2iwq_^$P_D9q_85P#a+*Lsqe zM5{IGe#7;E)Bq^yxg8eX;kUvJ6}Po@vtX%9&z+A?o>Zm_70B>x6y3UnPB6nw68p^JBCrGErV&4{CAgy#&top907NM@}DIH z11G{c_Ui-Rh&9JaUUBu1cJKDh6-5Z8>#9%K?;u#{=7Z8qqSA;^S5x&~e7O!b=4bL& z**1%vLfFEls3bvc>} z4GU|Nc`$*I$RsbsigNccgomEZcm!pv8Y(RTk8{W`-qO&}aCK_xiSA+;=wQ|dbBLob zn2@#vU!Crl*rKl{dnOy8vFMfVJQ(QjE1$KIDJV2nPkOn6WyWvMW0mb-Z{9MdCh1(4b}$EfY7QL#M9hU3FTZNW9= zllDd0UE5e!x8p;yU|jlFhbheZJq@kt)-7$gcNWz`lRb3>g*W1Y*(nQiq5=!klg?nIdkd7gVm1j?PT9)NY=p zE@ts0eMKeW`lY$4Tip*(%L1wK^%pR3@4P;1c%%Ae_~L@C*ZzEr*YT%IfSwj+_SRQS zN|sUGiEKVwdS;;aTDhs&48O2P+;p&~RE$_Jb;}q~=lJb^Fg9r1(m4KbV-eS)nhmUc zPrITUr@t~ZDHUaxajjRHTfB*T;*>B0``l(u zlIIRPOQHk`Br^Q@vjn@3OsUN}0a%F=3>E5=ME#Uoc=KX&vL+xv9A?W()sFba$zQ(w z20`Y@!Fsa{>I4SlMR1)%mEg|lMOHWx>mJW8nbkj@g=9>-mA-KB%7%Eok4xQ8 z*Y4N{D6YLBr=alWH9(uBSFi5N*A_mY)0fGa23V+PDupGRXMnAv4 zKZlhYDqHSBHeIo2lNDdH{Czw_@*2}{OTzXu)~r8{(`1IJPaO7*hG2da=PrNQ&EUAU z@7YTE`(0b-(untNR>j4Lq|eJM;YDDGI=7ut6`Rw`@z>7!3ph5Ie9G2}+;;37G%{cO zQ^r}vS4RuSFY<)bwnAz+Ixd&<>x;=m!vi}LaUw_A#?m<)tUaTBLU&h!*5>-Kp3pwE zcR_G5NahWXdrn%qghz!@laszELk3OBkra(nwg`a17*0b04*6x}C@s~ad!kyBegClKW>eE!5tixk+6MkkY2S2T0Qq)Se zR7y!t-yFKd9hgtCyztmlPXj7MAUHyWsW(0%Bp{GwI0zo#2AD_^>z!5#K=_8+UZAB7CUu$n0{7Dz>)QwgNHo9 zD4C~irpo>2W?^K*b0(%BWw4`B3csCE{@LgeIH!i9U{sg$RRfEA&jC!|;fb)ew1l}R zxaa?YFm(MzdZohe$VhMG6lCn`=AE52Kc6jKlHYo0-@eHfkygGINVqij{L)2L=s|#$(={uQJ$UxJAH79tb$|V1%GvCi+VW=A{ggsF@07WmPaz zVU*rEdw5VQe}ESj(aOdHK-6}4O+>^z+X_OSipUHH1m~8|>gq#KDIBjOkai!DrAyD(; zOOlLfS=JY;H(_rxoQy3iO;r%mAs~7NCM%OP>1nAE(NQf`_Wa(*E2E5zlwuX0Bh7ze z4YS3;>!~()tc7~TiJZghOF+Bg)9eIR(CPk(T5VAKMG2zw@UuJ(=&u%+O3JmSe{ z4IL{rPl*4aPyXUk&0VD*!)V}}<*|yA5TFrw2|&f!1_j(=&Uw8xdBVlT32Bw-)oXu&5tEd?2Fg_gj23AS`pWEF3P$(kS^|eX`T+olHd}NQ4DIJ4?9S8 zMsq4N8g=006G;NAfK=|CxVXznu;pDghqa79v2Wa9z%>N2quktF{a&3Hlk9<^0?6m^ z41#=0>>B+_WPMgrp1lTRZClo0QG@=0(C2Ui39Tm?B#(!t(@(f zEzPX(d_Kg!pA@#q>!{+!ZBsDixJ}jiM|!H$hNRKrz&1y{*R_ep)+D*y`kKvH;_S#z zH)`IQgw(`pn|0{-Xs0AeK<4zWZd<@}uzYkns%1M@Ej8n+*B3p}o&Mbjvrnj>M}aC5%{Bkp z_alri0kOY|a%0q{s?yf(2QtP0_))_POecHtZwowzT&9!~xZBfWpLCtQpq8h@#l}wR zeWN^T1B8{hWG1D&R*`qchG3r-$Da(X2oSzu9DM<90#pQw;^HMA6*FGHehm*gI8VgN z#tT5`=8q=g7aCK*^#-t>=adTkK34~fVLC8TYTnxtlp>e2u=jc-TU8ka>Bb`#o3CHJ zJ2zgA4J1;YGL@XZqvD=#NMkDK@~ztLWMJhEuq}-*lidHQBaou~%jD73x^>>rz&51ULLU<*c-pVdKNdZ}#nlDm(np%! zgoTNDy}u#U;fz3k-0j)v=|*J5yCojJ_f_gvdTE+!MC}p1_ss^YETaf5c&D@dGM9z~ zQ4==&s@?zea@;LjIdS*rx8hfxHQV|T*7l8#uT2$SjMcs;zXwYy_=5!Vm}zq)Fxjto z>J;hU*m9pSk#kVc{oYtAkC0~19ghfQoSj>cqkij2-sFAD_hHEMHuhFKAGF#@eh}~d zcE5dR(cS32v_)Qa)p<5J;XvjuxJ#cL9f9YsWuwphUZ{^xE09Y-Twx(?ad9z> zX@a@Bmlx8c$*Bk|fn5mRI)!;%F&vDtV>~P@MZl~z(9?@#vkX1xhgzG%dgUGI9uCIZ zWKB+NtZO_5(1`HymkaO0II|ha^+_B3pA_km&V?+y&Ha8^M51()WvA`(Lt_bFv4=c& ziq&~U6)Ni;7s}!%8@NJ^aib@b*wV&VdFUh3*Irqc`$2?o zw9aORsf{pI?MfJY(OT?B zU}x|ZzJ?au9%#CkcO~C%UypFeJ<#NbSNGI?^>8W-{b~r9R_qTg4h_xTF8WEFF9r3}r*&Ncy~g6}z(yFzR9qRK zoBL>Ly2)<65;|(S)b$3#u(g$C2qhb~7TPRObcTc8W$nEG3=y^f-KjnmI2{xhd?N-y z>0p0<2u@0B>PMY}e$j7*cdIHZQyT-6aPg5`eIyAZz^;dy#PXoJ%v7jFWcSwH7ZQV% z`+K3{`YqLnI9fjfsRSJ9EZ`@C6Abk+KP{JY%XT)+i8JQy+u-%TMVu2i*f`^asK2s zGHP`EwJlZx5Y@mEnH{Vlytlt!#@hB5EWh;#P%0M^3=C^lNGk>Q`1ZD>w6q~2p6&EV z_U~JeJz$Bahb@e)k4XP5q)Hh@GqY4scWibocD1y3&CJfmgoZXb zh9xF;fv018&i9xYb%PWb+U@uQhX<%=zjZO=;-(!AA5Ro4nx);g7kK*?(kB9mF8qn+ z=jWwu7Jyi=b$EAU+;1R!c+;E&>t`8S#jYK5_UO;`6MSj2$tfYeg6EL)9SgyA%j-3 zL`yKGrEa?d#6v0D?0_U2gRodYpb@gz!S_j~a1Zrv^rP2yUpR+P{E3PH#vb%p1-cx3 zmBs%$3v?=Gu{ki%yl-+l3H$@-qF4+eUs(`7pVh(Ie7>~g*_+ArhyE`v@i#La9nXNI zAy-^UfSA^4!*KxSq_uUwPm}%W0VnB`4#pM>Z7%P|AigCLzQHAej&5q4L9JO;$@vGsgPR(m*)^|~W_L$9+!uEuc$i*jqV za7-0QUl{wJzJC2h?kBPs10h zgLEcYc|;+k+&mNkmPxFPy`0>^!Melg-ZCOZ{P4?{FHWcaCZol=rw7(aZ-vFgM1_RZ z$}I9iLs4Rq0ti{ZIR7-zHm!l#^^vb6Cxj^qDi>$Y)4sOd@JURZ`}*LN;$|$>$=Pw+ zFJ=Z-#`O9#JIGD|mv18WAx3TyGc)hNz?rpSX)1!xD|5ggBxFpC0ZL@acdQ$%C3hVT zO=P8|JO2CuHb;LH$6eU#6cHjyg}GK{uR6|N92}fd#wu3W00H&6_6_**>FSd|i!&H| zFT$8Urvsf$S4gOJYuYW1%?m!BDbQ_Y0w6Dk(*ZMpfMpH7B#QwBtfybOUvqLpcB((s zqK*z3Bwi&m-SM=PvMYnW5({gFjxM{Y$@2|L_PU@YSOitQ zz6KD&fFuUKI9fuT8IQSbtgNl2A@Q1tT_VbKeMf!(ZLTfb&9{vZY`=t9^@^=RUqk8_BuLyu^&-IQoAI~Y zU!fiGW6m`kyOaGwvQ0!MetUaUuoof@Ut+AT zuBNA@xqH41CNxV-N#VBJYG`f_sD2C@#Ez;viDPc)(shGy9<2CdNi;rvYU)WcM7^_= zl}e$$@eDF-q<0!8LMnpfD{9r9(u;kv>Tv4nVq9vfL`Csq zjBb0Z!nVNS)==LVM%-=pi)W zAg+cSw*)Kapzm8>JC#I4zQG=_w{Lw11LJ3)^m}$h91azGN4fL)Ks2YImECfW ztg$hzQXV>Pc8|XFu)aMhnRC20BBJ*_SWf9KH~7-tMMHyW?RN(?;U5@Lfl?H;99hN1 zWPW_ttyl1X>zEQBqAS#?B_!H5lB)@NLwWs=va<6qUIQ9WBqf`hO5TThxEjEf)Vr=P zZn1fNM!SwSsmCcbwlKq_|}HF!FEEFxb9Ga4y{hkny9ca448};O+9But714fYA{M0DyV&>c?OjwYa$nwwMSFo^*#-^V)b#d`4<87ilu57^75Ua0 zRSyQ*`poRFU|F1mV7v$Mhu zU(@g$7I>bb6ETBYxN%+oiw#XkuMz|HqZ%p_u*Qv$rEr)D1!_eIC%;r-p7H485%FML z2_Bvl2JL_a=FUp{HcB6eXaN417z_rf3CFs*;KkUAuJ*1oZj1dV2c$VB+kJ^6}%x zr8}mZ6IoE4TZz4JKHIws=3>9nmySlNt7uui-g!J0HbOo08(b`MF@&tda_zPaS}`eb z0q3>}qa$kmcI?%vF9&xO4EQ>y>dsqLUD$nq18F+bfPgYsQ>arqMO>Zdx>YtCBu}wZ z7Ut>0#T`M5XlW0ZrtpokP5XGT*4WqH6Z;0lLZZqBU#&KFwi8(E zANGd!qy-l2t`c#)1Y`aN_9 z$#%7TVe)*^buT9h_YbcY$41tYNaf^c!ROBgf>Ssu@|bT&)c|qO`@*JB83zAAy#SU> z9Zc=QFU}ocF2`*@^A0tF)1f$j-U{zzkFurH#NX4Cz$uJQiCI}NMW@VisW-*p`~)-! zj2mDi<443%8SjS9lIXI#8s&dW=4MA*o9geKWP`wCIP)_^^!ta{;8Nh}S)@mbim@UL2)$KaVPPyvppUz-0`5+P!{#qb|L(qdz4 zm3gTZU;exWPBqW9!R3Z|tTfMFM#gG5;W$ZnFf&V8EQaf=r#@xjXKmK$Z7o6Ildu?u z_Goqv4ERWSLT)K!D7o7{5;B7+GQUIV4zBH1x}K@TH(5mULTA(|u(AsYpcE`*14T)K zG#N|_bVZ?ogd`*#q<_RTsbb~j>i)x4m~XNUX_Xw=Mq_(#G8Lc@bJ^t~qq6Yi&9Ci$ zmsw1igu#N0EJS6WEJ!VhcoW4Qxlt}ZiNZVpGlqv@W?HzQP0Bylwm{%NWx+@2BcBEu z9Ia&vL2y6{Q{wmU5+|C%schal!pMTX$vB|CxjZ{A@bD;0(?2(zz~o!Jx2AtX+T!Kg z6v4hNDT`)5iQyj}?nfQzfz(|BqMD41Jysiy)$J*AAb0_B-^e|Kkq^BXo|ZiWkuJ4w zXkU}gx|BT~{*#J%UX{A;FLo+KcDYlMEJrUCJ0xsu*x!>PM|Oq2WvvY63}%LtRzW{> z>sC5Aq^InyDFT`cdq@&}ty)#N#D>Uq=o*sQpB@s1gk^7pY2nBkrWwbi9Zm5TbyGQ2 z?JBxwX5Jx6(L1M{f(An5{d=vN4Eya%xtw=WQafO31Plx116s6CVo~MYS<2)jBz!{R z6k#ck674O8ld+79GEK(I#gPTyyn%tK>0*0$lZ@k8x~g&vho+bq9SfmEs3g_YJ*@P; z>5vZ*hJz+qDrKJoNgf1!vT~&7z$QfpNJz(PdF{)GwA$M5QnO$z1FS>oz543Jpm5k+ zrDmU#Iyvty5E(BY-h70;j&Y)jX!abaeE$IbL?w@YIdiQMJYW4%+t(;@ zvg=cDD1kL;8k)TqX7QRmHjCNv>M9#YO>&S@#AxDsEvjKLfh8HYh_Y+fUUjL-N=Z@l zi#u3Yq{D*{(?VUgqXLN#mCA3(8Q?1g1_dRd@Jw`0FYQIRoO}-t@8IC#xV`>t<3$PJ zyJW1a0jhZ&zXo5iSI07?7wFOhsv&jLwM$w9ungjdZ>6oP1kiqjGGT+u#6}{0WPhHZgil|FUSKoBRd1GXp1zu3x zn!hOyzIf+PR-M)KQ(LU`9kW{-0EWxY4eWfGnblQOJq2Y^(GW~;K(jS+x{ZM3UsxDi zbzTRo7a6h<9eOs(vU*ZUPy<+?CeO^`Zo1FgOmzg0%|rz5^w$qAn>MT$`ucu|G9De^ zcG+-*gg|(HVNZ^zig5E4d$H8jaq2~J7!Vj0Me=Ota#SSsY0BC-XWt`>;~mNc2iZc_ z4_dQSCqu!HmM&d>-9BWJ=r15cy7%NtB(%Vq8+nT5s_gb^-$6BheE8??REI~yC@n}ulQ?Z^j z?3c52Un0yQIv_<4h>{@dxmi@-9gbG@4YUO%L)1Q(v#pl;hK9G%(Zetjp*+_|Fta)E ziewqjAJo+eh_YYNI{n2Ro;;m?a2OETme>@3*M&v;~i4f~rmaB+e!gn|eUH zLS;Va2{1Ih&v~JuMLst}hmfmMoenIhqdt&>R*6iYgpWF2PqmI{k`_C^Y;3Co?i zGJs6G-9gipvd?Y1frinW*%?_z(Qr6{C*1b7@3l3Qq<-Ql(tSO$1n`S=L-I>diAy52#vhTO7tn}B~ zjRINoRTtlO>?Y?)e%4$hHGApS@h4s4!QT_kQVE_?78YnuNxSN3vYy69nM)io)ho0# z1ffKqFH1fNK(uV_I62Jy5&}sCZ3>9ASoC|md(L8?bgmOxNmMug21Jbg2j6RuM16W*GI%HbMvWGV}NP6*BU|yD`je@ zy2N*J!#1^rS_kIMfvg8v*B#2{A+v?caf_ycHj1Of;kd`6ij#?&+OW|FqmVm%g-2Ku zR}xCl-Mlz02B&ghm(~V1=z^SPrn8t)R}|@qx7kh9+5q0gFIKLXi!s|GEz|ZFXZZ76 zv#Wo}Nytk;*PxcyO&4S)k(&mYaDR|zOnN3=QZx>=~HCvdVBo`1HBz_>Y0aub@?Y0fw zF0~h=`kg-5=xt(c72rPNB}qLn)0naRJWwneu!E+FCE;Cg5Sv)&s2HNFTe1pTZ~Df~ zMcu^$sdkXb2#q!fBtC%AMc<0uMdkGnkm7WPGlhgw)6#O9PV5LFJ+UmmwN23&02PX*%^gib0zWqi$l zW(u1cXKmcUt|u{ECMh^HbY-H-60%mPxxIWa>9C!uq)CgN90(z^MvEVGiW?J7%ywHp z5eb(JELqLElzrJ|y9?vdoE5>R-!U&HS0+CXEY7tQ0Cyr~Or4)UQL%u`#zsrXufF1` zlF~}0DdMwMS2PVLC(%Yx3~Xcbk86ImhJ!`n%}3PoCK_SFf}{CFs=exd*L)=tUWunB zSx3J#zUJUWx{0Wi&oKc@QgGl+P>56GBw?T2+TW)yq6Mn}Fme2FdNBTwJft#7?cm4y zq*tIf_yTuC6zMhlV_>iQ`Eb1iC=0-`p9GSCPb{fu_oc=`Ij1|B-mdrn>DIHS2ghni zHP8sX6X*)f!09srvd$hKuH=38b*&hrl#Gll@b^Bm13dR(UDh3$e;`v z8Q0hYm{?Ky!6QDAkz=*B8p(5CKUE%9@4N|WXlPhjT@B&nPI%4>$)SphU(*U(GhgGf zP=M&V#{wpC^$wnbDTYslJB+$=dcjH8Wz>+;kh##4`#_sN&0qbDGB{hQCL{lY_mUzNDK#P zKs+$Ty7k~1=3X5#l0=+x$zzE^O)afPVDnGKHl4u^1Q3sSIAb(2l4}jh$rOZobO(}J zLLYOF8JaYE35tA!~O5P75@J>|Gz1&xzPkSjBr@?{?5)c z#7kdpuS0MvT%n^15Ws9TgZ|Uc$43Sv1pWQkAcRWi1MnE^j6oWhk(daszDhPX?Coy? zYq{Mt4XmqRsvR0C3T!!uY=nvg656h0^DovzL2Ni-yA1q81BOe#nwlElw$=M2o-pv* zrQ49Fq@znF(1B4q$ew}%fyNoBlH&hHn+)2; z&E8L(^N#0yJ>#q|j=hIC7;~;U|94#1@0xsbC>`wp=DToJT&(c8I8b%_!OZ3Tb=es1 z(NswneSIp6*72$f2J&}u9(&AECI<5jfO(K}5UiO7PNOJo2Zv4=9&%cYoz3|?c8j}w z=@ZIEsO~5H5C{&r>FF2XlsD71v1x;boYQhb{4v4|wr)_bTm{SL3F$|Kfu7Sb=_=~! zXiH2PKQm+}50GWbFngw^hKvknVb&O*(!D(#9vPNS{5HEiFA2?q^VyhjYfviW;cf5j z-66^?^>6?y1I^Oj0uVPyhxvyxcJc?gjBk!du)hmta)7Lr6G-MuYi4*|*VT zuwRGycBRL;Pj;31aHY7J|0mrP@_Wa;<2}?4_1|_P_BR?l+6{-nR(m{*CoYoT4GJbwR(8F9fUp`FY zfSpF`K~oQ%!{m!Arr8SU=EbUgH}8O_QquZb&6Ip}8eJ$%4+W0-nndUDz`$<2hZh(l zL%pEq0MZGlwu8YkKt&}py3pwT9bBhiW$3GRLITKNQe0eq8j@^`62OH5vmfH|E=fUsW5ibOMZMFV>r&ZML z37&7{JUY$a-U51SZLFdXei+iu3NKhFhMf?skp~7_q(O%sA|fLr1JGUv2M2JmODrb? zs>c4yI8h4_Ly)JG?$c?RzR zR2cwM7N@K@I5`~vNC1~>W1=FK->G`_4EP)M<7Dcq%^*oLh5>c42mqu^26`b!I0 zI_Uk^Zh;%xL2AVE%iiV}90E|G=^7bvLwEr2USoM|*B3fgCLPOqj`!F5T~7~fB^tfb z;M+iOcR{@zn&o-O!v^RK&}B%;hJaw;7aq6Lox{hQ&l96xE>ACuWR-`>+62VMHXyI~tF(lho*FzN|ElZ!rD7 zLB{!9L1AWIG8};Jwi_Rpds83RnDw`q&AqNdq~o`>yoTsAa$d}Us1i1Iy}W!OfD=+Y z@<4$JZT#;rKJGCHe6Rux_Px%s7?vyK?7+TcYvY5aO}g>!T?ipz1S0QHzapI8SW{&m zAqOlA0q>BdAR^I~8+;CYu&V_gNNxVRXe3+Y(i z@vg4Ae)5UB^X~jfEN3pkINNMdMa5#|PPTUA83e5-1cAZaVyxVU4*fLQa`FtebP1s# zyd&dtsQ&!S;EzbYY*MWMMvk;W?U{!Mh1d-n7{{94^!~i6pv}XrWYnVUX7fMcs6Ua0#=vj z&)P!h`e20%C)Cn+z$ZI66vK|MoAT=!IZUkJawgEyKX@=T*&0toOw6VPRFYgqwN<*u zEL>bQ|FOH-ZfP+x`4r&mn@IYA!xUmL&=9o|7UpkE2Oyhd_0P>!*I#LAX&$y{7-vTadGNT=1I^@UHL|ZSU1n1KndYiOhQ!-#<3pQtqLQS^ ziXAzXGV1uq?k}*zmwtT!5g%eOzQ`*1PRVCu=&~`P3yZp|XMYp^oL?j^H8<7RV?3(r zv*c_}tqyYc^Yw-2bUT26f+9KpJT>_d7%D6*SwS5Jd8Y>6bmO|$9z9M5Q5{MftZEt> zYnz*YUmVWvG#6Y*UQcEe@j~*PU!zJzR6V(-~jAZb#EiNibTm4Y;<}o|_pRO)%nPCta=or1(hc=g!lM@ys zN$MczTf30#S<~{t>^tWV?~Qxiz+Kdr5@-6!cP;DZPUpu@Ui$4}sF9IgE6{syj8}tw=jD#+M6oLIr`I9TJ!k-5~Is00>V!ul=VsI9#6DEwQBa!lvWG4+9IF z3E`1SfN%q3-&5g+v$2H*r^}vB7A~jJ&%-I8z5KIMGE$?ZMpZdxdwKCv-G*c6e6v1T zgD)C7LIjcZ?lP4k4=jOdOoz^X{gRbZQm=I#AE_L`pb1E1diw!6dL{I2p+d$84DY0| z#nNTgmgb?}L?g#DhYk`+N4cul+Di50*KkZoXk=t7ezzDE)qH!X9SOnQMqM0YGiGEF9`{kH3WZ4bK&;(HHPP>aq6GiXWIxj z+B7tzF5i3IKgTZS*V49}ui6}|Wc}hrZ%H)!gHcpcZ~LO%krhb)05AggUl5Qlp$sZ8 zzo;?nT8AP}Apy>~rZq=|qGJE}_-8zBm>U8W^ORJ^%R|X&3-s1${%{O8|H%17umfc}9vh zRdU(NjKe+OzH#qs0a!r30KS?~1Sm*w-IKA+djXl*8tUq8u@%0)^o~0uG7b;gDL7eK zlO}vlD=D8^Xky?INhHdgHv-oSjs0`{-w<}`q3Sy|nSkKEiV z6E^<(<;yP!)s^I|k0hP5x1)FIB0gDY{!SSgx=WSF?Q!M{!@%o)^!)9ufBxuo#Wi9I zGd0wNsHr>0$FsFX5MH)xYO^3c8p<{V4u;L~o}0rQoV`$wmASd79ZfoI%_tcdIOwnU zf+FohJSg6t+usQcd{*Pphjbh2H|#=tvtCEi?9aWw~Ed6o$(?(*&I zArh43P~4tUx+74~#BwI3hQ&11W6nlGdHojHlwOj21T`wC?BEFgH8J510AXX}7&6@I z8aE&n3|r^qSU(wG_rk;3oN=R_f3veJ!24;#p!HxFysSJ z)YzDAU2;M|?rw*}*39r&ct|JQVQ{uX&0~ALqESiXS=-|qc&3FtS3RW(sK4d(N})`j z!z)r6+Z(xKnw7x1na;wV(?OB;B*{QpnlYFD$>*Y?B8cJ|F1PlMilTQ@@92;o-mZ0X z={-M-;gMXDG@EOAcu@j?z1trIBy6zx2dYa$!>3_nI*hC@a2=a`uw#J$4MQW#h)ud%Kc^7iHEMkqUbcidJkK0X|DtZaVQaeFmuI`O{$$Vu%|6n^)Qj{Cx~ z%tw++UzwYWcZIwkqmh38-Oam6@7)#vxake*R(VA0TlW~{vZ^7Uh+V7 z2FSuFj+~`!|MO28)8OVPB)daFF}txbxwIl^lga3lX-XdNryBH?KKGTs{iYhcfp=cT5j ztG^5Kp#9|mdlZYz&EJB8?sx8JS%{MGmupSd3P8^R`j!iN$-!wtu>1#;yOnyPb6y<{ zz>}BItG3-S8?AUS-#&m{k6c9T*6a;p-Dn5N>A$l8{|23tk<$>~Qp+Vwxu}j}u6?%P zWX*Y@Vcks7#Phn$|CuqB!B`{ew*cW3Y5ltMZ3AG~hPfKNI5O0RT81OFW?1xE;O!kM z9=uvzEqF1r_;fYR7sVqL$?D09uNn`tWx&?qa{TFFgx38f&n0~*`gm4jNgW)5X#)$9 z(RYZ5ph7~!Ft=b9Ia=bdRtYC0%rRjG?Ra)_Wq3G7a&Wkv9bk5V)O8|$W-<1LwD12< zx`M%sud?`?H_*KpQ+2rx6H&$&SWQ2gh`T~}1`}L;m&^LxWyP)zGq(u|e<{jIJ(Phg*A($!ROf9;x)ScQjD^XZx3kcnq=dL$g0C2#&aYqPTho0ZOp))5~FY?ZKbk#4s->a^OyV9pkNdv5ggwWDkM+p_eZKi`CI z4wjd-Ji$e@cs+gD6)yYr@FqXd^1bBo5M-Rb)8*)^jXrXdaMdUxZ%sda8*Bx2Uu+M2Gey(MJq0kRv| zGQvR^f|1;(C8(-&`vK zuDe8u8MTzHy<&$=g#x)bElXcGO&wE@2!+F|3qg&uOKWg+r% z(J~M90lS7-v)W;m{<`Q802*|s07n-e?r{ad3reQb3~DgA_c!2LW@S|dIJ!QV`k=KTi_87`g=!S7Y-}WJfNzn{k1LW%oR+g| zdi^!_qwI?+cQ{P5@F-Oy0&lx)zP8qk8!T@1+8YHxBNHSk!~O&W*3cW%Ma@j_V~($p z14ON@O`^K>Jw&QJe_r6@^DNgvp%=Ux!7KgGrr54oTGmBzln@fuwuK-R6o5Pf3;58` z?C#uc+0C<>D$t|XIG@|gDi67y@&7y5Rj&1)<}*<8_rvEpgRM+tw6f1VFV@-i%U9-%>G*{Iba%SIQB`kwF_hLV9 zJ*(olBhT`}6JDe=&nwES$ICYUj_0WcO)51p!Li5W9tcN3#tH5(_syv-I>Z8WIS+wK zbZ9T=Cc*1*hFd0<*ar#4m3Fa*U9~QPse_AMNaH^ItVNcAk9^q*e7U5=*jShTl9k6k z&^NJE6%(qa(rIgJHVhyJkCU^r4?XSc<&|exo0IUoesjNvb)X64Ug+J&#`xh@P`26?&8q9Ap{>0I37oZ$ zr`~T);au5=DcK_9x36D8gPUmgc^dQRsajpFbwyVaTt}!sC?;x8ZxIvMnGL(9&82;Z zHU-YM-hxEq#m+U9rag?zbHEHjM+Z6Erb)BTY(VQmz1yBYIWF)fd{QBX0 zS02}`_+QO=vJi>B8atyJ#GH#u;@tes!jdtbt0v~;#3KkCrrcE-2FKfgy>)v3zAMJ~ zw}v-|X(?uPI92{}j3f5R!wZHwd_rK7a8prI7`YgUn&i8JsHo-QM90fENfzss~6ZFp7i|NeWdY{N*nfrhgHX0d}|jC;Mky~Tn6 zQUQ%XdvF#^W1uOtg~c+=6X)jV;bk2qOtJ@=wT@clQ}4{w#WXZ_yAx-J;zNd$4vZf>VHDR=|J!)cyg&?Wrg$tsvNLlumJp#l_l;D?UpT>Bdrm+s=O zK{0gK(o)OeEm7|M4KGuZtc_8}gI_+#b0&)mHR4xKQ>OV!%Qw zNlBdmEC?0-{XGoWx}wWsl2YLY%S%~p&2VrA>u_~UoMD;67Dh(YkG8#j+Q7`L8YpZK z-#tQG3dhX5^)V{2Vub9LSGiow5Hx~)!#b7rzQ0+21k!4Vloi#!#rLVIig-=xY#i)% z@9K&Ep|;D_E_TI|!N6I1tKSUZMDidA^Cg{Y7ag#UwuY6oMMg0VZuQXBsIhqjSVp)U@ftPA@!d_UD6$3**6@XEp3xTtGgu2CX_CX@7dS zBHl!$J){0#iozvs5=t3ffbSH=_OCfL$eLrL%EVQQ07-tM;9Xz7#USlbm~Df0x6EwF zQSmVSsz=mff%awP+>yEEqkz2+RaIh8oaJdmqbiHNyy(FKRt8wn3U{~UpmCcWQ2l_K z0%nqss0nPb4;_xQ3*G(wKLP_6G~)L+#t)xnj}0)COoNC`tIk26oA||-zMN7^t@Nxc zVP<=K)7~6d^U2I2WD0HOAF0OpOPj*uZf#wtz~F)I<$%rrxSTo?7N^N|6dP60y`|}W z?0N(<28oUWryc6mvvi@q^c8%3;*Ek}X6%UWwf=Lj6R}8(P%F2hI_-fX?Y9RyMVYat z$m3U$AEcmivge4B{00GWW(+Hzq~!ItZ%M9Voe}=a`A;AZA(d-C%y}Cl<_3^P)i)6W z9%o70*ubE>kVDcr(jF_z$$`zD7${cog?(MJ0&fxp{NCyc{o!Z!b|yuaA3mIhjFX2C z6ETfpkWcURODpM5@a(|#kl4cJ z%gN7gt?l;r)Bp6wDmRYfJfsgoK!xnW?Eul^NY2=1Kw&nyxIZI!&ZO7_{4| z%AbS$K!S{Hgy9z<+m)+cn`R^7H1#UQUlq7ESYl4k^)0*O^titl$|iqkY;P9>LE6b7 z!`PLc1(+5S(K+6Rt_~FY=^v645;j3Efi#rWhUkb-|E43fO|PCr(Pu<+ZOnwpjRz^* zl(wc^-9a*_!MRp0|paHNw}P+o$c)%fBr124Tn(pFElE8cB`}#(lagar#u#_doDb4 zF8-ywJOZS;`UZO&{B?i4|HKRJz{vtVD9rZn=N=a6?-&zr$pnK4qKXLQFV*3ZAyv-$ zTrr_Qudlj^&L0Mj77x!`RahOFg2b!({j?424h00p2eOHGG=~6wt^Vds%lezU8&>*v z>lLfHP}r)rsuC6!OdEgpi;Fw~ z`QAwnTB&(<+-D6jaT3{>AF6^&F%Q<4a8mco+XYcnG*7D^@VqVU(Xw{`X()6eMi(H% ziYMI^5)z>`-B&_}W7ydq5shY4`=jXHu)3P_ed1A3k%IjV&zE()-Q90ZysEqv$9a=% zZ2nlT<{!PgtT+d+!+ymJl(PlE%ByI1GnO2J6voB{*jQPG+%fZE7a_i?o!9VJgF{1e z6BC;mhq~p`qs%XahE|^GY5k}Y99 zTDsS-4}R4QPSwFM0&I8K=2t}7FhQk(WN#FeU?EmwFL@*`B~?@=WOclE*@8IYDG|{; zynn399?{c#nH--izBRcBg@JR3P9CO8xO z!vkTOWGs)6DYPyBsKd+&%Fb0uqz{VQ)r5Bo4dNjnsQz~rAjEKR!eiAi_hpB;y_U%1 z$ZRv`@Y|H1kUjNbE3#;wCooW(VURE!ll}YR_Qb7K=~cS0p1&1Us}~E4uam8-Z-Aq! z1cTN;h}s>lpR8RE{~qCXEp}e$i-RKyi{u8fnR+)*1g=!lO zf20;1cYnJUVArYv@_Aqs99fnI1`Vgi6Jy(lJK;ALqpo!BURN|X@V;oS-Do+ygK2JZ z!=l^+&|a^o!~#|gj$az}ru0C0@c9$>BqzYU~c=;$y( zCQ}#k%BoF0?pUv@e7rWwtFY|!Bc`CeroC|n2Gm-s`j3OT2?9UDnHDQCvu7^dAw7)T3QYztk1styy>w)p3*@N9QyF*3Situ*)& zVQKUoO&A~~;ppn}@ST9}1T_81#fEJfe<66F-AssW&BGDpxe%C!_@DQpXW`uLRGj~A z1d9P4Fu_s6Jg+gVn;!rb;laV}SRXz#!fEUg6}7Y2KT#Y&KlfI!HqkFkUZ8KR!h~a@ z=vPQ+u3u54kZMDPUy(l}XdlApyZn3u-qgrg4nHzcJv!YNxwy?od|cLyjI&4@RQT-` z&Q>l@GH1J*Cpt+KH2!&+3s2kpk5smZ`PxNot+lK93HCjFffw z`y8Sw3{kzISNTd=ur}44kNU-7q%Dj$(E!O2xo-*|(xH(+QY_g-jN2b!#6$SX%ggae z*_Tm;HAG|Ifi>Q>i`VG3-J*z0WTNKCRJug6 z(w>HfJEcB$1!K{M_$@nRG1o*xTUsK2Zus?Uj@ejiADt|@zpNX&<{NzmWz~Krk0JHI zYvb)GTSNLcC28B=Zmuf^cH;k?(^F%rsZK84+r9OWuXWMorqOMuLTd?%5n~y08bzCU zt6@=FPev`qL7{$AyaAh@6SZoG0~l|;B9Msm(~dk0_^lJ1z7ucf5y-wDmHYYg)c8yM2W@W@t4 z3aj}UteCu+TLQoT_n zkE6yBnUs4_bXiwtMmAR3)*-OONHJORceiJ|(Y4+u#r8aj+Jq)8B}P%}Gf~SJ;pXCx z-y$=&(7HrxA|nn*E_A3jeQBBa_Y*kvZaLDimxU}cn{>uB*M5VyxLwcoLQl*q)wU5_ zHr8c6S7VoNeAc}0k5{4up#ZwXs$`fWRSKF@&TCeX2^ zt4HdZX*ch2MCfs(p4BHwCvtgSP=H9a^dRfRlPxqGv+;NmBf02_A?|<6FSL?;)9nG3 zoxR=N&d~1OnLO7DO0y%Oq%O@;4=lGlb{c;}Aq}j7meJ8k6sll#hc8QFD!>u6sfwnl z5(dL@91IGIimN~cB7n+*;mn0>Ax)YuG}QFleSvTEHO|hJsls7@{^U%(lc`IAMJ^Em zfo_)gt5?)z;l4neeJIkLqg5B<7GtjDb{0cUL?puZ@e<5-u(D9zU%tris;Q}E2O;&j z)FmZFMCY>`Uw{`zPL7r_1A-W;WhH$eibF;QTrYFV$L+B+`q;&hC;NJ$ei?@b%#Kx=Xr0e z%SLo@iZ+b#W@Tdngxr0rKsGY!dW3fuGMJW8f;O{*9}0s}+X{XQq4Tq3g$5$M17t=1 ze?;f>5Ly-GkzA=qoch@Dl>FNT=+{a*X-~$j*pMf#`yZDR&R`hm{@FWS&~c_SM&nsP z(j$82rxl7NNpIzgr}?bz#nNZtFYTk3?azA%GURF_Q;qPb#04}wIh7mkoLko1MyLcE z_y4#`i~NzL+fr3t9f3+&DWe^iTOWVixYqc4-OcUV>EqE~!j*B)^dH5O=M~y+q6I$m zUh^Deq_Vd+s<5W2@(X&Lk3ars&@zcav}#4SYy$dZmeiCwTU$0$;Ze!x9}C;f9mV1@ z@3{>b*w~EO=y9xbfqtO862fL45jWZ@% zRg`W#f#0)BFva}bZp~on6IBSuYgacezEg?{^woK3aV`sZC!7`WSZvU_%?5~9g`6qy z=v#Pip#@l`8>r^v#zpn?X}=}J{v2+`*p+!n3-PF@%WBl8KiLoC45?tD;^}emyBnXU zjzEw4-Cfik2slgAY9r$~SBMK0ou$#NY&iY-lS$|SB zo!X1{h_Qo?*-58eh3}v}kqo!t}DAssD~Z)8n-kHm>qzm|~UfwJr#PmHF*@!lveo}flm z;z<5?bz~aOBJ(oiqB=!ers3W?-J_j>ooQp?-P?`d0w~k82VPvBh;*&+4P79qaH`rm zM8K2WEtyq`m{)hhST%7DR{JqYW(9m44nAJB>h6C#(wBbEY*M{Q*)3C(w8T7p!Z$VK zv7CMXD%wrk+In}o@x<%mRh@BEI<#%is?TN#=q|%4qerH; z1mXief?+R%sM%M)Dfu$XbbRC@qZ_Xyi@wQ_r_p}o98C2x7=L^Xbs9-bbb7cafGfw! z&rcUoaIhIwvn@Q5a{r1zNKcBON8nj=iBGorKxQRmG;akbNY2>w#ri||gG*-R+2_&|pf^N^BePM~MM>w@! z``p|rdn7e$+orEy8*;w!nxtM?& zbaL=M>m!m`bbdZlIQnGs*%k8T$LBsHwSJcZl1^Mru<{+zW|@bEz8pLpD4l^YCyl3z?M_u|}BP=kv*_*zE(lR7Pl4TqEmJ^qQ~TOq-j)p1(i- z<=lKe+4@drjP5~}k+MWA@5`LY)#1WuiFi%i!QA12V?o7O1Llw^{?nH)zmPrgG0s2| zQ+M-zrKkTzacsl*+}gt8cFED15K7 z{*j?Io&!Lx-y^#KU zLc;Y!$1fp(#qsb?52-{dr*|-6NCj~q5(ka0u8KN)r4@&*Zm%@{@y4Xvfi$K^!Njor ztUB8=k2N9R6(MPjw|hP*^$Sh#B+T6}T>W=__Sw9x4>7ZcP5J!_{i=+hAoOXpjWlUr zy5wujdDZK-42uru7|pA=3J9k%zidUGHQux*ceO9$Cwd@4nJ+grxeB5%lzLl(JZBgl zU;K+YQLhctTBEi5{GY6@sml;!7XM0ECEZLbH1#!NzMz1GkL9b2BNj&~L)aMMa}KW1 z+L}z~ND6Y{P>)0fyw!$=nURsVwPyg7D5Q$ioB*AbwMJC>LW=dBsHi`ViIIq=(5zo3 zBGL*RByMmBD=0d(^Z`MDo4A++g4!IL8j7KM0b_;pC}o3w(`!qQ_?|#OP;REf?G-M=_cr%GgwHQ-n7oN+{afY` z)9MpW5wt#*JiVGQwWQ%v9^ArF_*KBFoP`bfKtRCtaM`lcw{#?1cmE{iNmk$8#Rd5{ zKT8MvOic>L6+$LdsGOvgxW1&0RT;`V$ox8z20?KQ{^laH`((MOwR|AdT%w1E#ii_0 z*%X!Uc@PsCH&qeTqB-L&c}iYYV*Q=tBYo6;1u1y}5mBoBgB0vi8_lZ%Kar*LmQ5;r zEZk3=z1>7to+hTY#)^m@|F}7l^b-eR6zY2&cl!>(Wf~bGgo+_wcxr|G&)c;o=CJjj z3C(_ZJ*+>5ExCUVGwqbDMgxB zwJHh6=V_k1ZeZi}8U9S)|M|no58g5+U;b!h@EBLKOa|P5v!Rb>xWqxgfyRoHMM!IP z^0&eTU+kyl6?hc1vN{uM4t?Td<`rYUJo%jVC&Oc&zl>2M6XE@7j_~b{S9Oh$%|Hwr zBGG?fv=Yy#VTq#3v@@#NEqi_1jYoSrpJNxz7>_NId89hP@Hj&v|J}f{n}}poW0fYXAJ6l3-JFUDfP; z|0wjI_}nohAEKA|)oC`dphjKOI$p`c%N4@1ryvcIh(;5{eIQ$o|FaeulwBFsv=#MEq_N<>|y9qsfmZW zyVXjbzMCObedPa2Evqc1k1N;gvF&F8KGbfyKp5HWRsoZeHZJVC`1wJA%CO6=5M>y(lRfjPVIzWu zxT9jqwx~SKt9VPrqa>-i8dJ8Bas#jE@}*22OO2QvH{?vt+zMAyg_AFa43h)@_QW5^fb>y?FNOQ7@N50bXw)) zGCi`eb!#ugebQGuftEcnnK8bCs7S%u!!4W{(&aIH3GA%Eva-6u!o=5+wePcV{|V}e z{V%2;L>XsExNQ{$K{)ZxjejDFPw?D@e}0sCh5dZpOf{Yqw!$)fzJmaLI^HWi-@>)q5rF+e7OmK z3|xXBf`32%dq(rW{~LzJjS%8=QUX(c_?+-`FA~BZaqhx@eFuxhzn}lB4$1$sa}UCY z4wB13>J$2YYo-Zg8Ic>JePBqS1?NI0uPVqhEEgO@0|Tx1*OOyn)UVd20+y{O*$`Hr zH-2tR!xWiWt1=~Y>MnQ)F1j#Lzch%I!aDgUvh(vd3O+$@?ug@yzz;qLGcGR67RA8i z#F;AfpG{9Vd9|YaR zTr4D=E`mS+vRXi(+S|*@9$aaUmpRtOyxEhS4tm%cXL}&*Fdj4ih=~yn)B=&*Z1X~C z=^%#bLTOY-a3PrRgDuNBe->o+TP*C;|B*cgEMM5tia?tHMR4WMHPx&-kv5H&?TA!`SI zqs^@?NYXQ%tQ`mTcjgaG3siw|M-*&r{2`iSYVCAjZ5=H8Ir7P`G&LcyCOlrimhkp% z$oD-3W1B>7E8I+osx5XutpuZ14>^1xP&F=PU=9;-J5m%8(Vc4v1m*c^1f*ZvT7f%@ zjPKp^b4c@nFjF8Qbk^EKdgh~t4_`32!rug`9n%|@_%^sE!2UQm+9hLT%ms@6TUAbN zdT;76(1UU%IrR}rC`uZ}B-2MmM z%RQ2T>Ab}Z`9_GEQAzgd{d!vj_xg2X4!|me{J2$Cz>=Qg#TN_?9%nz&u$3V$3jneJ zQtcmo$UM01VSk=kO3lnH=2=|YUrTZ8Rz$qkI}3}ERLN@&b5m1ts(@Di4|t!fy(oQ( zMt{02S5&T_Uv_x-&642%md=>e8_!VPyM-7yX(a@@c^k@LQ3D`<(K z#B8TZA`Sd2D64_r(c2DDv9AJ(fhU~s?OSn7%%4ON8mDx;zyD4i{#yMDh z4mR;r3tinC%~a2tb4H(Aw1?$FUg#l)PFze37_* zBY-Pkc*{V|7ZTM9XkFm5gBJQ#BLo$_sj#6Mh`fH?k6Jda5=`(4kCAMVtope6v>!iW zgEkVraeGaE;ZLYi@hN!u?U%!wyC6)h)|U9M zFzufqcDH*W-vd0EE6dA3aG7JV@JrJ+J z0u*)~pa_IqUm?C)kR$>tPRK(BBBK8T76-rYyGdT#g&DwR(&1&QAeH8O`7oRht;F~Wab)siJ-ZnZ45?Ly7@zxuQq{mpKGOu5!bbnEZ2A8pc z;iBB(Fp?M^$*kO5(ZVLr>nfJxmA}sljdqL$MvIMMRt-tI)DC(hqM4a!_UAh(X7eXb z*T5_dk(anypfGzr5AwVJSu(_mC3IiZ=J3$dd{i~u&2Q$$QAcz6s!CW!#v6J0ha23m z_&hqQgvbYA)yu{5UNv(vGgFV{Eg9AZ^xNulJ-v{~NE|+?^Idr5xt`^p-@r^tPYV0` zZbM4T>P^pFyOe~6EC*e?*c0jut{@;@ zJbrk@9a4$2luVai0vxXy+{zFj+!f8`*puXWBmK}QAvBajp9COz$N%LSYqVOILZ{~D zYM6L|PE_X_h>%`>Y-$arnVXvfBhSvkR`7)jTg4AG8Vw#0z0Ii?`ZR!X0dW)oZDNMj zB95EbM_q=1hkd1FId;T>peb{V&ciJw0xYU`W`82r2w~EFWs3X5qaG0~6gv zCx`*Wy$#xiUlY!3M%`19Y=(6n=K+ot{d?t>lY!0tWb!Qair*&ICTa*8D;6HjcaW8V zX|{J+Uch_A2Bc`9Da@$v7^$4cpo39?0Q+r`dA)lMdJ*Xu?n({5&VgrmWSkL#ZrI0z zz#T9#p$AX}2#sKipR_vL64(d-nQ25}q^wq!7YZSp&ZJG(2zlk6)Yk$N$H@1g5jY5z zVFA9k7d?De7l9zaeR}oAQgTLy)!K-;YNK%iU-*(=|5pKnKSGK! z^6d?t7vgKS_f~ZY33Bw5tSLgIUi0h!ISaU;4$7*k`o;>0(le+qCAG!#{xcq)VNBi6kiTvL za&CCIV%5V=ADqa2b7SF=ky@WBf(V&IDLPwPbgreOJdxZrlQ>8I(YlZYRS)?!{ra_4 z3pu{gpw^R+lmzY5N0&_1%m#okf$j=WK3(y3!c>^trr4Mu5K+Y=B;aAwJ-U>VuT=^g z^nKvQbD8M9(n>VbqA4DO6)q6uKtAxbsI-?wO& z2>e^{^tc^v+t<0*EM4~(hD@JW+O>h6OekZxcz8OeKU2GI&pFxH`1**~Xx3E9cQ(0R zcU)K-d0XdxYVq^K1gPoZ7jxb3tSKn?P+J2q&xM(7PI`JElV0fYK%)MX!@EdL?0CAB zKx{-FvU8F$q6Rqy1ZMZvj;T~8TKoQ1$s02oLscs?3XJIS(#nNNuRx3-9u#U?K%m~- zq1|6f6VNrmM$3lmOmx%l!@J`$Wd$xNo#WE&j;uW+tUWsV)q+(0 zU?3TEJKZ~$3k5qo9$Brrr4)^xB1h`M&;DX;BCy6NC;}G~k#$XwsqMw;Y8q--8t^=1 zjmF&eDN&p4;hmkG`P`;tWB_(au*;|Yf_-X{o` z2h#uPjnmD%@W#+J&a3I)fF+I5?CXc0)qA`5v+bBMPBxf&3^gKKzo)T&9EEEG%E9$4+m{ zzj=eoQnKA+l$Q1%DXANi0vV_D=*pDUXE*U3_z{L-Z$Y)v)deQ!e+_bMF;>4q)DTG} zuq%I9X0NESFX{PFrY$ow(nX*e*pOLI-a9)ZieFfEfUlD=eHVP~t99AaBJ#HfXv-O7 z4ZGO8i!!lsi@jG%q)GtlGhfU9R-ft1Vw9AWjH^)EZf+E%aUwe@wicY@ zv~SPvLg;KdiIDpf{n%9&w|;;B71cM2iL&}xWE;b_5rU17Xxz6rJU;GsMnckg{`$Yo zb;6-i|Esso+`I#jBKigf$m!Y1RX9$LYE8x~-@+JZdw!+NQcJeSWVpeXI{l|nXG{}@ zO1-W&@N=W|k+81I>#e=LB*vcQR{5)+r&`N)Y^f-jXnyXc1xonxk*Nx+(yui=ySbJg8=Gyj`+;H2741Jq zM`>0k$@KoQ2Xcq@{ zVV!Fc^lh!vW7i%sFf=l1uZ)hBL2N*|B^|xHlZ3D{Z|to!h3bYX3~Ws%c>4Hd0cdu@ z1?PK+P765uB+DDYb4Qg;)9L2N7xOPXkPIu6_t&1`3z~dC;`8%I=4~%g*b}GCokGm{ znE6S?=%fX?i91pB3=DpQKYDLXaLncL#Cq&_5&kQ~yRpc0#B_AzY=;l&kJ=-~pdn2( zcplaGkFJjn*Otd+uLw{p%L9H+=S(+f1P+&pl&;>Bxki4a|3)X0;MbQgwc~%`$}wgb zv{R({YIQ_KjpgLB(%wn!ItTSF?O4jW-4UgBduD5_;DqhM(?pLXutIJ`jcA-rS;e1lf06(F$) z)0>-`ki-Gj;QWtpSUB2kC+Q5#R(kjD)^V=zZMIZ^bzWoGm~@f*%W8l9u|(tWv&M!; zOR|lzfc5Zy^?gBoj7zuqk_08~6zHr)Cyfbc0<vuashVsJ2dU>(W>S652md6Q4qxF_irq463Y60c*G+GLLk1bTSY9u5Rz_fGYG6 z6%_!5o|*JVNJp23;Bp(q1U?p%|9lSa1eDsaPhsKhfolQx1(Fi$E7BhD@I+?qujW!I zC4rYQ-I|FhKV3SynaQul74i;yZ#o-m_k5+RP!nWf>HhQQ+q8P!yO$lM;9SsK=`Cg~ zCKZ|q^e4R4-Ac<*BtP!Oh;!Xf@0y(*_fVD`TY?Xc;iN*wi?yF-eoQV(uQL%&!Z=q( zKN``od#tl`XelTN1NW5YFdJXa&fXMakYe_3R<#o5KY8Msv?rws@YMH1ES#JHBRA2^ zshOD;27^CGD)lp)dWxaDlagNP^Woq?XhHW=(-|pT2q?E+StFwZU!oOw;?yEn;?ang zp_E6q1!a|TlGJLV*ay~}X0(gVHBEktR^DrCbz^TJBecQo&X0dglcix%zGp8~OXuvW zL=GRHt`vG=%%SZa(r!fE4?lhKq_*D$?9~~7Ul*`cWoZCsD>33v<&8I&escsk?h(R<_H zHC%csLcbY*{uDweJ1RpGr8omOJyg%1;Zgo{E5g?RJ&Hm9D3KAq@78dyXMVIm*wV2=a!02Gp0}PeJ$65*q z1b`D@iq(;cNC&1gYy|(r36yCH5KNHuGx#X@03b@E&RrMAEq3(P;HtE!a|_YA06rW+ z9@`uk2cc%3*W8D9{5=?{sXogJuBxcn7)Gi zuig4s?W*Xl;-|N7PhTe{U#bS#w)Uin5LV$ z?+$}40pHJ!&u6!3Dd*D2ZqTT>vFW$*A9+-GoVTuzd%q8^4XRo@OS1b+SF!PJMs?4- zET(2cdwXunbciW69$rN%Id9}Fv_);hLP8{DyWV-zy`P^jR}6z>F2_GGbv!!Kp?~Ee zQJSouHYd3|Dg3BDkLVP5peY{bns!*Kg*wx4s8%|xEv>Cp0ZM&A&4_x8V|p(Q4lxK= z+5>KGbVPr0*B?-TM`TTn-^Ad_is7~S4KpinGN(0w2@FANu&jaZ)(NXA37etTVlq$m*%d&T%5Lpl0?P*;L6@onBdSnfYt6^(#~d z;NmgY(Sbe}>3Zl3CX*7A0pB}60R6F!Dnx)?x4VF;q;Gh1gPtQErV!m=-`R(|6?&Rz z^+H~LtHE;zj00I&%Xp*_TFSVZ+n`kPuKomIvP_!QDPYRT%d@<8*w-Oy%p!Vw~zssa9?*Hc^p~FU1 zDXX+268WVKTD*j01X8q>NJO{!hOM;|pHX)P#Ho~5RLI8iexz%q%c%cB5qakp85x6# zw;ugRnSHRH1GpS%pM455CkR57=}5Wp;eqKu*5MbN$8>ig%>m@De0nY4+hniYb~)ED zFbFHM!8^)xIY9+}!pZswY@QgKUYqMAGNg}QSYx>uQmXjf4TCXo$Y$>*BtxvO8YqRR zv;TjTy>(QU>$f(lA}I}`lz@nINQX2?haf2-(v76Fbf|!m5>nD4-O|!XOE*Zj#7ln@ z*Kh6poqfjHW1RKZdL8=4^E~%`&w0%&tjB+hj0m%_#W9>k@&3_o1|iT?{blf84x9`6 zRrZn0rG;$i8N!gdGaNeL|1-e_GI&mpkrfkp#T6A}ny^&|PaNqCcq>Fqu8QNZvjg?F zg|+Nj+S-r3w-SK_9vKNBkNDvfG`CkK*mbr+SftsRnN32zp>?Fd4f!OSaxU_`Z7WE? zWoxjQgo{00ke-3TZF`!!Q^0IFN*l(|*}=*=HN)4v>fXG;B_N<)3Q8?E6RuC8s1BB8 zkd`~``;w74AM{{q0&>iUiVup3Y7H(a!LWvUXkyU~oZpOs!1NoTKmurF_fD(;a%9 z6o(lwxVos3Oa|L$@K;$M=2{$NZUGMCs)Y0Yih-kVURG9@^G2^Jm#?3=c?vX+-z}T$ z_{Fihe*WZP>tj{Dr?|Wh>b#=!H-*{gQMnkL%2{F8ZJV8pj0lrHFw)Z(^UOZO|Mk4G z)=ByH%l3#z>m#hJM7b@=uHwxI-+MN4F*(7^`yl0j|GMv z5X0N_oTZ%hpxgoc>#3b``OcqZqfSU+92ohk)mfVyM(;X$2*EaHq84hAZ=?Uk0xWU~ z%j4tj0zh4nogG2cY3J)#1CYXWMfjg2@15Bqsc^DY%X-TZY(UWyI7}H@iWgcH(hDY` z;9*OAi&gP-4|1tBL)iemk)?W@oh=Q0HDug7?=4 zvm;YVoB$rdHcyZ4l{S@^tA9_xyhdr4yZ*Wj6((W_7oXqw(Rc7lxQh9|d&d&g+-Bqk-nC)^ z_Xllqmqyq<}rJTxnLp7N+PJgcTZQo}-v)_xt;cIK`(0_|1DyPf=AC6%ypN z&{dsEDXx4a_8t3_IIf*F{%6MN#n4~C`T-Z8Xi0&GZXx>mFh|(uR#DJo~#{qXF!tjuv^}zEvA_B<5z4%FCE$%(z(g+KOpwTY&2z zHZ~6`*1QgeqIC(JkdoEccaHk{lug|eE=&xnz{Lns01CR}2t{`4Ti-iDP)TS46gQMi zOnYa?aWw!(9-kq*VstJn#EoFxma{Rm>x`+XXAXEtE0q5s`3HPLtO@%yg6rZj`-Zy~^-9PCp*U0Q(Q<*WdN++K|^ z-*l$&rf)11F%~#md%^*Flj#3%u-cAkC&ZFCcs`GcY(A6zE4Sz2_4w(wgrgGi@#EeG z-yiB%cb@9#khw3uR@CJE!)OFs4L0V>T$#{xRWEyXTbZX`Le?fZ$%%bzhq~j3i90)` zBer|^__9A4rZzo09cZUN&NqoMFi9)1)=V~i{R)$JGp%Uvyvh{Hu95I*hVCAdt6ws! zbd?3F^k;SLpu&l?GTW?%r^JmuZ^K~f^Ye^F>WiUIi?qFQx$S#@vK+-VRaA;&g#Ms* z?4PWRl@t8^iaW;+v;G~x^<=LXLv)t)yB~7=`cdK;EAOH-joa4`xuLOPDT6=kbna|eX??W zs`q(2#aoX)_cWaBNLG)_s1bkbfycD0=jujU>axK^hb`i+DPOezt=KC!)@umrtNtrp z`RABvgK|E7B$JE_Qla4qB@2WN96>U)8)pr-Pi2-#}JXskOK*vQn~mayJqBhxfwY%{R74zyTol z4?jGnJwCn8w9#5#f!(V~`t_KV$FX%v8lXJM8Cuo=( zC2DPejz0Ee$tj$IL0-WyA*V!KOwfv-$i%3SI;$2O!v-QzJc7dHT|8s$mLAt8Bu727 z_*8%^O?9g!2LI z5Z8={dBIP>rL;SII`wU=_eMXD$8YWU+t1@x?A||-^ZY$8U?j1Vh+Ng*uT|$II%wj# zF~(}Y9yXtL->fye4u!|NI)jevGKv1CO3Q zcgnNc&5uLO#AMBZ)+Y8QvP`n7J}*ZiNy>jy^aIDK`w*-8lL@I+e&1?>Z*WRHL*LdS@rYDtsf)Kj zXRIyeJtBYn z*y@-hmsZu7x6g+ES5ehl?0-ZMBWa%sS&69RQKe6o`3#m0m3$LC2230efXck{5wqt^EKfV&jm zaoHs8OdJD##cs~S(|iSvX; z5>AYTGBBt-j6Oq{i^^K$sn8MduIdvoGspQRPeos= zl?n@kD^lI7Tk+_$)V#0wU;e6=$6?J})Wh%5&YzKR4?M(ak?F1Tc6t|f;~53X`{(h%%U$dx6I1$R_Xk40R zSC$hk-~ZrqZjKN9-*-n_#W_GE1VG&cP>}Q6*$_0hD=yyhW4zdPzWuQquDLG zus2s#G0Sb2-c8oCO42@^a9+#T?2OvSGIyM3lVpD8>YS6Rb<}?S{fA~g(z}0|`@gQA zv)6ilw3)P+U#16fV(0CN@zTWB7Krigf~(x(08 zS*z8Ci)|9k!pH~09*O@YMW~JH8@WYh+h$5mSD9)hR_9t$fT5AE;DzwNkJ&sWQ0Xc~ zkK953(js><7GFDFUWTH&r6qBpy0V(&i20Smd*6@i;btF0r|0+Jz@Vk$Wu+>*D0@rj z|LB@>D|q0U^nQjMEhc*U4rcHX?*S44HT9+HNIR?kRZa{fX@PZGW_NfI&;^*Ems`Nl zh`dfUD-4(}ksm(Hk%Qr;d4?~_^XC(gZup4Cr{yC}7w`gLG6X7g?@3=xkSec@*uDV+ z#1^ugoE)$ZE-5cJsrwCS-!T6DE!+bxnHw7q!3|xN`)OXx1%yFkVPUyS@xI>a15Z*} z1rWF@ zY4rNj-z3jyO}Eif+#ae996dN!bUiBtDA%fmk!mjtVrHPcTaif?CP?FrKq4R&gCLULCc|Lbe2lAO=ErzkrGYaE;pP7Ai| z=1PP)CZ`=nVlL{P_cZ)Ot1L`-62lI(q&5g~Fhl0^2xs z8vO;M#rCI!Tgt{4Qmn!BuAhg%jUQ$dzvp%vM@HOx633z_ZtvDohS68uGyxh5rpY{SNfqoRApB?Bt{dn=c8NpmYFc1QSkb>h!B&HeO(vQy$Qn z7TS8FlD_>bH@ck$&^Oun1=+rrl-=v^Cwv{Z+rBlXz8nIkQ_#t+IFs4d4 zEjRRSC@;^KoyA6=0y7?MX?1kmQXPCf5~^F|TWZgOLxfMHP9b=I_ahP(t={)Ep}pkd z1;XDey&HJ{VgZYLJqpiOL;RbBR~X=+O7)vc^EcuJl|mS^({C%e3@Y|bbT zR(Y_r{#@>LK!IlZXlw4!Z)h3`GeBfEw?z)p36$Q%=Ub&f+1+4%{B<%;Q!zE>VTLYe zMDosM>#y&lyt^OQ1rXm`GWv2eTC?X43iNx>F~f4|q&gZdM{95@<4=UKXQkY;aj`y> zMhE^9>m>O2G+rBDHYY)_*t83yh1$K~zIjT!+p{Mmr-*puBp zZ=e3^TA!RbPI7gqsqZ~bni0Kx2zHg3nH(&-7@5%`NP_I_odd5$D2)X`Dq`s;srHON49lh}@nAcY^!SNmgBBI5u@9U}NMm1=0|BkH4A5wr z-D+SE4yM|?o+t0Z!)>LUW=p}I;`M9g(J?B%WzfqXz=k|KG=*ejinM?jH4Ntn~Z$`hyZbt(KMyJv~xzwB)hbUtF}RStP>8H?b8S?CFu!&@eqi zl-C&oV)5}KlAvI$2pD@w_F)v($%|x(s!soF%Te7u_#YS1m0nNPD1)A%G7ALY)eflVP&Y1q5YSToXyGQ z)YSHt;0yk7NgNiIaRIqf?ApdccWaR9Co?eIeUh}Y;?acnN=AB!W5Qv}2WjO_j*=Yh z%99rvQk!+J*1isvE0p55m+$ddnKQ9uMmN|#bFd~KYzc5|dp0Q8P|1HnRPp6OZ-Won zjT?eNIC-H}3JJ)AVunweZ@$%X%IUpT?on0O+1k;;%vYGMK<#hRQyLmtt*53YSqJXG zp^)eNMTWq@4J=e61RCVPr)sL^oIa{NH2^sJbWs5js-T4qP4Rjf=3}v=1>pzwo8w$O zJT7!!^YZ*~zvLY3>V<^#a&neZ?!`T7UWC|&`1o<7)~DLqZhuTl!^0^!d%8M1mwTM5 zUoAY05?`3|C9(r0Eam8STE_oGDk(*7a zKqWCMplIbiANVFN&P?K_&O7Ux3>H2$chv ziAps!TIXqNY&=0*^5)t>Iq&o^OG9G5%apyHU6UlwNsE3h1Gv*Z5XK!Hb!+b^(?u{b zGXqt4y@8Q>@bI7x2zqL2pAxs={QB}mLbQS;j2sEu|3VGr)F$B8$WTz+WYy8?=0qr1 zw6-eDYN+BBl?7Hk{)ogUDG}SJ!1M2Cq#vwRN{4DitO_tXovv-M>f zPnc`>9an2?3wL)#7o*JArG-3E)So*qRu=9)%Y56sjee61IiXyP^AA75eyfuUDTd{N zX`{rPNx|Nr=^Rgq*(nQev)yN{-j{dqnWpEG7v?W=it!IArc>hmrJ4rcq50!-xVc@~ zDAvB-#Xn|$@Zd*hCw|?19v+_4(``Plv(Z4T_2r%Kmp3v9F$inhY9Bp&r&NZK=RB_Rzr6nj^0e8nlLwjHfwufZAxR9W@ zHc?^t?%hMFCn{~a5ZwxXm*`lvR>sCob4{+S1=joG{t>ykxsofbTX+QN)8xl7EH^U2 z+XNX+VRDiPcV=tZh7MNZSn+T0lrr;9)`bilNL;wIOa-jzNLr=*=WQO!%-5zQDgexjZknw4A6uYRZs55e=BB%`?AzG!Z>VnT~dzw}VN- zd1gL&t8<>vbL}>_S)-U3)n?86v+|p)(JaYIJS8lGujAYy4~1~V_ouZ+2`ba`ME2<& zJ)F;Y^hyY|zybA9RW-@27b4@1CB6Bv<0tY7_cxa%&oCp98;ma{%F5qL_Pq<@OpWX+ z{0U+a=WD4u7@hI77D5cD;M1_i7&w zmE-yAazyNc9=vm%22@%lOJWxTetw1xp&5lZi%fV4pN86gb~~I;j<&-HIHH91W+0BC z;9Dsbd}ox-1^*nwuY2v%%|4N@aKy3&5fcWcrY@^0J7>o|xIB|}5-+5%1oi0bm;6=P9t*<{bGGg0`ISBlLwH33-+bdIGJ33mFUK$H7Bc*SU z>KgxCcxwXFg~sf%*&kpB7+#0Ug+Un+ z4i3V?93Cpf8yPejrDW*U`nQ&X0`yvyxQ@I8kBu zi+movyx#PiSh`bbSKVYZk6nw3y|2EOOiiNe5l6q4vsksE@Z#^1UAyKM?-P53L3MCX zf=218=(_sgXY;1%lB}&|oJCHLpC1JZl_pzqa*9Lcblx5A+(GZWQ9ObqQ?c5$iNr2Y zKWT*-#Ld7MKo(0#@~1RwV!$>&@O^l!s>GM@If*o+K9fK}*GmL?!B@;!u$FL|$X~$K z!<4Jk|1;9utMJo9oUl^6py$Kl;r4Bp&l3ZEeGUk=6Vr7S9E*$ZnYk7xelLsA$FVuc zcz>vrnupajiT5Nu$a)T|{A`z+l+`c_JI7}}Cw)hpjk?Oscsm4T1NU_BeG$g?LkZGF zN2%pVo&1eD-LejPU+wsPDF#lH(xtq~aZ{P0UkvTxIi3?M|c13VRSQXB_zpbH3Fden=y((oBV@C=#Re#&dBB{DP_8)K`?9t`#xU z=zdc4{d>*{`3AQS?n`ugf8e(O(=#AQ3Syl;SkE49Ti&&qkK<^2s-RGIKCdh+bU`KY z0LIN}%6sJGrl=?=eM@2`^$>%uywk-idgI28Qq#VHidKX8@3a6W&~YCQLmrKo7z^MN zCPUdDpi*al%mm4``&?6_g2wr^J13W(l=twzF4xr9p8dcQRWvZ?i+uZbV#b?i5CaO} zy?vb)<-6qM94=emfo$8*VOt*@94zhSCFF^|@mX^nR}!;*ixlKG5~x5(xJyKYa@)+6 zKx~DFR9FvGH+C(dPM#tpFMc2 z;x`+FKz3t46`Pca5ZWK0XshnY>g=rk5;ebBb6UfH^ukq%tJH_;+*}{q+BUVwFpg!Q zKT<(}VcU%0D_5=erKX#-w~I!H)8_-?Pc2?Gl_y8b6uD>l>v(the4UVqmLvHs$s*f` z#3KEM&F2L~*asZq+)OQ++@;)cF&AVJ2>vzS#+O7!@{8gDcw$%Ehln&Dsr&NQRE@g2 zb@SbhE=Eo+EtuF=u<;h2-L&!0bc{G4(= zw_1|tP#rXXGj>Sxn`pU^tq^e$k=>0D7ng0}St9vo zBW6tWPiyWpPp=j%=$yB>haoO7Z&3L|JxYE5e#(L3EndnIkcWWSN6nSbsWKTthv@0e z121lTQOi>Yr*1WM^`?qHt*zk@*e)jK?SAtYs4G%-^_4|7wd3H|+^vMru45)=l2GHad-PE+^tgTAWk=y*Vo z03;O*5PeBr->x^E;AT})>fPJ3x1VVz4ZszVjeG?}3 zV4v5k_X4dSB@&Y0I8(b&wPCgB3mk0!zWV3Fw>S_~)m1`~w2e5sx+kB0zM+6CTo)S< z08X1-ZDHhcmy1KS?&k{f@?buq_iK4}cC^qyaBw--?X@zvkD_3vc*#NGC*;AK?Xo=$ zhhQm&!xC?1Mg|t~z%ZkASIo~yTGHZC;y3{VU!TAy6Xze{Sp^}>-L;0#kQp&OHf9WY zwD2f)#W2&L^5hp3golQ%jTFG>=#`vY7bGMZ9GTTJtSqyC-2rtTAYGQ;kh5QVSB8e^@K8!sl!BQmY=AH*>*#W^FiM1QpwLhZ z5NRR@VB-+=pnO$-@NzJb4>HW1O$5Eq4`M;^47!-$fPj|Y$taSDrrjKBA`ST~1Y4mD*vY=dU zULHAz3FaT0$z_CM1YfF>71(D01o=30U3+@mQ&?pPMe*4c2 zc=_@d1B3x9;er&2eo#e4C3xEjv4aOw0f?29|7`UoB_-~|2hkWfKf#SWDLNW!(}I19 z*KSq`tRNxIb9HUa+;aUpWF+S?y4cx4%U1ldCDfq#3Ali+HV5Gtxk^j7w|^iB41DtG z(iDM8)**n3k&8GYiM8a_x3OzKFoAj>L%y4!?p4?FS~Vz<(pn@VB!U0 z7Zl?<=pjCK)h9<3h48k;iDIb@MSYhMZ(&6sBa_?IEAm$4spsDlbbD8{i#cxz8ETMr z62qbkRqSKSVXINp8&vy9l%<|Kl+)wm@**i&xogT?WvL)G4}jRb1c;>tHsfRa#l_Pj zNV1~^i^=9LaM}yx;^g!|!+O87I|ezPNtKmtV`HrCd)?iM&@7^$++$#2LC3C>B@z>Z z1k>BX!rs}F0|R1?jQ@F-Qf;WgaeS^xa&8W23%elpf;TR0^>B3s#kk&!*}C6dv5j4z zhywf*fXIUpeH?oSeQ7zlg69=J2c3R?ejw<9r_F0w(MoT+3u-v1%ThfqFOYDL$b>wC zSIB~q0IdY_PrTyc!8I?h2?!9;G$pfvtTk?Ku(pPY)ZxLwD|>qzE2{^Zdq*>o@&}lT z8b(GE%6+L&ebI%#b=TC_m%A7m9tN|9cjR5U`hkAU8xU{b@Fb+b#{tbi!Ni2$^&tTP z0lb$uJWRPUF}*jrq-&k#e`p~ikENw)=;;YSH=mIwaPli}0HW&Hhl0$gSy)6>9Tq`; z2RXRWN$2<&AV}k}-dmlji3K@8kzp2u*rHnm6+kZDaGl2|9{WYRc8Rm|BZ4W6=``QJ z>$^@tzB?ZTxv|mF0O9iS_n4TP(sn`69NxWq*ct$JZKkDt1M1({*cg7kOB5Uf^!)r! z#M0^$CT^UlWn^W6C3!@{ZVEZ0!&rsaB5h$Po+$->^>^7A3Y^#LQJT!ItGCM)Op zO~a`B&9fAfI5|onBNys$rVZ;;jKZd&p=EeMsoz92HAN4aVBjL`u=DXDe+&Qv-=>Q} zR=Dmm7%jRgD)^aF?@7!p_!qiAaj0hA?H{QE2M17sPEJjk(G=!_Wjt&;BA!_9pDN$T zD=R7rd-pC)KVsEgLsRpnC?+44DZV1MkqT62s8Gy-*8ayg-Rnd|508%}(b2=Lt-3q3 z0R0#mB70;Nm+R-Z4v-&M^WMCP@bkSGKE|GZH$Oj+Lg|g@CgZVT3Mfuw!a+wbsYo_A z;`B-JN-PEfa)X4Un4{ZyYm&?ByAYGHxj8b; z;(c^Z@X6#biJPo;a$g%Vhh6xl)6F22c3$WscF4P3!tOB=_2Xbzp+B=3VIz_v9wXv-8@F(#-E6Nd{Qb$v0;_)AjR0Jv{+CQDQrlA> zY2ZZDlgLBK(uJ%I5w!EWI5@HB1g%h63Osx`+#sSa@x|JXBA8=VA9f!^ESXV|pI=Ev z#wV{ajRIMaCU#sl?ReVa2&ZA>8y&{3?@A%4Gj_z>t)|aECdnt z5w8I8|3CWf1pRsYqi{v-jHc790qh~w%4A<>&j z;@48`CySnlh=so4YgxBca88``D($YzuGIYUK-E(|FGBcXJTRxLmMJ2Rh^+@AjB$ocuzh(C0)S9Q&_4L>%I|5i7HeD&!fYBH({=yq7UH z#s{UlfZc2Z=yO8Cj7?2zs;ai9)|G_t9)h(-x^5EhE8nc;T&)raH5?9ggkqphz-c#9TMno&MnK=SM{a-t*k&hBmljGn-J^TwI{)=q`()>?+)X zG8XkFS?AB6u`w|W&`Zh6s;R2_*kirN0~>l0c8Ti)k^d{k3eQN1WaO*F1W3vW{)PtKS6UchPx6O842CSaqI8w%N$*uB?MxF2yYdY zp1~R`Gjs5&9(G(ML14bJEA-lXfQJzsMF_Sr6)#)((Fy=eh+%pK7A+6{&L^)PTxHY$ zMmHv%uk+oAs`ofnc@pU6!sB7CsMLFxE0kY|rZl^x#399hLjXFK>s;t-`Lk9q6OK@h zOGt3>LWN3TWaxWIaq)e9Xyx#R?v0emGeWkKQi922&lAo)MT`M(s1X=fiw7|nfJx87(!ZK7MhBh|P}IfBzEiU6Gr6`6eOSjcu0@4e#8Q)=Z98p)Kb`>gb9GX`vG|Eyrdhe z8Hr7NGs*X0k&rJxo9+&7pxK-IOo(F<502O`+@`+MQll+EwxF!_?4%DZo&FaXM90}gFRabr{kyR@h?Xt(9&6& zo5OI)B;Mv4ASv8Y5mG)36Gt7T}jen-s)?H8UUjMig7@$m)Wy8S=uhgt8mvcA5&yQv6$zu2vi@Sa8am1UOEMoKYn$Sjk8er!v{P7nSA`w^g25_;INDF2+XUgao5(a z&dufj!4u&plKpC1Z-SB%K${3v@DGDV3E*64_<>b;LPsp^?7T6$Iwxu_+}H8l)uBKK z-N`XgPI(4z@K>JTr!6HYSL!^kL#c*}gVKn@cWXWi=x_vRsVpY@W^0!-@ND|7%&qaq z9_~che>jd-_L?$KWef=tO#=g@g#PO$vb?PQO)B95c1I2{5jfqjp5!m&Aw#hle z7Zw%(wId`XgsO4H6o{O_>xjUzb%Qz_=%I7V%YHF@&0nF=hAIiLC+LYKvYH&W08)P^f2jERK3pWN{C=lNVSbh}UvyqxVN z!0Fv~Z=$=pPOPn>l>4?|QHF!q3RaSMf<`rj%*E}sI5+1btaf!J{k<>`XGJd2f$qY< z>J6+$+@Z2;gpVrb`Vn7n=U6gotPrltf0>l&Jf&?`iz`kk-u%U7=;3y6E8 z@d~s#=l%QlJS_dU!(hDBjN=jg;P02ccJTll&l+YP{zZCHlW$yo;cGMG(7!=3hI|t- zI9M|MJ;&p+jwm?~TEG<^KViWgRJ03Bz%$U%_7@ixe1w&Dr2c+vTu4Y&iSy?0(2!#s zw7Wv~i-g~SWdS%2Z#&&d!JC3`2t&0?mDhGtc5+g%w$?Q?1P>UFzh97rjBMla<4KVx zCb-0PE@O^h%9d4EC#s+jU59(&`0&9M)^Z4j0003hbPQOG^!nTCddN%!6P$DRfvBLRhyTW*9it81`Quy zK%IoXzA%)o{Uo?x*k=Q7B!GZ}((Pic9F)}OZ4?VyBXApjuT@{0er1-1d5_6yZxJ2r z?@lmaStFxtnQG?N)x{)&eCU<4v$>gBCDdf=k%zyKOlzr>pFTA(Gkd0`MbE;5A__TB z;Wag+z>o^UBzds9$T>0SKp+o(LJ%G)FDVIP$oNE3VpoTD+yHP)Xwt`*lN$sE6`ZE% zw~ik1B=_Ko^Kg2=L{;6yWEfo5;C=-JxOa7_3J0)rIHaZ9HfKc^?M5LGZA(k7H@O0@ zj?kaItal%Y>FVoOxI1xd`1JNjTvl#u=olL#&$}E?hBi1ti_<6UBhTq2S$duMPj~kn z;dP}o$Yuv*&2d&F1tNO$A>=45GIAXtDv3LXJ9FSF^iEui1>lP4n3%?k^|i1+httDP zJu8=>%cNsu?1G6xlN`|Bii_e{!?R+waTT8py=}u4k^^)JA>&R7nGPS9ZK3wg zPCm~QWlv9}fMOkWb#1_Xq8Ud}aPE~Fg$V3Me#tPVXXu1JilF}Q2E(U&Y)=gP&5-2I z&Q4r>Po*P$9FZLWP(Vyg;&X`iASQ5FKRH<6ktB{E3=1piVExL?T@DxySe-y??6NzL zOjqT`#l+8F4d^LiXYLkJB?dbB@8#v1s;4YEydwa_WJds=PDTdsDE4ib^S}*53otMk z0bfft)3AlrK~qQ>1Xl)$~ndB+>vD zuOzG&kYuYX-@PG~`t4h5sTXJqLI`LLUygt41CU6VimHx7L%II%-E%wo*81z$?E$Q~ z;ei1XPP0B(*^g#Lvb*9RyQXC>1sgO!BPY`V__w{cmzJ`Dg3!^oPSN?W>pwUQAqn6x zi+8S|*0|bpdFpg@wx2ycDA!TtC8XNKrsr0xZe|AIXk;j>LpcV6HT2P(?ZYhP$L;*kzY}&g0bmJdAl?vb z=Og7!_?BRg1a>A44(WO*um!(;|K8dnZCd1W970}P{MP+&Vh(w52?N3oR+pHox%ukP zgnmfujzEK$*WRRcN6^F41wCl`hw3Il^$*nzw}x%Q876$0OR+ZC{QTp;e*MC&WD{)t z7YvCozg1XKahjR;7M{xfejc#!go2}^RLtI<{Q+{RlbA0cuUG-(`F(9|E|a{vfP!6d zIu`(9z)jjwK%Mpy{{lxL>D@C?#pX|}|5Ds^Z~q|PVfA>{R3A}_Kh*e{_qp~3ch78| z1`T|d#VlOX=Qu#7EB;9S?9%#QohDmSp3d3u{qI|3(dL)g6xKEiEljp}qwEiOh`Sto~FV z?1xs?n~8}_k95hXhThvjd?%t$#2uZUgRilrMNRiSEb&{uwL8--R#qI3?g55+ca6ad z!*a&vd;e5G!6AU!kB*J$RujsXwqgOEs;#Nn;3z9=A=$DHy{oM)1%l7}!Z#&_(z;s_ zO1g29{euIj@l3nf1nn1BfC)b#9JL5`bI`h^*K%@m2j)ird(5xH@}mgARYXDPFm!=K zi9G31MB!sMs4s`;7k?6B)+n$E#2f|y{@~>$uu@~|p;n+LX4v}9=90s4MH!C4d-t{! zZK~62j6WUbu6#+ZNma{xOiHp=TU(3fuM9Z`xrwnF(0$?z!Y~@fhelO_t-;`k_-lAr zG==z{R}vHKX=m#N2msd%PA<-aoSd*^WkV&7{_PNO9k{uN;RI{%>biv!9uXNyJ<+^9 zGr~6c;}M|4%}B;F|C6N=S<5FK!3uT8EetQ$_?$Oyu0=%*?lU{YJq$v*gO4Bjz83j| ztaSVDUwI=yMBQ8ar5qT992^>22euD~#b3X^O9?Zgn)W(+AviPS>6aqZ{~{u5nIW)g zWhD+K(2#t9+#`M}3G-tB+g9aX#Ks9R9ZFT(;?CG#-DybIg{Cp(2D70Unv;ISTym`d0~ z{$UDTRjt8%(D|X!zck#w8c23_eq@4T-OR$m-qF!$Ts8|;KZ(jyv&4kU{|2NLV`GQy zyVwDs1tTPOgL-G?$?55^I^VFcL)e_nijX&8 z$(BNy)9gm6=d%$g_G;VX2rCnxAej#iig5WEmDaroU=UAz1>|w&lAUI&mJ%-Qu4PUM?`fdOQt=EA(}HSxWBR3LuulktJrXbV-<61WuY>?EYZ zaOlI4*sl?H)m&r3C6-uEVg+Coh?TuBOhAa43CTy zq@~TT{VD|en+PRopH4Vh0|NDE@}L8}0CPxqIiM~nToGwuVF43n=k4jKr`6Xnv1mhr zgS!)!G5epu&^&U`LsJ5_OM|ztSHOfr55`j(N2mid(sZy_2XFJ+4U@tos>C`WHY>{% zG<3D4Ir{xOT`mH1 zxqG*rJi+%D=9Q&QKrR4D6e>>4(!#pAp`l!AVcyoS=G;Z79)%9FoKYTdPx8(vz<@T`CZU&vNcl&rdi38>dN5j2) zx3I9@w8G^(R2&>7 zX=!569*Cwk`vsI-&jZitKuq5i5_WcWe}A_}uT zfI;ay3gNo+D&3t1Jh7FE#(xy=y5pWT97qBP`)1#H?2zfX6g~2GrYT~ z;-Wce!^jE7aCH|T5-@)L{4Esv!I%C4rwwv@w2bQkpQkkq=B7V<;Q6zM0aw)(DtDNT zQwS?UWe^k#wIb%al^Ft;gk)}^WPLav#!lf>6jWUt91e$@0(bAe&aSL{z>8qef_Dc8 zAhl7LRnF_e~`}Yd!>aBxW;jnuE zQwf}Q>#Mzl>oPPdz9G`)%o#=M$-rhL) z2{Y?X^#i1EPry0GAPLtR3>nQV!oZ|(4hHeXCHi6pZf+1LC79YBkO1rOgP-rG-#bcH*6sP0 zTQ|$NKHeiEyK&j1!gednw zc6*nshK?wxEH(L^*1mlD6p)_}HaMnLm6iOtD5e|xs~j+n-ORpW!~#t%Xwj(op9nC+ z%3PhP7tUutTLRPWGjL~y=fdO!1*)!)&`_AN-|~8d=3gfXAbf^gs>Aa5;2p6JV6vYc z5Iod}LD5rHhaZIox!Bm>XqE2yhu^q<{URlWVE?U1B6zuw5H8{*heBtQp&S$Wn~KWd z@Q~yEyN3-|F~REU*jLS}tSt8azRr!o=Ab+kI!0jcwX{fv*ratG%$k`aQ#dfMn5HMG z{lz?kY0R9&tNZ&W!D1b_YQR$Sb)$J~^E1Az4{aMNYv9_?h4O2e!VwFz0(<*n(Bc6b z4s$LadGedo$T9N8gX1e4_>NU zR$6LgXqdqJ>b?;_j0XcuguC4?F9gYSH8l~imKYdkNbbtZ%gIq|4`Pug_1kUWJ`o8n zH0n^vq$O4aMn++Fw%HJ!#fuLS5h)oNs>=VTweOC`x{v!WBeF+U5k)lIR#Zl~j3~Ri z>_{rBWT))iB8AGz2wmA(MIocI5)neSLiV_l`MliS_x(KQH_r1r&-tCx>5ooFSJ(Bu zKA-pdHFb|z2G>G)jgd^>#H9Y*dqdva3B4q{_R9Va2o|cQ)81gKlxv$JdtJ=HkdHN> z@533$FK{$Sre|Af68CbvYTJIbU1J& zi=WtEv!_EcWd~0wK~YC%9ojkyrQYPSGKEF znu>}qpFU}pr~fTsXm}W!6%rRmXJlqq-wn$2_fDi<_Eap~<3ieK?Cf})E^A(63MMUO~9yK8R zf_i|0k`llAhrx|oH5T}D`dgR2ebdupzrLpU=nxd_Z9BEfJMrBuC@i!fBcpvuR_^-a z0bnGkb%CL_bjDm4_k=3JVdi!6fNO7A<=+B|P|v-*3TC`9F%A{nMH(hMJemD#_#`Au zb#(3~nvobG@krgBf`thuX|Kod+RPV|-T=F<8p^FPVXo z5+U33TSN5usk>WQ1wm%u1NqR=HgU`eYA)ZRgX*vWy>0wQ26cU31kMP2c(RaaLd!?tR^yI6b2q09jHpt8y! zT8^IA*9N~8`HpZOJlF!=mGW8f>+>URZ$(8+j)f8pUlWvr_oDCqp(3$`Prj$b^;JPZ zWI$D~%$k@>?})&n!fd}X`NW>{4~HmLeE!i_&~N`xU$3kn2I+#-w0RVs6x}y|N$;it zx&ESMyxCv&XloORy0Tu1&dg*CxPI6UY(Q$;IXTgG6Fi>%u@4#i=Lf?Ry(zyxmT{$- zNMcij5IznxJML;J!US{pmWR91vQq1GV=InJ23BkggobUZI$ry&eeN#S%?GI9-^t3c3U5~L))Z2Ut-$et0r@z0w zwhobJYioX6wk)x*3}Bti%&^lvc~YR{ZZ?ZUpBHO6@5R3`sHJ_@<`uPDXVarHGU}U> z>Y5l_T+eK3U->!3h&%U*IZfFuMOh8z>Y`Vr;Xpt{4^@9 zu@JSh?NQG6(-#pE%1Gp6WDO1FwJ3C1pxh8)E?{3+x?(^0{zr@bz}XVZ%)6;`o#nLC z*%gwjs$auIrf=Pt_gF5PsMrIT3(O0Tj7zwupvVvz(~RO4N#LSTdQwZ_`m5P?X{_}b z0!G1@qnW5CS1C`K38Rjjon0(5fAIRR?|!7-OS`1~>FIY0tJ-f9IcIg@!qb!#TwdX9 zjS1^TlRE_LeniiGlg0#WR_6Hye13{XW^W?2p)+$=4=ED%%C8+icaBBV(6C{*M$u)H z9OB-eUK_HKyVM*HrRC*c^_L4!_>YZUE?cz*1cB(If?~3+rr@jcV<<*~W@lTS)YR0(#r65o@;2A@`n02?c(n+DKxo>3 zv2+cNQpZ7;b%prj8PQ-33}%xE5Xosz28V?)NdNdX_nky)?LUM*R?G86S0a8+i9U{x z*Yf!F`H7(M$0!V&<6EmH*o58gEIePKKGHR`DnE2|d$`#iLBX({SuJJXnv#?uqB!Ap z1vr~XK_-r6HS^8Mp)oPGH@4vM*7`9>UJ(Kb-ZpPn9lqFq^(NV*jrY!s4Fo8}m`PEW zy1p%pG(X8OP`=sLVZBV^*>=n0`>QMAe6Rb4hJ0PV0lM*8Cf@bEu(|~V6c~mCMIsDA zYC(Z9KYGBn_jPnOKj-;f>8Oc&74(5|;**SK`~ z8KV=#HvpzI_FFYd9+ZmLKY3Dc&z|EhhtCX?$+z4UnAhl+R>Q~Al=CD&ThI~BV*A13$ozc>%DSdsVd>_afE?l^f%d!`u1`@1m&@tU;vyjl#yqIY^ zdR*6JUt>kZuEST3Rk`5M(rwz6%nA$}QIog11KDQpL1d1U$lMNGa+SVoTEF%m>B0jw zIl0rp8iRfG;g8So$ZOg`bf!${w4HQ|WT?OB=%BXy-Q5p*%h#uu7EG2&lw6!6 z%@->|&R^9$d?TCHp>Gp+IqzfVjk#u31{XM=FB1zYQC>KlYF+U4Ej|BhX~B*|#8lE< z%yq>3>eZj(mdAio%*`xxzq*=$v(Uf*4k7%Bv5E>E`A(+j^YcSgtE-nd zILecCi67Z{q-;}Oym(l;D!dmG&s$HwpGam+T%|KOD@zQgoCSaMrJ-Or9v4{{ly+HG`>N%Vj38x^S9*jPiW&P!Z z+Lb1h?!a7^lar&y*ZTI(&aC0_aa~hWGT!v;Z0D@34>u-rsBR1GU)9ch-{+g=e#Vk~ zMe>lB|HE$XI8Rf#qt_O587mpbc3V1}xB8Aw1E!60Z)r17!RTnwlGcP%FZtGCU)hi? ztEfGZV`P2-`7;-0KV_zN22$~87!0zv_wo7*fw+Whp%lg0)H2ZV&wTudf<6H&AkC*!(bgn^g!Hk0Ssi(rc-=%VMH zT?53A^f?!&jJcjZqvfpOtYP<*ylCgqjxQY^Gqm$lUl|4e(xvQbT~H*7X!9b!7BhM}nM`*NF(?y|eHOF>3}NueljN4l3Z2M6?@>@%S?-&qRU-Nv%~e;*+o7+j>)l>?g5FrShu-Y zFN{GpGxB0&jInuf`nmY(Y5Qv*y6%2Rh*5aqDahBqNQap`IZYy8puB&Oiv6~7!T6Bm zI#%_9`#3sQe|;xdS#hYnFZT2E8{%x21UiE#K&2)I-eaAePr&l3uCQ9a`t4du62SmT zFpfFyUGecF9xTRRWHXGT*6+RdDJYnON`;-o$fy`$HzC1hJEff{T4K=OH(N>csX+Y(Im;_F5d~{_V_)uJYjCMMFnU9%pl1N z4{8Df)p#zK;&5GE?i?D5#GANBgFS+)E_BCXph5I@zES2c9hlEiFM3{ejMnjaWr^4d z6_ug93mO*pFkEy{{9>AF`+h2_G7lp;#6Fhi?CE*ZFF_eVis&w1-&EZ-Gvf#Vr1{g* zeP_%<@IZd8s33s*!D5d_6xFwOw6t>|_1|=FtkSnOXNpNnU#kjUz_RJTD2NxTr^ied zgVCS)uMuYB!t_ymSf-j<^t`M%l}k`t;fA%sL*Yv{JU)@51K7l|s>dC=JoXrtd&V6h z<9sqQX)uxDwMt0bQsoT|pbEe{%E#YP^x;QN`Pyz;sOt?O;nh{sE()L_-$M5qpFUu< zkp%VKP3tkMkTQPHtF57IU%7u?R0riOM?;1Y$kFlHk`s#zM1WM=a=OrJ7 z5PJt6OI-Ygpr#lf2bb8{H#e9;pqA&Pr7iVUtSYQ=`oJk=VbKrGJz%wpJUB}=G&~sU zD;pVi92x-lwe6OyFc_fcZWG%d@g;0Q>cNR5;W%;2EyWSxcN=04KjeOM9C!A|D`;I? z5<6<$l!z9&yny5Aqznm>#Y%nc=OoX+M#a^`E(?TXvV#X_ioN>3eK5f@1Z@CUU3~m^ zTIzXC^&60y;}7Dc>irgDa9x0wM>vpq>2)><${TV{PG<1;H6~0!k_cT&S8HqJF!K_;-nQK0N)V+CQn5R>=`-g=d=DnEcjHnHrwkW``pDL<7YSQuO1HCfd)^%X zu-WlVfz3N0qM5u33>sO6&-cs7e5;FULM`c0;l)LFFp)~iqE`!QVBLi!;Gm3*G0GXC z&*-?GAYaKU$O&~UprcY0f~KYhc^+GOb@j7m0{51^+kWDB15<~Dt-x!zM zuJJIep}L7++ihu>Tkw>cGaVNjSNOtT1y2v+px~nek+9ia`ob+e(D07p3(^vxBDx?e zs5*($k6+CeAhsgIK%W@W!x`M}{^$Rb9EWK|eeKuS1R1xq>;VUbSk?6Vvt+M5r^#8T zS!gUCIOyymzRTr<%al_Fpg0W;%?2DN%q{DdQdFd^uMfbCghCLQ-3Fl={G+4X$45%) z^G#NI^b?F2SR-i%FbuRjHFY>&R_8vFLnp?@J}Jb{FLdAlIVZ^ikd~Cx)cZSJTDnt) zzsQRyEvSmeD*}9!Zq7WNQ3hj{(9;6cY);Bh4 zuSlFZ+Q(;nFl^w(@M%}6KN7kW^W(DA?wWa$v3RNAGj96%o6=lr|BJ3(qf89)o*9Tj zH%^&X5Uv>kfhFbsr#kNGKh-yFV$?mZLO7M+A5aC3Z=ZmGq+@bfa-vhqqN|aFbBcy z;WKooV`Fm*>&e`1&d?7ys=f7G-7`d+U&!+5V;#QYGY%ojw&T z5f2i$LRZ~K@W6os&`ry`PxpldC#*Bz8HB|d78(#(boq(Tw{dX1*F8dHlco<@hy2m3 z^!mZ0+}H^7uTCXElO-tlC-yK5@NGP@MNn$u=Wr6{4GXNXT$klc?YuIzaPC|(h3!)h z7aw0f@_{>~fSbEF)|DjlexPU&LDtuM99J+lQcJu;fYwJ{>Rtr}1usgPph~g6n6ff&mFmLA96y4i-=(0dX*H#4JrZnvl??QnFobaV5IFC86sLZ4Q@S3vxLAW_`K z)y3tKw|B)2<}s9@o=Iu<5ps?4dRxZ%&r;}m9t|>DT3X$|vR^nyWaaqDMDkmCmX)QatIH|t)^Iq>&+m4L-^tI8`nbJ!Yh&odjqvU%G^g1|COvSXCdGmTvzxsSV5GJc+b1 zPDDZtt`jXm-*!wNlhOZ{d07aw8EGH?m(a^G9PA_yZ@6Ij`T4w*$e0-ZY!qK&dO(`Hic6@PD#_Yn^$!|r9>gvS8K4+JC zdYYh5wYPPk=^zlOCMK*ZOq%rKp^mAvS3hy0a-OKi-=8Jt{EhCmD@+l{0st@azg$(H6l5QrHZ>g^E+m+nUmZNAgOas8IRSx&9`CgH_^9mc#>JV- zI;1;cVNsFXBha~?D7s`cH*REWVX14gV!~pWs`XKsM*#)ardzDpNmtE#IPyNeHob5}%PQsB^M@W@C_RXyN0YW4BHjIjy8 zO^V$(&-u+sqb=`&)8dPwHqpalXu49@*m&P_w7*}%qH+;;`1|VW?VKaXP~xwrq#zOm zeg$ed74R@HG(LE6ap`pF_0z~CJI*js`>qXLN5R6P8!?U%f^f`q?yN9ENqTy^ruNUV z&l)FBBI_a?d`TTAcT>kZ2Fh}--x8j41RWj5Y;N3cHfx?%{@1fa|Cg-5NB5e~Z%|+6 z8XE84y}RDPId*0z7{~{r=Et&kiHkeJPKv&5v7;9Lgk=T}tPCApU6d5#0XBHFA$r4Q zW^T^wZltH@*r&+nX=k2)vGBiD!lrpGP+`(mvD3MN3yt(%{UW`+J#Co>y~+=Fc6h|+ z_dw+wUMZGEckfn0FGH|;P$5_ebdHsINsr%69d5YI@lm-!#hk&BZbhS9!-3l25l>d{ zzhYwwC8FIC#{nEW8JD}-nvYR`>pKf0^g-0uqk6Zq!_c#(6SY_Jp4N$_fsxU1eFFpO zzYV@^5v%~@r^PigRwmDAE#Li;ok>eCQHPMYPzMtuBNu(M1K ziro&&ZsTYpztP4leqg`Z3x=7dw&Mg{U96%(bVsms*x307zsSky#T14?`g3!$;DIL0 zUhke;s@aHcEWUkwPg7H=BH9J~?%zLYZ!e+=EDYz**vK6}IZAzGhewjkZ629bS{Qfe zwKe^c@>KImyGLV(*xA}&y4_XA?AiD7zi4lxi?;mPGCJK{;xZZokslS+4hRzv!rLw zYMYz&G&Lg^2BtrAeF~AX)AzWZ4OOY5gG0*KQl$d#AAcGcU>r_5I-L5wqmkSuon39n{seJ~5L4{r=C%uTS2x=gxsioQVAyE~V(U@m>vWx5g=ogpSAZ zTHNC2j=Tam64!?-FcPoS{i2Yg9 z$BEZKLa^eYTI;RkSH21c50B;hj5of(pAJ`aT>LZgXB&dl#<*)RFrAkY6}{r+b=3GL zeQ+@@a8|^E?b$9W6WiH$A;} zz)q+eP(9H7s=Yin*J1jsjeOaLKn%#ss_Ay?2AH<~f68-H*hEBHn<$(Dae4tHV9qkC z!Z0$Lzh$YICu{SiuO)@A<7!!1S64idD~s67%oNFO_hb6{ZV%;pB3F&6F8uEGUHohY z1{|Fy=bdGBG&Fw93_|Nc$?ghyl|c>(IWZBDk)4J0>i{AU5Tt8{AQoNY627F7V2XE24h5S=)R_i>(#{q0(H5PzVEPZfeFWQ++{?bTM`fVnW? zw{&)X(A)XV%toic6FeAS%Y8O*hWQC^0b^)?o{jRS`Ie;C^JKhyE9qX>R|egEUk$0!oovawr}Z+c&J^exW^!t6#p O)^SyBm29Q6{{I1u-wy@= From ab68841dde0251848d7284b4a0bdbf80f4906f2d Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 23:50:23 +0000 Subject: [PATCH 25/48] Fit the queues table at 1440px without clipping its controls The table had grown wider than its card at common desktop widths, so the Pause and Drain controls were cut off, and the controls header's sr-only label escaped the scroll container and widened the page. The wrapper is now the label's containing block, the controls are icon buttons pinned to the right edge, and Capacity appears only where there is room. DLQ-off and config-mismatch flags move beside the queue name so they survive that. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- awa-ui/frontend/e2e/queues.spec.ts | 11 ++- .../src/components/QueueFlowTable.tsx | 72 +++++++++++++------ awa-ui/frontend/src/routes/queues.tsx | 56 +++++++++------ 3 files changed, 97 insertions(+), 42 deletions(-) diff --git a/awa-ui/frontend/e2e/queues.spec.ts b/awa-ui/frontend/e2e/queues.spec.ts index 3020e275c..38aedf464 100644 --- a/awa-ui/frontend/e2e/queues.spec.ts +++ b/awa-ui/frontend/e2e/queues.spec.ts @@ -36,7 +36,6 @@ test.describe("Queues page", () => { "Trend", "Oldest wait", "Running", - "Capacity", "Done/min", "Retrying / failed", "Controls", @@ -46,6 +45,16 @@ test.describe("Queues page", () => { ).toBeVisible(); } + // Capacity joins the table only where there is room for it. + const capacity = queueTable.getByRole("columnheader", { + name: "Capacity", + exact: true, + }); + await expect(capacity).toBeHidden(); + await page.setViewportSize({ width: 1920, height: 1080 }); + await expect(capacity).toBeVisible(); + await page.setViewportSize({ width: 1280, height: 720 }); + // Descriptor-backed queue shows display name and raw key await expect(queueTable.getByText("E2E Queue")).toBeVisible(); await expect(queueTable.getByText("e2e_test")).toBeVisible(); diff --git a/awa-ui/frontend/src/components/QueueFlowTable.tsx b/awa-ui/frontend/src/components/QueueFlowTable.tsx index 602e5172d..024070617 100644 --- a/awa-ui/frontend/src/components/QueueFlowTable.tsx +++ b/awa-ui/frontend/src/components/QueueFlowTable.tsx @@ -83,21 +83,41 @@ function Capacity({ summary }: { summary: QueueRuntimeSummary | undefined }) { className={summary?.config_mismatch ? "text-warning-subtle-fg" : ""} > {capacityLabel(summary)} - {summary?.config_mismatch && " · mismatch"} - {summary?.config?.dlq_enabled === false && ( - <> - {" · "} - DLQ off - - )} ); } -/** Descriptor problems are rare and worth seeing without opening the queue. */ -function DescriptorFlags({ queue }: { queue: QueueStats }) { +/** + * Rare conditions worth seeing without opening the queue. They sit by the + * name rather than in a column so they survive when narrow tables drop one. + */ +function QueueFlags({ + queue, + summary, +}: { + queue: QueueStats; + summary: QueueRuntimeSummary | undefined; +}) { return ( <> + {summary?.config_mismatch && ( + + Config mismatch + + )} + {summary?.config?.dlq_enabled === false && ( + + DLQ off + + )} {queue.descriptor_stale && ( -
+
- + @@ -228,7 +248,11 @@ export function QueueFlowTable({ - {runtime && } + {runtime && ( + + )} @@ -239,7 +263,7 @@ export function QueueFlowTable({ Retrying / failed {controls && ( - )} @@ -252,11 +276,11 @@ export function QueueFlowTable({ return ( {runtime && ( - )} @@ -343,7 +370,9 @@ export function QueueFlowTable({ /> {controls && ( - + )} ); @@ -370,7 +399,10 @@ export function QueueFlowTable({

{assessment?.reason}

{(queue.descriptor_stale || queue.descriptor_mismatch) && (
- +
)} diff --git a/awa-ui/frontend/src/routes/queues.tsx b/awa-ui/frontend/src/routes/queues.tsx index 7a8b91e41..66d5146d8 100644 --- a/awa-ui/frontend/src/routes/queues.tsx +++ b/awa-ui/frontend/src/routes/queues.tsx @@ -19,6 +19,7 @@ import { import { useReadOnly } from "@/hooks/use-read-only"; import { usePollInterval } from "@/hooks/use-poll-interval"; import { toast } from "@/components/ui/toast"; +import { NoSymbolIcon, PauseIcon, PlayIcon } from "@heroicons/react/20/solid"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { Checkbox } from "@/components/ui/checkbox"; @@ -28,6 +29,7 @@ import { NativeSelectContent, } from "@/components/ui/native-select"; import { SearchField, SearchInput } from "@/components/ui/search-field"; +import { Tooltip, TooltipContent } from "@/components/ui/tooltip"; import { ConfirmDialog } from "@/components/ConfirmDialog"; import { QueueFlowTable } from "@/components/QueueFlowTable"; import { SnapshotStatus } from "@/components/SnapshotStatus"; @@ -159,30 +161,42 @@ export function QueuesPage() { : 0, ); + // Icon-only in the table, where width is scarce; the label stays the + // accessible name and reappears in the narrow card layout. function controls(queue: QueueStats) { + const toggle = queue.paused ? "Resume" : "Pause"; + const ToggleIcon = queue.paused ? PlayIcon : PauseIcon; return (
- - + + + {toggle} + + + + Drain: cancel all pending jobs +
); } From d23fc147cc859ed90c60478513902bbfc1e3be4f Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 23:50:23 +0000 Subject: [PATCH 26/48] Leave queue history counts unknown when a minute is not a minute Two cases stored misleading per-minute counts: - The first interval after taking leadership, or after a delayed sample, can cover seconds or well over a minute. Intervals more than 15s off a minute now record unknown counts rather than a misstated rate. - Callbacks complete, fail or retry parked jobs from whichever process receives them, which no runtime counts. Runtimes now count parked attempts, and a minute in which a callback could have resolved one of a queue's jobs records its outcome counts as unknown. Claims stay measured. The leader history test also waits for a fleet row with a live instance, since the first sample can land before the runtime's own snapshot. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016oDvumkeByijpFvqb85Qbj --- awa-model/src/admin.rs | 5 + awa-model/src/queue_history.rs | 164 ++++++++++++++++++++++++++++--- awa-worker/src/executor.rs | 1 + awa-worker/src/maintenance.rs | 4 +- awa-worker/src/queue_counters.rs | 8 ++ awa/tests/queue_history_test.rs | 19 +++- docs/configuration.md | 11 ++- 7 files changed, 190 insertions(+), 22 deletions(-) diff --git a/awa-model/src/admin.rs b/awa-model/src/admin.rs index 78716b42e..745120869 100644 --- a/awa-model/src/admin.rs +++ b/awa-model/src/admin.rs @@ -1716,6 +1716,11 @@ pub struct QueueOutcomeCounters { /// Sum over claimed jobs of the time between becoming runnable and /// being claimed, in milliseconds. Divide by `claimed` for a mean. pub claim_wait_ms: u64, + /// Attempts that parked waiting for an external callback. Whatever + /// resolves the callback may run in another process, so the eventual + /// outcome is not counted here. + #[serde(default)] + pub parked: u64, } #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)] diff --git a/awa-model/src/queue_history.rs b/awa-model/src/queue_history.rs index fc8f00722..fd133704c 100644 --- a/awa-model/src/queue_history.rs +++ b/awa-model/src/queue_history.rs @@ -7,13 +7,16 @@ //! //! Counter deltas are `None` ("unknown") rather than a guess whenever the //! leader cannot account for every live runtime serving a queue: on its first -//! sample, for a runtime it has not seen before that started earlier, and for -//! runtimes that predate the counters. A runtime that dies between samples -//! loses at most its last snapshot interval of counts. +//! sample, for a runtime it has not seen before that started earlier, for +//! runtimes that predate the counters, and when the interval since the last +//! sample is not about a minute. Completed, failed and retried counts are also +//! unknown wherever a callback may have resolved a parked job, since that can +//! happen in any process. A runtime that dies between samples loses at most +//! its last snapshot interval of counts. use std::collections::{BTreeMap, BTreeSet, HashMap}; -use chrono::{DateTime, Utc}; +use chrono::{DateTime, TimeDelta, Utc}; use serde::Serialize; use sqlx::PgPool; use uuid::Uuid; @@ -30,8 +33,15 @@ pub struct QueueFlow { pub retried: i64, pub rate_limited: i64, pub claim_wait_ms: i64, + pub parked: i64, } +/// How far a sample interval may stray from a minute and still be stored as +/// one. Workers publish counters on their own snapshot cadence, so some jitter +/// is inherent; an interval well off a minute (the first one after taking +/// leadership, or a delayed sample) would misstate a per-minute rate. +const MINUTE_TOLERANCE: TimeDelta = TimeDelta::seconds(15); + impl QueueFlow { fn between(previous: Option<&QueueOutcomeCounters>, current: &QueueOutcomeCounters) -> Self { let delta = |now: u64, before: u64| i64::try_from(now - before).unwrap_or(i64::MAX); @@ -44,7 +54,8 @@ impl QueueFlow { && current.failed >= prev.failed && current.retried >= prev.retried && current.rate_limited >= prev.rate_limited - && current.claim_wait_ms >= prev.claim_wait_ms => + && current.claim_wait_ms >= prev.claim_wait_ms + && current.parked >= prev.parked => { Self { claimed: delta(current.claimed, prev.claimed), @@ -53,6 +64,7 @@ impl QueueFlow { retried: delta(current.retried, prev.retried), rate_limited: delta(current.rate_limited, prev.rate_limited), claim_wait_ms: delta(current.claim_wait_ms, prev.claim_wait_ms), + parked: delta(current.parked, prev.parked), } } _ => Self::between(Some(&QueueOutcomeCounters::default()), current), @@ -66,6 +78,7 @@ impl QueueFlow { self.retried = self.retried.saturating_add(other.retried); self.rate_limited = self.rate_limited.saturating_add(other.rate_limited); self.claim_wait_ms = self.claim_wait_ms.saturating_add(other.claim_wait_ms); + self.parked = self.parked.saturating_add(other.parked); } } @@ -75,6 +88,7 @@ impl QueueFlow { pub struct CounterBaseline { sampled_at: Option>, readings: HashMap<(Uuid, String), QueueOutcomeCounters>, + waiting_external: HashMap, } /// Per-queue runtime coverage for one sample. @@ -98,6 +112,9 @@ impl CounterBaseline { ) -> HashMap { let mut coverage: HashMap = HashMap::new(); let mut unknown: BTreeSet = BTreeSet::new(); + let about_a_minute = self.sampled_at.is_none_or(|sampled_at| { + ((now - sampled_at) - TimeDelta::minutes(1)).abs() <= MINUTE_TOLERANCE + }); let mut readings = HashMap::new(); for instance in instances.iter().filter(|instance| !instance.stale) { @@ -127,7 +144,7 @@ impl CounterBaseline { let started_since_last_sample = self .sampled_at .is_some_and(|sampled_at| instance.started_at >= sampled_at); - if previous.is_none() && !started_since_last_sample { + if !about_a_minute || (previous.is_none() && !started_since_last_sample) { // Counts from before our baseline: we cannot tell how many // fall in this interval. unknown.insert(snapshot.queue.clone()); @@ -146,6 +163,42 @@ impl CounterBaseline { self.readings = readings; coverage } + + /// Queues where a callback may have completed, failed or retried a job + /// since the last sample: a job was parked during the interval, or one was + /// already waiting at its start. Callbacks resolve from any process (an + /// HTTP receiver, an admin call), which no runtime counts. + pub fn callback_queues( + &mut self, + queues: &[QueueOverview], + coverage: &HashMap, + ) -> BTreeSet { + let waiting: HashMap = queues + .iter() + .map(|queue| (queue.queue.clone(), queue.waiting_external)) + .collect(); + let affected = queues + .iter() + .filter(|queue| { + // With no earlier reading, assume what is waiting now was + // waiting all interval. + let waited = self + .waiting_external + .get(&queue.queue) + .copied() + .unwrap_or(queue.waiting_external) + > 0; + let parked = coverage + .get(&queue.queue) + .and_then(|c| c.flow) + .is_some_and(|flow| flow.parked > 0); + waited || parked + }) + .map(|queue| queue.queue.clone()) + .collect(); + self.waiting_external = waiting; + affected + } } /// One row of `awa.queue_history`. @@ -187,6 +240,7 @@ pub fn build_sample( bucket: DateTime, queues: &[QueueOverview], coverage: &HashMap, + callback_queues: &BTreeSet, instances: &[RuntimeInstance], ) -> (Vec, FleetHistoryRow) { let rows = queues @@ -225,6 +279,11 @@ pub fn build_sample( row.rate_limited = Some(0); row.claim_wait_ms = Some(0); } + if callback_queues.contains(&row.queue) { + row.completed = None; + row.failed_attempts = None; + row.retried = None; + } row }) .collect(); @@ -591,10 +650,9 @@ mod tests { assert_eq!(coverage["email"].capacity, None); } - #[test] - fn unserved_queues_record_zero_flow() { - let queue = QueueOverview { - queue: "orphan".into(), + fn overview(name: &str, available: i64, waiting_external: i64) -> QueueOverview { + QueueOverview { + queue: name.into(), display_name: None, description: None, owner: None, @@ -604,18 +662,96 @@ mod tests { descriptor_last_seen_at: None, descriptor_stale: false, descriptor_mismatch: false, - total_queued: 4, + total_queued: available + waiting_external, scheduled: 0, - available: 4, + available, retryable: 0, running: 0, failed: 0, - waiting_external: 0, + waiting_external, completed_last_hour: 0, lag_seconds: Some(120.0), paused: false, + } + } + + #[test] + fn intervals_well_off_a_minute_are_unknown() { + let mut baseline = CounterBaseline::default(); + let worker = |claimed| { + [instance( + 1, + at(0), + vec![("email", Some(counters(claimed, claimed)), HARD)], + )] }; - let (rows, fleet) = build_sample(at(60), &[queue], &HashMap::new(), &[]); + baseline.advance(at(57), &worker(10)); + // Leadership taken at :57, next sample just after the minute: three + // seconds of counts must not be stored as a minute's worth. + assert_eq!(baseline.advance(at(62), &worker(11))["email"].flow, None); + let on_time = baseline.advance(at(121), &worker(71)); + assert_eq!(on_time["email"].flow.unwrap().claimed, 60); + // A sample delayed well past the minute is unknown too. + assert_eq!(baseline.advance(at(230), &worker(171))["email"].flow, None); + } + + #[test] + fn callbacks_make_outcomes_unknown_but_not_claims() { + let mut baseline = CounterBaseline::default(); + let worker = |claimed, parked| { + [instance( + 1, + at(0), + vec![( + "hooks", + Some(QueueOutcomeCounters { + parked, + ..counters(claimed, 0) + }), + HARD, + )], + )] + }; + let quiet = [overview("hooks", 0, 0), overview("plain", 3, 0)]; + let coverage = baseline.advance(at(60), &worker(5, 0)); + assert!(baseline.callback_queues(&quiet, &coverage).is_empty()); + + // Parked during the interval: whatever resolves it is not counted. + let coverage = baseline.advance(at(120), &worker(9, 4)); + let parked = baseline.callback_queues(&[overview("hooks", 0, 4)], &coverage); + assert!(parked.contains("hooks")); + let (rows, _) = build_sample(at(120), &[overview("hooks", 0, 4)], &coverage, &parked, &[]); + assert_eq!(rows[0].claimed, Some(4)); + assert_eq!(rows[0].completed, None); + assert_eq!(rows[0].failed_attempts, None); + assert_eq!(rows[0].retried, None); + + // Nothing parked this minute, but jobs were waiting at its start. + let coverage = baseline.advance(at(180), &worker(9, 4)); + let resolved = baseline.callback_queues(&[overview("hooks", 0, 0)], &coverage); + assert!(resolved.contains("hooks")); + + // Once nothing waited at the start and nothing parked, counts return. + let coverage = baseline.advance(at(240), &worker(9, 4)); + assert!(baseline + .callback_queues(&[overview("hooks", 0, 0)], &coverage) + .is_empty()); + } + + #[test] + fn unserved_callback_queues_are_unknown_not_zero() { + // No worker serves the queue, yet callbacks can still finish its jobs. + let queue = overview("receiver_only", 0, 2); + let callback = BTreeSet::from(["receiver_only".to_string()]); + let (rows, _) = build_sample(at(60), &[queue], &HashMap::new(), &callback, &[]); + assert_eq!(rows[0].claimed, Some(0)); + assert_eq!(rows[0].completed, None); + } + + #[test] + fn unserved_queues_record_zero_flow() { + let queue = overview("orphan", 4, 0); + let (rows, fleet) = build_sample(at(60), &[queue], &HashMap::new(), &BTreeSet::new(), &[]); assert_eq!(rows[0].live_workers, 0); assert_eq!(rows[0].claimed, Some(0)); assert_eq!(fleet.live_instances, 0); diff --git a/awa-worker/src/executor.rs b/awa-worker/src/executor.rs index 185c854d8..c3af818b7 100644 --- a/awa-worker/src/executor.rs +++ b/awa-worker/src/executor.rs @@ -521,6 +521,7 @@ impl JobExecutor { metrics.record_job_failed(&job_kind, &job_queue, true); if let Some(counters) = counters { counters.record_failed(); } } else { + if let Some(counters) = counters { counters.record_parked(); } metrics.jobs_waiting_external.add( 1, &[ diff --git a/awa-worker/src/maintenance.rs b/awa-worker/src/maintenance.rs index 38432b071..899619b96 100644 --- a/awa-worker/src/maintenance.rs +++ b/awa-worker/src/maintenance.rs @@ -1322,7 +1322,9 @@ impl MaintenanceService { let queues = awa_model::admin::queue_overviews(pool).await?; let instances = awa_model::admin::list_runtime_instances(pool).await?; let coverage = baseline.advance(now, &instances); - let (rows, fleet) = queue_history::build_sample(bucket, &queues, &coverage, &instances); + let callback_queues = baseline.callback_queues(&queues, &coverage); + let (rows, fleet) = + queue_history::build_sample(bucket, &queues, &coverage, &callback_queues, &instances); queue_history::record_sample(pool, &rows, &fleet).await?; queue_history::prune_history(pool, retention).await?; Ok(()) diff --git a/awa-worker/src/queue_counters.rs b/awa-worker/src/queue_counters.rs index d978f3352..c998a8676 100644 --- a/awa-worker/src/queue_counters.rs +++ b/awa-worker/src/queue_counters.rs @@ -20,6 +20,7 @@ pub(crate) struct QueueCounters { retried: AtomicU64, rate_limited: AtomicU64, claim_wait_ms: AtomicU64, + parked: AtomicU64, } /// Shared by the dispatchers, the executor and the snapshot reporter. Built @@ -59,6 +60,10 @@ impl QueueCounters { self.rate_limited.fetch_add(1, Ordering::Relaxed); } + pub(crate) fn record_parked(&self) { + self.parked.fetch_add(1, Ordering::Relaxed); + } + pub(crate) fn snapshot(&self) -> QueueOutcomeCounters { QueueOutcomeCounters { claimed: self.claimed.load(Ordering::Relaxed), @@ -67,6 +72,7 @@ impl QueueCounters { retried: self.retried.load(Ordering::Relaxed), rate_limited: self.rate_limited.load(Ordering::Relaxed), claim_wait_ms: self.claim_wait_ms.load(Ordering::Relaxed), + parked: self.parked.load(Ordering::Relaxed), } } } @@ -85,6 +91,7 @@ mod tests { counters.record_failed(); counters.record_retried(); counters.record_rate_limited(); + counters.record_parked(); assert_eq!( counters.snapshot(), QueueOutcomeCounters { @@ -94,6 +101,7 @@ mod tests { retried: 1, rate_limited: 1, claim_wait_ms: 450, + parked: 1, } ); } diff --git a/awa/tests/queue_history_test.rs b/awa/tests/queue_history_test.rs index 32e6bd690..fc2c5fc1c 100644 --- a/awa/tests/queue_history_test.rs +++ b/awa/tests/queue_history_test.rs @@ -186,10 +186,21 @@ async fn test_maintenance_leader_writes_queue_and_fleet_history() { }; assert_eq!(row.available, 2); assert!(row.paused); - let fleet = queue_history::fleet_history_since(&pool, since) - .await - .unwrap(); - assert!(fleet.iter().any(|row| row.live_instances >= 1)); + // The first sample can land before this runtime's own snapshot does, so + // its fleet row may count no one; the next minute's sample will not. + loop { + let fleet = queue_history::fleet_history_since(&pool, since) + .await + .unwrap(); + if fleet.iter().any(|row| row.live_instances >= 1) { + break; + } + assert!( + tokio::time::Instant::now() < deadline, + "no fleet history row with a live instance" + ); + tokio::time::sleep(Duration::from_millis(250)).await; + } runtime.shutdown(Duration::from_secs(2)).await; admin::resume_queue(&pool, queue).await.unwrap(); diff --git a/docs/configuration.md b/docs/configuration.md index bbafa8e3c..f356066af 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -790,9 +790,14 @@ so a slow read cannot delay rescue or promotion. Claim, completion and failure rates come from per-queue counters each runtime publishes with its snapshot. The leader differences consecutive readings, so a minute's counts are unknown (shown as gaps, never as zero) after a leader -change, for runtimes older than these counters, and for a runtime it first -sees that started earlier. A runtime that dies between samples loses at most -its last snapshot interval of counts. +change, for runtimes older than these counters, for a runtime it first +sees that started earlier, and when a sample lands well off the minute (more +than 15 seconds early or late). Completion, failure and retry counts are also +unknown for a minute in which a callback could have resolved one of the +queue's jobs (a job parked for a callback during it, or was already waiting +at its start), because callbacks resolve in whichever process receives them; +the UI then shows the hourly completion average instead. A runtime that dies +between samples loses at most its last snapshot interval of counts. `awa serve` reads the tables, so every UI replica shows the same history and history survives UI restarts. On a schema before v051, or until a current From 515b78002ed5b860a9c0d9c5d027dc63591b7a34 Mon Sep 17 00:00:00 2001 From: chencaizhi Date: Thu, 29 Oct 2026 21:07:46 +0800 Subject: [PATCH 27/48] fix: keep aged running jobs visible in SQL compat view Closes hardbyte/awa#569 --- CHANGELOG.md | 9 + .../v053_jobs_compat_priority_aging.sql | 564 ++++++++++++++++++ awa-model/src/migrations.rs | 8 +- awa/tests/migration_test.rs | 125 ++++ awa/tests/queue_storage_runtime_test.rs | 201 +++++++ 5 files changed, 906 insertions(+), 1 deletion(-) create mode 100644 awa-model/migrations/v053_jobs_compat_priority_aging.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index 54759f505..78df41409 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ Notable changes between releases. Detailed migration notes for storage transitio ## [Unreleased] +### Fixed + +- `awa.jobs` keeps running jobs visible after priority aging changes their + effective priority. Migration v053 joins receipt claims and materialized leases + to the exact job attempt rather than comparing effective and lane priorities, + excluding tombstoned and older-attempt ready rows to prevent duplicates. + The migration only refreshes the compatibility function; storage and runtime + write protocols are unchanged. + ## [0.7.0-alpha.1] — 2026-10-29 ### Upgrading diff --git a/awa-model/migrations/v053_jobs_compat_priority_aging.sql b/awa-model/migrations/v053_jobs_compat_priority_aging.sql new file mode 100644 index 000000000..478ae5e6d --- /dev/null +++ b/awa-model/migrations/v053_jobs_compat_priority_aging.sql @@ -0,0 +1,564 @@ +-- v053: keep aged running jobs visible through awa.jobs. +-- Issue: https://github.com/hardbyte/awa/issues/569. +-- +-- Claims and leases store effective priority after aging; ready entries keep +-- their original lane priority. Match the job and claimed attempt instead of +-- comparing those two priority domains. Exclude tombstoned ready entries so +-- reprioritization cannot duplicate a running row, and match run_lease so a +-- retained ready entry from an earlier attempt cannot supply its body. +-- +-- N-1 compatibility: only refreshes awa.jobs_compat(), preserving its return +-- type and all storage/write protocols. Existing binaries keep using the same +-- view and claim functions; no new runtime capability or preflight is needed. +-- +-- Lock impact: brief function-catalog and schema-version writes only, with no +-- hot-table DDL or data scan. Execution time is independent of queue depth. +-- Re-runnable and transaction-safe. External runners apply this bundle normally. + +CREATE OR REPLACE FUNCTION awa.jobs_compat() +RETURNS TABLE ( + id BIGINT, + kind TEXT, + queue TEXT, + args JSONB, + state awa.job_state, + priority SMALLINT, + attempt SMALLINT, + max_attempts SMALLINT, + run_at TIMESTAMPTZ, + heartbeat_at TIMESTAMPTZ, + deadline_at TIMESTAMPTZ, + attempted_at TIMESTAMPTZ, + finalized_at TIMESTAMPTZ, + created_at TIMESTAMPTZ, + errors JSONB[], + metadata JSONB, + tags TEXT[], + unique_key BYTEA, + unique_states BIT(8), + callback_id UUID, + callback_timeout_at TIMESTAMPTZ, + callback_filter TEXT, + callback_on_complete TEXT, + callback_on_fail TEXT, + callback_transform TEXT, + run_lease BIGINT, + progress JSONB +) +LANGUAGE plpgsql +STABLE +SET search_path = pg_catalog, awa, public +AS $$ +DECLARE + v_schema TEXT; +BEGIN + v_schema := awa.active_queue_storage_schema(); + + IF v_schema IS NULL THEN + RETURN QUERY + SELECT + j.id, + j.kind, + j.queue, + j.args, + j.state, + j.priority, + j.attempt, + j.max_attempts, + j.run_at, + j.heartbeat_at, + j.deadline_at, + j.attempted_at, + j.finalized_at, + j.created_at, + j.errors, + j.metadata, + j.tags, + j.unique_key, + j.unique_states, + j.callback_id, + j.callback_timeout_at, + j.callback_filter, + j.callback_on_complete, + j.callback_on_fail, + j.callback_transform, + j.run_lease, + j.progress + FROM awa.jobs_hot AS j + UNION ALL + SELECT + j.id, + j.kind, + j.queue, + j.args, + j.state, + j.priority, + j.attempt, + j.max_attempts, + j.run_at, + j.heartbeat_at, + j.deadline_at, + j.attempted_at, + j.finalized_at, + j.created_at, + j.errors, + j.metadata, + j.tags, + j.unique_key, + j.unique_states, + j.callback_id, + j.callback_timeout_at, + j.callback_filter, + j.callback_on_complete, + j.callback_on_fail, + j.callback_transform, + j.run_lease, + j.progress + FROM awa.scheduled_jobs AS j; + RETURN; + END IF; + + RETURN QUERY EXECUTE format( + $sql$ + WITH claim_cursors AS MATERIALIZED ( + -- One catalog read per lane instead of one per ready row + -- (#422). sequence_next_value is VOLATILE, so spelled inline in + -- the available-branch filter the planner could neither use it + -- as an index bound nor cache it across rows: every + -- ready_entries child was seq-scanned in full and each surviving + -- row paid a dynamic-SQL catalog round-trip (~15x slower on a + -- 20k-row backlog). + SELECT + claims.queue, + claims.priority, + claims.enqueue_shard, + %1$I.sequence_next_value(claims.seq_name) AS claim_seq + FROM %1$I.queue_claim_heads AS claims + ), + current_available AS ( + SELECT + ready.job_id AS id, + ready.kind, + ready.queue, + ready.args, + 'available'::awa.job_state AS state, + ready.priority, + ready.attempt, + ready.max_attempts, + ready.run_at, + NULL::timestamptz AS heartbeat_at, + NULL::timestamptz AS deadline_at, + ready.attempted_at, + NULL::timestamptz AS finalized_at, + ready.created_at, + awa.queue_storage_payload_errors(ready.payload) AS errors, + COALESCE(NULLIF(ready.payload->'metadata', 'null'::jsonb), '{}'::jsonb) AS metadata, + awa.queue_storage_payload_tags(ready.payload) AS tags, + ready.unique_key, + CASE + WHEN ready.unique_states IS NULL THEN NULL::bit(8) + ELSE ready.unique_states::bit(8) + END AS unique_states, + NULL::uuid AS callback_id, + NULL::timestamptz AS callback_timeout_at, + NULL::text AS callback_filter, + NULL::text AS callback_on_complete, + NULL::text AS callback_on_fail, + NULL::text AS callback_transform, + ready.run_lease, + NULLIF(ready.payload->'progress', 'null'::jsonb) AS progress + FROM %1$I.ready_entries AS ready + JOIN claim_cursors AS claims + ON claims.queue = ready.queue + AND claims.priority = ready.priority + AND claims.enqueue_shard = ready.enqueue_shard + WHERE ready.lane_seq >= claims.claim_seq + AND NOT EXISTS ( + SELECT 1 + FROM %1$I.ready_tombstones AS tomb + WHERE tomb.ready_slot = ready.ready_slot + AND tomb.ready_generation = ready.ready_generation + AND tomb.queue = ready.queue + AND tomb.priority = ready.priority + AND tomb.enqueue_shard = ready.enqueue_shard + AND tomb.lane_seq = ready.lane_seq + ) + ) + SELECT + current_available.id, + current_available.kind, + current_available.queue, + current_available.args, + current_available.state, + current_available.priority, + current_available.attempt, + current_available.max_attempts, + current_available.run_at, + current_available.heartbeat_at, + current_available.deadline_at, + current_available.attempted_at, + current_available.finalized_at, + current_available.created_at, + current_available.errors, + current_available.metadata, + current_available.tags, + current_available.unique_key, + current_available.unique_states, + current_available.callback_id, + current_available.callback_timeout_at, + current_available.callback_filter, + current_available.callback_on_complete, + current_available.callback_on_fail, + current_available.callback_transform, + current_available.run_lease, + current_available.progress + FROM current_available + UNION ALL + -- Receipt claims that have not materialised into `leases` are + -- running too (#246 / #416 / #422): legacy row-local `lease_claims` + -- below, default compact `lease_claim_batches` members next. Each + -- leg anti-joins every durable closure/supersession shape so a job + -- reports at most one state. Mirrors admin::state_counts (#410) and + -- queue_storage::open_receipt_running_claims_sql. + SELECT + claims.job_id AS id, + ready.kind, + ready.queue, + ready.args, + 'running'::awa.job_state AS state, + ready.priority, + claims.attempt, + claims.max_attempts, + ready.run_at, + attempt.heartbeat_at, + claims.deadline_at, + claims.claimed_at AS attempted_at, + NULL::timestamptz AS finalized_at, + ready.created_at, + awa.queue_storage_payload_errors(ready.payload) AS errors, + COALESCE(NULLIF(ready.payload->'metadata', 'null'::jsonb), '{}'::jsonb) AS metadata, + awa.queue_storage_payload_tags(ready.payload) AS tags, + ready.unique_key, + CASE + WHEN ready.unique_states IS NULL THEN NULL::bit(8) + ELSE ready.unique_states::bit(8) + END AS unique_states, + NULL::uuid AS callback_id, + NULL::timestamptz AS callback_timeout_at, + NULL::text AS callback_filter, + NULL::text AS callback_on_complete, + NULL::text AS callback_on_fail, + NULL::text AS callback_transform, + claims.run_lease, + COALESCE(NULLIF(attempt.progress, 'null'::jsonb), NULLIF(ready.payload->'progress', 'null'::jsonb)) + FROM %1$I.lease_claims AS claims + JOIN %1$I.ready_entries AS ready + ON ready.ready_slot = claims.ready_slot + AND ready.ready_generation = claims.ready_generation + AND ready.queue = claims.queue + AND ready.run_lease + 1 = claims.run_lease + AND ready.enqueue_shard = claims.enqueue_shard + AND ready.lane_seq = claims.lane_seq + AND ready.job_id = claims.job_id + AND NOT EXISTS ( + SELECT 1 FROM %1$I.ready_tombstones AS tomb + WHERE tomb.ready_slot = ready.ready_slot + AND tomb.ready_generation = ready.ready_generation + AND tomb.queue = ready.queue + AND tomb.priority = ready.priority + AND tomb.enqueue_shard = ready.enqueue_shard + AND tomb.lane_seq = ready.lane_seq + ) + LEFT JOIN %1$I.attempt_state AS attempt + ON attempt.job_id = claims.job_id + AND attempt.run_lease = claims.run_lease + WHERE claims.closed_at IS NULL + AND NOT EXISTS ( + SELECT 1 FROM %1$I.lease_claim_closures AS cx + WHERE cx.claim_slot = claims.claim_slot + AND cx.job_id = claims.job_id + AND cx.run_lease = claims.run_lease + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.lease_claim_closure_batches AS cb + WHERE cb.receipt_ranges @> claims.receipt_id + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.leases AS lease + WHERE lease.job_id = claims.job_id + AND lease.run_lease = claims.run_lease + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.done_entries AS done + WHERE done.job_id = claims.job_id + AND done.run_lease = claims.run_lease + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.deferred_jobs AS deferred + WHERE deferred.job_id = claims.job_id + AND deferred.run_lease = claims.run_lease + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.dlq_entries AS dlq + WHERE dlq.job_id = claims.job_id + AND dlq.run_lease = claims.run_lease + ) + UNION ALL + SELECT + items.job_id AS id, + ready.kind, + ready.queue, + ready.args, + 'running'::awa.job_state AS state, + ready.priority, + batches.attempts[items.ord], + batches.max_attempts[items.ord], + ready.run_at, + attempt.heartbeat_at, + batches.deadline_at, + batches.claimed_at AS attempted_at, + NULL::timestamptz AS finalized_at, + ready.created_at, + awa.queue_storage_payload_errors(ready.payload) AS errors, + COALESCE(NULLIF(ready.payload->'metadata', 'null'::jsonb), '{}'::jsonb) AS metadata, + awa.queue_storage_payload_tags(ready.payload) AS tags, + ready.unique_key, + CASE + WHEN ready.unique_states IS NULL THEN NULL::bit(8) + ELSE ready.unique_states::bit(8) + END AS unique_states, + NULL::uuid AS callback_id, + NULL::timestamptz AS callback_timeout_at, + NULL::text AS callback_filter, + NULL::text AS callback_on_complete, + NULL::text AS callback_on_fail, + NULL::text AS callback_transform, + items.run_lease, + COALESCE(NULLIF(attempt.progress, 'null'::jsonb), NULLIF(ready.payload->'progress', 'null'::jsonb)) + FROM %1$I.lease_claim_batches AS batches + CROSS JOIN LATERAL unnest( + batches.job_ids, + batches.run_leases, + batches.receipt_ids, + batches.lane_seqs + ) WITH ORDINALITY AS items(job_id, run_lease, receipt_id, lane_seq, ord) + JOIN %1$I.ready_entries AS ready + ON ready.ready_slot = batches.ready_slot + AND ready.ready_generation = batches.ready_generation + AND ready.queue = batches.queue + AND ready.run_lease + 1 = items.run_lease + AND ready.enqueue_shard = batches.enqueue_shard + AND ready.lane_seq = items.lane_seq + AND ready.job_id = items.job_id + AND NOT EXISTS ( + SELECT 1 FROM %1$I.ready_tombstones AS tomb + WHERE tomb.ready_slot = ready.ready_slot + AND tomb.ready_generation = ready.ready_generation + AND tomb.queue = ready.queue + AND tomb.priority = ready.priority + AND tomb.enqueue_shard = ready.enqueue_shard + AND tomb.lane_seq = ready.lane_seq + ) + LEFT JOIN %1$I.attempt_state AS attempt + ON attempt.job_id = items.job_id + AND attempt.run_lease = items.run_lease + WHERE NOT EXISTS ( + SELECT 1 FROM %1$I.lease_claim_closures AS cx + WHERE cx.claim_slot = batches.claim_slot + AND cx.job_id = items.job_id + AND cx.run_lease = items.run_lease + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.lease_claim_closure_batches AS cb + WHERE cb.claim_slot = batches.claim_slot + AND cb.receipt_ranges @> items.receipt_id + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.leases AS lease + WHERE lease.job_id = items.job_id + AND lease.run_lease = items.run_lease + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.done_entries AS done + WHERE done.job_id = items.job_id + AND done.run_lease = items.run_lease + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.deferred_jobs AS deferred + WHERE deferred.job_id = items.job_id + AND deferred.run_lease = items.run_lease + ) + AND NOT EXISTS ( + SELECT 1 FROM %1$I.dlq_entries AS dlq + WHERE dlq.job_id = items.job_id + AND dlq.run_lease = items.run_lease + ) + UNION ALL + SELECT + deferred.job_id AS id, + deferred.kind, + deferred.queue, + deferred.args, + deferred.state, + deferred.priority, + deferred.attempt, + deferred.max_attempts, + deferred.run_at, + NULL::timestamptz AS heartbeat_at, + NULL::timestamptz AS deadline_at, + deferred.attempted_at, + deferred.finalized_at, + deferred.created_at, + awa.queue_storage_payload_errors(deferred.payload) AS errors, + COALESCE(NULLIF(deferred.payload->'metadata', 'null'::jsonb), '{}'::jsonb) AS metadata, + awa.queue_storage_payload_tags(deferred.payload) AS tags, + deferred.unique_key, + CASE + WHEN deferred.unique_states IS NULL THEN NULL::bit(8) + ELSE deferred.unique_states::bit(8) + END AS unique_states, + NULL::uuid AS callback_id, + NULL::timestamptz AS callback_timeout_at, + NULL::text AS callback_filter, + NULL::text AS callback_on_complete, + NULL::text AS callback_on_fail, + NULL::text AS callback_transform, + deferred.run_lease, + NULLIF(deferred.payload->'progress', 'null'::jsonb) AS progress + FROM %1$I.deferred_jobs AS deferred + UNION ALL + SELECT + leases.job_id AS id, + ready.kind, + ready.queue, + ready.args, + leases.state, + leases.priority, + leases.attempt, + leases.max_attempts, + ready.run_at, + leases.heartbeat_at, + leases.deadline_at, + leases.attempted_at, + NULL::timestamptz AS finalized_at, + ready.created_at, + awa.queue_storage_payload_errors(ready.payload) AS errors, + CASE + WHEN attempt.callback_result IS NULL + THEN COALESCE(NULLIF(ready.payload->'metadata', 'null'::jsonb), '{}'::jsonb) + ELSE COALESCE(NULLIF(ready.payload->'metadata', 'null'::jsonb), '{}'::jsonb) + || jsonb_build_object('_awa_callback_result', attempt.callback_result) + END AS metadata, + awa.queue_storage_payload_tags(ready.payload) AS tags, + ready.unique_key, + CASE + WHEN ready.unique_states IS NULL THEN NULL::bit(8) + ELSE ready.unique_states::bit(8) + END AS unique_states, + leases.callback_id, + leases.callback_timeout_at, + attempt.callback_filter, + attempt.callback_on_complete, + attempt.callback_on_fail, + attempt.callback_transform, + leases.run_lease, + COALESCE( + NULLIF(attempt.progress, 'null'::jsonb), + NULLIF(ready.payload->'progress', 'null'::jsonb) + ) AS progress + FROM %1$I.leases AS leases + JOIN %1$I.ready_entries AS ready + ON ready.ready_slot = leases.ready_slot + AND ready.ready_generation = leases.ready_generation + AND ready.queue = leases.queue + AND ready.run_lease + 1 = leases.run_lease + AND ready.enqueue_shard = leases.enqueue_shard + AND ready.lane_seq = leases.lane_seq + AND ready.job_id = leases.job_id + AND NOT EXISTS ( + SELECT 1 FROM %1$I.ready_tombstones AS tomb + WHERE tomb.ready_slot = ready.ready_slot + AND tomb.ready_generation = ready.ready_generation + AND tomb.queue = ready.queue + AND tomb.priority = ready.priority + AND tomb.enqueue_shard = ready.enqueue_shard + AND tomb.lane_seq = ready.lane_seq + ) + LEFT JOIN %1$I.attempt_state AS attempt + ON attempt.job_id = leases.job_id + AND attempt.run_lease = leases.run_lease + UNION ALL + SELECT + done.job_id AS id, + done.kind, + done.queue, + done.args, + done.state, + done.priority, + done.attempt, + done.max_attempts, + done.run_at, + NULL::timestamptz AS heartbeat_at, + NULL::timestamptz AS deadline_at, + done.attempted_at, + done.finalized_at, + done.created_at, + awa.queue_storage_payload_errors(done.payload) AS errors, + COALESCE(NULLIF(done.payload->'metadata', 'null'::jsonb), '{}'::jsonb) AS metadata, + awa.queue_storage_payload_tags(done.payload) AS tags, + done.unique_key, + CASE + WHEN done.unique_states IS NULL THEN NULL::bit(8) + ELSE done.unique_states::bit(8) + END AS unique_states, + NULL::uuid AS callback_id, + NULL::timestamptz AS callback_timeout_at, + NULL::text AS callback_filter, + NULL::text AS callback_on_complete, + NULL::text AS callback_on_fail, + NULL::text AS callback_transform, + done.run_lease, + NULLIF(done.payload->'progress', 'null'::jsonb) AS progress + FROM %1$I.terminal_jobs AS done + UNION ALL + SELECT + dlq.job_id AS id, + dlq.kind, + dlq.queue, + dlq.args, + dlq.state, + dlq.priority, + dlq.attempt, + dlq.max_attempts, + dlq.run_at, + NULL::timestamptz AS heartbeat_at, + NULL::timestamptz AS deadline_at, + dlq.attempted_at, + dlq.finalized_at, + dlq.created_at, + awa.queue_storage_payload_errors(dlq.payload) AS errors, + COALESCE(NULLIF(dlq.payload->'metadata', 'null'::jsonb), '{}'::jsonb) AS metadata, + awa.queue_storage_payload_tags(dlq.payload) AS tags, + dlq.unique_key, + CASE + WHEN dlq.unique_states IS NULL THEN NULL::bit(8) + ELSE dlq.unique_states::bit(8) + END AS unique_states, + NULL::uuid AS callback_id, + NULL::timestamptz AS callback_timeout_at, + NULL::text AS callback_filter, + NULL::text AS callback_on_complete, + NULL::text AS callback_on_fail, + NULL::text AS callback_transform, + dlq.run_lease, + NULLIF(dlq.payload->'progress', 'null'::jsonb) AS progress + FROM %1$I.dlq_entries AS dlq + $sql$, + v_schema + ); +END; +$$; + +INSERT INTO awa.schema_version (version, description) +VALUES (53, 'Keep aged running jobs visible in jobs_compat()') +ON CONFLICT (version) DO NOTHING; diff --git a/awa-model/src/migrations.rs b/awa-model/src/migrations.rs index 385035b65..fff4e4222 100644 --- a/awa-model/src/migrations.rs +++ b/awa-model/src/migrations.rs @@ -5,7 +5,7 @@ use sqlx::{Connection, PgPool}; use tracing::{info, warn}; /// Current schema version. -pub const CURRENT_VERSION: i32 = 52; +pub const CURRENT_VERSION: i32 = 53; /// Migrations that require an exclusive (no-live-runtime) upgrade window. /// @@ -292,6 +292,11 @@ const MIGRATIONS: &[(i32, &str, &[&str])] = &[ ), (51, "Per-slot claim functions", &[V23_UP, V51_UP]), (52, "Retained job output", &[V23_UP, V52_UP]), + ( + 53, + "Keep aged running jobs visible in jobs_compat()", + &[V53_UP], + ), ]; const V1_UP: &str = include_str!("../migrations/v001_canonical_schema.sql"); @@ -352,6 +357,7 @@ const V49_UP: &str = include_str!("../migrations/v049_prepared_lane_sequences.sq const V50_UP: &str = include_str!("../migrations/v050_drop_ready_lane_shard_index.sql"); const V51_UP: &str = include_str!("../migrations/v051_claim_slot_functions.sql"); const V52_UP: &str = include_str!("../migrations/v052_retained_job_output.sql"); +const V53_UP: &str = include_str!("../migrations/v053_jobs_compat_priority_aging.sql"); /// Old version numbers from pre-0.4 releases that used V3/V4/V5 numbering. /// Also tolerates the unreleased inline-V6 branch numbering used during review. diff --git a/awa/tests/migration_test.rs b/awa/tests/migration_test.rs index 53c1ab009..db5d91d24 100644 --- a/awa/tests/migration_test.rs +++ b/awa/tests/migration_test.rs @@ -381,6 +381,131 @@ async fn test_fresh_install_reaches_current_version() { ); } +#[tokio::test] +async fn test_v053_preserves_aged_running_claims_during_upgrade() { + let _guard = acquire_migration_guard().await; + let pool = pool().await; + reset_schema(&pool).await; + for (_, _, sql) in migrations::migration_sql_range(0, 52) { + sqlx::raw_sql(audited_sql(sql)) + .execute(&pool) + .await + .expect("install the actual v052 schema"); + } + simulate_non_canonical_compat_routing(&pool).await; + assert_eq!(migrations::current_version(&pool).await.unwrap(), 52); + let store = QueueStorage::new(awa::model::QueueStorageConfig { + schema: "awa_queue_storage".to_string(), + lease_claim_receipts: true, + ..Default::default() + }) + .unwrap(); + let queue = "v053_aged_running_upgrade"; + store.enqueue_batch(&pool, queue, 4, 1).await.unwrap(); + sqlx::query( + "UPDATE awa_queue_storage.ready_entries \ + SET run_at = now() - interval '5 minutes' WHERE queue = $1", + ) + .bind(queue) + .execute(&pool) + .await + .unwrap(); + sqlx::query( + "UPDATE awa_queue_storage.ready_segments \ + SET first_run_at = now() - interval '5 minutes' WHERE queue = $1", + ) + .bind(queue) + .execute(&pool) + .await + .unwrap(); + let claimed = store + .claim_runtime_batch_with_aging_for_instance( + &pool, + queue, + 1, + std::time::Duration::ZERO, + std::time::Duration::from_secs(60), + Uuid::new_v4(), + 4, + std::time::Duration::from_secs(30), + std::time::Duration::from_secs(1), + ) + .await + .expect("claim with the v052 storage protocol"); + assert_eq!(claimed.len(), 1); + assert!(claimed[0].claim.lease_claim_receipt); + assert_eq!(claimed[0].job.priority, 1); + let before: i64 = sqlx::query_scalar("SELECT count(*) FROM awa.jobs WHERE queue = $1") + .bind(queue) + .fetch_one(&pool) + .await + .unwrap(); + assert_eq!(before, 0, "v052 loses the aged running claim"); + let ledger_before: serde_json::Value = sqlx::query_scalar( + "SELECT to_jsonb(batch) FROM awa_queue_storage.lease_claim_batches AS batch \ + WHERE queue = $1", + ) + .bind(queue) + .fetch_one(&pool) + .await + .unwrap(); + + migrations::run(&pool).await.expect("upgrade v052 to v053"); + assert_eq!( + migrations::current_version(&pool).await.unwrap(), + migrations::CURRENT_VERSION + ); + for _ in 0..2 { + let rows: Vec<(i64, i64, i16, serde_json::Value)> = sqlx::query_as( + "SELECT id, run_lease, attempt, args FROM awa.jobs \ + WHERE queue = $1 AND state = 'running'", + ) + .bind(queue) + .fetch_all(&pool) + .await + .unwrap(); + assert_eq!( + rows, + vec![( + claimed[0].job.id, + claimed[0].job.run_lease, + claimed[0].job.attempt, + claimed[0].job.args.clone(), + )], + "upgrading must expose exactly the existing running attempt" + ); + let ledger_after: serde_json::Value = sqlx::query_scalar( + "SELECT to_jsonb(batch) FROM awa_queue_storage.lease_claim_batches AS batch \ + WHERE queue = $1", + ) + .bind(queue) + .fetch_one(&pool) + .await + .unwrap(); + assert_eq!( + ledger_after, ledger_before, + "the live claim must be unchanged" + ); + + // Exercise the exported bundle too, including a repeated application. + let mut tx = pool.begin().await.unwrap(); + for (_, _, sql) in migrations::migration_sql_range(52, 53) { + sqlx::raw_sql(audited_sql(sql)) + .execute(tx.as_mut()) + .await + .unwrap(); + } + tx.commit().await.unwrap(); + } + assert_eq!( + store + .complete_runtime_batch(&pool, &claimed) + .await + .expect("the pre-upgrade claim must still complete"), + vec![(claimed[0].job.id, claimed[0].job.run_lease)] + ); +} + // ── Idempotency ────────────────────────────────────────────────── #[tokio::test] diff --git a/awa/tests/queue_storage_runtime_test.rs b/awa/tests/queue_storage_runtime_test.rs index 69453d02f..58356fa29 100644 --- a/awa/tests/queue_storage_runtime_test.rs +++ b/awa/tests/queue_storage_runtime_test.rs @@ -17690,6 +17690,207 @@ async fn test_jobs_compat_view_reports_receipt_running_claims() { } } +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_jobs_compat_view_reports_aged_receipt_claims() { + jobs_compat_view_reports_aged_claims(CompatClaimMode::Batch).await; +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_jobs_compat_view_reports_aged_materialized_leases() { + jobs_compat_view_reports_aged_claims(CompatClaimMode::Materialized).await; +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_jobs_compat_view_reports_aged_row_local_claims() { + jobs_compat_view_reports_aged_claims(CompatClaimMode::RowLocal).await; +} + +enum CompatClaimMode { + Batch, + RowLocal, + Materialized, +} + +async fn jobs_compat_view_reports_aged_claims(mode: CompatClaimMode) { + let (_db_guard, pool) = setup_pool(6).await; + let queue = "qs_compat_aged_running"; + let schema = "awa_qs_compat_aged_running"; + let store = create_store_with_config( + &pool, + QueueStorageConfig { + schema: schema.to_string(), + queue_slot_count: 4, + lease_slot_count: 2, + claim_slot_count: 2, + lease_claim_receipts: !matches!(mode, CompatClaimMode::Materialized), + ..Default::default() + }, + ) + .await; + let args = serde_json::json!({ "id": 901 }); + let job_id = enqueue_job( + &pool, + &store, + &CompleteJob { id: 901 }, + InsertOpts { + queue: queue.to_string(), + priority: 4, + ..Default::default() + }, + ) + .await; + backdate_one_lane_ready_job_run_at( + &pool, + schema, + job_id, + Utc::now() - chrono::Duration::minutes(5), + ) + .await; + // Reprioritization retains the old ready row, tombstoned, with the same + // job and attempt identity. It must not become another running result. + assert!(store.set_priority(&pool, job_id, 3).await.unwrap()); + let claimed = store + .claim_runtime_batch_with_aging_for_instance( + &pool, + queue, + 1, + Duration::ZERO, + Duration::from_secs(60), + Uuid::new_v4(), + 4, + Duration::from_secs(30), + Duration::from_secs(1), + ) + .await + .expect("claim reprioritized job with aging"); + assert_eq!(claimed.len(), 1); + assert_eq!(claimed[0].job.id, job_id); + assert_eq!(claimed[0].job.priority, 1); + assert_eq!(claimed[0].claim.priority, 3); + + if matches!(mode, CompatClaimMode::RowLocal) { + // Represent the real claim in the legacy row-local receipt format. + // Keep its identity, attempt, claim time and deadline unchanged. + let converted = sqlx::query(audited_sql(format!( + r#" + WITH batches AS ( + DELETE FROM {schema}.lease_claim_batches + WHERE queue = $1 + RETURNING * + ) + INSERT INTO {schema}.lease_claims ( + claim_slot, receipt_id, job_id, run_lease, ready_slot, + ready_generation, queue, priority, attempt, max_attempts, + lane_seq, enqueue_shard, claimed_at, deadline_at + ) + SELECT batches.claim_slot, items.receipt_id, items.job_id, + items.run_lease, batches.ready_slot, batches.ready_generation, + batches.queue, batches.priority, items.attempt, + items.max_attempts, items.lane_seq, batches.enqueue_shard, + batches.claimed_at, batches.deadline_at + FROM batches + CROSS JOIN LATERAL unnest( + batches.job_ids, batches.run_leases, batches.receipt_ids, + batches.lane_seqs, batches.attempts, batches.max_attempts + ) AS items(job_id, run_lease, receipt_id, lane_seq, attempt, max_attempts) + "# + ))) + .bind(queue) + .execute(&pool) + .await + .expect("convert the claim to the row-local receipt format"); + assert_eq!(converted.rows_affected(), 1); + } + + type Projection = (i64, String, i64, i16, serde_json::Value); + async fn read_projection(pool: &sqlx::PgPool, job_id: i64) -> Vec { + sqlx::query_as( + "SELECT id, state::text, run_lease, attempt, args \ + FROM awa.jobs WHERE id = $1 ORDER BY run_lease", + ) + .bind(job_id) + .fetch_all(pool) + .await + .expect("read aged job from SQL compatibility view") + } + assert_eq!( + read_projection(&pool, job_id).await, + vec![( + job_id, + "running".to_string(), + claimed[0].job.run_lease, + claimed[0].job.attempt, + args.clone(), + )], + "aging must not hide a live claim or duplicate a tombstoned ready row" + ); + + store + .retry_after( + &pool, + job_id, + claimed[0].job.run_lease, + Duration::ZERO, + None, + ) + .await + .expect("retry aged claim") + .expect("current attempt must be retryable"); + assert_eq!( + read_projection(&pool, job_id).await, + vec![( + job_id, + "retryable".to_string(), + claimed[0].job.run_lease, + claimed[0].job.attempt, + args.clone(), + )], + "closed receipts must not remain visible as running" + ); + assert_eq!( + store + .promote_due(&pool, JobState::Retryable, 1) + .await + .expect("promote retried job"), + 1 + ); + let reclaimed = store + .claim_runtime_batch(&pool, queue, 1, Duration::from_secs(30)) + .await + .expect("claim the next attempt"); + assert_eq!(reclaimed.len(), 1); + assert!(reclaimed[0].job.run_lease > claimed[0].job.run_lease); + assert_eq!( + read_projection(&pool, job_id).await, + vec![( + job_id, + "running".to_string(), + reclaimed[0].job.run_lease, + reclaimed[0].job.attempt, + args.clone(), + )], + "retained ready rows from older attempts must not duplicate the current one" + ); + assert_eq!( + store + .complete_runtime_batch(&pool, &reclaimed) + .await + .expect("complete current attempt"), + vec![(job_id, reclaimed[0].job.run_lease)] + ); + assert_eq!( + read_projection(&pool, job_id).await, + vec![( + job_id, + "completed".to_string(), + reclaimed[0].job.run_lease, + reclaimed[0].job.attempt, + args, + )], + "completed attempts must not also remain visible as running" + ); +} + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_queue_storage_cursor_advance_requires_claim_evidence() { cursor_advance_requires_claim_evidence(true).await; From 32aa6bc2c7a9b09a8ee8dacf2e8964b206429661 Mon Sep 17 00:00:00 2001 From: chencaizhi Date: Thu, 29 Oct 2026 21:53:11 +0800 Subject: [PATCH 28/48] fix: preserve effective priority in receipt projections --- CHANGELOG.md | 2 ++ .../migrations/v053_jobs_compat_priority_aging.sql | 4 ++-- awa/tests/queue_storage_runtime_test.rs | 10 +++++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78df41409..820d8d60e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ Notable changes between releases. Detailed migration notes for storage transitio effective priority. Migration v053 joins receipt claims and materialized leases to the exact job attempt rather than comparing effective and lane priorities, excluding tombstoned and older-attempt ready rows to prevent duplicates. + Receipt and materialized-lease rows consistently report the claimed effective + priority. The migration only refreshes the compatibility function; storage and runtime write protocols are unchanged. diff --git a/awa-model/migrations/v053_jobs_compat_priority_aging.sql b/awa-model/migrations/v053_jobs_compat_priority_aging.sql index 478ae5e6d..3ecb405d7 100644 --- a/awa-model/migrations/v053_jobs_compat_priority_aging.sql +++ b/awa-model/migrations/v053_jobs_compat_priority_aging.sql @@ -226,7 +226,7 @@ BEGIN ready.queue, ready.args, 'running'::awa.job_state AS state, - ready.priority, + claims.priority, claims.attempt, claims.max_attempts, ready.run_at, @@ -310,7 +310,7 @@ BEGIN ready.queue, ready.args, 'running'::awa.job_state AS state, - ready.priority, + batches.priority, batches.attempts[items.ord], batches.max_attempts[items.ord], ready.run_at, diff --git a/awa/tests/queue_storage_runtime_test.rs b/awa/tests/queue_storage_runtime_test.rs index 58356fa29..009d78f35 100644 --- a/awa/tests/queue_storage_runtime_test.rs +++ b/awa/tests/queue_storage_runtime_test.rs @@ -17802,10 +17802,10 @@ async fn jobs_compat_view_reports_aged_claims(mode: CompatClaimMode) { assert_eq!(converted.rows_affected(), 1); } - type Projection = (i64, String, i64, i16, serde_json::Value); + type Projection = (i64, String, i64, i16, serde_json::Value, i16); async fn read_projection(pool: &sqlx::PgPool, job_id: i64) -> Vec { sqlx::query_as( - "SELECT id, state::text, run_lease, attempt, args \ + "SELECT id, state::text, run_lease, attempt, args, priority \ FROM awa.jobs WHERE id = $1 ORDER BY run_lease", ) .bind(job_id) @@ -17821,11 +17821,12 @@ async fn jobs_compat_view_reports_aged_claims(mode: CompatClaimMode) { claimed[0].job.run_lease, claimed[0].job.attempt, args.clone(), + claimed[0].job.priority, )], "aging must not hide a live claim or duplicate a tombstoned ready row" ); - store + let retried = store .retry_after( &pool, job_id, @@ -17844,6 +17845,7 @@ async fn jobs_compat_view_reports_aged_claims(mode: CompatClaimMode) { claimed[0].job.run_lease, claimed[0].job.attempt, args.clone(), + retried.priority, )], "closed receipts must not remain visible as running" ); @@ -17868,6 +17870,7 @@ async fn jobs_compat_view_reports_aged_claims(mode: CompatClaimMode) { reclaimed[0].job.run_lease, reclaimed[0].job.attempt, args.clone(), + reclaimed[0].job.priority, )], "retained ready rows from older attempts must not duplicate the current one" ); @@ -17886,6 +17889,7 @@ async fn jobs_compat_view_reports_aged_claims(mode: CompatClaimMode) { reclaimed[0].job.run_lease, reclaimed[0].job.attempt, args, + reclaimed[0].job.priority, )], "completed attempts must not also remain visible as running" ); From a4499b2fdf640734f7410790fc586b77cbc71afb Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 08:54:05 +1300 Subject: [PATCH 29/48] fix(worker): keep planner statistics fresh on tables autovacuum never analyses Autovacuum does not analyse partitioned tables, so the thirteen ring parents have no inherited statistics, and the two head tables (queue_claim_heads, queue_enqueue_heads) never reach the autoanalyze threshold, so the planner prices lane joins against them at its defaults. The maintenance leader now runs ANALYZE on them when it is elected and every five minutes (ClientBuilder::statistics_refresh_interval, Python statistics_refresh_interval_ms; zero disables). One relation per transaction, with a bounded lock_timeout and statement_timeout, partitioned parents with SKIP_LOCKED, in a task beside the leader loop so a slow ANALYZE never delays rotate, prune or promote ticks. Migration v053 adds awa.analyze_queue_storage_relation(), a SECURITY DEFINER function so a runtime role that does not own the tables can refresh statistics without a MAINTAIN grant. A missing function or an owner that may not analyse the tables is logged once and recorded in awa.maintenance.analyze.attempts without affecting job processing. --- CHANGELOG.md | 34 ++ awa-metrics/src/lib.rs | 49 +- .../v053_analyze_queue_storage_statistics.sql | 109 ++++ awa-model/src/migrations.rs | 8 +- awa-python/python/awa/_awa.pyi | 1 + awa-python/python/awa/client.py | 7 + awa-python/src/client.rs | 6 +- awa-python/tests/test_start_config.py | 14 + awa-worker/src/client.rs | 21 + awa-worker/src/lib.rs | 1 + awa-worker/src/maintenance.rs | 34 ++ awa-worker/src/statistics.rs | 347 +++++++++++ awa/tests/statistics_refresh_test.rs | 561 ++++++++++++++++++ docs/architecture.md | 2 + docs/configuration.md | 11 + docs/grafana/README.md | 2 + docs/security/database-roles.md | 6 + docs/upgrade-0.6-to-0.7.md | 16 + skills/awa-operations/SKILL.md | 13 +- 19 files changed, 1238 insertions(+), 4 deletions(-) create mode 100644 awa-model/migrations/v053_analyze_queue_storage_statistics.sql create mode 100644 awa-worker/src/statistics.rs create mode 100644 awa/tests/statistics_refresh_test.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c50c51a9..0d1f27174 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,40 @@ Notable changes between releases. Detailed migration notes for storage transitio ## [Unreleased] +### Added + +- **The maintenance leader keeps planner statistics fresh on the queue-storage + tables autovacuum never analyses.** Autovacuum does not analyse partitioned + tables, so the thirteen ring parents (`ready_entries`, `done_entries`, + `leases`, ...) had no inherited statistics, and the two small head tables + (`queue_claim_heads`, `queue_enqueue_heads`) never reach the autoanalyze + threshold, so the planner priced lane joins against them at its defaults + while they drove joins over hundreds of thousands of retained rows. The + leader now runs `ANALYZE` on them when it is elected and then every five + minutes. `ClientBuilder::statistics_refresh_interval` (Python + `statistics_refresh_interval_ms`) changes the cadence; zero disables it. One + pass takes under a second on a small ring and a few seconds on a large one. + It analyses one relation per transaction with a 2 s `lock_timeout`, skips + children that prune holds, and never makes prune wait: a prune attempt that + lands while ANALYZE samples the oldest slot's tables returns `blocked` and + retries on its normal backoff. Results are in + `awa.maintenance.analyze.attempts` and `awa.maintenance.analyze.duration` + (scope `heads` or `ring_parent`; outcome `ok`, `skipped_privilege`, + `skipped_lock`, `unavailable` or `failed`). +- **Migration v053 adds `awa.analyze_queue_storage_relation(schema, relation)`, + so a runtime role that does not own the tables can refresh statistics.** + `ANALYZE` skips a table its caller may not analyse, and the documented + runtime grants do not include `MAINTAIN`, so the refresh runs through this + `SECURITY DEFINER` function owned by the migration role. It analyses only a + head table or partitioned table of a schema that + `awa.queue_storage_schemas()` reports as trusted, and `EXECUTE` is granted + to `PUBLIC` like the other runtime helpers. Run `awa migrate` as the schema + owner (see [database roles](docs/security/database-roles.md)); no grant + changes are needed. A binary running ahead of the migration, or against a + function whose owner may not analyse the tables, logs one warning naming what + is missing and skips the refresh without affecting job processing. Earlier + binaries never call the function. + ### Fixed - **Batch enqueues take their lane locks in one order, so they no longer diff --git a/awa-metrics/src/lib.rs b/awa-metrics/src/lib.rs index 1a1c9097b..14e3cb540 100644 --- a/awa-metrics/src/lib.rs +++ b/awa-metrics/src/lib.rs @@ -77,6 +77,8 @@ pub mod names { pub const MAINTENANCE_PRUNE_ATTEMPTS: &str = "awa.maintenance.prune.attempts"; pub const MAINTENANCE_PRUNE_SKIPPED_ROWS: &str = "awa.maintenance.prune.skipped_rows"; pub const MAINTENANCE_PRUNE_DURATION: &str = "awa.maintenance.prune.duration"; + pub const MAINTENANCE_ANALYZE_ATTEMPTS: &str = "awa.maintenance.analyze.attempts"; + pub const MAINTENANCE_ANALYZE_DURATION: &str = "awa.maintenance.analyze.duration"; pub const STORAGE_TRANSITION_READY: &str = "awa.storage.transition_ready"; pub const STORAGE_CANONICAL_LIVE_BACKLOG: &str = "awa.storage.canonical_live_backlog"; pub const STORAGE_LIVE_RUNTIME_CAPABILITY: &str = "awa.storage.live_runtime_capability"; @@ -277,6 +279,13 @@ pub struct AwaMetrics { /// rather than one per tick. Fleets alert on this rather than /// scraping the matching `tracing::warn!` line. Issue #242. pub maintenance_branch_overrun_total: Counter, + /// Planner-statistics `ANALYZE` calls by scope (`heads`, `ring_parent`) + /// and outcome (`ok`, `skipped_privilege`, `skipped_lock`, + /// `unavailable`, `failed`). One increment per relation per refresh pass. + pub maintenance_analyze_attempts: Counter, + /// Wall-clock duration of one planner-statistics `ANALYZE` call, by scope + /// and outcome. + pub maintenance_analyze_duration_seconds: Histogram, /// Current ring `current_slot` per ring, sampled from each rotate call. /// The slot number itself isn't meaningful but the rate of advance is — /// dashboards plot `rate(slot_changes)` to see whether rotation is @@ -620,6 +629,21 @@ impl AwaMetrics { ) .with_unit("{episode}") .build(), + maintenance_analyze_attempts: meter + .u64_counter(names::MAINTENANCE_ANALYZE_ATTEMPTS) + .with_description( + "Planner-statistics ANALYZE calls by scope (heads/ring_parent) and outcome", + ) + .with_unit("{attempt}") + .build(), + maintenance_analyze_duration_seconds: meter + .f64_histogram(names::MAINTENANCE_ANALYZE_DURATION) + .with_description( + "Duration of one planner-statistics ANALYZE call by scope and outcome", + ) + .with_unit("s") + .with_boundaries(WAIT_DURATION_BUCKETS_SECONDS.to_vec()) + .build(), ring_current_slot: meter .i64_gauge(names::RING_CURRENT_SLOT) .with_description("Current slot index per ring (queue/lease/claim)") @@ -1280,6 +1304,24 @@ impl AwaMetrics { self.maintenance_branch_overrun_total.add(1, &attrs); } + /// Record one planner-statistics `ANALYZE` call. `scope` is `"heads"` or + /// `"ring_parent"`; `outcome` is `"ok"`, `"skipped_privilege"`, + /// `"skipped_lock"`, `"unavailable"` or `"failed"`. + pub fn record_statistics_analyze( + &self, + scope: &'static str, + outcome: &'static str, + duration: Duration, + ) { + let attrs = [ + opentelemetry::KeyValue::new("awa.analyze.scope", scope), + opentelemetry::KeyValue::new("awa.analyze.outcome", outcome), + ]; + self.maintenance_analyze_attempts.add(1, &attrs); + self.maintenance_analyze_duration_seconds + .record(duration.as_secs_f64(), &attrs); + } + /// Record a ring prune outcome. pub fn record_prune_outcome(&self, ring: &'static str, outcome: &awa_model::PruneOutcome) { let (label, reason, count) = match outcome { @@ -1457,7 +1499,7 @@ mod tests { .build(); let metrics = AwaMetrics::new(&provider.meter("awa-metrics-test")); - let seconds: [(&str, &Histogram, &[f64]); 9] = [ + let seconds: [(&str, &Histogram, &[f64]); 10] = [ ( names::ENQUEUE_DURATION, &metrics.enqueue_duration_seconds, @@ -1478,6 +1520,11 @@ mod tests { &metrics.maintenance_branch_duration_seconds, &WAIT_DURATION_BUCKETS_SECONDS, ), + ( + names::MAINTENANCE_ANALYZE_DURATION, + &metrics.maintenance_analyze_duration_seconds, + &WAIT_DURATION_BUCKETS_SECONDS, + ), ( names::DISPATCH_WAKE_TO_CLAIM_DURATION, &metrics.dispatch_wake_to_claim_seconds, diff --git a/awa-model/migrations/v053_analyze_queue_storage_statistics.sql b/awa-model/migrations/v053_analyze_queue_storage_statistics.sql new file mode 100644 index 000000000..a82a52f8a --- /dev/null +++ b/awa-model/migrations/v053_analyze_queue_storage_statistics.sql @@ -0,0 +1,109 @@ +-- v053: Planner statistics for the queue-storage tables autovacuum never analyses +-- +-- Autovacuum does not analyse partitioned tables, so the ring parents +-- (ready_entries, done_entries, leases, ...) have no inherited statistics. It +-- also never reaches the autoanalyze threshold on the two small head tables +-- (queue_claim_heads, queue_enqueue_heads), so the planner prices lane joins +-- against them at its defaults (320 rows, n_distinct 200) while they drive +-- joins over hundreds of thousands of retained rows. +-- +-- The maintenance leader refreshes both on an interval. Runtimes usually +-- connect as a role that does not own the tables, and ANALYZE skips with a +-- warning a table its caller may not analyse, so the refresh runs through +-- this SECURITY DEFINER function owned by the migration role, which owns the +-- tables. +-- +-- The function analyses one relation per call and the caller runs each call as +-- its own transaction, so the locks ANALYZE takes on a partitioned table's +-- children are held for that table rather than for the whole refresh. +-- SKIP_LOCKED skips a child that ring prune holds ACCESS EXCLUSIVE instead of +-- waiting for it and aborting the statistics gathered so far. +-- +-- Definer boundary: the function only analyses a head table or a partitioned +-- table of a schema that awa.queue_storage_schemas() reports, which requires +-- the schema's ownership, grants and triggers to be trusted, and builds SQL +-- from nothing but quoted identifiers. ANALYZE writes statistics and nothing +-- else. +-- +-- Returns 'analyzed'; 'skipped_privilege' when the function owner may not +-- analyse the relation; or 'missing' when the relation does not exist. +-- +-- N-1 binaries never call it. A binary newer than this schema logs once that +-- the function is missing and skips the refresh. Completes in milliseconds and +-- takes no lock on any queue-storage table. + +CREATE OR REPLACE FUNCTION awa.analyze_queue_storage_relation( + p_schema TEXT, + p_relation TEXT +) +RETURNS TEXT +LANGUAGE plpgsql +SECURITY DEFINER +SET search_path = pg_catalog, pg_temp +AS $$ +DECLARE + v_relid OID; + v_relkind "char"; + v_may_analyze BOOLEAN; +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM awa.queue_storage_schemas() AS substrate + WHERE substrate.schema_name = p_schema + ) THEN + RAISE EXCEPTION '% is not a queue-storage schema', p_schema + USING ERRCODE = '22023'; + END IF; + + v_relid := to_regclass(format('%I.%I', p_schema, p_relation)); + IF v_relid IS NULL THEN + RETURN 'missing'; + END IF; + + SELECT class.relkind INTO v_relkind FROM pg_class AS class WHERE class.oid = v_relid; + IF NOT ( + v_relkind = 'p' + OR p_relation IN ('queue_claim_heads', 'queue_enqueue_heads') + ) THEN + RAISE EXCEPTION '%.% is not a partitioned or head table of a queue-storage schema', + p_schema, p_relation + USING ERRCODE = '22023'; + END IF; + + -- ANALYZE skips, with a warning rather than an error, a table the caller + -- may not analyse: the owner, a MAINTAIN holder (PostgreSQL 17+), a + -- member of pg_maintain, or the database owner may analyse it. + SELECT + pg_has_role(current_user, class.relowner, 'USAGE') + OR pg_has_role( + current_user, + (SELECT database.datdba FROM pg_database AS database + WHERE database.datname = current_database()), + 'USAGE' + ) + OR CASE + WHEN current_setting('server_version_num')::int >= 170000 + THEN has_table_privilege(class.oid, 'MAINTAIN') + ELSE FALSE + END + INTO v_may_analyze + FROM pg_class AS class + WHERE class.oid = v_relid; + + IF NOT v_may_analyze THEN + RETURN 'skipped_privilege'; + END IF; + + IF v_relkind = 'p' THEN + EXECUTE format('ANALYZE (SKIP_LOCKED) %I.%I', p_schema, p_relation); + ELSE + EXECUTE format('ANALYZE %I.%I', p_schema, p_relation); + END IF; + RETURN 'analyzed'; +END +$$; + +GRANT EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(TEXT, TEXT) TO PUBLIC; + +INSERT INTO awa.schema_version (version, description) +VALUES (53, 'Planner statistics refresh for queue-storage tables autovacuum never analyses') +ON CONFLICT (version) DO NOTHING; diff --git a/awa-model/src/migrations.rs b/awa-model/src/migrations.rs index 385035b65..13d3beb49 100644 --- a/awa-model/src/migrations.rs +++ b/awa-model/src/migrations.rs @@ -5,7 +5,7 @@ use sqlx::{Connection, PgPool}; use tracing::{info, warn}; /// Current schema version. -pub const CURRENT_VERSION: i32 = 52; +pub const CURRENT_VERSION: i32 = 53; /// Migrations that require an exclusive (no-live-runtime) upgrade window. /// @@ -292,6 +292,11 @@ const MIGRATIONS: &[(i32, &str, &[&str])] = &[ ), (51, "Per-slot claim functions", &[V23_UP, V51_UP]), (52, "Retained job output", &[V23_UP, V52_UP]), + ( + 53, + "Planner statistics refresh for queue-storage tables autovacuum never analyses", + &[V23_UP, V53_UP], + ), ]; const V1_UP: &str = include_str!("../migrations/v001_canonical_schema.sql"); @@ -352,6 +357,7 @@ const V49_UP: &str = include_str!("../migrations/v049_prepared_lane_sequences.sq const V50_UP: &str = include_str!("../migrations/v050_drop_ready_lane_shard_index.sql"); const V51_UP: &str = include_str!("../migrations/v051_claim_slot_functions.sql"); const V52_UP: &str = include_str!("../migrations/v052_retained_job_output.sql"); +const V53_UP: &str = include_str!("../migrations/v053_analyze_queue_storage_statistics.sql"); /// Old version numbers from pre-0.4 releases that used V3/V4/V5 numbering. /// Also tolerates the unreleased inline-V6 branch numbering used during review. diff --git a/awa-python/python/awa/_awa.pyi b/awa-python/python/awa/_awa.pyi index 2219bfc3b..34f5edbab 100644 --- a/awa-python/python/awa/_awa.pyi +++ b/awa-python/python/awa/_awa.pyi @@ -605,6 +605,7 @@ class Client: deadline_rescue_interval_ms: int | None = None, callback_rescue_interval_ms: int | None = None, terminal_count_rollup_interval_ms: int | None = None, + statistics_refresh_interval_ms: int | None = None, queue_storage_schema: str | None = None, queue_storage_queue_slot_count: int = 16, queue_storage_lease_slot_count: int = 8, diff --git a/awa-python/python/awa/client.py b/awa-python/python/awa/client.py index f734ca679..131d3391b 100644 --- a/awa-python/python/awa/client.py +++ b/awa-python/python/awa/client.py @@ -922,6 +922,7 @@ async def start( deadline_rescue_interval_ms: int | None = None, callback_rescue_interval_ms: int | None = None, terminal_count_rollup_interval_ms: int | None = None, + statistics_refresh_interval_ms: int | None = None, queue_storage_schema: str | None = None, queue_storage_queue_slot_count: int = DEFAULT_QUEUE_STORAGE_QUEUE_SLOT_COUNT, queue_storage_lease_slot_count: int = DEFAULT_QUEUE_STORAGE_LEASE_SLOT_COUNT, @@ -967,6 +968,11 @@ async def start( counters. Exact reads include pending deltas, so the default favors fewer hot counter updates over immediate folding. + ``statistics_refresh_interval_ms`` controls how often the maintenance + leader runs ``ANALYZE`` on the queue-storage head tables and + partitioned ring parents, which autovacuum never analyses (default 5 + minutes; ``0`` disables the refresh). + Queue dicts also accept ``claimers`` and ``claim_batch_size`` for hot queue-storage queues. ``claimers`` adds dispatcher/claimer loops that share the queue's worker permits; benchmark ``2`` or ``4`` before @@ -988,6 +994,7 @@ async def start( deadline_rescue_interval_ms=deadline_rescue_interval_ms, callback_rescue_interval_ms=callback_rescue_interval_ms, terminal_count_rollup_interval_ms=terminal_count_rollup_interval_ms, + statistics_refresh_interval_ms=statistics_refresh_interval_ms, queue_storage_schema=queue_storage_schema, queue_storage_queue_slot_count=queue_storage_queue_slot_count, queue_storage_lease_slot_count=queue_storage_lease_slot_count, diff --git a/awa-python/src/client.rs b/awa-python/src/client.rs index f141508a7..e17b0c15e 100644 --- a/awa-python/src/client.rs +++ b/awa-python/src/client.rs @@ -1796,7 +1796,7 @@ impl PyClient { }) } - #[pyo3(signature = (queues=None, *, poll_interval_ms=200, global_max_workers=None, completed_retention_hours=None, failed_retention_hours=None, descriptor_retention_days=None, cleanup_batch_size=None, leader_election_interval_ms=None, heartbeat_interval_ms=None, promote_interval_ms=None, heartbeat_rescue_interval_ms=None, heartbeat_staleness_ms=None, deadline_rescue_interval_ms=None, callback_rescue_interval_ms=None, terminal_count_rollup_interval_ms=None, queue_storage_schema=None, queue_storage_queue_slot_count=16, queue_storage_lease_slot_count=8, queue_storage_claim_slot_count=8, queue_storage_queue_stripe_count=1, queue_storage_queue_rotate_interval_ms=1000, queue_storage_lease_rotate_interval_ms=1000, queue_storage_claim_rotate_interval_ms=None, queue_storage_rotate_min_slot_age_ms=None, queue_storage_rotate_target_slot_bytes=None, queue_storage_rotate_min_slot_rows=None, queue_storage_rotate_max_slot_age_ms=None, storage_transition_role=None))] + #[pyo3(signature = (queues=None, *, poll_interval_ms=200, global_max_workers=None, completed_retention_hours=None, failed_retention_hours=None, descriptor_retention_days=None, cleanup_batch_size=None, leader_election_interval_ms=None, heartbeat_interval_ms=None, promote_interval_ms=None, heartbeat_rescue_interval_ms=None, heartbeat_staleness_ms=None, deadline_rescue_interval_ms=None, callback_rescue_interval_ms=None, terminal_count_rollup_interval_ms=None, statistics_refresh_interval_ms=None, queue_storage_schema=None, queue_storage_queue_slot_count=16, queue_storage_lease_slot_count=8, queue_storage_claim_slot_count=8, queue_storage_queue_stripe_count=1, queue_storage_queue_rotate_interval_ms=1000, queue_storage_lease_rotate_interval_ms=1000, queue_storage_claim_rotate_interval_ms=None, queue_storage_rotate_min_slot_age_ms=None, queue_storage_rotate_target_slot_bytes=None, queue_storage_rotate_min_slot_rows=None, queue_storage_rotate_max_slot_age_ms=None, storage_transition_role=None))] #[allow(clippy::too_many_arguments)] fn start<'py>( &self, @@ -1816,6 +1816,7 @@ impl PyClient { deadline_rescue_interval_ms: Option, callback_rescue_interval_ms: Option, terminal_count_rollup_interval_ms: Option, + statistics_refresh_interval_ms: Option, queue_storage_schema: Option, queue_storage_queue_slot_count: u32, queue_storage_lease_slot_count: u32, @@ -1950,6 +1951,9 @@ impl PyClient { } builder = builder.terminal_count_rollup_interval(Duration::from_millis(ms)); } + if let Some(ms) = statistics_refresh_interval_ms { + builder = builder.statistics_refresh_interval(Duration::from_millis(ms)); + } if queue_storage_queue_slot_count == 0 { return Err(pyo3::exceptions::PyValueError::new_err( "queue_storage_queue_slot_count must be > 0", diff --git a/awa-python/tests/test_start_config.py b/awa-python/tests/test_start_config.py index 302df0fc2..4d19775d0 100644 --- a/awa-python/tests/test_start_config.py +++ b/awa-python/tests/test_start_config.py @@ -316,12 +316,26 @@ async def handle(job): deadline_rescue_interval_ms=1_000, callback_rescue_interval_ms=1_000, terminal_count_rollup_interval_ms=1_000, + statistics_refresh_interval_ms=1_000, leader_election_interval_ms=200, promote_interval_ms=500, ) await client.shutdown() +@pytest.mark.asyncio +async def test_statistics_refresh_can_be_disabled(client): + """statistics_refresh_interval_ms=0 disables the refresh; start() accepts it.""" + queue = "cfg_statistics_refresh_off" + + @client.task(ConfigTestJob, queue=queue) + async def handle(job): + return None + + await client.start([(queue, 1)], statistics_refresh_interval_ms=0) + await client.shutdown() + + @pytest.mark.asyncio async def test_per_queue_retention_in_dict_config(client): """Dict form with per-queue retention config starts successfully.""" diff --git a/awa-worker/src/client.rs b/awa-worker/src/client.rs index 253bbde7a..d32e8b977 100644 --- a/awa-worker/src/client.rs +++ b/awa-worker/src/client.rs @@ -163,6 +163,7 @@ pub struct ClientBuilder { leader_check_interval: Option, priority_aging_interval: Option, terminal_count_rollup_interval: Option, + statistics_refresh_interval: Option, completed_retention: Option, failed_retention: Option, descriptor_retention: Option, @@ -226,6 +227,7 @@ impl ClientBuilder { leader_check_interval: None, priority_aging_interval: None, terminal_count_rollup_interval: None, + statistics_refresh_interval: None, completed_retention: None, failed_retention: None, descriptor_retention: None, @@ -905,6 +907,20 @@ impl ClientBuilder { self } + /// Set how often the maintenance leader refreshes planner statistics for + /// the queue-storage tables autovacuum never analyses (default: 5 minutes). + /// + /// Autovacuum does not analyse partitioned tables, and never reaches its + /// threshold on the two small head tables, so the leader runs `ANALYZE` + /// on both when it is elected and then every interval, through + /// `awa.analyze_queue_storage_relation()` (schema v053) so that a runtime + /// role that does not own the tables still works. `Duration::ZERO` + /// disables the refresh. Queue storage only. + pub fn statistics_refresh_interval(mut self, interval: Duration) -> Self { + self.statistics_refresh_interval = Some(interval); + self + } + /// Set how often queue depth/lag metrics are published (default: 30s). pub fn queue_stats_interval(mut self, interval: Duration) -> Self { self.queue_stats_interval = Some(interval); @@ -1256,6 +1272,7 @@ impl ClientBuilder { leader_check_interval: self.leader_check_interval, priority_aging_interval: self.priority_aging_interval, terminal_count_rollup_interval: self.terminal_count_rollup_interval, + statistics_refresh_interval: self.statistics_refresh_interval, completed_retention: self.completed_retention, failed_retention: self.failed_retention, descriptor_retention: self.descriptor_retention, @@ -1362,6 +1379,7 @@ pub struct Client { leader_check_interval: Option, priority_aging_interval: Option, terminal_count_rollup_interval: Option, + statistics_refresh_interval: Option, completed_retention: Option, failed_retention: Option, descriptor_retention: Option, @@ -1932,6 +1950,9 @@ impl Client { if let Some(interval) = self.terminal_count_rollup_interval { maintenance = maintenance.terminal_count_rollup_interval(interval); } + if let Some(interval) = self.statistics_refresh_interval { + maintenance = maintenance.statistics_refresh_interval(interval); + } if let Some(retention) = self.completed_retention { maintenance = maintenance.completed_retention(retention); } diff --git a/awa-worker/src/lib.rs b/awa-worker/src/lib.rs index 4768e59bb..f9a171104 100644 --- a/awa-worker/src/lib.rs +++ b/awa-worker/src/lib.rs @@ -17,6 +17,7 @@ pub mod metrics; mod notify_hub; mod output; mod runtime; +mod statistics; mod storage; // Re-exports diff --git a/awa-worker/src/maintenance.rs b/awa-worker/src/maintenance.rs index d84960d37..042936b9a 100644 --- a/awa-worker/src/maintenance.rs +++ b/awa-worker/src/maintenance.rs @@ -1,5 +1,6 @@ use crate::executor::DlqPolicy; use crate::runtime::InFlightMap; +use crate::statistics::{RefreshGuard, StatisticsRefresher}; use crate::storage::{QueueStorageRuntime, RuntimeStorage}; use awa_model::audited_sql; use awa_model::cron::{ @@ -738,6 +739,9 @@ pub struct MaintenanceService { priority_aging_interval: Duration, batch_operations_interval: Duration, terminal_count_rollup_interval: Duration, + /// How often the leader refreshes planner statistics for the queue-storage + /// tables autovacuum never analyses. Zero disables the refresh. + statistics_refresh_interval: Duration, /// How long a descriptor catalog row can sit without being refreshed /// before the maintenance leader deletes it. Zero disables cleanup. /// Default: 30 days. @@ -757,6 +761,8 @@ pub struct MaintenanceService { ring_authority_flip_aware_since: std::sync::Mutex>, } +/// Default cadence of the planner-statistics refresh on the maintenance leader. +pub(crate) const DEFAULT_STATISTICS_REFRESH_INTERVAL: Duration = Duration::from_secs(300); const PROMOTE_BATCH_SIZE: i64 = 4_096; const PROMOTE_MAX_BATCHES_PER_TICK: usize = 32; const CRON_CATCH_UP_LIMIT: usize = 1_000; @@ -817,6 +823,7 @@ impl MaintenanceService { priority_aging_interval: Duration::from_secs(60), batch_operations_interval: Duration::from_secs(1), terminal_count_rollup_interval: Duration::from_secs(30), + statistics_refresh_interval: DEFAULT_STATISTICS_REFRESH_INTERVAL, descriptor_retention: Duration::from_secs(30 * 86400), // 30d ring_authority_auto_flip: true, ring_authority_auto_flip_stable_period: Duration::from_secs(600), // 10min @@ -873,6 +880,14 @@ impl MaintenanceService { self } + /// Set how often the leader runs `ANALYZE` on the queue-storage tables + /// autovacuum never analyses (default: 5 minutes). `Duration::ZERO` + /// disables the refresh. + pub fn statistics_refresh_interval(mut self, interval: Duration) -> Self { + self.statistics_refresh_interval = interval; + self + } + /// How long a descriptor catalog row can go without being re-synced /// before the maintenance leader deletes it (default: 30 days). Set /// to `Duration::ZERO` to disable — useful if you maintain the catalog @@ -1121,6 +1136,7 @@ impl MaintenanceService { cron_eval_cancel.clone(), self.cron_eval_interval, )); + let _statistics_refresh = self.spawn_statistics_refresh(); loop { tokio::select! { @@ -1314,6 +1330,24 @@ impl MaintenanceService { } } + /// Start the planner-statistics refresh for this leadership term. The + /// returned guard stops it when dropped. + fn spawn_statistics_refresh(&self) -> Option { + if self.statistics_refresh_interval.is_zero() { + return None; + } + let runtime = self.storage.queue_storage()?; + Some(RefreshGuard::spawn( + StatisticsRefresher::new( + self.pool.clone(), + runtime.store.schema().to_string(), + self.metrics.clone(), + ), + self.statistics_refresh_interval, + &self.cancel, + )) + } + fn stop_cron_evaluator(cancel: &CancellationToken, task: &JoinHandle<()>) { cancel.cancel(); task.abort(); diff --git a/awa-worker/src/statistics.rs b/awa-worker/src/statistics.rs new file mode 100644 index 000000000..4fe0aab59 --- /dev/null +++ b/awa-worker/src/statistics.rs @@ -0,0 +1,347 @@ +//! Planner-statistics refresh for the queue-storage tables autovacuum never +//! analyses: the two head tables, which stay below the autoanalyze threshold, +//! and the partitioned ring parents, which autovacuum skips entirely. +//! +//! The maintenance leader runs one pass on election and one every interval. +//! Each relation is analysed through `awa.analyze_queue_storage_relation` +//! (migration v053, `SECURITY DEFINER`) in its own short transaction with a +//! bounded `lock_timeout` and `statement_timeout`, so the refresh never holds +//! locks across relations and cannot wait on ring prune for long. + +use crate::metrics::AwaMetrics; +use sqlx::PgPool; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::time::{Duration, Instant}; +use tokio_util::sync::CancellationToken; +use tracing::{debug, warn}; + +/// How long one relation's ANALYZE may wait for a lock before the pass moves +/// on. Ring prune holds `ACCESS EXCLUSIVE` on a slot's children only +/// briefly, so a wait this long means something else holds the table. +const LOCK_TIMEOUT: Duration = Duration::from_secs(2); + +/// Upper bound for one relation. A ring parent analyses in under a few +/// seconds even on a loaded host; this only stops a stuck statement. +const STATEMENT_TIMEOUT: Duration = Duration::from_secs(120); + +const HEAD_TABLES: [&str; 2] = ["queue_claim_heads", "queue_enqueue_heads"]; + +const SQLSTATE_INSUFFICIENT_PRIVILEGE: &str = "42501"; +const SQLSTATE_UNDEFINED_FUNCTION: &str = "42883"; +const SQLSTATE_LOCK_NOT_AVAILABLE: &str = "55P03"; + +/// Which kind of relation an analyse call covered; bounds metric cardinality. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) enum RelationScope { + Heads, + RingParent, +} + +impl RelationScope { + pub(crate) fn as_str(self) -> &'static str { + match self { + RelationScope::Heads => "heads", + RelationScope::RingParent => "ring_parent", + } + } +} + +/// Result of analysing one relation. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) enum AnalyzeOutcome { + Ok, + /// The function owner (or the runtime role, if it cannot execute the + /// function) may not analyse the relation. + SkippedPrivilege, + /// `lock_timeout` expired waiting on a conflicting lock. + SkippedLock, + /// `awa.analyze_queue_storage_relation` is not installed (schema older + /// than v053). + Unavailable, + Failed, +} + +impl AnalyzeOutcome { + pub(crate) fn as_str(self) -> &'static str { + match self { + AnalyzeOutcome::Ok => "ok", + AnalyzeOutcome::SkippedPrivilege => "skipped_privilege", + AnalyzeOutcome::SkippedLock => "skipped_lock", + AnalyzeOutcome::Unavailable => "unavailable", + AnalyzeOutcome::Failed => "failed", + } + } +} + +#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] +pub(crate) struct PassSummary { + pub(crate) ok: usize, + pub(crate) skipped_privilege: usize, + pub(crate) skipped_lock: usize, + pub(crate) unavailable: usize, + pub(crate) failed: usize, +} + +impl PassSummary { + fn record(&mut self, outcome: AnalyzeOutcome) { + match outcome { + AnalyzeOutcome::Ok => self.ok += 1, + AnalyzeOutcome::SkippedPrivilege => self.skipped_privilege += 1, + AnalyzeOutcome::SkippedLock => self.skipped_lock += 1, + AnalyzeOutcome::Unavailable => self.unavailable += 1, + AnalyzeOutcome::Failed => self.failed += 1, + } + } +} + +/// Refreshes planner statistics for one queue-storage schema. +pub(crate) struct StatisticsRefresher { + pool: PgPool, + schema: String, + metrics: AwaMetrics, + warned_privilege: AtomicBool, + warned_unavailable: AtomicBool, +} + +impl StatisticsRefresher { + pub(crate) fn new(pool: PgPool, schema: String, metrics: AwaMetrics) -> Self { + Self { + pool, + schema, + metrics, + warned_privilege: AtomicBool::new(false), + warned_unavailable: AtomicBool::new(false), + } + } + + /// Run a pass now and then every `interval` until `cancel` fires. + pub(crate) async fn run(&self, interval: Duration, cancel: CancellationToken) { + let mut timer = tokio::time::interval(interval); + timer.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Delay); + loop { + tokio::select! { + _ = cancel.cancelled() => return, + _ = timer.tick() => { + tokio::select! { + _ = cancel.cancelled() => return, + _ = self.run_pass() => {} + } + } + } + } + } + + /// Analyse the head tables, then every partitioned table of the schema. + pub(crate) async fn run_pass(&self) -> PassSummary { + let started = Instant::now(); + let mut summary = PassSummary::default(); + + match awa_model::storage::queue_storage_schema_ready(&self.pool, &self.schema).await { + Ok(true) => {} + Ok(false) => { + debug!(schema = %self.schema, "Queue-storage schema is not prepared yet; skipping statistics refresh"); + return summary; + } + Err(err) => { + warn!(error = %err, schema = %self.schema, "Could not check the queue-storage schema for statistics refresh"); + self.record( + RelationScope::RingParent, + AnalyzeOutcome::Failed, + started.elapsed(), + ); + summary.record(AnalyzeOutcome::Failed); + return summary; + } + } + + let ring_parents = match self.ring_parents().await { + Ok(parents) => parents, + Err(err) => { + warn!(error = %err, schema = %self.schema, "Could not list ring tables for statistics refresh"); + self.record( + RelationScope::RingParent, + AnalyzeOutcome::Failed, + started.elapsed(), + ); + summary.record(AnalyzeOutcome::Failed); + Vec::new() + } + }; + + let targets = HEAD_TABLES + .iter() + .map(|name| (RelationScope::Heads, (*name).to_string())) + .chain( + ring_parents + .into_iter() + .map(|name| (RelationScope::RingParent, name)), + ); + + for (scope, relation) in targets { + let relation_started = Instant::now(); + let outcome = self.analyze_relation(&relation).await; + self.record(scope, outcome, relation_started.elapsed()); + summary.record(outcome); + } + + debug!( + schema = %self.schema, + elapsed_ms = started.elapsed().as_millis() as u64, + ok = summary.ok, + skipped_privilege = summary.skipped_privilege, + skipped_lock = summary.skipped_lock, + unavailable = summary.unavailable, + failed = summary.failed, + "Planner statistics refresh finished" + ); + summary + } + + fn record(&self, scope: RelationScope, outcome: AnalyzeOutcome, elapsed: Duration) { + self.metrics + .record_statistics_analyze(scope.as_str(), outcome.as_str(), elapsed); + } + + async fn ring_parents(&self) -> Result, sqlx::Error> { + sqlx::query_scalar( + r#" + SELECT class.relname::text + FROM pg_class AS class + JOIN pg_namespace AS namespace ON namespace.oid = class.relnamespace + WHERE namespace.nspname = $1 AND class.relkind = 'p' + ORDER BY class.relname + "#, + ) + .bind(&self.schema) + .fetch_all(&self.pool) + .await + } + + async fn analyze_relation(&self, relation: &str) -> AnalyzeOutcome { + match self.call_analyze_function(relation).await { + Ok(status) => match status.as_str() { + "analyzed" => AnalyzeOutcome::Ok, + "skipped_privilege" => { + self.warn_privilege_once( + relation, + "the owner of awa.analyze_queue_storage_relation() may not ANALYZE this table; \ + run migrations as the role that owns the queue-storage tables, or grant the \ + function owner MAINTAIN on them (PostgreSQL 17+)", + ); + AnalyzeOutcome::SkippedPrivilege + } + // The relation is not part of this schema's shape; nothing to analyse. + "missing" => AnalyzeOutcome::Ok, + other => { + warn!( + status = other, + relation, "Unexpected statistics refresh status" + ); + AnalyzeOutcome::Failed + } + }, + Err(err) => self.classify_error(relation, &err), + } + } + + async fn call_analyze_function(&self, relation: &str) -> Result { + let mut tx = self.pool.begin().await?; + sqlx::query( + "SELECT set_config('lock_timeout', $1, true), set_config('statement_timeout', $2, true)", + ) + .bind(format!("{}ms", LOCK_TIMEOUT.as_millis())) + .bind(format!("{}ms", STATEMENT_TIMEOUT.as_millis())) + .execute(&mut *tx) + .await?; + let status: String = + sqlx::query_scalar("SELECT awa.analyze_queue_storage_relation($1, $2)") + .bind(&self.schema) + .bind(relation) + .fetch_one(&mut *tx) + .await?; + tx.commit().await?; + Ok(status) + } + + fn classify_error(&self, relation: &str, err: &sqlx::Error) -> AnalyzeOutcome { + let code = match err { + sqlx::Error::Database(db_err) => db_err.code().map(|code| code.into_owned()), + _ => None, + }; + match code.as_deref() { + Some(SQLSTATE_LOCK_NOT_AVAILABLE) => { + debug!( + relation, + "Statistics refresh timed out waiting for a lock; retrying next interval" + ); + AnalyzeOutcome::SkippedLock + } + Some(SQLSTATE_UNDEFINED_FUNCTION) => { + if !self.warned_unavailable.swap(true, Ordering::Relaxed) { + warn!( + schema = %self.schema, + "Planner statistics refresh is disabled: awa.analyze_queue_storage_relation() \ + is missing. Run `awa migrate` (schema v053 or later) to install it" + ); + } + AnalyzeOutcome::Unavailable + } + Some(SQLSTATE_INSUFFICIENT_PRIVILEGE) => { + self.warn_privilege_once( + relation, + "the runtime role may not execute awa.analyze_queue_storage_relation(); \ + GRANT EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(text, text) to it", + ); + AnalyzeOutcome::SkippedPrivilege + } + _ => { + warn!(relation, error = %err, "Planner statistics refresh failed for relation"); + AnalyzeOutcome::Failed + } + } + } + + fn warn_privilege_once(&self, relation: &str, missing: &str) { + if self.warned_privilege.swap(true, Ordering::Relaxed) { + return; + } + warn!( + schema = %self.schema, + relation, + "Planner statistics refresh skipped: {missing}. Set the statistics refresh \ + interval to zero to disable the refresh" + ); + } +} + +/// Stops the refresh task when the maintenance leader loses leadership or +/// shuts down. +pub(crate) struct RefreshGuard { + cancel: CancellationToken, +} + +impl RefreshGuard { + pub(crate) fn spawn( + refresher: StatisticsRefresher, + interval: Duration, + parent: &CancellationToken, + ) -> Self { + let cancel = parent.child_token(); + let task_cancel = cancel.clone(); + tokio::spawn(async move { + debug!( + schema = %refresher.schema, + interval_s = interval.as_secs(), + "Planner statistics refresh started" + ); + refresher.run(interval, task_cancel).await; + }); + Self { cancel } + } +} + +impl Drop for RefreshGuard { + fn drop(&mut self) { + self.cancel.cancel(); + } +} diff --git a/awa/tests/statistics_refresh_test.rs b/awa/tests/statistics_refresh_test.rs new file mode 100644 index 000000000..829aa3ea8 --- /dev/null +++ b/awa/tests/statistics_refresh_test.rs @@ -0,0 +1,561 @@ +//! The maintenance leader refreshes planner statistics for the queue-storage +//! tables autovacuum never analyses (the head tables and the partitioned ring +//! parents) on election and every interval, without delaying ring prune. + +use awa::model::{migrations, PruneOutcome, QueueStorage, QueueStorageConfig, RotateOutcome}; +use awa::{audited_sql, Client, JobContext, JobError, JobResult, QueueConfig, Worker}; +use opentelemetry::KeyValue; +use opentelemetry_sdk::metrics::data::{AggregatedMetrics, MetricData}; +use opentelemetry_sdk::metrics::{InMemoryMetricExporter, SdkMeterProvider}; +use sqlx::postgres::{PgConnectOptions, PgPoolOptions}; +use sqlx::PgPool; +use std::str::FromStr; +use std::sync::atomic::{AtomicU32, Ordering}; +use std::time::{Duration, Instant}; + +const ROLE_PASSWORD: &str = "statistics_refresh_test"; +const RING_PARENTS: [&str; 13] = [ + "done_entries", + "lease_claim_batches", + "lease_claim_closure_batches", + "lease_claim_closures", + "lease_claims", + "leases", + "queue_terminal_count_deltas", + "ready_claim_attempt_batches", + "ready_entries", + "ready_segments", + "ready_tombstones", + "receipt_completion_batches", + "receipt_completion_tombstones", +]; + +static DATABASE_COUNTER: AtomicU32 = AtomicU32::new(0); + +fn base_database_url() -> String { + std::env::var("DATABASE_URL") + .unwrap_or_else(|_| "postgres://postgres:test@localhost:15432/awa_test".to_string()) +} + +struct StatisticsProbeWorker; + +#[async_trait::async_trait] +impl Worker for StatisticsProbeWorker { + fn kind(&self) -> &'static str { + "statistics_probe_job" + } + + async fn perform(&self, _ctx: &JobContext) -> Result { + Ok(JobResult::Completed) + } +} + +/// A throwaway database with the awa schema migrated, optionally owned by a +/// non-superuser role the way a production schema owner is. +struct TestDatabase { + admin: PgPool, + name: String, + roles: Vec, + options: PgConnectOptions, + /// Connects as the schema owner (or the superuser when no owner role). + owner_pool: PgPool, +} + +impl TestDatabase { + async fn create(owner_role: Option<&str>, extra_roles: &[&str]) -> Self { + let admin = PgPoolOptions::new() + .max_connections(2) + .connect(&base_database_url()) + .await + .expect("connect admin pool"); + let name = format!( + "awa_stats_{}_{}", + std::process::id(), + DATABASE_COUNTER.fetch_add(1, Ordering::SeqCst) + ); + let mut roles = Vec::new(); + for role in owner_role.iter().chain(extra_roles.iter()) { + sqlx::raw_sql(audited_sql(format!( + "DROP ROLE IF EXISTS {role}; CREATE ROLE {role} LOGIN PASSWORD '{ROLE_PASSWORD}'" + ))) + .execute(&admin) + .await + .expect("create role"); + roles.push((*role).to_string()); + } + let owner_clause = owner_role + .map(|role| format!(" OWNER {role}")) + .unwrap_or_default(); + sqlx::raw_sql(audited_sql(format!("CREATE DATABASE {name}{owner_clause}"))) + .execute(&admin) + .await + .expect("create database"); + let options = PgConnectOptions::from_str(&base_database_url()) + .expect("parse DATABASE_URL") + .database(&name); + let owner_options = match owner_role { + Some(role) => options.clone().username(role).password(ROLE_PASSWORD), + None => options.clone(), + }; + let owner_pool = PgPoolOptions::new() + .max_connections(8) + .connect_with(owner_options) + .await + .expect("connect owner pool"); + migrations::run(&owner_pool).await.expect("run migrations"); + Self { + admin, + name, + roles, + options, + owner_pool, + } + } + + /// A pool for a role other than the schema owner, with the runtime grants + /// from the database-roles guide. + async fn runtime_pool(&self, role: &str) -> PgPool { + sqlx::raw_sql(audited_sql(format!( + r#" + GRANT USAGE ON SCHEMA awa TO {role}; + GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA awa TO {role}; + GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA awa TO {role}; + GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA awa TO {role}; + REVOKE EXECUTE ON FUNCTION + awa.install_queue_storage_substrate(TEXT, INT, INT, INT, BOOLEAN) FROM {role}; + "# + ))) + .execute(&self.owner_pool) + .await + .expect("grant runtime privileges"); + PgPoolOptions::new() + .max_connections(8) + .connect_with(self.options.clone().username(role).password(ROLE_PASSWORD)) + .await + .expect("connect runtime pool") + } + + async fn drop(self) { + self.owner_pool.close().await; + let _ = sqlx::raw_sql(audited_sql(format!( + "DROP DATABASE IF EXISTS {} WITH (FORCE)", + self.name + ))) + .execute(&self.admin) + .await; + for role in &self.roles { + let _ = sqlx::raw_sql(audited_sql(format!("DROP ROLE IF EXISTS {role}"))) + .execute(&self.admin) + .await; + } + self.admin.close().await; + } +} + +async fn wait_for(what: &str, timeout: Duration, mut check: F) +where + F: FnMut() -> Fut, + Fut: std::future::Future, +{ + let deadline = Instant::now() + timeout; + while Instant::now() < deadline { + if check().await { + return; + } + tokio::time::sleep(Duration::from_millis(100)).await; + } + panic!("timed out waiting for {what}"); +} + +async fn stats_rows(pool: &PgPool, schema: &str, table: &str, inherited_only: bool) -> i64 { + sqlx::query_scalar( + "SELECT count(*) FROM pg_stats + WHERE schemaname = $1 AND tablename = $2 AND (inherited OR NOT $3)", + ) + .bind(schema) + .bind(table) + .bind(inherited_only) + .fetch_one(pool) + .await + .expect("read pg_stats") +} + +async fn parent_reltuples(pool: &PgPool, schema: &str, table: &str) -> f32 { + sqlx::query_scalar("SELECT reltuples FROM pg_class WHERE oid = to_regclass($1)") + .bind(format!("{schema}.{table}")) + .fetch_one(pool) + .await + .expect("read reltuples") +} + +async fn analyze_count(pool: &PgPool, schema: &str, table: &str) -> i64 { + sqlx::query_scalar( + "SELECT COALESCE(analyze_count, 0)::bigint FROM pg_stat_user_tables + WHERE schemaname = $1 AND relname = $2", + ) + .bind(schema) + .bind(table) + .fetch_one(pool) + .await + .expect("read analyze_count") +} + +fn probe_client( + pool: PgPool, + statistics_interval: Duration, + storage: Option, +) -> Client { + let mut builder = Client::builder(pool) + .queue( + "statistics_probe", + QueueConfig { + max_workers: 1, + poll_interval: Duration::from_millis(100), + ..QueueConfig::default() + }, + ) + .register_worker(StatisticsProbeWorker) + .leader_election_interval(Duration::from_millis(100)) + .leader_check_interval(Duration::from_millis(100)) + .statistics_refresh_interval(statistics_interval); + if let Some(config) = storage { + builder = builder + .queue_storage(config, Duration::from_secs(600), Duration::from_secs(600)) + .claim_rotate_interval(Duration::from_secs(600)); + } + builder.build().expect("build client") +} + +async fn seed_ready_rows(store: &QueueStorage, pool: &PgPool, rows_per_queue: i64) { + for queue in ["stats_a", "stats_b", "stats_c"] { + store + .enqueue_batch(pool, queue, 2, rows_per_queue) + .await + .expect("enqueue rows"); + } +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn leader_refreshes_statistics_on_election_and_every_interval() { + let database = TestDatabase::create(None, &[]).await; + let pool = &database.owner_pool; + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage config"); + seed_ready_rows(&store, pool, 200).await; + + assert_eq!(stats_rows(pool, "awa", "queue_claim_heads", false).await, 0); + assert_eq!( + stats_rows(pool, "awa", "queue_enqueue_heads", false).await, + 0 + ); + assert_eq!(stats_rows(pool, "awa", "ready_entries", true).await, 0); + assert!(parent_reltuples(pool, "awa", "ready_entries").await < 0.0); + + let client = probe_client(pool.clone(), Duration::from_secs(1), None); + client.start().await.expect("start client"); + + wait_for( + "first statistics pass on election", + Duration::from_secs(30), + || async { + stats_rows(pool, "awa", "queue_claim_heads", false).await > 0 + && stats_rows(pool, "awa", "queue_enqueue_heads", false).await > 0 + && stats_rows(pool, "awa", "ready_entries", true).await > 0 + }, + ) + .await; + let partitioned: Vec = sqlx::query_scalar( + "SELECT relname::text FROM pg_class + WHERE relnamespace = 'awa'::regnamespace AND relkind = 'p' ORDER BY relname", + ) + .fetch_all(pool) + .await + .expect("list partitioned tables"); + assert_eq!( + partitioned, RING_PARENTS, + "the refresh covers every ring parent" + ); + wait_for( + "every ring parent analysed", + Duration::from_secs(30), + || async { + for parent in RING_PARENTS { + if analyze_count(pool, "awa", parent).await < 1 { + return false; + } + } + true + }, + ) + .await; + let first_tuples = parent_reltuples(pool, "awa", "ready_entries").await; + assert!( + (550.0..=650.0).contains(&first_tuples), + "parent reltuples after the first pass: {first_tuples}" + ); + + seed_ready_rows(&store, pool, 2_000).await; + wait_for( + "a later pass to see the new rows", + Duration::from_secs(30), + || async { parent_reltuples(pool, "awa", "ready_entries").await > 5_000.0 }, + ) + .await; + assert!(analyze_count(pool, "awa", "ready_entries").await >= 2); + assert!(analyze_count(pool, "awa", "queue_claim_heads").await >= 2); + + client.shutdown(Duration::from_secs(5)).await; + database.drop().await; +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn zero_interval_disables_the_refresh() { + let database = TestDatabase::create(None, &[]).await; + let pool = &database.owner_pool; + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage config"); + seed_ready_rows(&store, pool, 100).await; + + let client = probe_client(pool.clone(), Duration::ZERO, None); + client.start().await.expect("start client"); + wait_for("leadership", Duration::from_secs(10), || async { + client.health_check().await.maintenance_alive + }) + .await; + tokio::time::sleep(Duration::from_secs(3)).await; + + assert_eq!(stats_rows(pool, "awa", "queue_claim_heads", false).await, 0); + assert_eq!(stats_rows(pool, "awa", "ready_entries", true).await, 0); + + client.shutdown(Duration::from_secs(5)).await; + database.drop().await; +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn non_owner_runtime_role_refreshes_statistics() { + let suffix = uuid::Uuid::new_v4().simple().to_string(); + let owner = format!("stats_owner_{suffix}"); + let runtime = format!("stats_runtime_{suffix}"); + let database = TestDatabase::create(Some(&owner), &[&runtime]).await; + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage config"); + seed_ready_rows(&store, &database.owner_pool, 200).await; + let runtime_pool = database.runtime_pool(&runtime).await; + + let is_superuser_or_owner: bool = sqlx::query_scalar( + "SELECT rolsuper OR pg_has_role(current_user, 'pg_maintain', 'USAGE') + OR has_table_privilege('awa.queue_claim_heads', 'MAINTAIN') + OR (SELECT relowner = (SELECT oid FROM pg_roles WHERE rolname = current_user) + FROM pg_class WHERE oid = 'awa.queue_claim_heads'::regclass) + FROM pg_roles WHERE rolname = current_user", + ) + .fetch_one(&runtime_pool) + .await + .expect("check runtime role privileges"); + assert!( + !is_superuser_or_owner, + "the runtime role must not be able to analyse the tables itself" + ); + + let client = probe_client(runtime_pool.clone(), Duration::from_secs(1), None); + client + .start() + .await + .expect("start client as the runtime role"); + wait_for( + "statistics written through a non-owner role", + Duration::from_secs(30), + || async { + stats_rows(&database.owner_pool, "awa", "queue_claim_heads", false).await > 0 + && stats_rows(&database.owner_pool, "awa", "ready_entries", true).await > 0 + }, + ) + .await; + + client.shutdown(Duration::from_secs(5)).await; + runtime_pool.close().await; + database.drop().await; +} + +fn sum_by_outcome( + resource_metrics: &[opentelemetry_sdk::metrics::data::ResourceMetrics], + outcome: &str, +) -> u64 { + let mut total = 0; + for resource in resource_metrics { + for scope in resource.scope_metrics() { + for metric in scope.metrics() { + if metric.name() != "awa.maintenance.analyze.attempts" { + continue; + } + if let AggregatedMetrics::U64(MetricData::Sum(sum)) = metric.data() { + total += sum + .data_points() + .filter(|point| { + point.attributes().any(|KeyValue { key, value, .. }| { + key.as_str() == "awa.analyze.outcome" && value.as_str() == outcome + }) + }) + .map(|point| point.value()) + .sum::(); + } + } + } + } + total +} + +/// A refresh that cannot run is recorded and leaves the runtime healthy: the +/// helper's owner may not analyse the tables, or the schema predates the +/// helper. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn unrunnable_refresh_is_recorded_and_does_not_fail_the_runtime() { + let exporter = InMemoryMetricExporter::default(); + let provider = SdkMeterProvider::builder() + .with_periodic_exporter(exporter.clone()) + .build(); + opentelemetry::global::set_meter_provider(provider.clone()); + + let suffix = uuid::Uuid::new_v4().simple().to_string(); + let owner = format!("stats_owner_{suffix}"); + let helper = format!("stats_helper_{suffix}"); + let database = TestDatabase::create(Some(&owner), &[&helper]).await; + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage config"); + seed_ready_rows(&store, &database.owner_pool, 50).await; + + // The function now runs as a role that owns nothing and holds no MAINTAIN. + sqlx::raw_sql(audited_sql(format!("GRANT {helper} TO {owner}"))) + .execute(&database.admin) + .await + .expect("let the schema owner hand over the function"); + sqlx::raw_sql(audited_sql(format!( + "GRANT USAGE, CREATE ON SCHEMA awa TO {helper}; + ALTER FUNCTION awa.analyze_queue_storage_relation(text, text) OWNER TO {helper}" + ))) + .execute(&database.owner_pool) + .await + .expect("hand the helper to an unprivileged role"); + + let client = probe_client( + database.owner_pool.clone(), + Duration::from_millis(200), + None, + ); + client.start().await.expect("start client"); + wait_for("a skipped pass", Duration::from_secs(30), || async { + provider.force_flush().expect("flush metrics"); + let metrics = exporter.get_finished_metrics().expect("read metrics"); + sum_by_outcome(&metrics, "skipped_privilege") > 0 + }) + .await; + assert_eq!( + stats_rows(&database.owner_pool, "awa", "queue_claim_heads", false).await, + 0, + "a skipped pass writes no statistics" + ); + assert!(client.health_check().await.healthy); + client.shutdown(Duration::from_secs(5)).await; + + // A schema that predates the helper skips the same way. + sqlx::raw_sql("DROP FUNCTION awa.analyze_queue_storage_relation(text, text)") + .execute(&database.owner_pool) + .await + .expect("drop the helper"); + let client = probe_client( + database.owner_pool.clone(), + Duration::from_millis(200), + None, + ); + client + .start() + .await + .expect("start client without the helper"); + wait_for("an unavailable pass", Duration::from_secs(30), || async { + provider.force_flush().expect("flush metrics"); + let metrics = exporter.get_finished_metrics().expect("read metrics"); + sum_by_outcome(&metrics, "unavailable") > 0 + }) + .await; + assert!(client.health_check().await.healthy); + client.shutdown(Duration::from_secs(5)).await; + + provider.force_flush().expect("flush metrics"); + let metrics = exporter.get_finished_metrics().expect("read metrics"); + assert_eq!(sum_by_outcome(&metrics, "failed"), 0); + database.drop().await; +} + +/// Back-to-back statistics passes (a far higher duty cycle than the default +/// five-minute interval) run while rotation and prune cycle the ring: prune +/// keeps reclaiming slots and only defers an attempt that lands while ANALYZE +/// is sampling the slot's tables. +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +async fn statistics_refresh_does_not_stop_prune_reclaiming_slots() { + let database = TestDatabase::create(None, &[]).await; + let pool = &database.owner_pool; + let schema = "awa_stats_ring"; + let config = QueueStorageConfig { + schema: schema.to_string(), + queue_slot_count: 4, + lease_slot_count: 2, + claim_slot_count: 2, + lease_claim_receipts: false, + ..Default::default() + }; + let store = QueueStorage::new(config.clone()).expect("queue storage config"); + store.prepare_schema(pool).await.expect("prepare schema"); + + let queue = "statistics_ring"; + let analyze_before = analyze_count(pool, schema, "ready_entries").await; + let client = probe_client(pool.clone(), Duration::from_millis(1), Some(config)); + client.start().await.expect("start client"); + + let (mut pruned, mut deferred) = (0_u32, 0_u32); + let started = Instant::now(); + for _ in 0..60 { + store + .enqueue_batch(pool, queue, 1, 600) + .await + .expect("enqueue"); + loop { + let claims = store.claim_batch(pool, queue, 600).await.expect("claim"); + if claims.is_empty() { + break; + } + store.complete_batch(pool, &claims).await.expect("complete"); + } + match store.rotate(pool).await.expect("rotate") { + RotateOutcome::Rotated { .. } | RotateOutcome::SkippedBusy { .. } => {} + other => panic!("unexpected rotate outcome {other:?}"), + } + match store + .prune_oldest(pool, Duration::ZERO) + .await + .expect("prune never errors under ANALYZE") + { + PruneOutcome::Pruned { .. } => pruned += 1, + PruneOutcome::Blocked { .. } => deferred += 1, + PruneOutcome::Noop | PruneOutcome::SkippedActive { .. } => {} + } + if started.elapsed() > Duration::from_secs(60) { + break; + } + } + let passes = analyze_count(pool, schema, "ready_entries").await - analyze_before; + eprintln!("prune under ANALYZE: pruned={pruned} deferred={deferred} analyze_passes={passes}"); + + client.shutdown(Duration::from_secs(5)).await; + assert!( + passes >= 3, + "the refresh ran {passes} times during the loop" + ); + assert!(pruned >= 20, "prune reclaimed {pruned} slots"); + + // With the refresh stopped, the oldest sealed slot reclaims immediately. + store.rotate(pool).await.expect("rotate"); + assert!(!matches!( + store + .prune_oldest(pool, Duration::ZERO) + .await + .expect("prune"), + PruneOutcome::Blocked { .. } + )); + database.drop().await; +} diff --git a/docs/architecture.md b/docs/architecture.md index d3c527f61..388a133a5 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -215,6 +215,8 @@ Queue storage has three independent rings, each advanced by the elected maintena The maintenance tick for each ring is deliberately small: attempt one rotate, then attempt one prune. If a partition is busy, blocked by a lock, current, or still live, the tick records a skipped/blocked outcome and tries again on a future interval. +The leader also refreshes planner statistics on the two head tables and the ring parents when it is elected and every five minutes ([Planner statistics](configuration.md#planner-statistics)): autovacuum never analyses partitioned tables or reaches its threshold on the head tables. It runs beside the ring ticks rather than in them, so a slow `ANALYZE` never delays a rotate or prune tick. + The maintenance tick decides whether to seal the current slot. `ClientBuilder::ring_rotation_cadence` configures `RingRotationCadence`: a non-empty slot becomes eligible after `min_slot_age` since the maintenance store first observed rows (default 5 s) once it holds at least `min_slot_rows` (default 256, sampled with a bounded probe), when total physical storage reaches `target_slot_bytes` (default 2 MiB), or after `max_slot_age` (default 60 s) regardless of rows. At a trickle of writes a slot therefore seals about once a minute instead of every window. The minimum age uses a local monotonic clock: an empty observation clears the timer, and a newly elected leader starts a fresh window. `max_slot_age` also counts from the slot's `rotated_at` in the rotation ledger, on the database clock, so frequent leader changes cannot keep a trickle slot open past it. Under compat (pre-flip) authority an older rotator can leave the current generation without a ledger row; the ceiling then relies on the local observation, which a leader change restarts. The size measurement includes heap, indexes, TOAST, free-space maps and visibility maps. `RingRotationCadence::EAGER` restores eligibility on every tick. Queue pruning queues a bounded exclusive-lock request on routing metadata first, then acquires every other child with `NOWAIT`. Contention rolls back the attempt and retries next tick; active-data skip gates retain their backoff. This lets segment-first claim readers and entry-first producers finish without a prune lock cycle. It does not guarantee progress under perpetual contention. diff --git a/docs/configuration.md b/docs/configuration.md index 930bc6bde..6db6cec59 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -508,6 +508,7 @@ DLQ rows are different: `dlq_entries` is a separate hold table and the maintenan | `cleanup_batch_size` | `1000` | Max rows deleted per pass. Raise for very high throughput; lower if you want gentler IO. | | `dlq_cleanup_batch_size` | `1000` | DLQ-specific batch size. | | `ClientBuilder::terminal_count_rollup_interval` (Rust) / `terminal_count_rollup_interval_ms` (Python kwarg) | `30s` | Queue storage only: how often maintenance folds pending `done_entries` terminal-count deltas for sealed queue slots into compact live counters. Exact reads include pending deltas and retained compact receipt batches, so this affects compaction/WAL pressure rather than correctness. | +| `ClientBuilder::statistics_refresh_interval` (Rust) / `statistics_refresh_interval_ms` (Python kwarg) | `5m` | Queue storage only: how often the maintenance leader runs `ANALYZE` on the two head tables and the partitioned ring parents, which autovacuum never analyses; also run once when a runtime becomes leader. `0` disables it. See [Planner statistics](#planner-statistics). | ## Queue storage tuning @@ -531,6 +532,16 @@ The maintenance leader folds pending `done_entries` deltas from sealed queue slo Raising the interval reduces folded-counter churn but leaves more pending delta rows for exact reads to sum. Lowering it folds counters sooner, which can help if exact-count reads are frequent and the `done_entries` delta ledger is growing faster than maintenance drains it. Under long reader transactions, lowering the interval does not force rollup; the useful fix is to release the pinned snapshot or let queue prune reclaim the whole sealed segment. Compact receipt successes are already retained as compact batch rows, so this interval does not change their hot-path write count. +### Planner statistics + +Autovacuum does not analyse partitioned tables, so the ring parents (`ready_entries`, `done_entries`, `leases`, and the other ten partitioned tables of the schema) have no inherited statistics. It also never reaches its analyze threshold on `queue_claim_heads` and `queue_enqueue_heads`, which hold a few rows per lane, so the planner prices joins against them at its defaults. Admin and metrics queries that join retained ready rows to the heads tables then pick plans for a few hundred rows while reading hundreds of thousands. + +The maintenance leader runs `ANALYZE` on both when it is elected and every `statistics_refresh_interval` (default `5m`). One pass takes well under a second on a small ring and a few seconds on a ring with millions of retained rows. It has no measurable effect on claim or completion throughput. + +- **Locks.** Each relation is analysed in its own transaction with a 2 s `lock_timeout` and a 120 s `statement_timeout`. Children that ring prune holds are skipped (`SKIP_LOCKED`). Prune never waits for the refresh: its own 10 ms lock timeout applies, so an attempt that lands while `ANALYZE` samples the oldest slot's tables returns `blocked` and retries on its usual backoff. `ANALYZE` of a partitioned table samples every child, so that window cannot be avoided. +- **Privileges.** The refresh calls `awa.analyze_queue_storage_relation(schema, relation)` (schema v053), a `SECURITY DEFINER` function owned by the role that ran the migration, so the runtime role needs no `MAINTAIN` grant and does not have to own the tables. If the function is missing (run `awa migrate`) or its owner may not analyse the tables, the leader logs one warning that names what is missing and skips the pass; job processing is unaffected. +- **Metrics.** `awa.maintenance.analyze.attempts` and `awa.maintenance.analyze.duration`, by `awa.analyze.scope` (`heads`, `ring_parent`) and `awa.analyze.outcome` (`ok`, `skipped_privilege`, `skipped_lock`, `unavailable`, `failed`). A sustained `skipped_lock` rate means something else holds the tables; any `skipped_privilege` or `unavailable` means the refresh is not running. + ### Rust ```rust diff --git a/docs/grafana/README.md b/docs/grafana/README.md index 0ca4ed331..4b8fa278a 100644 --- a/docs/grafana/README.md +++ b/docs/grafana/README.md @@ -207,6 +207,8 @@ In Prometheus they appear under the OpenTelemetry [OTLP-to-Prometheus translatio | `awa.maintenance.rescues` | Counter | rescue_kind | Jobs rescued | | `awa.maintenance.prune.attempts` | Counter | ring, outcome, reason | Ring prune outcomes, including destructive `pruned` and no-DDL `already_pruned` | | `awa.maintenance.prune.duration` | Histogram (s) | ring, phase | Successful destructive prune time split into `lock`, `truncate`, and `commit` | +| `awa.maintenance.analyze.attempts` | Counter | scope, outcome | Planner-statistics `ANALYZE` calls on the head tables and ring parents (`ok`, `skipped_privilege`, `skipped_lock`, `unavailable`, `failed`) | +| `awa.maintenance.analyze.duration` | Histogram (s) | scope, outcome | Duration of one planner-statistics `ANALYZE` call | ### Heartbeat diff --git a/docs/security/database-roles.md b/docs/security/database-roles.md index b6c1557e9..2e2d19a60 100644 --- a/docs/security/database-roles.md +++ b/docs/security/database-roles.md @@ -63,6 +63,12 @@ ALTER DEFAULT PRIVILEGES FOR ROLE awa_owner IN SCHEMA awa If an existing installation created objects as `awa_migrator` without first setting the owner role, transfer every existing schema object to `awa_owner` before relying on owner-scoped defaults. New migrations should use the effective-role command above. +## Planner statistics + +The maintenance leader runs `ANALYZE` on the queue-storage head tables and partitioned ring parents (see [Planner statistics](../configuration.md#planner-statistics)). `ANALYZE` skips a table its caller may not analyse, so a runtime that does not own the tables cannot do this itself; the leader calls `awa.analyze_queue_storage_relation(schema, relation)` instead, a `SECURITY DEFINER` function from migration v053 owned by whichever role ran the migration. Nothing is needed beyond the grants above: the function is executable by `PUBLIC`, and the runtime does not need `MAINTAIN`. + +Run migrations with the schema owner as the effective role, as shown above, so the function's owner owns the tables. A function owned by a role that may not analyse them (it is not the table owner, the database owner, or a `MAINTAIN` holder) makes every pass report `skipped_privilege` and logs one warning. The function only analyses a head table or partitioned table of a schema that `awa.queue_storage_schemas()` reports as trusted, and `ANALYZE` changes statistics only. + ## Provision queues before starting restricted runtimes From schema v049, runtime calls use existing lane sequences without issuing diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 0afc48afb..50f6cc587 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -253,6 +253,22 @@ workers report not ready until the migration runs, as for any version bump. External migration runners apply the complete `awa migrate --sql --from 51 --to 52` bundle, which defines the helper before the tail calls it. +## v053: planner statistics helper + +v053 adds `awa.analyze_queue_storage_relation(schema, relation)`, a +`SECURITY DEFINER` function owned by the migration role that lets the +maintenance leader refresh planner statistics for the head tables and ring +parents when the runtime role does not own them (see +[Planner statistics](configuration.md#planner-statistics)). It creates one +function and grants `EXECUTE` to `PUBLIC`; it takes no lock on any table and +completes in milliseconds. Run the migration as the schema owner so the +function's owner owns the tables. + +Binaries before v053 never call it. A 0.7 binary running before the migration +logs once that the function is missing and skips the refresh; the +`awa.maintenance.analyze.attempts` counter reports `unavailable`. External +migration runners apply the `awa migrate --sql --from 52 --to 53` bundle. + ## The one gate `awa migrate` on a 0.7 binary refuses to apply migrations unless one of these holds: diff --git a/skills/awa-operations/SKILL.md b/skills/awa-operations/SKILL.md index 4cfb039b0..90ad16015 100644 --- a/skills/awa-operations/SKILL.md +++ b/skills/awa-operations/SKILL.md @@ -135,7 +135,8 @@ processes. Exactly one worker per database is the elected maintenance leader (session-scoped advisory lock — if it dies, another is elected on the next tick). The leader alone runs cluster-wide scans: deferred→ready promotion, the three rescue paths (stale-heartbeat, hard-deadline, callback-timeout), ring -rotation and prune, DLQ and descriptor cleanup, and cron evaluation. During an +rotation and prune, planner-statistics refresh, DLQ and descriptor cleanup, and +cron evaluation. During an unfinalized transition it promotes both planes' deferred backlogs, so drain and post-flip execution do not depend on which runtime holds leadership. Every worker dispatches and heartbeats its own attempts. There is no `pg_cron` or @@ -313,6 +314,16 @@ storage limit. Queue prune lock contention retries on the next decision tick; active-data gates retain exponential backoff. Persistent contention can still stall reclamation. See `docs/configuration.md` for the scheduling contract. +On queue storage the leader runs `ANALYZE` on `queue_claim_heads`, +`queue_enqueue_heads` and the partitioned ring parents when elected and every +`statistics_refresh_interval` (default 5 minutes; Python +`statistics_refresh_interval_ms`; zero disables), because autovacuum never +analyses them. It goes through the `SECURITY DEFINER` function +`awa.analyze_queue_storage_relation` from migration v053, so a non-owner runtime +role needs no `MAINTAIN` grant. Watch `awa.maintenance.analyze.attempts`: any +`skipped_privilege` or `unavailable` means it is not running (run `awa migrate` +as the schema owner). See `docs/configuration.md#planner-statistics`. + ## Managed Postgres Prefer PostgreSQL 18 where available; PG17 on some managed platforms caps From 9e4517caf8de13612c7c31938c56b1880a3ca1df Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 10:10:24 +1300 Subject: [PATCH 30/48] test(worker): wait for the last ANALYZE before asserting prune is unblocked --- awa/tests/statistics_refresh_test.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/awa/tests/statistics_refresh_test.rs b/awa/tests/statistics_refresh_test.rs index 829aa3ea8..7215fcf53 100644 --- a/awa/tests/statistics_refresh_test.rs +++ b/awa/tests/statistics_refresh_test.rs @@ -548,7 +548,24 @@ async fn statistics_refresh_does_not_stop_prune_reclaiming_slots() { ); assert!(pruned >= 20, "prune reclaimed {pruned} slots"); - // With the refresh stopped, the oldest sealed slot reclaims immediately. + // Shutdown can leave one ANALYZE statement finishing server-side; once it + // is gone the oldest sealed slot reclaims without being blocked. + wait_for( + "the last ANALYZE to finish", + Duration::from_secs(30), + || async { + let running: i64 = sqlx::query_scalar( + "SELECT count(*) FROM pg_stat_activity + WHERE state = 'active' AND query LIKE '%analyze_queue_storage_relation%' + AND pid <> pg_backend_pid()", + ) + .fetch_one(pool) + .await + .expect("read pg_stat_activity"); + running == 0 + }, + ) + .await; store.rotate(pool).await.expect("rotate"); assert!(!matches!( store From 40f94f65fdd3362e2c88e54a0fb2a67e45b02ed6 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 11:07:07 +1300 Subject: [PATCH 31/48] test(bench): benchmark per-lane enqueue contention and its effect on maintenance Many concurrent producers batch-inserting into one queue lane serialise on the per-lane reservation lock, which a transaction holds until it commits. The new enqueue_lane_contention_test reports per-lane throughput and batch latency percentiles at high producer concurrency, with and without unique keys, across enqueue_shards, with a unique-conflict replay mix, and optionally drains every shard afterwards. Its nightly gate runs sixteen producers on one lane (and on four shards), checks lane integrity, and asserts contention-scaled floors; the rate and p99 regression thresholds live in benchmarks/baseline.json. enqueue_lane_maintenance_coupling_test measures a leader-shaped loop (promotion and heartbeat rescue on one task) with and without producers saturating a lane, and with a lane lock held for a fixed time: promotion batch latency, promotion lag on an unrelated queue, and how late rescue starts. --- .github/workflows/nightly-chaos.yml | 11 + awa/tests/enqueue_lane_contention_test.rs | 775 ++++++++++++++++++ .../enqueue_lane_maintenance_coupling_test.rs | 429 ++++++++++ benchmarks/baseline.json | 7 + 4 files changed, 1222 insertions(+) create mode 100644 awa/tests/enqueue_lane_contention_test.rs create mode 100644 awa/tests/enqueue_lane_maintenance_coupling_test.rs diff --git a/.github/workflows/nightly-chaos.yml b/.github/workflows/nightly-chaos.yml index 9c69c0889..a57f22aa2 100644 --- a/.github/workflows/nightly-chaos.yml +++ b/.github/workflows/nightly-chaos.yml @@ -197,6 +197,17 @@ jobs: cargo test --release --package awa --test concurrent_lifecycle_test \ test_concurrent_queue_sweep -- --exact --ignored --nocapture \ | tee artifacts/nightly/rust-queue-sweep.txt + - name: Run per-lane enqueue contention benchmark + if: always() + timeout-minutes: 5 + run: | + set -o pipefail + # Many producers batch-inserting into one queue lane. Gates the + # per-lane rate and p99 through benchmarks/baseline.json, and the + # lane-lock hold time relative to the per-row insert function. + cargo test --release --package awa --test enqueue_lane_contention_test \ + test_enqueue_lane_contention_gate -- --exact --ignored --nocapture \ + | tee artifacts/nightly/rust-enqueue-lane.txt - name: Run MVCC horizon overlap benchmark if: always() timeout-minutes: 10 diff --git a/awa/tests/enqueue_lane_contention_test.rs b/awa/tests/enqueue_lane_contention_test.rs new file mode 100644 index 000000000..46a89625b --- /dev/null +++ b/awa/tests/enqueue_lane_contention_test.rs @@ -0,0 +1,775 @@ +//! Per-lane enqueue contention: many concurrent producers batch-inserting +//! into one queue lane. +//! +//! Every enqueue on queue storage reserves its lane sequence under a +//! transaction-scoped advisory lock (`reserve_enqueue_seq`) that is held until +//! the enqueue transaction ends, so producers for one `(queue, priority, +//! shard)` lane serialise on it. This suite measures what that serialisation +//! costs: lane throughput and batch-insert latency at high producer +//! concurrency, with and without unique keys, with and without a unique +//! conflict fallback, and across `enqueue_shards`. +//! +//! * `test_enqueue_lane_contention_gate` runs a fixed set of scenarios, checks +//! lane integrity, asserts contention-scaled floors, and emits +//! `@@BENCH_JSON@@` records that `.github/scripts/check-bench-regression.py` +//! compares against `benchmarks/baseline.json`. +//! * `test_enqueue_lane_contention_matrix` is the exploration entry point: it +//! sweeps producer counts for one configuration chosen through environment +//! variables and prints every scenario. +//! +//! Matrix tunables (all optional): +//! AWA_LANE_BENCH_PRODUCERS comma list, default "1,4,8,16,32" +//! AWA_LANE_BENCH_BATCH jobs per batch, default 185 +//! AWA_LANE_BENCH_UNIQUE 0|1, default 1 +//! AWA_LANE_BENCH_SHARDS `enqueue_shards` for the queue, default 1 +//! AWA_LANE_BENCH_MODE insert_many | insert_many_copy | queue_storage | +//! legacy_row_function +//! AWA_LANE_BENCH_DUP_PCT % of batches carrying one duplicate key that +//! fall back to row-at-a-time inserts, default 0 +//! AWA_LANE_BENCH_SECS measured seconds per scenario, default 8 +//! AWA_LANE_BENCH_DRAIN 0|1: claim everything that landed afterwards and +//! check every shard drains +//! AWA_LANE_BENCH_SPLIT 0|1: run each batch in an explicit +//! transaction and time statement and commit +//! separately (insert_many mode only) +//! +//! Requires a running Postgres instance. +//! Run with: +//! cargo test --release --package awa --test enqueue_lane_contention_test \ +//! -- --ignored --nocapture --test-threads=1 + +mod bench_output; +mod ci_timing; + +use awa::model::insert_prepared; +use awa::model::{ + insert_many, insert_many_copy_from_pool, prepare_raw_job_insert, AwaError, QueueStorage, +}; +use awa::{InsertOpts, InsertParams, QueueStorageConfig, UniqueOpts}; +use awa_testing::setup; +use bench_output::{BenchLatency, BenchMetrics, BenchmarkResult, SCHEMA_VERSION}; +use sqlx::postgres::{PgConnectOptions, PgPoolOptions}; +use sqlx::PgPool; +use std::collections::HashMap; +use std::str::FromStr; +use std::sync::atomic::{AtomicBool, AtomicU64, Ordering}; +use std::sync::Arc; +use std::time::{Duration, Instant}; +use uuid::Uuid; + +const APPLICATION_NAME: &str = "awa_lane_bench"; +const WARMUP: Duration = Duration::from_millis(1_500); + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum Mode { + InsertMany, + InsertManyCopy, + QueueStorage, + LegacyRowFunction, +} + +impl Mode { + fn parse(raw: &str) -> Self { + match raw { + "insert_many" => Mode::InsertMany, + "insert_many_copy" => Mode::InsertManyCopy, + "queue_storage" => Mode::QueueStorage, + "legacy_row_function" => Mode::LegacyRowFunction, + other => panic!("unknown AWA_LANE_BENCH_MODE {other}"), + } + } + + fn label(self) -> &'static str { + match self { + Mode::InsertMany => "insert_many", + Mode::InsertManyCopy => "insert_many_copy", + Mode::QueueStorage => "queue_storage", + Mode::LegacyRowFunction => "legacy_row_function", + } + } +} + +#[derive(Debug, Clone)] +struct Scenario { + name: String, + mode: Mode, + producers: usize, + batch_size: usize, + unique: bool, + shards: i16, + duplicate_batch_pct: u32, + measured: Duration, + split_commit: bool, + drain: bool, +} + +#[derive(Debug, Default, Clone)] +struct Samples { + /// Latency of the producer call, in milliseconds: one `insert_many` + /// statement, or for a duplicate batch the failed batch plus the + /// row-at-a-time fallback. + batch_ms: Vec, + /// Latency of each single-row statement issued by the fallback. + fallback_row_ms: Vec, + /// Statement and commit latency when the batch runs in an explicit + /// transaction. + statement_ms: Vec, + commit_ms: Vec, + jobs: u64, + batches: u64, + duplicate_batches: u64, + fallback_rows: u64, +} + +impl Samples { + fn merge(&mut self, other: Samples) { + self.batch_ms.extend(other.batch_ms); + self.fallback_row_ms.extend(other.fallback_row_ms); + self.statement_ms.extend(other.statement_ms); + self.commit_ms.extend(other.commit_ms); + self.jobs += other.jobs; + self.batches += other.batches; + self.duplicate_batches += other.duplicate_batches; + self.fallback_rows += other.fallback_rows; + } +} + +#[derive(Debug)] +struct ScenarioResult { + scenario: Scenario, + jobs_per_s: f64, + p50_ms: f64, + p95_ms: f64, + p99_ms: f64, + max_ms: f64, + mean_waiters: f64, + samples: Samples, + landed: i64, + distinct_lane_seqs: i64, + drained: Option<(i64, f64)>, +} + +fn percentile(sorted: &[f64], quantile: f64) -> f64 { + if sorted.is_empty() { + return 0.0; + } + let index = ((sorted.len() as f64 - 1.0) * quantile).round() as usize; + sorted[index.min(sorted.len() - 1)] +} + +fn sorted(values: &[f64]) -> Vec { + let mut copy = values.to_vec(); + copy.sort_by(|left, right| left.partial_cmp(right).expect("latencies are finite")); + copy +} + +fn env_string(name: &str, default: &str) -> String { + std::env::var(name).unwrap_or_else(|_| default.to_string()) +} + +fn env_usize(name: &str, default: usize) -> usize { + std::env::var(name) + .ok() + .and_then(|raw| raw.parse().ok()) + .unwrap_or(default) +} + +fn job_params(queue: &str, tag: &str, producer: usize, counter: u64, unique: bool) -> InsertParams { + InsertParams { + kind: "lane_bench_job".to_string(), + args: serde_json::json!({ + "tag": tag, + "producer": producer, + "n": counter, + "payload": "x".repeat(64), + }), + opts: InsertOpts { + queue: queue.to_string(), + unique: unique.then(|| UniqueOpts { + by_queue: true, + by_args: true, + ..Default::default() + }), + ..Default::default() + }, + } +} + +fn is_unique_violation(err: &AwaError) -> bool { + match err { + AwaError::UniqueConflict { .. } => true, + AwaError::Database(sqlx::Error::Database(db_err)) => { + db_err.code().as_deref() == Some("23505") + } + _ => false, + } +} + +async fn bench_pool(max_connections: u32) -> PgPool { + let options = PgConnectOptions::from_str(&setup::database_url()) + .expect("parse DATABASE_URL") + .application_name(APPLICATION_NAME); + PgPoolOptions::new() + .max_connections(max_connections) + .connect_with(options) + .await + .expect("connect bench pool") +} + +async fn waiter_count(pool: &PgPool) -> i64 { + sqlx::query_scalar( + r#" + SELECT count(*)::bigint + FROM pg_stat_activity + WHERE application_name = $1 + AND wait_event_type = 'Lock' + AND wait_event = 'advisory' + "#, + ) + .bind(APPLICATION_NAME) + .fetch_one(pool) + .await + .unwrap_or(0) +} + +async fn seed_queue_shards(pool: &PgPool, queue: &str, shards: i16) { + sqlx::query( + "INSERT INTO awa.queue_meta (queue, enqueue_shards) VALUES ($1, $2) + ON CONFLICT (queue) DO UPDATE SET enqueue_shards = EXCLUDED.enqueue_shards", + ) + .bind(queue) + .bind(shards) + .execute(pool) + .await + .expect("seed queue_meta.enqueue_shards"); +} + +/// One statement that calls `awa.insert_job_compat` once per row, the shape +/// batch inserts had before `awa.insert_jobs_compat_batch`. It measures what a +/// batch costs the lane lock on this runner when every row goes through the +/// per-row function, which is the yardstick the gate compares `insert_many` +/// against. +const LEGACY_ROW_FUNCTION_SQL: &str = r#" + SELECT inserted.* + FROM unnest( + $1::text[], $2::text[], $3::jsonb[], $4::text[], $5::smallint[], $6::smallint[], + $7::timestamptz[], $8::jsonb[], $9::jsonb[], $10::bytea[], $11::text[] + ) WITH ORDINALITY AS input( + kind, queue, args, state, priority, max_attempts, run_at, + metadata, tags, unique_key, unique_states, ord + ) + CROSS JOIN LATERAL awa.insert_job_compat( + input.kind, + input.queue, + input.args, + input.state::awa.job_state, + input.priority, + input.max_attempts, + input.run_at, + input.metadata, + ARRAY( + SELECT tag.value + FROM jsonb_array_elements_text(input.tags) WITH ORDINALITY AS tag(value, tag_ord) + ORDER BY tag.tag_ord + ), + input.unique_key, + input.unique_states::bit(8), + NULL + ) AS inserted + ORDER BY input.ord +"#; + +async fn legacy_row_function_insert(pool: &PgPool, jobs: &[InsertParams]) -> Result<(), AwaError> { + let rows: Vec<_> = jobs + .iter() + .map(|job| { + prepare_raw_job_insert(job.kind.clone(), job.args.clone(), job.opts.clone()) + .expect("prepare row") + }) + .collect(); + sqlx::query(LEGACY_ROW_FUNCTION_SQL) + .bind(rows.iter().map(|row| row.kind()).collect::>()) + .bind(rows.iter().map(|row| row.queue()).collect::>()) + .bind(rows.iter().map(|row| row.args()).collect::>()) + .bind( + rows.iter() + .map(|row| row.state_db_str()) + .collect::>(), + ) + .bind(rows.iter().map(|row| row.priority()).collect::>()) + .bind( + rows.iter() + .map(|row| row.max_attempts()) + .collect::>(), + ) + .bind(rows.iter().map(|row| row.run_at()).collect::>()) + .bind(rows.iter().map(|row| row.metadata()).collect::>()) + .bind( + rows.iter() + .map(|row| serde_json::json!(row.tags())) + .collect::>(), + ) + .bind(rows.iter().map(|row| row.unique_key()).collect::>()) + .bind( + rows.iter() + .map(|row| row.unique_states_bit_string()) + .collect::>(), + ) + .fetch_all(pool) + .await?; + Ok(()) +} + +#[allow(clippy::too_many_arguments)] +async fn producer_loop( + pool: PgPool, + store: Arc, + scenario: Scenario, + queue: String, + tag: String, + producer: usize, + measure_from: Instant, + stop_at: Instant, + counter_base: Arc, + stop: Arc, +) -> Samples { + let mut samples = Samples::default(); + let mut batch_index: u64 = 0; + let mut previous_batch: Vec = Vec::new(); + + while Instant::now() < stop_at && !stop.load(Ordering::Relaxed) { + let base = counter_base.fetch_add(scenario.batch_size as u64, Ordering::Relaxed); + let mut jobs: Vec = (0..scenario.batch_size as u64) + .map(|offset| job_params(&queue, &tag, producer, base + offset, scenario.unique)) + .collect(); + + // A replayed key: the first job repeats one this producer already + // inserted, so the batch hits exactly one unique conflict. + let duplicate = scenario.unique + && scenario.duplicate_batch_pct > 0 + && !previous_batch.is_empty() + && (batch_index + 1) * u64::from(scenario.duplicate_batch_pct) / 100 + > batch_index * u64::from(scenario.duplicate_batch_pct) / 100; + if duplicate { + jobs[0] = previous_batch[0].clone(); + } + batch_index += 1; + + let started = Instant::now(); + let mut statement_ms = None; + let mut commit_ms = None; + let mut fallback_rows_ms: Vec = Vec::new(); + + let outcome: Result<(), AwaError> = match scenario.mode { + Mode::InsertMany if scenario.split_commit => { + let mut tx = pool.begin().await.expect("begin"); + let statement_started = Instant::now(); + let result = insert_many(&mut *tx, &jobs).await; + let statement_elapsed = statement_started.elapsed(); + match result { + Ok(_) => { + let commit_started = Instant::now(); + tx.commit().await.expect("commit"); + statement_ms = Some(statement_elapsed.as_secs_f64() * 1e3); + commit_ms = Some(commit_started.elapsed().as_secs_f64() * 1e3); + Ok(()) + } + Err(err) => Err(err), + } + } + Mode::InsertMany => insert_many(&pool, &jobs).await.map(|_| ()), + Mode::InsertManyCopy => insert_many_copy_from_pool(&pool, &jobs).await.map(|_| ()), + Mode::QueueStorage => store.enqueue_params_batch(&pool, &jobs).await.map(|_| ()), + Mode::LegacyRowFunction => legacy_row_function_insert(&pool, &jobs).await, + }; + + let mut fallback_count = 0u64; + match outcome { + Ok(()) => {} + Err(err) if is_unique_violation(&err) => { + // What a replaying producer does on a unique conflict: + // insert the batch again one row at a time, skipping + // duplicates. + for job in &jobs { + let row = prepare_raw_job_insert( + job.kind.clone(), + job.args.clone(), + job.opts.clone(), + ) + .expect("prepare row"); + let row_started = Instant::now(); + match insert_prepared(&pool, &row).await { + Ok(_) => {} + Err(err) if is_unique_violation(&err) => {} + Err(err) => panic!("fallback insert failed: {err}"), + } + fallback_rows_ms.push(row_started.elapsed().as_secs_f64() * 1e3); + fallback_count += 1; + } + } + Err(err) => panic!("enqueue failed: {err}"), + } + let elapsed = started.elapsed(); + + if started >= measure_from { + samples.batch_ms.push(elapsed.as_secs_f64() * 1e3); + samples.jobs += scenario.batch_size as u64; + samples.batches += 1; + if let Some(ms) = statement_ms { + samples.statement_ms.push(ms); + } + if let Some(ms) = commit_ms { + samples.commit_ms.push(ms); + } + if fallback_count > 0 { + samples.duplicate_batches += 1; + samples.fallback_rows += fallback_count; + samples.fallback_row_ms.extend(fallback_rows_ms); + } + } + previous_batch = jobs; + } + samples +} + +async fn run_scenario(pool: &PgPool, scenario: &Scenario) -> ScenarioResult { + let queue = format!( + "lane_bench_{}", + Uuid::new_v4().simple().to_string().get(..12).unwrap() + ); + let tag = Uuid::new_v4().simple().to_string(); + seed_queue_shards(pool, &queue, scenario.shards).await; + + let producer_pool = bench_pool(scenario.producers as u32 + 4).await; + let store = Arc::new(QueueStorage::new(QueueStorageConfig::default()).expect("queue storage")); + + let started = Instant::now(); + let measure_from = started + WARMUP; + let stop_at = measure_from + scenario.measured; + let counter_base = Arc::new(AtomicU64::new(0)); + let stop = Arc::new(AtomicBool::new(false)); + + let mut tasks = Vec::new(); + for producer in 0..scenario.producers { + tasks.push(tokio::spawn(producer_loop( + producer_pool.clone(), + Arc::clone(&store), + scenario.clone(), + queue.clone(), + tag.clone(), + producer, + measure_from, + stop_at, + Arc::clone(&counter_base), + Arc::clone(&stop), + ))); + } + + // Sample advisory-lock waiters over the measured window only. + tokio::time::sleep_until(tokio::time::Instant::from_std(measure_from)).await; + let mut waiter_samples: Vec = Vec::new(); + while Instant::now() < stop_at { + waiter_samples.push(waiter_count(pool).await); + tokio::time::sleep(Duration::from_millis(25)).await; + } + + let mut samples = Samples::default(); + for task in tasks { + samples.merge(task.await.expect("producer task")); + } + producer_pool.close().await; + + let (landed, distinct_lane_seqs): (i64, i64) = sqlx::query_as( + r#" + SELECT count(*)::bigint, + count(DISTINCT (enqueue_shard, lane_seq))::bigint + FROM awa.ready_entries + WHERE queue = $1 + "#, + ) + .bind(&queue) + .fetch_one(pool) + .await + .expect("count landed rows"); + + // Claim everything that landed, from every shard, with the claim path the + // workers use. + let drained = if scenario.drain { + let drain_started = Instant::now(); + let mut claimed = 0i64; + loop { + let batch = store + .claim_runtime_batch(pool, &queue, 500, Duration::from_secs(3_600)) + .await + .expect("claim batch"); + if batch.is_empty() { + break; + } + claimed += batch.len() as i64; + } + Some((claimed, drain_started.elapsed().as_secs_f64())) + } else { + None + }; + + let latencies = sorted(&samples.batch_ms); + let window = scenario.measured.as_secs_f64(); + ScenarioResult { + scenario: scenario.clone(), + jobs_per_s: samples.jobs as f64 / window, + p50_ms: percentile(&latencies, 0.50), + p95_ms: percentile(&latencies, 0.95), + p99_ms: percentile(&latencies, 0.99), + max_ms: latencies.last().copied().unwrap_or(0.0), + mean_waiters: if waiter_samples.is_empty() { + 0.0 + } else { + waiter_samples.iter().sum::() as f64 / waiter_samples.len() as f64 + }, + samples, + landed, + distinct_lane_seqs, + drained, + } +} + +fn print_result(result: &ScenarioResult) { + let scenario = &result.scenario; + println!( + "[lane-bench] {name} mode={mode} producers={producers} batch={batch} unique={unique} \ + shards={shards} dup_pct={dup} | {rate:.0} jobs/s | batch ms p50={p50:.1} p95={p95:.1} \ + p99={p99:.1} max={max:.1} | waiters_mean={waiters:.1} | landed={landed} \ + distinct_seqs={distinct}", + name = scenario.name, + mode = scenario.mode.label(), + producers = scenario.producers, + batch = scenario.batch_size, + unique = scenario.unique, + shards = scenario.shards, + dup = scenario.duplicate_batch_pct, + rate = result.jobs_per_s, + p50 = result.p50_ms, + p95 = result.p95_ms, + p99 = result.p99_ms, + max = result.max_ms, + waiters = result.mean_waiters, + landed = result.landed, + distinct = result.distinct_lane_seqs, + ); + if !result.samples.statement_ms.is_empty() { + let statement = sorted(&result.samples.statement_ms); + let commit = sorted(&result.samples.commit_ms); + println!( + "[lane-bench] split: statement ms p50={:.1} p99={:.1} | commit ms p50={:.2} p99={:.2}", + percentile(&statement, 0.5), + percentile(&statement, 0.99), + percentile(&commit, 0.5), + percentile(&commit, 0.99), + ); + } + if let Some((claimed, seconds)) = result.drained { + println!( + "[lane-bench] drain: claimed {claimed} of {} landed in {seconds:.2}s ({:.0}/s)", + result.landed, + claimed as f64 / seconds.max(1e-9), + ); + } + if result.samples.duplicate_batches > 0 { + let rows = sorted(&result.samples.fallback_row_ms); + println!( + "[lane-bench] fallback: {} duplicate batches, {} single-row statements, \ + row ms p50={:.1} p99={:.1} max={:.1}", + result.samples.duplicate_batches, + result.samples.fallback_rows, + percentile(&rows, 0.5), + percentile(&rows, 0.99), + rows.last().copied().unwrap_or(0.0), + ); + } +} + +fn emit_json(result: &ScenarioResult) { + let mut outcomes = HashMap::new(); + outcomes.insert("jobs".to_string(), result.samples.jobs); + outcomes.insert("batches".to_string(), result.samples.batches); + BenchmarkResult { + schema_version: SCHEMA_VERSION, + scenario: result.scenario.name.clone(), + language: "rust".to_string(), + seeded: result.landed.max(0) as u64, + metrics: BenchMetrics { + throughput: None, + enqueue_per_s: Some(result.jobs_per_s), + drain_time_s: None, + latency_ms: Some(BenchLatency { + p50: Some(result.p50_ms), + p95: Some(result.p95_ms), + p99: Some(result.p99_ms), + }), + rescue: None, + }, + outcomes, + metadata: Some(serde_json::json!({ + "producers": result.scenario.producers, + "batch_size": result.scenario.batch_size, + "unique": result.scenario.unique, + "shards": result.scenario.shards, + "mean_lock_waiters": result.mean_waiters, + })), + } + .emit(); +} + +/// Lane integrity: every job that was acknowledged landed exactly once, under +/// a distinct `(shard, lane_seq)`, and every shard's sequence numbers are +/// dense (no producer lost or duplicated a reservation). +fn assert_lane_integrity(result: &ScenarioResult) { + if let Some((claimed, _)) = result.drained { + assert_eq!( + claimed, result.landed, + "{}: claim path did not drain every shard", + result.scenario.name + ); + } + assert_eq!( + result.landed, result.distinct_lane_seqs, + "{}: ready rows share a (shard, lane_seq)", + result.scenario.name + ); + assert!( + result.landed as u64 >= result.samples.jobs, + "{}: {} jobs acknowledged in the window but only {} rows landed", + result.scenario.name, + result.samples.jobs, + result.landed + ); +} + +async fn bench_setup() -> PgPool { + let pool = setup::setup(16).await; + setup::activate_queue_storage(&pool).await; + pool +} + +fn scenario( + name: &str, + producers: usize, + shards: i16, + unique: bool, + duplicate_batch_pct: u32, +) -> Scenario { + Scenario { + name: name.to_string(), + mode: Mode::InsertMany, + producers, + batch_size: 185, + unique, + shards, + duplicate_batch_pct, + measured: Duration::from_secs(8), + split_commit: false, + drain: false, + } +} + +/// Fixed scenarios whose results gate regressions in the nightly run. +/// +/// Absolute floors sit well below the rates a shared runner sustains, and the +/// latency ceiling well above, so they only catch a lane that has stopped +/// making progress; `benchmarks/baseline.json` carries the regression +/// thresholds on rate and p99. The one-producer scenarios measure what a batch +/// costs the lane lock, through `insert_many` and through the per-row +/// function, and are reported for comparison. Every bound goes through +/// `ci_timing` so a contended runner loosens it. +#[tokio::test(flavor = "multi_thread", worker_threads = 6)] +#[ignore] +async fn test_enqueue_lane_contention_gate() { + let pool = bench_setup().await; + + let mut row_function = scenario("enqueue_lane_1p_row_function_185", 1, 1, true, 0); + row_function.mode = Mode::LegacyRowFunction; + row_function.measured = Duration::from_secs(4); + let row_function = run_scenario(&pool, &row_function).await; + print_result(&row_function); + assert_lane_integrity(&row_function); + + let mut one_producer = scenario("enqueue_lane_1p_unique_185", 1, 1, true, 0); + one_producer.measured = Duration::from_secs(4); + let one_producer = run_scenario(&pool, &one_producer).await; + print_result(&one_producer); + assert_lane_integrity(&one_producer); + + let single_lane = run_scenario( + &pool, + &scenario("enqueue_lane_16p_unique_185", 16, 1, true, 0), + ) + .await; + print_result(&single_lane); + emit_json(&single_lane); + assert_lane_integrity(&single_lane); + + let sharded = run_scenario( + &pool, + &scenario("enqueue_lane_16p_unique_185_shards4", 16, 4, true, 0), + ) + .await; + print_result(&sharded); + emit_json(&sharded); + assert_lane_integrity(&sharded); + + let floor = ci_timing::contention_floor(GATE_MIN_JOBS_PER_S); + assert!( + single_lane.jobs_per_s >= floor as f64, + "single-lane enqueue rate {:.0}/s fell below the floor of {floor}/s", + single_lane.jobs_per_s + ); + let p99_ceiling = ci_timing::scaled_timeout(Duration::from_millis(GATE_MAX_P99_MS)); + assert!( + Duration::from_secs_f64(single_lane.p99_ms / 1e3) <= p99_ceiling, + "single-lane p99 batch latency {:.0}ms exceeded {:?}", + single_lane.p99_ms, + p99_ceiling + ); +} + +const GATE_MIN_JOBS_PER_S: i64 = 2_000; +const GATE_MAX_P99_MS: u64 = 15_000; + +/// Exploration sweep; see the module docs for the tunables. +#[tokio::test(flavor = "multi_thread", worker_threads = 8)] +#[ignore] +async fn test_enqueue_lane_contention_matrix() { + let pool = bench_setup().await; + let producers: Vec = env_string("AWA_LANE_BENCH_PRODUCERS", "1,4,8,16,32") + .split(',') + .filter_map(|raw| raw.trim().parse().ok()) + .collect(); + let mode = Mode::parse(&env_string("AWA_LANE_BENCH_MODE", "insert_many")); + let batch_size = env_usize("AWA_LANE_BENCH_BATCH", 185); + let unique = env_usize("AWA_LANE_BENCH_UNIQUE", 1) != 0; + let shards = env_usize("AWA_LANE_BENCH_SHARDS", 1) as i16; + let duplicate_pct = env_usize("AWA_LANE_BENCH_DUP_PCT", 0) as u32; + let secs = env_usize("AWA_LANE_BENCH_SECS", 8) as u64; + let split = env_usize("AWA_LANE_BENCH_SPLIT", 0) != 0; + + for producer_count in producers { + let result = run_scenario( + &pool, + &Scenario { + name: format!("matrix_{producer_count}p"), + mode, + producers: producer_count, + batch_size, + unique, + shards, + duplicate_batch_pct: duplicate_pct, + measured: Duration::from_secs(secs), + split_commit: split, + drain: env_usize("AWA_LANE_BENCH_DRAIN", 0) != 0, + }, + ) + .await; + print_result(&result); + assert_lane_integrity(&result); + } +} diff --git a/awa/tests/enqueue_lane_maintenance_coupling_test.rs b/awa/tests/enqueue_lane_maintenance_coupling_test.rs new file mode 100644 index 000000000..67a55808a --- /dev/null +++ b/awa/tests/enqueue_lane_maintenance_coupling_test.rs @@ -0,0 +1,429 @@ +//! How a saturated enqueue lane affects the maintenance leader. +//! +//! Promotion of scheduled and retryable jobs re-enqueues them into their lane, +//! so it queues on the same per-lane advisory lock as producers. A promotion +//! batch is one transaction across every queue it touches, and the leader runs +//! its branches (promotion, rescue, rotation, ...) one after another on a +//! single task, so a batch parked behind a hot lane holds up the due jobs of +//! other queues in that batch and every other maintenance branch. +//! +//! `test_maintenance_under_hot_lane` measures, with and without concurrent +//! producers on one hot lane: +//! * promotion batch latency and how long a backlog on the hot queue takes +//! to drain, +//! * promotion lag on an unrelated queue (time from a job becoming due to +//! it being visible as ready), with the promotion loop shaped like the +//! leader's (a tick, then batches until one comes back short), +//! * heartbeat rescue of abandoned claims on the hot queue: how long each run +//! takes and how late it starts once its tick is due (1s here, so a +//! blocked promotion shows up as a late start). +//! +//! Tunables (optional): +//! AWA_LANE_MAINT_PRODUCERS producers on the hot lane, default 16 +//! AWA_LANE_MAINT_BACKLOG due scheduled jobs on the hot queue, default 24576 +//! AWA_LANE_MAINT_RESCUE abandoned claims on the hot queue, default 6000 +//! +//! Requires a running Postgres instance. +//! Run with: +//! cargo test --release --package awa --test enqueue_lane_maintenance_coupling_test \ +//! -- --ignored --nocapture --test-threads=1 + +use awa::model::{insert_many, QueueStorage}; +use awa::{InsertOpts, InsertParams, JobState, QueueStorageConfig}; +use awa_testing::setup; +use sqlx::PgPool; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::Arc; +use std::time::{Duration, Instant}; +use uuid::Uuid; + +const PROMOTE_BATCH: i64 = 4_096; +const PROMOTE_TICK: Duration = Duration::from_millis(250); +const PROBE_PERIOD: Duration = Duration::from_millis(100); +const RESCUE_TICK: Duration = Duration::from_secs(1); + +fn env_usize(name: &str, default: usize) -> usize { + std::env::var(name) + .ok() + .and_then(|raw| raw.parse().ok()) + .unwrap_or(default) +} + +fn percentile(values: &[f64], quantile: f64) -> f64 { + if values.is_empty() { + return 0.0; + } + let mut sorted = values.to_vec(); + sorted.sort_by(|left, right| left.partial_cmp(right).expect("finite")); + sorted[((sorted.len() as f64 - 1.0) * quantile).round() as usize] +} + +fn params( + queue: &str, + tag: &str, + n: u64, + run_at: Option>, +) -> InsertParams { + InsertParams { + kind: "lane_maint_job".to_string(), + args: serde_json::json!({ "tag": tag, "n": n }), + opts: InsertOpts { + queue: queue.to_string(), + run_at, + ..Default::default() + }, + } +} + +async fn seed_due_backlog(pool: &PgPool, queue: &str, count: usize) { + let due = chrono::Utc::now() - chrono::Duration::seconds(60); + let mut inserted = 0usize; + while inserted < count { + let chunk = (count - inserted).min(2_000); + let jobs: Vec = (0..chunk) + .map(|offset| params(queue, "backlog", (inserted + offset) as u64, Some(due))) + .collect(); + insert_many(pool, &jobs).await.expect("seed backlog"); + inserted += chunk; + } +} + +async fn deferred_due(pool: &PgPool, queue: &str) -> i64 { + sqlx::query_scalar( + "SELECT count(*)::bigint FROM awa.deferred_jobs WHERE queue = $1 AND state = 'scheduled'", + ) + .bind(queue) + .fetch_one(pool) + .await + .expect("count deferred") +} + +struct Producers { + stop: Arc, + tasks: Vec>, +} + +impl Producers { + fn start(pool: &PgPool, queue: &str, count: usize) -> Self { + let stop = Arc::new(AtomicBool::new(false)); + let tag = Uuid::new_v4().simple().to_string(); + let tasks = (0..count) + .map(|producer| { + let pool = pool.clone(); + let stop = Arc::clone(&stop); + let queue = queue.to_string(); + let tag = tag.clone(); + tokio::spawn(async move { + let mut jobs_inserted = 0u64; + let mut counter = (producer as u64) << 40; + while !stop.load(Ordering::Relaxed) { + let jobs: Vec = (0..185) + .map(|offset| params(&queue, &tag, counter + offset, None)) + .collect(); + counter += 185; + insert_many(&pool, &jobs).await.expect("producer insert"); + jobs_inserted += 185; + } + jobs_inserted + }) + }) + .collect(); + Self { stop, tasks } + } + + async fn stop(self) -> u64 { + self.stop.store(true, Ordering::Relaxed); + let mut total = 0; + for task in self.tasks { + total += task.await.expect("producer task"); + } + total + } +} + +#[derive(Default)] +struct LeaderReport { + /// Promotion batches that moved a full share of the backlog. + batch_ms: Vec, + drain_s: f64, + probe_lag_ms: Vec, + /// How long after its tick each heartbeat-rescue run started, and how long + /// the run itself took. + rescue_start_delay_ms: Vec, + rescue_run_ms: Vec, +} + +/// A leader loop shaped like the maintenance leader's: one task selecting over +/// a promotion timer (250ms; on each tick batches of up to 4096 until one is +/// short) and a heartbeat-rescue timer, running each branch to completion +/// before taking the next tick. Runs until the hot queue's backlog is gone and +/// `min_window` has passed, while a probe feeds one due job per 100ms into an +/// unrelated queue and times how long each takes to become ready. +async fn run_leader( + pool: &PgPool, + store: &QueueStorage, + hot: &str, + other: &str, + min_window: Duration, +) -> LeaderReport { + let mut report = LeaderReport::default(); + let started = Instant::now(); + let stop = Arc::new(AtomicBool::new(false)); + + let probe = { + let pool = pool.clone(); + let other = other.to_string(); + let stop = Arc::clone(&stop); + tokio::spawn(async move { + let mut lags = Vec::new(); + let mut n = 0u64; + while !stop.load(Ordering::Relaxed) { + n += 1; + // Older than the hot backlog, so the probe is always in the + // first promotion batch rather than behind the backlog's + // run_at order. + let due_at = chrono::Utc::now() - chrono::Duration::seconds(120); + insert_many(&pool, &[params(&other, "probe", n, Some(due_at))]) + .await + .expect("insert probe"); + let inserted = Instant::now(); + loop { + let visible: bool = sqlx::query_scalar( + "SELECT EXISTS (SELECT 1 FROM awa.ready_entries + WHERE queue = $1 AND args->>'tag' = 'probe' AND (args->>'n')::bigint = $2)", + ) + .bind(&other) + .bind(n as i64) + .fetch_one(&pool) + .await + .expect("probe visibility"); + if visible { + lags.push(inserted.elapsed().as_secs_f64() * 1e3); + break; + } + if stop.load(Ordering::Relaxed) { + return lags; + } + tokio::time::sleep(Duration::from_millis(5)).await; + } + tokio::time::sleep(PROBE_PERIOD).await; + } + lags + }) + }; + + let mut promote_timer = tokio::time::interval(PROMOTE_TICK); + promote_timer.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Delay); + let mut rescue_timer = tokio::time::interval(RESCUE_TICK); + rescue_timer.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Delay); + promote_timer.tick().await; + rescue_timer.tick().await; + + let mut backlog_gone_at: Option = None; + loop { + tokio::select! { + tick = promote_timer.tick() => { + let _ = tick; + loop { + let batch_started = Instant::now(); + let promoted = store + .promote_due(pool, JobState::Scheduled, PROMOTE_BATCH) + .await + .expect("promote_due"); + if promoted >= 1_000 { + report.batch_ms.push(batch_started.elapsed().as_secs_f64() * 1e3); + } + if (promoted as i64) < PROMOTE_BATCH { + break; + } + } + if backlog_gone_at.is_none() && deferred_due(pool, hot).await == 0 { + backlog_gone_at = Some(Instant::now()); + } + if backlog_gone_at.is_some() && started.elapsed() >= min_window { + break; + } + } + tick = rescue_timer.tick() => { + let delay = tokio::time::Instant::now().saturating_duration_since(tick); + let run_started = Instant::now(); + let rescued = store + .rescue_stale_heartbeats(pool, Duration::ZERO) + .await + .expect("rescue_stale_heartbeats"); + if !rescued.is_empty() { + report.rescue_start_delay_ms.push(delay.as_secs_f64() * 1e3); + report.rescue_run_ms.push(run_started.elapsed().as_secs_f64() * 1e3); + } + } + } + } + report.drain_s = backlog_gone_at + .expect("backlog drained") + .duration_since(started) + .as_secs_f64(); + stop.store(true, Ordering::Relaxed); + report.probe_lag_ms = probe.await.expect("probe task"); + report +} + +fn max_of(values: &[f64]) -> f64 { + values.iter().copied().fold(0.0, f64::max) +} + +fn print_leader(label: &str, report: &LeaderReport) { + println!( + "[lane-maint] {label} promote batch ms p50={:.0} max={:.0} ({} batches) | hot backlog \ + drained in {:.2}s | unrelated-queue promotion lag ms p50={:.0} p99={:.0} max={:.0} ({} probes) \ + | rescue ran {} times, run ms p50={:.0} max={:.0}, started late by ms p50={:.0} max={:.0}", + percentile(&report.batch_ms, 0.5), + max_of(&report.batch_ms), + report.batch_ms.len(), + report.drain_s, + percentile(&report.probe_lag_ms, 0.5), + percentile(&report.probe_lag_ms, 0.99), + max_of(&report.probe_lag_ms), + report.probe_lag_ms.len(), + report.rescue_run_ms.len(), + percentile(&report.rescue_run_ms, 0.5), + max_of(&report.rescue_run_ms), + percentile(&report.rescue_start_delay_ms, 0.5), + max_of(&report.rescue_start_delay_ms), + ); +} + +/// Enqueue `count` jobs on `queue` and claim every one of them without ever +/// completing or heartbeating, so each becomes an abandoned attempt. +async fn seed_abandoned_claims(pool: &PgPool, store: &QueueStorage, queue: &str, count: usize) { + let tag = Uuid::new_v4().simple().to_string(); + let mut enqueued = 0usize; + while enqueued < count { + let chunk = (count - enqueued).min(2_000); + let jobs: Vec = (0..chunk) + .map(|offset| params(queue, &tag, (enqueued + offset) as u64, None)) + .collect(); + store + .enqueue_params_batch(pool, &jobs) + .await + .expect("enqueue claimable jobs"); + enqueued += chunk; + } + let mut claimed = 0usize; + while claimed < count { + let batch = store + .claim_runtime_batch(pool, queue, 500, Duration::from_secs(3_600)) + .await + .expect("claim batch"); + assert!(!batch.is_empty(), "ran out of jobs to claim"); + claimed += batch.len(); + } +} + +#[tokio::test(flavor = "multi_thread", worker_threads = 8)] +#[ignore] +async fn test_maintenance_under_hot_lane() { + let producers = env_usize("AWA_LANE_MAINT_PRODUCERS", 16); + let backlog = env_usize("AWA_LANE_MAINT_BACKLOG", 24_576); + let rescue_claims = env_usize("AWA_LANE_MAINT_RESCUE", 6_000); + + let pool = setup::setup(producers as u32 + 12).await; + setup::activate_queue_storage(&pool).await; + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage"); + + for (label, producer_count) in [("idle lane ", 0usize), ("hot lane ", producers)] { + let suffix = Uuid::new_v4().simple().to_string(); + let hot = format!("lane_maint_hot_{}", &suffix[..10]); + let other = format!("lane_maint_other_{}", &suffix[..10]); + + // Warm both lanes so lane provisioning is not measured. + insert_many( + &pool, + &[ + params(&hot, "warm", 0, None), + params(&other, "warm", 0, None), + ], + ) + .await + .expect("warm lanes"); + + seed_due_backlog(&pool, &hot, backlog).await; + seed_abandoned_claims(&pool, &store, &hot, rescue_claims).await; + + let running = (producer_count > 0).then(|| Producers::start(&pool, &hot, producer_count)); + tokio::time::sleep(Duration::from_millis(1_500)).await; + + let report = run_leader(&pool, &store, &hot, &other, Duration::from_secs(12)).await; + print_leader(label, &report); + + if let Some(running) = running { + let produced = running.stop().await; + println!("[lane-maint] {label} producers inserted {produced} jobs meanwhile"); + } + } +} + +/// The mechanism without producer load: one transaction holds the hot lane's +/// reservation lock for a fixed time while the leader loop runs. Promotion of +/// a batch that contains hot-queue rows waits for it, and takes the unrelated +/// queue's due job in the same batch and the leader's other branches with it. +/// Heartbeat rescue called directly does not wait for the lane at all: it +/// writes retryable rows to the deferred table, which promotion later moves. +#[tokio::test(flavor = "multi_thread", worker_threads = 8)] +#[ignore] +async fn test_leader_behind_a_held_lane_lock() { + let hold = Duration::from_millis(env_usize("AWA_LANE_MAINT_HOLD_MS", 3_000) as u64); + let pool = setup::setup(16).await; + setup::activate_queue_storage(&pool).await; + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage"); + + let suffix = Uuid::new_v4().simple().to_string(); + let hot = format!("lane_maint_hot_{}", &suffix[..10]); + let other = format!("lane_maint_other_{}", &suffix[..10]); + insert_many( + &pool, + &[ + params(&hot, "warm", 0, None), + params(&other, "warm", 0, None), + ], + ) + .await + .expect("warm lanes"); + seed_due_backlog(&pool, &hot, 8_192).await; + seed_abandoned_claims(&pool, &store, &hot, 3_000).await; + + let key: i64 = sqlx::query_scalar( + "SELECT hashtextextended( + format('%I.%I', 'awa', awa.queue_lane_sequence_name('queue_enqueue_seq', $1, 2::smallint, 0::smallint)), + 0)", + ) + .bind(&hot) + .fetch_one(&pool) + .await + .expect("derive lane lock key"); + let mut gate = pool.begin().await.expect("begin gate"); + sqlx::query("SELECT pg_advisory_xact_lock($1)") + .bind(key) + .execute(&mut *gate) + .await + .expect("take lane lock"); + + let rescue_started = Instant::now(); + let rescued = store + .rescue_stale_heartbeats(&pool, Duration::ZERO) + .await + .expect("rescue with the lane lock held"); + println!( + "[lane-maint] rescue of {} claims with the hot lane lock held took {:.0}ms", + rescued.len(), + rescue_started.elapsed().as_secs_f64() * 1e3 + ); + let remaining_hold = hold.saturating_sub(rescue_started.elapsed()); + + let release = tokio::spawn(async move { + tokio::time::sleep(remaining_hold).await; + gate.commit().await.expect("release lane lock"); + }); + let report = run_leader(&pool, &store, &hot, &other, Duration::from_secs(9)).await; + release.await.expect("release task"); + print_leader(&format!("lane held {}ms", hold.as_millis()), &report); +} diff --git a/benchmarks/baseline.json b/benchmarks/baseline.json index 9f7fee869..3fdb7bd08 100644 --- a/benchmarks/baseline.json +++ b/benchmarks/baseline.json @@ -32,6 +32,13 @@ "rust/stale_heartbeat_rescue": { "handler_per_s": 160.3 }, + "rust/enqueue_lane_16p_unique_185": { + "enqueue_per_s": 2000.0, + "p99_ms": 6000.0 + }, + "rust/enqueue_lane_16p_unique_185_shards4": { + "enqueue_per_s": 2000.0 + }, "rust/mvcc_horizon_overlap": { "min_overlap_vs_baseline": 0.75, "min_cooldown_vs_baseline": 0.75, From 91f3a137cb04749ba1bfd63543c7174a72e71922 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 11:07:07 +1300 Subject: [PATCH 32/48] perf(insert): hold a lane lock only for the lane write in batch inserts insert_many and insert_many_copy called awa.insert_job_compat once per row. The function takes the (queue, priority, shard) lane lock in reserve_enqueue_seq on the batch's first row, and the lock lasts to commit, so it was held while every remaining row was processed. A 185-row batch held it for about 40 ms on a local database, and producers on one lane queued behind whole batches: the lane's ceiling was roughly 4,000 jobs/s at any producer count, and a producer's call took (producers x 40 ms). Migration v053 adds awa.insert_jobs_compat_batch. It allocates job ids, claims unique keys in key order, registers new lanes and builds the rows before it reserves each lane's sequence range once, in (queue, priority, shard) order, then writes the ready rows and segments in two statements. It proposes head rows only for lanes that do not exist yet, because the head tables' row trigger takes the lane lock before the conflict check. insert_many and insert_many_copy call it. insert_many_copy now skips unique conflicts in one statement instead of one savepoint per row, and insert_many_skip_unique_conflicts exposes the same behaviour for callers that replay work: after a unique conflict they inserted the batch again one job at a time, taking the lane lock once per job. The lane-order test now parks a batch on one lane and checks which lane locks it holds, since job ids no longer follow lock order. --- CHANGELOG.md | 33 +- .../v053_insert_jobs_batch_compat.sql | 575 ++++++++++++++++++ awa-model/src/insert.rs | 357 ++++------- awa-model/src/lib.rs | 3 +- awa-model/src/migrations.rs | 8 +- awa/tests/enqueue_lane_contention_test.rs | 48 +- awa/tests/enqueue_lane_lock_order_test.rs | 188 +++++- awa/tests/insert_many_batch_test.rs | 426 +++++++++++++ awa/tests/integration_test.rs | 3 + benchmarks/baseline.json | 6 +- docs/troubleshooting.md | 20 + docs/upgrade-0.6-to-0.7.md | 19 + 12 files changed, 1396 insertions(+), 290 deletions(-) create mode 100644 awa-model/migrations/v053_insert_jobs_batch_compat.sql create mode 100644 awa/tests/insert_many_batch_test.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 065d50db1..a09350c9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,34 @@ Notable changes between releases. Detailed migration notes for storage transitio ## [Unreleased] +### Added + +- **`insert_many_skip_unique_conflicts` inserts a batch and skips the jobs + whose unique key is already claimed.** `insert_many` fails the whole batch + with a unique violation, so a producer that replays work had to insert the + batch again one job at a time, taking the lane lock once per job. The new + function returns the inserted rows in input order, with skipped jobs absent. + +### Changed + +- **Batch enqueues hold a lane lock for the lane write only.** `insert_many` + and `insert_many_copy` called `awa.insert_job_compat` per row, which takes + the `(queue, priority, shard)` lane lock on the batch's first row and holds + it, because the lock lasts to commit, while every remaining row is + processed: concurrent producers on one lane queued behind whole batches. + Migration v053 adds `awa.insert_jobs_compat_batch`, which allocates job ids, + claims unique keys (in key order), registers new lanes and builds the rows + first, then reserves each lane's sequence range once, in lane order, and + writes the ready rows and segments in two statements. A 185-row batch into + one lane holds the lock for a fraction of the time it did, which raises the + per-lane ceiling several times over and cuts the time producers, promotion + and rescue spend waiting for the lane. `insert_many_copy` skips unique + conflicts in one pass instead of one savepoint per row. Run `awa migrate` + before upgrading producers: a binary that calls the new function against a + database without v053 fails with `function awa.insert_jobs_compat_batch ... + does not exist`. Binaries before this release keep calling + `awa.insert_job_compat` and share the lane lock with the new path. + ### Fixed - **Batch enqueues take their lane locks in one order, so they no longer @@ -15,10 +43,7 @@ Notable changes between releases. Detailed migration notes for storage transitio a `QueueStorage` enqueue could deadlock with it (`40P01`). The two insert paths now sort rows by `(queue, priority, shard)`, queues compared bytewise, before they reach `awa.insert_job_compat`, the order `QueueStorage` already - used, and still return rows in input order. Job ids within a batch that - spans several lanes are now allocated lane by lane rather than in input - order, and when an `insert_many_copy` batch carries the same unique key in - more than one lane, the row in the lowest lane is the one inserted. A + used, and still return rows in input order. A transaction that enqueues with separate statements still takes locks in statement order; see "`deadlock detected` while enqueueing" in the troubleshooting guide. diff --git a/awa-model/migrations/v053_insert_jobs_batch_compat.sql b/awa-model/migrations/v053_insert_jobs_batch_compat.sql new file mode 100644 index 000000000..a6f67912a --- /dev/null +++ b/awa-model/migrations/v053_insert_jobs_batch_compat.sql @@ -0,0 +1,575 @@ +-- v053: Batch producer insert that holds each enqueue lane lock only for the +-- lane write. +-- +-- awa.insert_job_compat takes the (queue, priority, shard) lane lock in +-- reserve_enqueue_seq on a batch's first row and, because the lock is +-- transaction-scoped, holds it while every remaining row is processed. Many +-- concurrent producers on one lane therefore queue behind whole batches. This +-- migration adds awa.insert_jobs_compat_batch, which does the lane-independent +-- work first (job ids, unique claims in key order, lane rows, payloads), then +-- reserves each lane's sequence range once, in (queue, priority, shard) order, +-- and writes the ready rows and segments in two statements. The lock is held +-- across the reservation, those two statements and the commit. +-- +-- The column arrays are parallel and must have equal length. Every element is +-- required except run_at, unique_key, unique_states and ordering_hash; +-- insert_job_compat's per-row defaults are the caller's to apply. +-- +-- p_skip_unique_conflicts inserts a batch while skipping rows whose unique key +-- is already claimed (the rows are absent from the result) instead of failing +-- the whole batch with a unique violation. +-- +-- N-1 binaries: unchanged. They keep calling awa.insert_job_compat, whose +-- definition this migration does not touch, and the two paths share the lane +-- lock, so producers on either version serialise exactly as before. +-- Binaries that call the new function need this migration first. +-- Live load: one CREATE OR REPLACE FUNCTION, no table DDL. + +CREATE OR REPLACE FUNCTION awa.insert_jobs_compat_batch( + p_kind TEXT[], + p_queue TEXT[], + p_args JSONB[], + p_state TEXT[], + p_priority SMALLINT[], + p_max_attempts SMALLINT[], + p_run_at TIMESTAMPTZ[], + p_metadata JSONB[], + p_tags JSONB[], + p_unique_key BYTEA[], + p_unique_states TEXT[], + p_ordering_hash TEXT[], + p_skip_unique_conflicts BOOLEAN DEFAULT FALSE +) +RETURNS SETOF awa.jobs +AS $$ +DECLARE + v_count INT := COALESCE(cardinality(p_kind), 0); + v_schema TEXT; + v_old_search_path TEXT; + v_now TIMESTAMPTZ := clock_timestamp(); + v_job_ids BIGINT[]; + v_skipped BIGINT[] := ARRAY[]::BIGINT[]; + v_lane RECORD; + v_lane_queues TEXT[] := ARRAY[]::TEXT[]; + v_lane_priorities SMALLINT[] := ARRAY[]::SMALLINT[]; + v_lane_shards SMALLINT[] := ARRAY[]::SMALLINT[]; + v_lane_starts BIGINT[] := ARRAY[]::BIGINT[]; + v_start BIGINT; + v_ready_slot INT; + v_ready_generation BIGINT; + v_row RECORD; + v_shards SMALLINT[]; +BEGIN + IF v_count = 0 THEN + RETURN; + END IF; + + IF cardinality(p_queue) IS DISTINCT FROM v_count + OR cardinality(p_args) IS DISTINCT FROM v_count + OR cardinality(p_state) IS DISTINCT FROM v_count + OR cardinality(p_priority) IS DISTINCT FROM v_count + OR cardinality(p_max_attempts) IS DISTINCT FROM v_count + OR cardinality(p_run_at) IS DISTINCT FROM v_count + OR cardinality(p_metadata) IS DISTINCT FROM v_count + OR cardinality(p_tags) IS DISTINCT FROM v_count + OR cardinality(p_unique_key) IS DISTINCT FROM v_count + OR cardinality(p_unique_states) IS DISTINCT FROM v_count + OR cardinality(p_ordering_hash) IS DISTINCT FROM v_count + THEN + RAISE EXCEPTION 'insert_jobs_compat_batch: column arrays must have equal length' + USING ERRCODE = '22023'; + END IF; + + IF EXISTS ( + SELECT 1 + FROM unnest(p_kind, p_queue, p_args, p_state, p_priority, p_max_attempts, p_metadata, p_tags) + AS input(kind, queue, args, state, priority, max_attempts, metadata, tags) + WHERE input.kind IS NULL OR input.queue IS NULL OR input.args IS NULL + OR input.state IS NULL OR input.priority IS NULL OR input.max_attempts IS NULL + OR input.metadata IS NULL OR input.tags IS NULL + ) THEN + RAISE EXCEPTION 'insert_jobs_compat_batch: kind, queue, args, state, priority, max_attempts, metadata and tags must not be NULL' + USING ERRCODE = '22004'; + END IF; + + IF EXISTS (SELECT 1 FROM unnest(p_kind) AS kind WHERE length(kind) > 200) THEN + RAISE EXCEPTION 'job kind length must be <= 200 characters' + USING ERRCODE = '23514'; + END IF; + + IF EXISTS (SELECT 1 FROM unnest(p_queue) AS queue WHERE length(queue) > 200) THEN + RAISE EXCEPTION 'queue name length must be <= 200 characters' + USING ERRCODE = '23514'; + END IF; + + IF EXISTS ( + SELECT 1 FROM unnest(p_priority) AS priority + WHERE priority < 1 OR priority > 4 + ) THEN + RAISE EXCEPTION 'priority must be between 1 and 4' + USING ERRCODE = '23514'; + END IF; + + IF EXISTS ( + SELECT 1 FROM unnest(p_max_attempts) AS max_attempts + WHERE max_attempts < 1 OR max_attempts > 1000 + ) THEN + RAISE EXCEPTION 'max_attempts must be between 1 and 1000' + USING ERRCODE = '23514'; + END IF; + + IF EXISTS ( + SELECT 1 FROM unnest(p_tags) AS tags + WHERE jsonb_array_length(tags) > 20 + ) THEN + RAISE EXCEPTION 'job tags must contain at most 20 values' + USING ERRCODE = '23514'; + END IF; + + v_schema := awa.active_queue_storage_schema(); + + -- Canonical storage has no lane lock to shorten: insert row by row. + IF v_schema IS NULL THEN + IF NOT p_skip_unique_conflicts THEN + RETURN QUERY + SELECT inserted.* + FROM unnest( + p_kind, p_queue, p_args, p_state, p_priority, p_max_attempts, + p_run_at, p_metadata, p_tags, p_unique_key, p_unique_states + ) WITH ORDINALITY AS input( + kind, queue, args, state, priority, max_attempts, run_at, + metadata, tags, unique_key, unique_states, ord + ) + CROSS JOIN LATERAL awa.insert_job_compat( + input.kind, + input.queue, + input.args, + input.state::awa.job_state, + input.priority, + input.max_attempts, + input.run_at, + input.metadata, + ARRAY( + SELECT tag.value + FROM jsonb_array_elements_text(input.tags) WITH ORDINALITY AS tag(value, tag_ord) + ORDER BY tag.tag_ord + ), + input.unique_key, + input.unique_states::bit(8), + NULL + ) AS inserted + ORDER BY input.ord; + RETURN; + END IF; + + -- Skipping needs a subtransaction per row. + FOR v_row IN + SELECT + input.ord, + input.kind, + input.queue, + input.args, + input.state, + input.priority, + input.max_attempts, + input.run_at, + input.metadata, + ARRAY( + SELECT tag.value + FROM jsonb_array_elements_text(input.tags) WITH ORDINALITY AS tag(value, tag_ord) + ORDER BY tag.tag_ord + ) AS tags, + input.unique_key, + input.unique_states + FROM unnest( + p_kind, p_queue, p_args, p_state, p_priority, p_max_attempts, + p_run_at, p_metadata, p_tags, p_unique_key, p_unique_states + ) WITH ORDINALITY AS input( + kind, queue, args, state, priority, max_attempts, run_at, + metadata, tags, unique_key, unique_states, ord + ) + ORDER BY input.ord + LOOP + BEGIN + RETURN NEXT awa.insert_job_compat( + v_row.kind, + v_row.queue, + v_row.args, + v_row.state::awa.job_state, + v_row.priority, + v_row.max_attempts, + v_row.run_at, + v_row.metadata, + v_row.tags, + v_row.unique_key, + v_row.unique_states::bit(8), + NULL + ); + EXCEPTION WHEN unique_violation THEN + NULL; + END; + END LOOP; + RETURN; + END IF; + + IF EXISTS ( + SELECT 1 FROM unnest(p_state) AS state + WHERE state NOT IN ('available', 'scheduled', 'retryable') + ) THEN + RAISE EXCEPTION 'queue storage does not support initial state %', + (SELECT state FROM unnest(p_state) AS state + WHERE state NOT IN ('available', 'scheduled', 'retryable') LIMIT 1) + USING ERRCODE = '22023'; + END IF; + + v_old_search_path := current_setting('search_path'); + PERFORM set_config('search_path', format('%I,awa,public', v_schema), true); + + -- Everything up to the lane reservation is lane-independent and runs + -- without a lane lock. + EXECUTE format( + 'SELECT array_agg(nextval(%L::regclass)::bigint) FROM generate_series(1, $1)', + format('%I.job_id_seq', v_schema) + ) + INTO v_job_ids + USING v_count; + + -- Rows that enqueue as `available` go to a lane. Their shard is derived as + -- insert_job_compat derives it: ordering-key rows from the key hash, the + -- rest from the backend pid. + SELECT array_agg( + CASE WHEN input.state = 'available' THEN + MOD( + CASE WHEN input.ordering_hash IS NULL + THEN pg_backend_pid()::numeric + ELSE input.ordering_hash::numeric + END, + COALESCE(meta.enqueue_shards, 1)::numeric + )::smallint + END + ORDER BY input.ord + ) + INTO v_shards + FROM unnest(p_queue, p_state, p_ordering_hash) + WITH ORDINALITY AS input(queue, state, ordering_hash, ord) + LEFT JOIN awa.queue_meta AS meta ON meta.queue = input.queue; + + -- Claims go in unique-key order, so two producers with overlapping keys + -- cannot wait on each other in opposite orders. + IF p_skip_unique_conflicts THEN + WITH claimed AS ( + INSERT INTO awa.job_unique_claims (unique_key, job_id) + SELECT input.unique_key, v_job_ids[input.ord] + FROM unnest(p_unique_key, p_unique_states, p_state) + WITH ORDINALITY AS input(unique_key, unique_states, state, ord) + WHERE input.unique_key IS NOT NULL + AND input.unique_states IS NOT NULL + AND awa.job_state_in_bitmask(input.unique_states::bit(8), input.state::awa.job_state) + ORDER BY input.unique_key, input.ord + ON CONFLICT (unique_key) DO NOTHING + RETURNING job_id + ) + SELECT COALESCE(array_agg(wanted.job_id), ARRAY[]::BIGINT[]) + INTO v_skipped + FROM ( + SELECT v_job_ids[input.ord] AS job_id + FROM unnest(p_unique_key, p_unique_states, p_state) + WITH ORDINALITY AS input(unique_key, unique_states, state, ord) + WHERE input.unique_key IS NOT NULL + AND input.unique_states IS NOT NULL + AND awa.job_state_in_bitmask(input.unique_states::bit(8), input.state::awa.job_state) + ) AS wanted + WHERE NOT EXISTS (SELECT 1 FROM claimed WHERE claimed.job_id = wanted.job_id); + ELSE + INSERT INTO awa.job_unique_claims (unique_key, job_id) + SELECT input.unique_key, v_job_ids[input.ord] + FROM unnest(p_unique_key, p_unique_states, p_state) + WITH ORDINALITY AS input(unique_key, unique_states, state, ord) + WHERE input.unique_key IS NOT NULL + AND input.unique_states IS NOT NULL + AND awa.job_state_in_bitmask(input.unique_states::bit(8), input.state::awa.job_state) + ORDER BY input.unique_key, input.ord; + END IF; + + -- Register lanes this batch is the first to use. The head tables carry a + -- row trigger that takes the lane lock before the conflict check, so only + -- missing lanes are proposed: a batch for an existing lane must not queue + -- behind that lane's producers before it has any work to show for it. + INSERT INTO queue_lanes (queue, priority) + SELECT lanes.queue, lanes.priority + FROM ( + SELECT DISTINCT input.queue, input.priority + FROM unnest(p_queue, p_priority, p_state) + WITH ORDINALITY AS input(queue, priority, state, ord) + WHERE input.state = 'available' + AND v_job_ids[input.ord] <> ALL (v_skipped) + ) AS lanes + WHERE NOT EXISTS ( + SELECT 1 FROM queue_lanes AS existing + WHERE existing.queue = lanes.queue AND existing.priority = lanes.priority + ) + ORDER BY lanes.queue COLLATE "C", lanes.priority + ON CONFLICT ON CONSTRAINT queue_lanes_pkey DO NOTHING; + + INSERT INTO queue_enqueue_heads (queue, priority, enqueue_shard) + SELECT lanes.queue, lanes.priority, lanes.shard + FROM ( + SELECT DISTINCT input.queue, input.priority, v_shards[input.ord] AS shard + FROM unnest(p_queue, p_priority, p_state) + WITH ORDINALITY AS input(queue, priority, state, ord) + WHERE input.state = 'available' + AND v_job_ids[input.ord] <> ALL (v_skipped) + ) AS lanes + WHERE NOT EXISTS ( + SELECT 1 FROM queue_enqueue_heads AS existing + WHERE existing.queue = lanes.queue + AND existing.priority = lanes.priority + AND existing.enqueue_shard = lanes.shard + ) + ORDER BY lanes.queue COLLATE "C", lanes.priority, lanes.shard + ON CONFLICT (queue, priority, enqueue_shard) DO NOTHING; + + INSERT INTO queue_claim_heads (queue, priority, enqueue_shard) + SELECT lanes.queue, lanes.priority, lanes.shard + FROM ( + SELECT DISTINCT input.queue, input.priority, v_shards[input.ord] AS shard + FROM unnest(p_queue, p_priority, p_state) + WITH ORDINALITY AS input(queue, priority, state, ord) + WHERE input.state = 'available' + AND v_job_ids[input.ord] <> ALL (v_skipped) + ) AS lanes + WHERE NOT EXISTS ( + SELECT 1 FROM queue_claim_heads AS existing + WHERE existing.queue = lanes.queue + AND existing.priority = lanes.priority + AND existing.enqueue_shard = lanes.shard + ) + ORDER BY lanes.queue COLLATE "C", lanes.priority, lanes.shard + ON CONFLICT (queue, priority, enqueue_shard) DO NOTHING; + + -- Re-enqueues that are not yet due carry no lane. + INSERT INTO deferred_jobs ( + job_id, kind, queue, args, state, priority, attempt, run_lease, + max_attempts, run_at, attempted_at, finalized_at, created_at, + unique_key, unique_states, payload + ) + SELECT + v_job_ids[input.ord], + input.kind, + input.queue, + input.args, + input.state::awa.job_state, + input.priority, + 0, + 0, + input.max_attempts, + COALESCE(input.run_at, v_now), + NULL, + NULL, + v_now, + input.unique_key, + input.unique_states, + jsonb_build_object( + 'metadata', input.metadata, + 'tags', input.tags, + 'errors', '[]'::jsonb, + 'progress', NULL + ) + FROM unnest( + p_kind, p_queue, p_args, p_state, p_priority, p_max_attempts, p_run_at, + p_metadata, p_tags, p_unique_key, p_unique_states + ) WITH ORDINALITY AS input( + kind, queue, args, state, priority, max_attempts, run_at, + metadata, tags, unique_key, unique_states, ord + ) + WHERE input.state <> 'available' + AND v_job_ids[input.ord] <> ALL (v_skipped); + + -- The result rows do not depend on the lanes, so build them before the + -- lock window opens. + RETURN QUERY + SELECT + v_job_ids[input.ord], + input.kind, + input.queue, + input.args, + input.state::awa.job_state, + input.priority, + 0::smallint, + input.max_attempts, + COALESCE(input.run_at, v_now), + NULL::timestamptz, + NULL::timestamptz, + NULL::timestamptz, + NULL::timestamptz, + v_now, + ARRAY[]::jsonb[], + input.metadata, + ARRAY( + SELECT tag.value + FROM jsonb_array_elements_text(input.tags) WITH ORDINALITY AS tag(value, tag_ord) + ORDER BY tag.tag_ord + ), + input.unique_key, + input.unique_states::bit(8), + NULL::uuid, + NULL::timestamptz, + NULL::text, + NULL::text, + NULL::text, + NULL::text, + 0::bigint, + NULL::jsonb + FROM unnest( + p_kind, p_queue, p_args, p_state, p_priority, p_max_attempts, p_run_at, + p_metadata, p_tags, p_unique_key, p_unique_states + ) WITH ORDINALITY AS input( + kind, queue, args, state, priority, max_attempts, run_at, + metadata, tags, unique_key, unique_states, ord + ) + WHERE v_job_ids[input.ord] <> ALL (v_skipped) + ORDER BY input.ord; + + -- Lane lock window: reserve each lane's sequence range once, in + -- (queue, priority, shard) order, then write the ready rows. The locks are + -- held to the end of the transaction, which keeps the rows of a lane + -- visible in lane_seq order. + FOR v_lane IN + SELECT lanes.queue, lanes.priority, lanes.shard, lanes.row_count + FROM ( + SELECT input.queue, input.priority, v_shards[input.ord] AS shard, + count(*) AS row_count + FROM unnest(p_queue, p_priority, p_state) + WITH ORDINALITY AS input(queue, priority, state, ord) + WHERE input.state = 'available' + AND v_job_ids[input.ord] <> ALL (v_skipped) + GROUP BY input.queue, input.priority, v_shards[input.ord] + ) AS lanes + ORDER BY lanes.queue COLLATE "C", lanes.priority, lanes.shard + LOOP + EXECUTE format('SELECT %I.reserve_enqueue_seq($1, $2, $3, $4)', v_schema) + INTO v_start + USING v_lane.queue, v_lane.priority, v_lane.shard, v_lane.row_count::BIGINT; + + v_lane_queues := v_lane_queues || v_lane.queue; + v_lane_priorities := v_lane_priorities || v_lane.priority; + v_lane_shards := v_lane_shards || v_lane.shard; + v_lane_starts := v_lane_starts || v_start; + END LOOP; + + IF cardinality(v_lane_queues) > 0 THEN + SELECT rc.slot, rc.generation + INTO v_ready_slot, v_ready_generation + FROM ring_cursor('queue') AS rc; + + INSERT INTO ready_entries ( + ready_slot, ready_generation, job_id, kind, queue, args, priority, + attempt, run_lease, max_attempts, lane_seq, enqueue_shard, run_at, + attempted_at, created_at, unique_key, unique_states, payload + ) + SELECT + v_ready_slot, + v_ready_generation, + v_job_ids[placed.ord], + placed.kind, + placed.queue, + placed.args, + placed.priority, + 0, + 0, + placed.max_attempts, + lane.start_seq + placed.lane_rank - 1, + lane.shard, + COALESCE(placed.run_at, v_now), + NULL, + v_now, + placed.unique_key, + placed.unique_states, + jsonb_build_object( + 'metadata', placed.metadata, + 'tags', placed.tags, + 'errors', '[]'::jsonb, + 'progress', NULL + ) + FROM ( + SELECT + input.*, + v_shards[input.ord] AS shard, + row_number() OVER ( + PARTITION BY input.queue, input.priority, v_shards[input.ord] + ORDER BY input.ord + ) AS lane_rank + FROM unnest( + p_kind, p_queue, p_args, p_state, p_priority, p_max_attempts, p_run_at, + p_metadata, p_tags, p_unique_key, p_unique_states + ) WITH ORDINALITY AS input( + kind, queue, args, state, priority, max_attempts, run_at, + metadata, tags, unique_key, unique_states, ord + ) + WHERE input.state = 'available' + AND v_job_ids[input.ord] <> ALL (v_skipped) + ) AS placed + JOIN unnest(v_lane_queues, v_lane_priorities, v_lane_shards, v_lane_starts) + AS lane(queue, priority, shard, start_seq) + ON lane.queue = placed.queue + AND lane.priority = placed.priority + AND lane.shard = placed.shard; + + -- One segment per run of consecutive lane_seq values sharing a run_at. + INSERT INTO ready_segments ( + ready_slot, ready_generation, queue, priority, enqueue_shard, + first_lane_seq, next_lane_seq, first_run_at + ) + SELECT + v_ready_slot, + v_ready_generation, + runs.queue, + runs.priority, + runs.shard, + min(runs.lane_seq), + max(runs.lane_seq) + 1, + runs.run_at + FROM ( + SELECT + placed.*, + placed.lane_seq - row_number() OVER ( + PARTITION BY placed.queue, placed.priority, placed.shard, placed.run_at + ORDER BY placed.lane_seq + ) AS run_id + FROM ( + SELECT + input.queue, + input.priority, + v_shards[input.ord] AS shard, + COALESCE(input.run_at, v_now) AS run_at, + lane.start_seq + row_number() OVER ( + PARTITION BY input.queue, input.priority, v_shards[input.ord] + ORDER BY input.ord + ) - 1 AS lane_seq + FROM unnest(p_queue, p_priority, p_state, p_run_at) + WITH ORDINALITY AS input(queue, priority, state, run_at, ord) + JOIN unnest(v_lane_queues, v_lane_priorities, v_lane_shards, v_lane_starts) + AS lane(queue, priority, shard, start_seq) + ON lane.queue = input.queue + AND lane.priority = input.priority + AND lane.shard = v_shards[input.ord] + WHERE input.state = 'available' + AND v_job_ids[input.ord] <> ALL (v_skipped) + ) AS placed + ) AS runs + GROUP BY runs.queue, runs.priority, runs.shard, runs.run_at, runs.run_id + ON CONFLICT (ready_slot, ready_generation, queue, priority, enqueue_shard, first_lane_seq) + DO NOTHING; + + PERFORM pg_notify('awa:' || notified.queue, '') + FROM (SELECT DISTINCT unnest(v_lane_queues) AS queue) AS notified; + END IF; + + PERFORM set_config('search_path', v_old_search_path, true); +END; +$$ LANGUAGE plpgsql VOLATILE +SET search_path = pg_catalog, awa, public; + +INSERT INTO awa.schema_version (version, description) +VALUES (53, 'Batch producer insert with a short enqueue lane lock window') +ON CONFLICT (version) DO NOTHING; diff --git a/awa-model/src/insert.rs b/awa-model/src/insert.rs index e221b0fa7..15b5bf18b 100644 --- a/awa-model/src/insert.rs +++ b/awa-model/src/insert.rs @@ -11,13 +11,14 @@ use sqlx::{PgExecutor, PgPool}; // On queue storage every available-state insert holds a transaction-scoped // advisory lock on its `(queue, priority, enqueue_shard)` lane until the // enclosing transaction ends, so two transactions that enqueue into the same -// lanes in opposite orders can deadlock. Every multi-row enqueue therefore -// takes its lane locks in one canonical order: `(queue, priority, shard)` -// ascending, queues compared bytewise (`COLLATE "C"`, the order of Rust's -// `str`). The batch inserts here sort rows by that key, stably, before they -// reach `awa.insert_job_compat`, and put the rows back in input order for the -// caller. `QueueStorage` batch enqueues group rows in a `BTreeMap` keyed the -// same way. +// lanes in opposite orders can deadlock. The batch inserts here go through +// `awa.insert_jobs_compat_batch`, which does the lane-independent work first +// and then reserves its lanes in one canonical order: `(queue, priority, +// shard)` ascending, queues compared bytewise (`COLLATE "C"`, the order of +// Rust's `str`). `QueueStorage` batch enqueues group rows in a `BTreeMap` +// keyed the same way. Holding the lanes only across the reservation and the +// ready-row writes keeps a lane's lock window independent of the batch's +// unique-claim and payload work. // // The shard is derived as `insert_job_compat` derives it: rows with an // ordering key use `ordering_key_hash64 % enqueue_shards`, other rows @@ -211,65 +212,27 @@ impl PreparedJobInsert { /// job, because sqlx has no array encoding for the enum, the bit string, or a /// ragged array of arrays. `ordering_hash` carries each row's /// [`ordering_key_hash64`] as decimal text (the value exceeds `bigint`) so the -/// statement can place keyed rows on the shard `insert_job_compat` will pick. +/// function can place keyed rows on the shard `insert_job_compat` would pick. /// -/// Rows are inserted in canonical lane order (see "Lane lock order" above) and -/// returned in input order. -const INSERT_MANY_SQL: &str = r#" - WITH input AS MATERIALIZED ( - SELECT - raw.*, - MOD( - CASE WHEN raw.ordering_hash IS NULL - THEN pg_backend_pid()::numeric - ELSE raw.ordering_hash::numeric - END, - COALESCE( - (SELECT meta.enqueue_shards FROM awa.queue_meta AS meta WHERE meta.queue = raw.queue), - 1 - )::numeric - ) AS lane_shard - FROM unnest( - $1::text[], - $2::text[], - $3::jsonb[], - $4::text[], - $5::smallint[], - $6::smallint[], - $7::timestamptz[], - $8::jsonb[], - $9::jsonb[], - $10::bytea[], - $11::text[], - $12::bytea[], - $13::text[] - ) WITH ORDINALITY AS raw( - kind, queue, args, state, priority, max_attempts, run_at, - metadata, tags, unique_key, unique_states, ordering_key, ordering_hash, ord - ) - ORDER BY raw.queue COLLATE "C", raw.priority, lane_shard, raw.ord +/// `$13` skips rows whose unique key is already claimed instead of failing the +/// batch. Rows come back in input order; skipped rows are absent. +const INSERT_MANY_BATCH_SQL: &str = r#" + SELECT * + FROM awa.insert_jobs_compat_batch( + $1::text[], + $2::text[], + $3::jsonb[], + $4::text[], + $5::smallint[], + $6::smallint[], + $7::timestamptz[], + $8::jsonb[], + $9::jsonb[], + $10::bytea[], + $11::text[], + $12::text[], + $13 ) - SELECT inserted.* - FROM input - CROSS JOIN LATERAL awa.insert_job_compat( - input.kind, - input.queue, - input.args, - input.state::awa.job_state, - input.priority, - input.max_attempts, - input.run_at, - input.metadata, - ARRAY( - SELECT tag.value - FROM jsonb_array_elements_text(input.tags) WITH ORDINALITY AS tag(value, ord) - ORDER BY tag.ord - ), - input.unique_key, - input.unique_states::bit(8), - input.ordering_key - ) AS inserted - ORDER BY input.ord "#; /// Compute unique_key and unique_states from opts. @@ -476,7 +439,9 @@ fn ordering_hash_text(row: &PreparedRow) -> Option { /// Insert multiple jobs in a single statement. /// /// Supports uniqueness constraints — jobs with `unique` opts will have their -/// `unique_key` and `unique_states` computed and included. +/// `unique_key` and `unique_states` computed and included. A job whose unique +/// key is already claimed fails the whole batch with a unique violation; use +/// [`insert_many_skip_unique_conflicts`] to insert the rest instead. #[tracing::instrument( skip(executor, jobs), fields( @@ -489,6 +454,43 @@ fn ordering_hash_text(row: &PreparedRow) -> Option { ) )] pub async fn insert_many<'e, E>(executor: E, jobs: &[InsertParams]) -> Result, AwaError> +where + E: PgExecutor<'e>, +{ + insert_many_batch(executor, jobs, false).await +} + +/// Insert multiple jobs in a single statement, skipping those whose unique key +/// is already claimed. +/// +/// Returns the rows that were inserted, in input order; a skipped job has no +/// entry in the result. Jobs without `unique` opts are always inserted. +#[tracing::instrument( + skip(executor, jobs), + fields( + job.count = jobs.len(), + otel.name = "send", + otel.kind = "producer", + messaging.system = "awa", + messaging.operation.r#type = "send", + messaging.batch.message_count = jobs.len(), + ) +)] +pub async fn insert_many_skip_unique_conflicts<'e, E>( + executor: E, + jobs: &[InsertParams], +) -> Result, AwaError> +where + E: PgExecutor<'e>, +{ + insert_many_batch(executor, jobs, true).await +} + +async fn insert_many_batch<'e, E>( + executor: E, + jobs: &[InsertParams], + skip_unique_conflicts: bool, +) -> Result, AwaError> where E: PgExecutor<'e>, { @@ -497,7 +499,7 @@ where } let rows = precompute_rows(jobs)?; - let results = sqlx::query_as::<_, JobRow>(INSERT_MANY_SQL) + let results = sqlx::query_as::<_, JobRow>(INSERT_MANY_BATCH_SQL) .bind(rows.iter().map(|row| row.kind.as_str()).collect::>()) .bind( rows.iter() @@ -529,48 +531,14 @@ where .map(|row| row.unique_states.as_deref()) .collect::>(), ) - .bind( - rows.iter() - .map(|row| row.ordering_key.as_deref()) - .collect::>(), - ) .bind(rows.iter().map(ordering_hash_text).collect::>()) + .bind(skip_unique_conflicts) .fetch_all(executor) .await?; Ok(results) } -/// CTEs that number the staged rows in staging order and re-sort them into -/// canonical lane order (see "Lane lock order" above); `staged_in_lane_order` -/// carries the staging-order position as `ord`. -macro_rules! staged_in_lane_order_ctes { - () => { - r#" - staged AS ( - SELECT *, row_number() OVER () AS ord - FROM pg_temp.awa_copy_staging - ), - staged_in_lane_order AS MATERIALIZED ( - SELECT - staged.*, - MOD( - CASE WHEN staged.ordering_hash IS NULL - THEN pg_backend_pid()::numeric - ELSE staged.ordering_hash::numeric - END, - COALESCE( - (SELECT meta.enqueue_shards FROM awa.queue_meta AS meta WHERE meta.queue = staged.queue), - 1 - )::numeric - ) AS lane_shard - FROM staged - ORDER BY staged.queue COLLATE "C", staged.priority, lane_shard, staged.ord - ) - "# - }; -} - /// Insert many jobs through the compatibility COPY surface. /// /// Uses a temp staging table with no constraints for fast COPY ingestion, @@ -646,150 +614,53 @@ pub async fn insert_many_copy( copy_in.finish().await?; } - // 3. INSERT...SELECT from staging into real table + // 3. Insert the staged rows through the batch function, which skips rows + // whose unique key is already claimed when the batch has any. let has_unique = rows.iter().any(|r| r.unique_key.is_some()); - - let results = if has_unique { - // The compatibility `awa.jobs` surface is now a view backed by hot and - // deferred tables, so the old `ON CONFLICT` path is no longer available - // here. Keep COPY for staging/parsing, then insert unique rows one at a - // time and skip duplicates explicitly. - let staged_rows = sqlx::query_as::< - _, - ( - i64, - String, - String, - serde_json::Value, - String, - i16, - i16, - Option>, - serde_json::Value, - Vec, - Option>, - Option, - Option>, - ), - >(concat!( - "WITH", - staged_in_lane_order_ctes!(), - r#" + let results = sqlx::query_as::<_, JobRow>( + r#" + WITH staged AS ( + SELECT *, row_number() OVER () AS ord + FROM pg_temp.awa_copy_staging + ), + columns AS ( SELECT - ord, - kind, - queue, - args, - state::text, - priority, - max_attempts, - run_at, - metadata, - tags, - unique_key, - unique_states::text, - ordering_key - FROM staged_in_lane_order - ORDER BY queue COLLATE "C", priority, lane_shard, ord - "# - )) - .fetch_all(&mut *conn) - .await?; - - let mut inserted = Vec::with_capacity(staged_rows.len()); - for ( - staged_position, - kind, - queue, - args, - state, - priority, - max_attempts, - run_at, - metadata, - tags, - unique_key, - unique_states, - ordering_key, - ) in staged_rows - { - sqlx::query("SAVEPOINT awa_copy_unique_row") - .execute(&mut *conn) - .await?; - - let result = sqlx::query_as::<_, JobRow>(POSTGRES_INSERT_JOB_SQL) - .bind(&kind) - .bind(&queue) - .bind(&args) - .bind(&state) - .bind(priority) - .bind(max_attempts) - .bind(run_at) - .bind(&metadata) - .bind(&tags) - .bind(&unique_key) - .bind(&unique_states) - .bind(&ordering_key) - .fetch_one(&mut *conn) - .await; - - match result { - Ok(row) => { - inserted.push((staged_position, row)); - sqlx::query("RELEASE SAVEPOINT awa_copy_unique_row") - .execute(&mut *conn) - .await?; - } - Err(sqlx::Error::Database(db_err)) if db_err.code().as_deref() == Some("23505") => { - sqlx::query("ROLLBACK TO SAVEPOINT awa_copy_unique_row") - .execute(&mut *conn) - .await?; - sqlx::query("RELEASE SAVEPOINT awa_copy_unique_row") - .execute(&mut *conn) - .await?; - continue; - } - Err(err) => { - sqlx::query("ROLLBACK TO SAVEPOINT awa_copy_unique_row") - .execute(&mut *conn) - .await?; - sqlx::query("RELEASE SAVEPOINT awa_copy_unique_row") - .execute(&mut *conn) - .await?; - return Err(AwaError::Database(err)); - } - } - } - - inserted.sort_unstable_by_key(|(staged_position, _)| *staged_position); - inserted.into_iter().map(|(_, row)| row).collect() - } else { - sqlx::query_as::<_, JobRow>(concat!( - "WITH", - staged_in_lane_order_ctes!(), - r#" - SELECT inserted.* - FROM staged_in_lane_order AS staged - CROSS JOIN LATERAL awa.insert_job_compat( - staged.kind, - staged.queue, - staged.args, - staged.state, - staged.priority, - staged.max_attempts, - staged.run_at, - staged.metadata, - staged.tags, - staged.unique_key, - staged.unique_states, - staged.ordering_key - ) AS inserted - ORDER BY staged.ord - "# - )) - .fetch_all(&mut *conn) - .await? - }; + array_agg(kind ORDER BY ord) AS kinds, + array_agg(queue ORDER BY ord) AS queues, + array_agg(args ORDER BY ord) AS args, + array_agg(state::text ORDER BY ord) AS states, + array_agg(priority ORDER BY ord) AS priorities, + array_agg(max_attempts ORDER BY ord) AS max_attempts, + array_agg(run_at ORDER BY ord) AS run_ats, + array_agg(metadata ORDER BY ord) AS metadata, + array_agg(to_jsonb(tags) ORDER BY ord) AS tags, + array_agg(unique_key ORDER BY ord) AS unique_keys, + array_agg(unique_states::text ORDER BY ord) AS unique_states, + array_agg(ordering_hash ORDER BY ord) AS ordering_hashes + FROM staged + ) + SELECT inserted.* + FROM columns + CROSS JOIN LATERAL awa.insert_jobs_compat_batch( + columns.kinds, + columns.queues, + columns.args, + columns.states, + columns.priorities, + columns.max_attempts, + columns.run_ats, + columns.metadata, + columns.tags, + columns.unique_keys, + columns.unique_states, + columns.ordering_hashes, + $1 + ) AS inserted + "#, + ) + .bind(has_unique) + .fetch_all(&mut *conn) + .await?; // Keep the session-local staging table reusable across multiple COPY calls // within the same outer transaction. diff --git a/awa-model/src/lib.rs b/awa-model/src/lib.rs index 66a5dd4ee..7f23ec69a 100644 --- a/awa-model/src/lib.rs +++ b/awa-model/src/lib.rs @@ -45,7 +45,8 @@ pub use cron::{CronJobRow, CronMissedFirePolicy, PeriodicJob, PeriodicJobBuilder pub use dlq::{DlqMetadata, DlqRow, ListDlqFilter, RetryFromDlqOpts}; pub use error::{map_sqlx_error, AwaError}; pub use insert::{ - insert, insert_many, insert_many_copy, insert_many_copy_from_pool, insert_prepared, insert_with, + insert, insert_many, insert_many_copy, insert_many_copy_from_pool, + insert_many_skip_unique_conflicts, insert_prepared, insert_with, }; pub use job::{InsertOpts, InsertParams, JobRow, JobState, UniqueOpts}; pub use output::{AttemptError, JobOutput, OutputDescriptor, OutputError, MAX_OUTPUT_BYTES}; diff --git a/awa-model/src/migrations.rs b/awa-model/src/migrations.rs index 385035b65..23afccc77 100644 --- a/awa-model/src/migrations.rs +++ b/awa-model/src/migrations.rs @@ -5,7 +5,7 @@ use sqlx::{Connection, PgPool}; use tracing::{info, warn}; /// Current schema version. -pub const CURRENT_VERSION: i32 = 52; +pub const CURRENT_VERSION: i32 = 53; /// Migrations that require an exclusive (no-live-runtime) upgrade window. /// @@ -292,6 +292,11 @@ const MIGRATIONS: &[(i32, &str, &[&str])] = &[ ), (51, "Per-slot claim functions", &[V23_UP, V51_UP]), (52, "Retained job output", &[V23_UP, V52_UP]), + ( + 53, + "Batch producer insert with a short enqueue lane lock window", + &[V53_UP], + ), ]; const V1_UP: &str = include_str!("../migrations/v001_canonical_schema.sql"); @@ -352,6 +357,7 @@ const V49_UP: &str = include_str!("../migrations/v049_prepared_lane_sequences.sq const V50_UP: &str = include_str!("../migrations/v050_drop_ready_lane_shard_index.sql"); const V51_UP: &str = include_str!("../migrations/v051_claim_slot_functions.sql"); const V52_UP: &str = include_str!("../migrations/v052_retained_job_output.sql"); +const V53_UP: &str = include_str!("../migrations/v053_insert_jobs_batch_compat.sql"); /// Old version numbers from pre-0.4 releases that used V3/V4/V5 numbering. /// Also tolerates the unreleased inline-V6 branch numbering used during review. diff --git a/awa/tests/enqueue_lane_contention_test.rs b/awa/tests/enqueue_lane_contention_test.rs index 46a89625b..6495213a8 100644 --- a/awa/tests/enqueue_lane_contention_test.rs +++ b/awa/tests/enqueue_lane_contention_test.rs @@ -22,8 +22,8 @@ //! AWA_LANE_BENCH_BATCH jobs per batch, default 185 //! AWA_LANE_BENCH_UNIQUE 0|1, default 1 //! AWA_LANE_BENCH_SHARDS `enqueue_shards` for the queue, default 1 -//! AWA_LANE_BENCH_MODE insert_many | insert_many_copy | queue_storage | -//! legacy_row_function +//! AWA_LANE_BENCH_MODE insert_many | insert_many_copy | insert_many_skip | +//! queue_storage | legacy_row_function //! AWA_LANE_BENCH_DUP_PCT % of batches carrying one duplicate key that //! fall back to row-at-a-time inserts, default 0 //! AWA_LANE_BENCH_SECS measured seconds per scenario, default 8 @@ -43,7 +43,8 @@ mod ci_timing; use awa::model::insert_prepared; use awa::model::{ - insert_many, insert_many_copy_from_pool, prepare_raw_job_insert, AwaError, QueueStorage, + insert_many, insert_many_copy_from_pool, insert_many_skip_unique_conflicts, + prepare_raw_job_insert, AwaError, QueueStorage, }; use awa::{InsertOpts, InsertParams, QueueStorageConfig, UniqueOpts}; use awa_testing::setup; @@ -64,6 +65,7 @@ const WARMUP: Duration = Duration::from_millis(1_500); enum Mode { InsertMany, InsertManyCopy, + InsertManySkip, QueueStorage, LegacyRowFunction, } @@ -73,6 +75,7 @@ impl Mode { match raw { "insert_many" => Mode::InsertMany, "insert_many_copy" => Mode::InsertManyCopy, + "insert_many_skip" => Mode::InsertManySkip, "queue_storage" => Mode::QueueStorage, "legacy_row_function" => Mode::LegacyRowFunction, other => panic!("unknown AWA_LANE_BENCH_MODE {other}"), @@ -83,6 +86,7 @@ impl Mode { match self { Mode::InsertMany => "insert_many", Mode::InsertManyCopy => "insert_many_copy", + Mode::InsertManySkip => "insert_many_skip", Mode::QueueStorage => "queue_storage", Mode::LegacyRowFunction => "legacy_row_function", } @@ -379,6 +383,9 @@ async fn producer_loop( } Mode::InsertMany => insert_many(&pool, &jobs).await.map(|_| ()), Mode::InsertManyCopy => insert_many_copy_from_pool(&pool, &jobs).await.map(|_| ()), + Mode::InsertManySkip => insert_many_skip_unique_conflicts(&pool, &jobs) + .await + .map(|_| ()), Mode::QueueStorage => store.enqueue_params_batch(&pool, &jobs).await.map(|_| ()), Mode::LegacyRowFunction => legacy_row_function_insert(&pool, &jobs).await, }; @@ -677,10 +684,12 @@ fn scenario( /// Absolute floors sit well below the rates a shared runner sustains, and the /// latency ceiling well above, so they only catch a lane that has stopped /// making progress; `benchmarks/baseline.json` carries the regression -/// thresholds on rate and p99. The one-producer scenarios measure what a batch -/// costs the lane lock, through `insert_many` and through the per-row -/// function, and are reported for comparison. Every bound goes through -/// `ci_timing` so a contended runner loosens it. +/// thresholds on rate and p99. What the gate asserts about lock hold time is +/// relative, because it must hold on any runner: one producer's 185-row batch +/// has to take well under the time the same rows take through the per-row +/// function, measured in the same run, and sixteen producers on one lane have +/// to out-run what the per-row function could ever sustain for it. Every +/// bound goes through `ci_timing` so a contended runner loosens it. #[tokio::test(flavor = "multi_thread", worker_threads = 6)] #[ignore] async fn test_enqueue_lane_contention_gate() { @@ -730,10 +739,35 @@ async fn test_enqueue_lane_contention_gate() { single_lane.p99_ms, p99_ceiling ); + + // The batch holds the lane lock for a fraction of the per-row function's + // time, and the lane's ceiling follows. Both bounds are ratios of numbers + // measured moments apart on the same machine. + let max_hold_ratio = (GATE_MAX_HOLD_RATIO * ci_timing::chaos_timeout_multiplier()).min(0.9); + let hold_ratio = one_producer.p50_ms / row_function.p50_ms; + assert!( + hold_ratio <= max_hold_ratio, + "a 185-row batch took {:.1}ms against {:.1}ms through the per-row function \ + (ratio {hold_ratio:.2}, limit {max_hold_ratio:.2})", + one_producer.p50_ms, + row_function.p50_ms + ); + let min_scaling = GATE_MIN_LANE_SCALING / ci_timing::chaos_timeout_multiplier(); + let lane_scaling = single_lane.jobs_per_s / row_function.jobs_per_s; + assert!( + lane_scaling >= min_scaling.max(1.0), + "16 producers on one lane sustain {:.0}/s, {lane_scaling:.1}x the per-row function's \ + single-producer {:.0}/s (need {:.1}x)", + single_lane.jobs_per_s, + row_function.jobs_per_s, + min_scaling.max(1.0) + ); } const GATE_MIN_JOBS_PER_S: i64 = 2_000; const GATE_MAX_P99_MS: u64 = 15_000; +const GATE_MAX_HOLD_RATIO: f64 = 0.4; +const GATE_MIN_LANE_SCALING: f64 = 2.0; /// Exploration sweep; see the module docs for the tunables. #[tokio::test(flavor = "multi_thread", worker_threads = 8)] diff --git a/awa/tests/enqueue_lane_lock_order_test.rs b/awa/tests/enqueue_lane_lock_order_test.rs index 924d212ae..51ec9a4ac 100644 --- a/awa/tests/enqueue_lane_lock_order_test.rs +++ b/awa/tests/enqueue_lane_lock_order_test.rs @@ -282,6 +282,74 @@ fn ordering_key_per_shard(shards: i16) -> Vec> { .collect() } +/// Key of the advisory lock `reserve_enqueue_seq` holds for one lane. +async fn lane_reservation_lock_key(pool: &PgPool, queue: &str, priority: i16, shard: i16) -> i64 { + sqlx::query_scalar( + r#" + SELECT hashtextextended( + format('%I.%I', 'awa', awa.queue_lane_sequence_name('queue_enqueue_seq', $1, $2, $3)), + 0 + ) + "#, + ) + .bind(queue) + .bind(priority) + .bind(shard) + .fetch_one(pool) + .await + .expect("derive lane reservation lock key") +} + +/// The backend waiting for the advisory lock `key`, once there is one. +async fn advisory_waiter_pid(pool: &PgPool, key: i64) -> i32 { + let started = Instant::now(); + loop { + let pid: Option = sqlx::query_scalar( + r#" + SELECT pid + FROM pg_locks + WHERE locktype = 'advisory' + AND NOT granted + AND database = (SELECT oid FROM pg_database WHERE datname = current_database()) + AND ((classid::bigint << 32) | objid::bigint) = $1 + LIMIT 1 + "#, + ) + .bind(key) + .fetch_optional(pool) + .await + .expect("poll pg_locks"); + if let Some(pid) = pid { + return pid; + } + assert!( + started.elapsed() < WAIT_DEADLINE, + "no backend started waiting for advisory lock {key}" + ); + tokio::time::sleep(Duration::from_millis(10)).await; + } +} + +async fn granted_advisory_keys(pool: &PgPool, pid: i32) -> std::collections::BTreeSet { + sqlx::query_scalar::<_, i64>( + r#" + SELECT (classid::bigint << 32) | objid::bigint + FROM pg_locks + WHERE locktype = 'advisory' AND granted AND pid = $1 + "#, + ) + .bind(pid) + .fetch_all(pool) + .await + .expect("read granted advisory locks") + .into_iter() + .collect() +} + +/// A batch over sharded lanes reserves them in `(queue, priority, shard)` +/// order, whatever order its rows arrive in. A gate holds one lane in the +/// middle of that order; the producer must be parked on it holding exactly the +/// lanes before it. async fn assert_batch_reserves_lanes_in_canonical_order(producer: Producer) { let _guard = LANE_LOCK_TEST_GUARD.lock().await; let (pool, _config) = setup_queue_storage().await; @@ -309,6 +377,7 @@ async fn assert_batch_reserves_lanes_in_canonical_order(producer: Producer) { let keys = ordering_key_per_shard(shards); let mut jobs = Vec::new(); + let mut lanes = std::collections::BTreeSet::new(); let rounds = match producer { Producer::CopyLarge => 700, _ => 12, @@ -317,55 +386,112 @@ async fn assert_batch_reserves_lanes_in_canonical_order(producer: Producer) { for queue in &queues { let mut params = job(queue, round, false); params.opts.priority = if round % 5 == 0 { 1 } else { 2 }; - // Keyed rows spread over every shard; every third row has no key. - if round % 3 != 0 { - params.opts.ordering_key = Some(keys[(round + queue.len()) % keys.len()].clone()); - } + // Every row is keyed, so its shard, and so its lane, is known here. + let shard = (round + queue.len()) % keys.len(); + params.opts.ordering_key = Some(keys[shard].clone()); + lanes.insert(( + queue.as_bytes().to_vec(), + params.opts.priority, + shard as i16, + queue.clone(), + )); jobs.push(params); } } + assert!(lanes.len() >= 6, "the batch must span many lanes"); - let inserted = producer.run(&pool, &jobs).await.expect("insert batch"); + let canonical: Vec<(String, i16, i16)> = lanes + .into_iter() + .map(|(_, priority, shard, queue)| (queue, priority, shard)) + .collect(); + let mut canonical_keys = Vec::new(); + for (queue, priority, shard) in &canonical { + canonical_keys.push(lane_reservation_lock_key(&pool, queue, *priority, *shard).await); + } + + // Provision the lanes so the gate lock is the only thing the producer waits for. + for (index, queue) in queues.iter().enumerate() { + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage"); + for (priority, shard) in [ + (1, 0), + (1, 1), + (1, 2), + (1, 3), + (2, 0), + (2, 1), + (2, 2), + (2, 3), + ] { + let mut params = job(queue, 10_000 + index, false); + params.opts.priority = priority; + params.opts.ordering_key = Some(keys[shard as usize].clone()); + store + .enqueue_params_batch(&pool, &[params]) + .await + .expect("provision lane"); + } + } + + let gated = canonical.len() / 2; + let mut gate = pool.begin().await.expect("begin gate transaction"); + sqlx::query("SELECT pg_advisory_xact_lock($1)") + .bind(canonical_keys[gated]) + .execute(&mut *gate) + .await + .expect("take gate lock"); + + let competing = { + let pool = pool.clone(); + let jobs = jobs.clone(); + tokio::spawn(async move { producer.run(&pool, &jobs).await }) + }; + let waiter = advisory_waiter_pid(&pool, canonical_keys[gated]).await; + let held = granted_advisory_keys(&pool, waiter).await; + let expected: std::collections::BTreeSet = + canonical_keys[..gated].iter().copied().collect(); + assert_eq!( + held, + expected, + "a batch parked on lane {gated} of {} must hold the lanes before it and no later one", + canonical.len() + ); + + gate.commit().await.expect("release gate"); + let inserted = tokio::time::timeout(WAIT_DEADLINE, competing) + .await + .expect("producer finished") + .expect("producer task") + .expect("insert batch"); + + // Lane ordering must not leak into the result: rows come back in input order. assert_eq!(inserted.len(), jobs.len()); for (row, params) in inserted.iter().zip(&jobs) { assert_eq!(row.queue, params.opts.queue); assert_eq!(row.args, params.args); } - // Job ids are allocated as each row reaches `insert_job_compat`, so id - // order is lock order. - let lane_by_job: std::collections::HashMap = - sqlx::query_as::<_, (i64, String, i16, i16)>( - "SELECT job_id, queue, priority, enqueue_shard FROM awa.ready_entries WHERE job_id = ANY($1)", + // Within a lane, lane_seq follows input order. + let lane_by_job: std::collections::HashMap = + sqlx::query_as::<_, (i64, String, i16, i16, i64)>( + "SELECT job_id, queue, priority, enqueue_shard, lane_seq FROM awa.ready_entries WHERE job_id = ANY($1)", ) .bind(inserted.iter().map(|row| row.id).collect::>()) .fetch_all(&pool) .await .expect("read lanes") .into_iter() - .map(|(job_id, queue, priority, shard)| (job_id, (queue, priority, shard))) + .map(|(job_id, queue, priority, shard, lane_seq)| { + (job_id, (queue, priority, shard, lane_seq)) + }) .collect(); assert_eq!(lane_by_job.len(), jobs.len()); - - let mut by_lock_order: Vec<(i64, usize)> = inserted - .iter() - .enumerate() - .map(|(position, row)| (row.id, position)) - .collect(); - by_lock_order.sort_unstable(); - let lock_order: Vec<(&(String, i16, i16), usize)> = by_lock_order - .iter() - .map(|(job_id, position)| (&lane_by_job[job_id], *position)) - .collect(); - for pair in lock_order.windows(2) { - let (lane, position) = pair[0]; - let (next_lane, next_position) = pair[1]; - assert!( - lane.0.as_bytes() < next_lane.0.as_bytes() - || (lane.0 == next_lane.0 && (lane.1, lane.2) < (next_lane.1, next_lane.2)) - || (lane == next_lane && position < next_position), - "lane {lane:?} (input {position}) was locked before lane {next_lane:?} (input {next_position})" - ); + let mut last_seq_by_lane: std::collections::HashMap<(String, i16, i16), i64> = + std::collections::HashMap::new(); + for row in &inserted { + let (queue, priority, shard, lane_seq) = lane_by_job[&row.id].clone(); + if let Some(previous) = last_seq_by_lane.insert((queue, priority, shard), lane_seq) { + assert_eq!(lane_seq, previous + 1, "lane_seq must follow input order"); + } } } diff --git a/awa/tests/insert_many_batch_test.rs b/awa/tests/insert_many_batch_test.rs new file mode 100644 index 000000000..aafdf9202 --- /dev/null +++ b/awa/tests/insert_many_batch_test.rs @@ -0,0 +1,426 @@ +//! `insert_many` and `insert_many_copy` on the batch insert function. +//! +//! A batch does its lane-independent work (job ids, unique claims, lane +//! registration) before it reserves its lanes, and holds a lane lock only for +//! the reservation, the ready-row writes and the commit. These tests cover that +//! ordering, skip-on-conflict inserts, and the shape of what lands in the +//! lanes. +//! +//! Requires a running Postgres instance. +//! Run with: `cargo test --package awa --test insert_many_batch_test -- --nocapture` + +use awa::model::{ + insert_many, insert_many_copy_from_pool, insert_many_skip_unique_conflicts, AwaError, + QueueStorage, +}; +use awa::{InsertOpts, InsertParams, JobState, QueueStorageConfig, UniqueOpts}; +use awa_testing::setup; +use sqlx::PgPool; +use std::sync::LazyLock; +use std::time::{Duration, Instant}; +use tokio::sync::Mutex; +use uuid::Uuid; + +/// The tests switch the storage engine of a shared database. +static ENGINE_GUARD: LazyLock> = LazyLock::new(|| Mutex::new(())); + +const WAIT_DEADLINE: Duration = Duration::from_secs(20); + +async fn queue_storage_pool() -> PgPool { + let pool = setup::setup(8).await; + setup::activate_queue_storage(&pool).await; + pool +} + +fn unique_queue(label: &str) -> String { + format!( + "batch_{label}_{}", + &Uuid::new_v4().simple().to_string()[..12] + ) +} + +fn job(queue: &str, seq: i64, unique: bool) -> InsertParams { + InsertParams { + kind: "insert_many_batch_job".to_string(), + args: serde_json::json!({ "seq": seq }), + opts: InsertOpts { + queue: queue.to_string(), + unique: unique.then(|| UniqueOpts { + by_queue: true, + by_args: true, + ..Default::default() + }), + ..Default::default() + }, + } +} + +async fn ready_lane_seqs(pool: &PgPool, queue: &str) -> Vec<(i64, i64)> { + sqlx::query_as( + "SELECT (args->>'seq')::bigint, lane_seq FROM awa.ready_entries + WHERE queue = $1 ORDER BY lane_seq", + ) + .bind(queue) + .fetch_all(pool) + .await + .expect("read ready rows") +} + +async fn claims_for_queue(pool: &PgPool, queue: &str) -> i64 { + sqlx::query_scalar( + "SELECT count(*)::bigint FROM awa.job_unique_claims AS claims + WHERE claims.job_id IN (SELECT job_id FROM awa.ready_entries WHERE queue = $1)", + ) + .bind(queue) + .fetch_one(pool) + .await + .expect("count claims") +} + +fn is_unique_violation(err: &AwaError) -> bool { + match err { + AwaError::UniqueConflict { .. } => true, + AwaError::Database(sqlx::Error::Database(db_err)) => { + db_err.code().as_deref() == Some("23505") + } + _ => false, + } +} + +async fn lane_lock_key(pool: &PgPool, queue: &str) -> i64 { + sqlx::query_scalar( + "SELECT hashtextextended( + format('%I.%I', 'awa', awa.queue_lane_sequence_name('queue_enqueue_seq', $1, 2::smallint, 0::smallint)), + 0)", + ) + .bind(queue) + .fetch_one(pool) + .await + .expect("derive lane lock key") +} + +#[tokio::test] +async fn batch_lands_in_one_lane_in_input_order_and_is_claimable() { + let _guard = ENGINE_GUARD.lock().await; + let pool = queue_storage_pool().await; + let queue = unique_queue("order"); + + let jobs: Vec = (0..300).map(|seq| job(&queue, seq, seq % 2 == 0)).collect(); + let inserted = insert_many(&pool, &jobs).await.expect("insert batch"); + assert_eq!( + inserted + .iter() + .map(|row| row.args["seq"].as_i64().unwrap()) + .collect::>(), + (0..300).collect::>(), + "rows come back in input order" + ); + assert!(inserted.iter().all(|row| row.state == JobState::Available)); + + let lane = ready_lane_seqs(&pool, &queue).await; + assert_eq!(lane.len(), 300); + let first = lane[0].1; + for (offset, (seq, lane_seq)) in lane.iter().enumerate() { + assert_eq!(*seq, offset as i64, "lane_seq follows input order"); + assert_eq!(*lane_seq, first + offset as i64, "lane_seq is dense"); + } + + // The lane's segment metadata must let the claim path find every row. + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage"); + let mut claimed = Vec::new(); + while claimed.len() < 300 { + let batch = store + .claim_runtime_batch(&pool, &queue, 100, Duration::from_secs(60)) + .await + .expect("claim"); + assert!(!batch.is_empty(), "claim path lost rows of the batch"); + claimed.extend( + batch + .into_iter() + .map(|job| job.job.args["seq"].as_i64().unwrap()), + ); + } + assert_eq!( + claimed, + (0..300).collect::>(), + "claimed in lane order" + ); +} + +#[tokio::test] +async fn batch_with_mixed_states_routes_each_row() { + let _guard = ENGINE_GUARD.lock().await; + let pool = queue_storage_pool().await; + let queue = unique_queue("mixed"); + + let later = chrono::Utc::now() + chrono::Duration::hours(1); + let mut jobs: Vec = (0..6).map(|seq| job(&queue, seq, false)).collect(); + jobs[1].opts.run_at = Some(later); + jobs[4].opts.run_at = Some(later); + + let inserted = insert_many(&pool, &jobs).await.expect("insert mixed batch"); + let states: Vec = inserted.iter().map(|row| row.state).collect(); + assert_eq!( + states, + vec![ + JobState::Available, + JobState::Scheduled, + JobState::Available, + JobState::Available, + JobState::Scheduled, + JobState::Available, + ] + ); + let ready: Vec = ready_lane_seqs(&pool, &queue) + .await + .into_iter() + .map(|(seq, _)| seq) + .collect(); + assert_eq!(ready, vec![0, 2, 3, 5]); + let deferred: i64 = sqlx::query_scalar( + "SELECT count(*)::bigint FROM awa.deferred_jobs WHERE queue = $1 AND state = 'scheduled'", + ) + .bind(&queue) + .fetch_one(&pool) + .await + .expect("count deferred"); + assert_eq!(deferred, 2); +} + +#[tokio::test] +async fn unique_conflict_fails_the_batch_atomically() { + let _guard = ENGINE_GUARD.lock().await; + let pool = queue_storage_pool().await; + let queue = unique_queue("atomic"); + + insert_many(&pool, &[job(&queue, 1, true)]) + .await + .expect("first insert"); + + let batch = vec![ + job(&queue, 0, true), + job(&queue, 1, true), + job(&queue, 2, true), + ]; + let err = insert_many(&pool, &batch) + .await + .expect_err("duplicate key must fail the batch"); + assert!(is_unique_violation(&err), "{err:?}"); + + let landed: Vec = ready_lane_seqs(&pool, &queue) + .await + .into_iter() + .map(|(seq, _)| seq) + .collect(); + assert_eq!(landed, vec![1], "nothing from the failed batch landed"); + assert_eq!(claims_for_queue(&pool, &queue).await, 1); +} + +#[tokio::test] +async fn skip_unique_conflicts_inserts_the_rest_in_order() { + let _guard = ENGINE_GUARD.lock().await; + let pool = queue_storage_pool().await; + let queue = unique_queue("skip"); + + insert_many(&pool, &[job(&queue, 1, true), job(&queue, 3, true)]) + .await + .expect("seed"); + + // Keys 1 and 3 are already claimed, 4 repeats inside the batch, and the + // last row carries no unique key at all. + let batch = vec![ + job(&queue, 0, true), + job(&queue, 1, true), + job(&queue, 2, true), + job(&queue, 3, true), + job(&queue, 4, true), + job(&queue, 4, true), + job(&queue, 5, false), + ]; + let inserted = insert_many_skip_unique_conflicts(&pool, &batch) + .await + .expect("skip insert"); + assert_eq!( + inserted + .iter() + .map(|row| row.args["seq"].as_i64().unwrap()) + .collect::>(), + vec![0, 2, 4, 5] + ); + + let lane = ready_lane_seqs(&pool, &queue).await; + assert_eq!( + lane.iter().map(|(seq, _)| *seq).collect::>(), + vec![1, 3, 0, 2, 4, 5], + "skipped rows take no lane position" + ); + for pair in lane.windows(2) { + assert_eq!(pair[1].1, pair[0].1 + 1, "lane_seq stays dense"); + } + + // Everything skipped: an empty result, not an error. + let inserted = insert_many_skip_unique_conflicts(&pool, &[job(&queue, 0, true)]) + .await + .expect("all skipped"); + assert!(inserted.is_empty()); +} + +#[tokio::test] +async fn copy_skips_unique_conflicts_in_one_pass() { + let _guard = ENGINE_GUARD.lock().await; + let pool = queue_storage_pool().await; + let queue = unique_queue("copy_skip"); + + insert_many(&pool, &[job(&queue, 2, true)]) + .await + .expect("seed"); + let batch: Vec = (0..6).map(|seq| job(&queue, seq, true)).collect(); + let inserted = insert_many_copy_from_pool(&pool, &batch) + .await + .expect("copy insert"); + assert_eq!( + inserted + .iter() + .map(|row| row.args["seq"].as_i64().unwrap()) + .collect::>(), + vec![0, 1, 3, 4, 5] + ); + assert_eq!(ready_lane_seqs(&pool, &queue).await.len(), 6); +} + +#[tokio::test] +async fn canonical_storage_inserts_and_skips_row_by_row() { + let _guard = ENGINE_GUARD.lock().await; + let pool = setup::setup(8).await; + setup::reset_to_canonical(&pool).await; + let queue = unique_queue("canonical"); + + insert_many(&pool, &[job(&queue, 1, true)]) + .await + .expect("seed"); + let batch: Vec = (0..4).map(|seq| job(&queue, seq, true)).collect(); + let err = insert_many(&pool, &batch).await.expect_err("duplicate"); + assert!(is_unique_violation(&err), "{err:?}"); + + let inserted = insert_many_skip_unique_conflicts(&pool, &batch) + .await + .expect("skip insert"); + assert_eq!( + inserted + .iter() + .map(|row| row.args["seq"].as_i64().unwrap()) + .collect::>(), + vec![0, 2, 3] + ); +} + +/// While another transaction holds a lane lock, a batch bound for that lane +/// has already done its lane-independent work (it holds its unique claims) and +/// has not yet written a ready row. Every row's unique claim, not just the +/// first's, is held by then. +#[tokio::test] +async fn batch_waits_for_the_lane_after_its_lane_independent_work() { + let _guard = ENGINE_GUARD.lock().await; + let pool = queue_storage_pool().await; + let queue = unique_queue("window"); + + // Provision the lane so the gate lock is the only thing to wait for. + insert_many(&pool, &[job(&queue, -1, false)]) + .await + .expect("provision lane"); + + let key = lane_lock_key(&pool, &queue).await; + let mut gate = pool.begin().await.expect("begin gate"); + sqlx::query("SELECT pg_advisory_xact_lock($1)") + .bind(key) + .execute(&mut *gate) + .await + .expect("take lane lock"); + + let jobs_for_probe: Vec = (0..50).map(|seq| job(&queue, seq, true)).collect(); + let producer = { + let pool = pool.clone(); + let jobs = jobs_for_probe.clone(); + tokio::spawn(async move { insert_many(&pool, &jobs).await }) + }; + + let started = Instant::now(); + let waiter = loop { + let pid: Option = sqlx::query_scalar( + "SELECT pid FROM pg_locks + WHERE locktype = 'advisory' AND NOT granted + AND ((classid::bigint << 32) | objid::bigint) = $1 + LIMIT 1", + ) + .bind(key) + .fetch_optional(&pool) + .await + .expect("poll pg_locks"); + if let Some(pid) = pid { + break pid; + } + assert!(started.elapsed() < WAIT_DEADLINE, "producer never waited"); + tokio::time::sleep(Duration::from_millis(10)).await; + }; + + let holds_relation_lock = |relation: &'static str| { + let pool = pool.clone(); + async move { + sqlx::query_scalar::<_, bool>( + "SELECT EXISTS ( + SELECT 1 FROM pg_locks + WHERE pid = $1 AND locktype = 'relation' AND granted + AND relation = $2::regclass + )", + ) + .bind(waiter) + .bind(relation) + .fetch_one(&pool) + .await + .expect("read relation locks") + } + }; + // The claim of the batch's last row is already held, uncommitted: an + // insert of the same key waits on the producer's transaction. + let last = jobs_for_probe.last().expect("probe job"); + let last_key = + awa::model::prepare_raw_job_insert(last.kind.clone(), last.args.clone(), last.opts.clone()) + .expect("prepare last job") + .unique_key() + .expect("unique key") + .to_vec(); + let mut probe = pool.begin().await.expect("begin probe"); + sqlx::query("SET LOCAL lock_timeout = '300ms'") + .execute(&mut *probe) + .await + .expect("set lock timeout"); + let probe_result = sqlx::query( + "INSERT INTO awa.job_unique_claims (unique_key, job_id) VALUES ($1, 0) + ON CONFLICT (unique_key) DO NOTHING", + ) + .bind(&last_key) + .execute(&mut *probe) + .await; + match probe_result { + Err(sqlx::Error::Database(db_err)) => assert_eq!( + db_err.code().as_deref(), + Some("55P03"), + "the last row's claim must already be held while the lane lock is awaited" + ), + other => panic!("claim of the last row was not held while waiting for the lane: {other:?}"), + } + drop(probe); + assert!( + !holds_relation_lock("awa.ready_entries").await, + "no ready row is written while the lane lock is awaited" + ); + + gate.commit().await.expect("release lane lock"); + let inserted = tokio::time::timeout(WAIT_DEADLINE, producer) + .await + .expect("producer finished") + .expect("producer task") + .expect("insert batch"); + assert_eq!(inserted.len(), 50); + assert_eq!(ready_lane_seqs(&pool, &queue).await.len(), 51); +} diff --git a/awa/tests/integration_test.rs b/awa/tests/integration_test.rs index c816f0675..a4b9c6567 100644 --- a/awa/tests/integration_test.rs +++ b/awa/tests/integration_test.rs @@ -552,6 +552,9 @@ async fn test_insert_many() { #[tokio::test] async fn test_insert_many_exceeding_bind_parameter_limit() { const JOB_COUNT: usize = 6_000; + // A concurrent test that activates queue storage would route part of the + // batch away from the canonical tables this test reads back. + let _guard = test_lock().lock().await; let client = setup_with_connections(4).await; let queue = "integ_insert_many_bind_limit"; clean_queue(client.pool(), queue).await; diff --git a/benchmarks/baseline.json b/benchmarks/baseline.json index 3fdb7bd08..e4ec128e0 100644 --- a/benchmarks/baseline.json +++ b/benchmarks/baseline.json @@ -33,11 +33,11 @@ "handler_per_s": 160.3 }, "rust/enqueue_lane_16p_unique_185": { - "enqueue_per_s": 2000.0, - "p99_ms": 6000.0 + "enqueue_per_s": 10000.0, + "p99_ms": 2500.0 }, "rust/enqueue_lane_16p_unique_185_shards4": { - "enqueue_per_s": 2000.0 + "enqueue_per_s": 10000.0 }, "rust/mvcc_horizon_overlap": { "min_overlap_vs_baseline": 0.75, diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 1672c5865..ff6085d91 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -434,6 +434,26 @@ Fix: awa --database-url "$DATABASE_URL" migrate ``` +### Producers wait on one queue's enqueue lane + +Symptoms: + +- many connections wait with `wait_event = 'advisory'` while the database is otherwise idle +- `insert_many` takes seconds although the work per batch is milliseconds, and single-job inserts into the same queue take much longer than usual +- scheduled-job promotion and rescue of the same queue run slowly while producers saturate it + +Cause: + +- on queue storage every enqueue holds a transaction-scoped advisory lock on its `(queue, priority, shard)` lane until it commits, so concurrent producers for one lane run one at a time; a lane's ceiling is a batch's rows divided by the time the lock is held +- from migration v053, `insert_many` and `insert_many_copy` hold the lock across the lane write only, a few milliseconds for a 185-row batch; before it, the lock was held while every row of the batch was processed +- maintenance promotion moves due scheduled and retryable jobs into the lane under the same lock; a promotion batch is one transaction across every queue it touches, and the leader runs its branches one at a time, so a batch parked behind a hot lane delays the due jobs of other queues in that batch and the leader's other branches. Rescue itself does not take the lane lock; it writes retryable rows that promotion moves later + +Fix: + +- run `awa migrate` so producers use the batch function +- when `insert_many` fails on a unique conflict, retry with `insert_many_skip_unique_conflicts` rather than inserting the batch again row by row: each single-row insert queues for the lane separately +- raise `awa.queue_meta.enqueue_shards` for a queue whose producers still saturate one lane, accepting partitioned rather than strict FIFO ([ADR-025](adr/025-sharded-enqueue-heads.md)) + ### `deadlock detected` while enqueueing Cause: diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 0afc48afb..0a114d970 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -253,6 +253,25 @@ workers report not ready until the migration runs, as for any version bump. External migration runners apply the complete `awa migrate --sql --from 51 --to 52` bundle, which defines the helper before the tail calls it. +## v053: batch producer insert + +v053 adds `awa.insert_jobs_compat_batch`, the function `insert_many` and +`insert_many_copy` call. It is one `CREATE OR REPLACE FUNCTION`: no table DDL, +no scan, no lock beyond the catalog, so it applies instantly under live load. +`awa.insert_job_compat` is unchanged, and binaries before v053 keep calling it; +both paths take the same per-lane reservation lock, so producers on either +version serialise on a lane as before. + +The runtime role needs `EXECUTE` on the new function; the +[default privileges](security/database-roles.md#runtime-grants) cover functions +the migrator creates. + +A 0.7 binary that calls the new function before the migration has run fails +its `insert_many` and `insert_many_copy` calls with `function +awa.insert_jobs_compat_batch(...) does not exist`. Migrate before rolling +producers. External migration runners apply the `awa migrate --sql --from 52 +--to 53` bundle. + ## The one gate `awa migrate` on a 0.7 binary refuses to apply migrations unless one of these holds: From 1ba226f21c75482c1f4d0b019a8509b563bdfbe6 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 11:51:42 +1300 Subject: [PATCH 33/48] fix(worker): restrict statistics refresh to ring parents, cover standby leaders, report lock skips - Analyse only the known ring parents, not every partitioned table in the schema, so a substrate sharing a schema with application tables never analyses them. - A leader that resolved canonical at start but holds the queue-storage runtime as standby refreshes the queue-storage schema once routing flips to it, checked on every pass. - Take the parent's SHARE UPDATE EXCLUSIVE lock before ANALYZE (SKIP_LOCKED), so a conflicting lock on the parent fails the call with lock_not_available (recorded as skipped_lock) instead of skipping every partition and reporting analyzed. Correct the documentation of what SKIP_LOCKED covers. - Link the pull request from the migration header. - Tests: refresh on election before the first interval, both rejection guards of the helper from the runtime role, and a locked parent. --- CHANGELOG.md | 5 +- .../v053_analyze_queue_storage_statistics.sql | 17 +++- awa-worker/src/maintenance.rs | 6 +- awa-worker/src/statistics.rs | 52 ++++++++++- awa/tests/statistics_refresh_test.rs | 88 +++++++++++++++++++ docs/configuration.md | 2 +- 6 files changed, 162 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d1f27174..1287eca44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,8 +17,9 @@ Notable changes between releases. Detailed migration notes for storage transitio minutes. `ClientBuilder::statistics_refresh_interval` (Python `statistics_refresh_interval_ms`) changes the cadence; zero disables it. One pass takes under a second on a small ring and a few seconds on a large one. - It analyses one relation per transaction with a 2 s `lock_timeout`, skips - children that prune holds, and never makes prune wait: a prune attempt that + It analyses one relation per transaction with a 2 s `lock_timeout` (a call that + times out waiting for a lock is retried next interval and recorded as + `skipped_lock`) and never makes prune wait: a prune attempt that lands while ANALYZE samples the oldest slot's tables returns `blocked` and retries on its normal backoff. Results are in `awa.maintenance.analyze.attempts` and `awa.maintenance.analyze.duration` diff --git a/awa-model/migrations/v053_analyze_queue_storage_statistics.sql b/awa-model/migrations/v053_analyze_queue_storage_statistics.sql index a82a52f8a..93d556d12 100644 --- a/awa-model/migrations/v053_analyze_queue_storage_statistics.sql +++ b/awa-model/migrations/v053_analyze_queue_storage_statistics.sql @@ -1,4 +1,4 @@ --- v053: Planner statistics for the queue-storage tables autovacuum never analyses +-- v053: Planner statistics for the queue-storage tables autovacuum never analyses (#631) -- -- Autovacuum does not analyse partitioned tables, so the ring parents -- (ready_entries, done_entries, leases, ...) have no inherited statistics. It @@ -16,8 +16,16 @@ -- The function analyses one relation per call and the caller runs each call as -- its own transaction, so the locks ANALYZE takes on a partitioned table's -- children are held for that table rather than for the whole refresh. --- SKIP_LOCKED skips a child that ring prune holds ACCESS EXCLUSIVE instead of --- waiting for it and aborting the statistics gathered so far. +-- +-- Locking on a partitioned table, per the ANALYZE documentation: SKIP_LOCKED +-- applies when ANALYZE starts work on a relation, so a child that ring prune +-- holds ACCESS EXCLUSIVE is skipped during the per-child analysis, but +-- sampling the children for the parent's statistics can still wait for it. +-- That wait is bounded by the caller's lock_timeout and fails the call with +-- SQLSTATE 55P03, which the caller records as skipped_lock. SKIP_LOCKED also +-- skips every partition silently when the parent itself is locked, so the +-- function takes the parent's SHARE UPDATE EXCLUSIVE lock first and lets that +-- wait fail instead. -- -- Definer boundary: the function only analyses a head table or a partitioned -- table of a schema that awa.queue_storage_schemas() reports, which requires @@ -94,6 +102,9 @@ BEGIN END IF; IF v_relkind = 'p' THEN + EXECUTE format( + 'LOCK TABLE ONLY %I.%I IN SHARE UPDATE EXCLUSIVE MODE', p_schema, p_relation + ); EXECUTE format('ANALYZE (SKIP_LOCKED) %I.%I', p_schema, p_relation); ELSE EXECUTE format('ANALYZE %I.%I', p_schema, p_relation); diff --git a/awa-worker/src/maintenance.rs b/awa-worker/src/maintenance.rs index 042936b9a..782ca622b 100644 --- a/awa-worker/src/maintenance.rs +++ b/awa-worker/src/maintenance.rs @@ -1336,12 +1336,16 @@ impl MaintenanceService { if self.statistics_refresh_interval.is_zero() { return None; } - let runtime = self.storage.queue_storage()?; + let (runtime, standby) = match self.storage.queue_storage() { + Some(runtime) => (runtime, false), + None => (self.standby_queue_storage.as_ref()?, true), + }; Some(RefreshGuard::spawn( StatisticsRefresher::new( self.pool.clone(), runtime.store.schema().to_string(), self.metrics.clone(), + standby, ), self.statistics_refresh_interval, &self.cancel, diff --git a/awa-worker/src/statistics.rs b/awa-worker/src/statistics.rs index 4fe0aab59..68994c6da 100644 --- a/awa-worker/src/statistics.rs +++ b/awa-worker/src/statistics.rs @@ -26,6 +26,25 @@ const STATEMENT_TIMEOUT: Duration = Duration::from_secs(120); const HEAD_TABLES: [&str; 2] = ["queue_claim_heads", "queue_enqueue_heads"]; +/// The partitioned ring parents a queue-storage substrate installs. A schema +/// can hold other partitioned tables (a substrate in an application schema), +/// which this refresh must never analyse. +const RING_PARENTS: [&str; 13] = [ + "done_entries", + "lease_claim_batches", + "lease_claim_closure_batches", + "lease_claim_closures", + "lease_claims", + "leases", + "queue_terminal_count_deltas", + "ready_claim_attempt_batches", + "ready_entries", + "ready_segments", + "ready_tombstones", + "receipt_completion_batches", + "receipt_completion_tombstones", +]; + const SQLSTATE_INSUFFICIENT_PRIVILEGE: &str = "42501"; const SQLSTATE_UNDEFINED_FUNCTION: &str = "42883"; const SQLSTATE_LOCK_NOT_AVAILABLE: &str = "55P03"; @@ -99,16 +118,26 @@ pub(crate) struct StatisticsRefresher { pool: PgPool, schema: String, metrics: AwaMetrics, + /// Set for a leader whose own storage is canonical and whose queue-storage + /// runtime is only a standby: a pass runs only once routing has flipped to + /// `schema`. + require_active_schema: bool, warned_privilege: AtomicBool, warned_unavailable: AtomicBool, } impl StatisticsRefresher { - pub(crate) fn new(pool: PgPool, schema: String, metrics: AwaMetrics) -> Self { + pub(crate) fn new( + pool: PgPool, + schema: String, + metrics: AwaMetrics, + require_active_schema: bool, + ) -> Self { Self { pool, schema, metrics, + require_active_schema, warned_privilege: AtomicBool::new(false), warned_unavailable: AtomicBool::new(false), } @@ -136,6 +165,25 @@ impl StatisticsRefresher { let started = Instant::now(); let mut summary = PassSummary::default(); + if self.require_active_schema { + match sqlx::query_scalar::<_, Option>( + "SELECT awa.active_queue_storage_schema()", + ) + .fetch_one(&self.pool) + .await + { + Ok(active) if active.as_deref() == Some(self.schema.as_str()) => {} + Ok(_) => { + debug!(schema = %self.schema, "Routing has not flipped to this schema yet; skipping statistics refresh"); + return summary; + } + Err(err) => { + warn!(error = %err, "Could not resolve the active queue-storage schema for statistics refresh"); + return summary; + } + } + } + match awa_model::storage::queue_storage_schema_ready(&self.pool, &self.schema).await { Ok(true) => {} Ok(false) => { @@ -209,10 +257,12 @@ impl StatisticsRefresher { FROM pg_class AS class JOIN pg_namespace AS namespace ON namespace.oid = class.relnamespace WHERE namespace.nspname = $1 AND class.relkind = 'p' + AND class.relname = ANY($2) ORDER BY class.relname "#, ) .bind(&self.schema) + .bind(&RING_PARENTS[..]) .fetch_all(&self.pool) .await } diff --git a/awa/tests/statistics_refresh_test.rs b/awa/tests/statistics_refresh_test.rs index 7215fcf53..aac55c100 100644 --- a/awa/tests/statistics_refresh_test.rs +++ b/awa/tests/statistics_refresh_test.rs @@ -307,6 +307,26 @@ async fn leader_refreshes_statistics_on_election_and_every_interval() { database.drop().await; } +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn leader_refreshes_statistics_on_election_before_the_first_interval() { + let database = TestDatabase::create(None, &[]).await; + let pool = &database.owner_pool; + let store = QueueStorage::new(QueueStorageConfig::default()).expect("queue storage config"); + seed_ready_rows(&store, pool, 200).await; + + let client = probe_client(pool.clone(), Duration::from_secs(300), None); + client.start().await.expect("start client"); + wait_for( + "a statistics pass on election", + Duration::from_secs(30), + || async { stats_rows(pool, "awa", "ready_entries", true).await > 0 }, + ) + .await; + + client.shutdown(Duration::from_secs(5)).await; + database.drop().await; +} + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn zero_interval_disables_the_refresh() { let database = TestDatabase::create(None, &[]).await; @@ -354,6 +374,30 @@ async fn non_owner_runtime_role_refreshes_statistics() { "the runtime role must not be able to analyse the tables itself" ); + for (schema, relation, message) in [ + ( + "public", + "queue_claim_heads", + "is not a queue-storage schema", + ), + ("awa", "jobs", "is not a partitioned or head table"), + ] { + let error = + sqlx::query_scalar::<_, String>("SELECT awa.analyze_queue_storage_relation($1, $2)") + .bind(schema) + .bind(relation) + .fetch_one(&runtime_pool) + .await + .expect_err("the helper rejects what it may not analyse"); + let database_error = error.as_database_error().expect("database error"); + assert_eq!(database_error.code().as_deref(), Some("22023")); + assert!( + database_error.message().contains(message), + "{schema}.{relation}: {}", + database_error.message() + ); + } + let client = probe_client(runtime_pool.clone(), Duration::from_secs(1), None); client .start() @@ -374,6 +418,50 @@ async fn non_owner_runtime_role_refreshes_statistics() { database.drop().await; } +/// A conflicting lock on a ring parent fails the call with `lock_not_available` +/// rather than letting `ANALYZE (SKIP_LOCKED)` skip every partition and report +/// success. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn locked_ring_parent_fails_the_call_instead_of_reporting_analyzed() { + let database = TestDatabase::create(None, &[]).await; + let pool = &database.owner_pool; + + let mut blocker = pool.begin().await.expect("begin blocker"); + sqlx::query("LOCK TABLE ONLY awa.ready_entries IN SHARE UPDATE EXCLUSIVE MODE") + .execute(blocker.as_mut()) + .await + .expect("lock the parent"); + + let mut call = pool.begin().await.expect("begin call"); + sqlx::query("SELECT set_config('lock_timeout', '200ms', true)") + .execute(call.as_mut()) + .await + .expect("set lock_timeout"); + let error = sqlx::query_scalar::<_, String>( + "SELECT awa.analyze_queue_storage_relation('awa', 'ready_entries')", + ) + .fetch_one(call.as_mut()) + .await + .expect_err("the locked parent must not report analyzed"); + assert_eq!( + error + .as_database_error() + .and_then(|error| error.code()) + .as_deref(), + Some("55P03") + ); + call.rollback().await.expect("rollback call"); + + blocker.rollback().await.expect("release the parent"); + let status: String = + sqlx::query_scalar("SELECT awa.analyze_queue_storage_relation('awa', 'ready_entries')") + .fetch_one(pool) + .await + .expect("analyse once the lock is gone"); + assert_eq!(status, "analyzed"); + database.drop().await; +} + fn sum_by_outcome( resource_metrics: &[opentelemetry_sdk::metrics::data::ResourceMetrics], outcome: &str, diff --git a/docs/configuration.md b/docs/configuration.md index 6db6cec59..6d61b5755 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -538,7 +538,7 @@ Autovacuum does not analyse partitioned tables, so the ring parents (`ready_entr The maintenance leader runs `ANALYZE` on both when it is elected and every `statistics_refresh_interval` (default `5m`). One pass takes well under a second on a small ring and a few seconds on a ring with millions of retained rows. It has no measurable effect on claim or completion throughput. -- **Locks.** Each relation is analysed in its own transaction with a 2 s `lock_timeout` and a 120 s `statement_timeout`. Children that ring prune holds are skipped (`SKIP_LOCKED`). Prune never waits for the refresh: its own 10 ms lock timeout applies, so an attempt that lands while `ANALYZE` samples the oldest slot's tables returns `blocked` and retries on its usual backoff. `ANALYZE` of a partitioned table samples every child, so that window cannot be avoided. +- **Locks.** Each relation is analysed in its own transaction with a 2 s `lock_timeout` and a 120 s `statement_timeout`. `SKIP_LOCKED` skips a child that ring prune holds during the per-child analysis, but sampling for the parent's statistics waits for it up to the `lock_timeout`; a call that times out is recorded as `skipped_lock` and retried on the next interval. Prune never waits for the refresh: its own 10 ms lock timeout applies, so an attempt that lands while `ANALYZE` samples the oldest slot's tables returns `blocked` and retries on its usual backoff. `ANALYZE` of a partitioned table samples every child, so that window cannot be avoided. - **Privileges.** The refresh calls `awa.analyze_queue_storage_relation(schema, relation)` (schema v053), a `SECURITY DEFINER` function owned by the role that ran the migration, so the runtime role needs no `MAINTAIN` grant and does not have to own the tables. If the function is missing (run `awa migrate`) or its owner may not analyse the tables, the leader logs one warning that names what is missing and skips the pass; job processing is unaffected. - **Metrics.** `awa.maintenance.analyze.attempts` and `awa.maintenance.analyze.duration`, by `awa.analyze.scope` (`heads`, `ring_parent`) and `awa.analyze.outcome` (`ok`, `skipped_privilege`, `skipped_lock`, `unavailable`, `failed`). A sustained `skipped_lock` rate means something else holds the tables; any `skipped_privilege` or `unavailable` means the refresh is not running. From c824b056e231fe84cd5efc0781dfc637396c2a6b Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 12:06:36 +1300 Subject: [PATCH 34/48] perf(insert): fall back to the per-row insert path on a schema without the batch function insert_many and insert_many_copy used awa.insert_jobs_compat_batch unconditionally, so a binary running ahead of migration v053 failed every batch insert. They now look for the function in the catalog and use the per-row path until it exists. The per-row statement asks the catalog as it inserts, the process keeps the answer, and a call that finds a cached function gone fails once and resets it. insert_many_skip_unique_conflicts needs the function and reports a schema without it. Tests run a binary against a schema without the function, through the migration appearing and the function disappearing again, and mix producers on the per-row and batch functions on one lane. --- CHANGELOG.md | 16 +- .../v053_insert_jobs_batch_compat.sql | 7 +- awa-model/src/insert.rs | 556 ++++++++++++++++-- awa/tests/insert_many_batch_test.rs | 97 +++ awa/tests/insert_many_schema_fallback_test.rs | 206 +++++++ docs/architecture.md | 2 +- docs/configuration.md | 2 + docs/troubleshooting.md | 2 +- docs/upgrade-0.6-to-0.7.md | 13 +- 9 files changed, 837 insertions(+), 64 deletions(-) create mode 100644 awa/tests/insert_many_schema_fallback_test.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index a09350c9e..9cd219c09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ Notable changes between releases. Detailed migration notes for storage transitio with a unique violation, so a producer that replays work had to insert the batch again one job at a time, taking the lane lock once per job. The new function returns the inserted rows in input order, with skipped jobs absent. + It needs migration v053 and returns a validation error on an older schema; + `insert_many_copy` (and Python's `insert_many_copy`) skips unique conflicts on + every schema. ### Changed @@ -26,11 +29,14 @@ Notable changes between releases. Detailed migration notes for storage transitio one lane holds the lock for a fraction of the time it did, which raises the per-lane ceiling several times over and cuts the time producers, promotion and rescue spend waiting for the lane. `insert_many_copy` skips unique - conflicts in one pass instead of one savepoint per row. Run `awa migrate` - before upgrading producers: a binary that calls the new function against a - database without v053 fails with `function awa.insert_jobs_compat_batch ... - does not exist`. Binaries before this release keep calling - `awa.insert_job_compat` and share the lane lock with the new path. + conflicts in one pass instead of one savepoint per row. A binary that runs + ahead of the migration keeps working: `insert_many` and `insert_many_copy` + look for the function in the catalog and use the per-row path until it + exists, then switch to the batch function without a restart (the process + keeps the answer; a call that finds a cached function gone fails once with + `undefined_function` and the next call probes again). Binaries before this + release keep calling `awa.insert_job_compat` and share the lane lock with the + new path, so a mixed fleet keeps each batch contiguous and in order. ### Fixed diff --git a/awa-model/migrations/v053_insert_jobs_batch_compat.sql b/awa-model/migrations/v053_insert_jobs_batch_compat.sql index a6f67912a..8463a9ba6 100644 --- a/awa-model/migrations/v053_insert_jobs_batch_compat.sql +++ b/awa-model/migrations/v053_insert_jobs_batch_compat.sql @@ -22,7 +22,12 @@ -- N-1 binaries: unchanged. They keep calling awa.insert_job_compat, whose -- definition this migration does not touch, and the two paths share the lane -- lock, so producers on either version serialise exactly as before. --- Binaries that call the new function need this migration first. +-- Binaries that know the function: insert_many and insert_many_copy look for it +-- in the catalog and use the per-row function until it exists, so they run +-- unchanged before this migration and pick the function up after it, without a +-- restart. insert_many_skip_unique_conflicts needs it and reports a schema +-- without it. +-- External runners: apply this file; nothing else reads it. -- Live load: one CREATE OR REPLACE FUNCTION, no table DDL. CREATE OR REPLACE FUNCTION awa.insert_jobs_compat_batch( diff --git a/awa-model/src/insert.rs b/awa-model/src/insert.rs index 15b5bf18b..79fdde6cb 100644 --- a/awa-model/src/insert.rs +++ b/awa-model/src/insert.rs @@ -4,7 +4,8 @@ use crate::queue_storage::ordering_key_hash64; use crate::unique::compute_unique_key; use crate::JobArgs; use sqlx::postgres::PgConnection; -use sqlx::{PgExecutor, PgPool}; +use sqlx::{FromRow, PgExecutor, PgPool, Row}; +use std::sync::atomic::{AtomicU8, Ordering}; // ── Lane lock order ───────────────────────────────────────────────────── // @@ -12,13 +13,19 @@ use sqlx::{PgExecutor, PgPool}; // advisory lock on its `(queue, priority, enqueue_shard)` lane until the // enclosing transaction ends, so two transactions that enqueue into the same // lanes in opposite orders can deadlock. The batch inserts here go through -// `awa.insert_jobs_compat_batch`, which does the lane-independent work first -// and then reserves its lanes in one canonical order: `(queue, priority, -// shard)` ascending, queues compared bytewise (`COLLATE "C"`, the order of -// Rust's `str`). `QueueStorage` batch enqueues group rows in a `BTreeMap` -// keyed the same way. Holding the lanes only across the reservation and the -// ready-row writes keeps a lane's lock window independent of the batch's -// unique-claim and payload work. +// `awa.insert_jobs_compat_batch` (migration v053), which does the +// lane-independent work first and then reserves its lanes in one canonical +// order: `(queue, priority, shard)` ascending, queues compared bytewise +// (`COLLATE "C"`, the order of Rust's `str`). `QueueStorage` batch enqueues +// group rows in a `BTreeMap` keyed the same way. Holding the lanes only across +// the reservation and the ready-row writes keeps a lane's lock window +// independent of the batch's unique-claim and payload work. +// +// A schema without the function (a binary running ahead of the migration) is +// served by the per-row path: rows are sorted by the same key, stably, before +// they reach `awa.insert_job_compat`, and returned in input order. Both paths +// take the same lane lock, so producers on either, and older binaries, share a +// lane without reordering it. // // The shard is derived as `insert_job_compat` derives it: rows with an // ordering key use `ordering_key_hash64 % enqueue_shards`, other rows @@ -235,6 +242,68 @@ const INSERT_MANY_BATCH_SQL: &str = r#" ) "#; +/// The per-row form of [`INSERT_MANY_BATCH_SQL`], for schemas without +/// `awa.insert_jobs_compat_batch`: one `awa.insert_job_compat` call per row, +/// rows inserted in canonical lane order (see "Lane lock order" above) and +/// returned in input order. `batch_insert_available` reports whether the batch +/// function exists, so the caller can switch to it. +const INSERT_MANY_ROW_FUNCTION_SQL: &str = r#" + WITH input AS MATERIALIZED ( + SELECT + raw.*, + MOD( + CASE WHEN raw.ordering_hash IS NULL + THEN pg_backend_pid()::numeric + ELSE raw.ordering_hash::numeric + END, + COALESCE( + (SELECT meta.enqueue_shards FROM awa.queue_meta AS meta WHERE meta.queue = raw.queue), + 1 + )::numeric + ) AS lane_shard + FROM unnest( + $1::text[], + $2::text[], + $3::jsonb[], + $4::text[], + $5::smallint[], + $6::smallint[], + $7::timestamptz[], + $8::jsonb[], + $9::jsonb[], + $10::bytea[], + $11::text[], + $12::bytea[], + $13::text[] + ) WITH ORDINALITY AS raw( + kind, queue, args, state, priority, max_attempts, run_at, + metadata, tags, unique_key, unique_states, ordering_key, ordering_hash, ord + ) + ORDER BY raw.queue COLLATE "C", raw.priority, lane_shard, raw.ord + ) + SELECT inserted.*, (SELECT to_regprocedure('awa.insert_jobs_compat_batch(text[],text[],jsonb[],text[],smallint[],smallint[],timestamptz[],jsonb[],jsonb[],bytea[],text[],text[],boolean)') IS NOT NULL ) AS batch_insert_available + FROM input + CROSS JOIN LATERAL awa.insert_job_compat( + input.kind, + input.queue, + input.args, + input.state::awa.job_state, + input.priority, + input.max_attempts, + input.run_at, + input.metadata, + ARRAY( + SELECT tag.value + FROM jsonb_array_elements_text(input.tags) WITH ORDINALITY AS tag(value, ord) + ORDER BY tag.ord + ), + input.unique_key, + input.unique_states::bit(8), + input.ordering_key + ) AS inserted + ORDER BY input.ord +"#; + /// Compute unique_key and unique_states from opts. fn compute_unique_fields( kind: &str, @@ -440,8 +509,14 @@ fn ordering_hash_text(row: &PreparedRow) -> Option { /// /// Supports uniqueness constraints — jobs with `unique` opts will have their /// `unique_key` and `unique_states` computed and included. A job whose unique -/// key is already claimed fails the whole batch with a unique violation; use +/// key is already claimed fails the whole batch with a unique violation +/// (SQLSTATE `23505`, as [`AwaError::Database`]); use /// [`insert_many_skip_unique_conflicts`] to insert the rest instead. +/// +/// Uses `awa.insert_jobs_compat_batch` when the schema has migration v053 and +/// the per-row `awa.insert_job_compat` path when it does not, deciding from the +/// schema itself. The first calls of a process use the per-row path until one +/// of them has seen the function. #[tracing::instrument( skip(executor, jobs), fields( @@ -464,7 +539,16 @@ where /// is already claimed. /// /// Returns the rows that were inserted, in input order; a skipped job has no -/// entry in the result. Jobs without `unique` opts are always inserted. +/// entry in the result. Jobs without `unique` opts are always inserted. A key +/// repeated inside the batch inserts its first job. Unlike [`insert_many`], +/// which fails the batch with a unique violation, this is what a caller that +/// replays work wants, and it takes each lane lock once for the batch rather +/// than once per job as a row-by-row retry does. +/// +/// Requires migration v053 (`awa migrate`); on an older schema it returns +/// [`AwaError::Validation`]. [`insert_many_copy`] skips unique conflicts on +/// every schema, through a connection, and is the Python +/// `insert_many_copy`. #[tracing::instrument( skip(executor, jobs), fields( @@ -499,7 +583,128 @@ where } let rows = precompute_rows(jobs)?; - let results = sqlx::query_as::<_, JobRow>(INSERT_MANY_BATCH_SQL) + + // Skipping conflicts has no per-row equivalent in one statement, so it + // always calls the batch function and reports a schema without it. + if skip_unique_conflicts { + return match bind_batch_columns(sqlx::query_as::<_, JobRow>(INSERT_MANY_BATCH_SQL), &rows) + .bind(true) + .fetch_all(executor) + .await + { + Ok(results) => { + BATCH_INSERT_FUNCTION.record(BatchFunction::Present); + Ok(results) + } + Err(err) if is_missing_batch_function(&err) => { + BATCH_INSERT_FUNCTION.record(BatchFunction::Absent); + Err(AwaError::Validation( + "insert_many_skip_unique_conflicts needs migration v053; run `awa migrate`" + .to_string(), + )) + } + Err(err) => Err(err.into()), + }; + } + + if BATCH_INSERT_FUNCTION.load() == BatchFunction::Present { + return match bind_batch_columns(sqlx::query_as::<_, JobRow>(INSERT_MANY_BATCH_SQL), &rows) + .bind(false) + .fetch_all(executor) + .await + { + Ok(results) => Ok(results), + Err(err) => { + // The schema no longer has the function (restored from an + // older backup, or a different database): probe again on the + // next call. This call's executor is spent, and inside a + // transaction it would be aborted anyway. + if is_missing_batch_function(&err) { + BATCH_INSERT_FUNCTION.record(BatchFunction::Unknown); + } + Err(err.into()) + } + }; + } + + // Not known to be present: insert through the per-row function, which + // every schema has, and learn from the same statement whether the batch + // function exists so the next call can use it. + let rows_out = bind_row_function_columns(sqlx::query(INSERT_MANY_ROW_FUNCTION_SQL), &rows) + .fetch_all(executor) + .await?; + let mut results = Vec::with_capacity(rows_out.len()); + let mut available = false; + for row in &rows_out { + results.push(JobRow::from_row(row)?); + available = row.try_get::("batch_insert_available")?; + } + BATCH_INSERT_FUNCTION.record(if available { + BatchFunction::Present + } else { + BatchFunction::Absent + }); + Ok(results) +} + +/// Whether `awa.insert_jobs_compat_batch` exists in the schema this process +/// writes to, as far as it has seen. +/// +/// The executors the insert functions take are consumed by one statement, so +/// the answer comes from the per-row statement, which asks the catalog as it +/// inserts, and is cached for the process: present stays present until a +/// call finds the function missing, absent is asked again by every per-row +/// call and so is picked up as soon as the migration has run. A process that +/// writes to databases at different migration levels may see one failed call +/// when it switches to one that lacks the function. +struct BatchFunctionState(AtomicU8); + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum BatchFunction { + Unknown, + Present, + Absent, +} + +static BATCH_INSERT_FUNCTION: BatchFunctionState = BatchFunctionState(AtomicU8::new(0)); + +impl BatchFunctionState { + fn load(&self) -> BatchFunction { + match self.0.load(Ordering::Relaxed) { + 1 => BatchFunction::Present, + 2 => BatchFunction::Absent, + _ => BatchFunction::Unknown, + } + } + + fn record(&self, state: BatchFunction) { + self.0.store( + match state { + BatchFunction::Unknown => 0, + BatchFunction::Present => 1, + BatchFunction::Absent => 2, + }, + Ordering::Relaxed, + ); + } +} + +/// `undefined_function` naming the batch function: the schema predates +/// migration v053 or the function was dropped. +fn is_missing_batch_function(err: &sqlx::Error) -> bool { + matches!( + err, + sqlx::Error::Database(db_err) + if db_err.code().as_deref() == Some("42883") + && db_err.message().contains("insert_jobs_compat_batch") + ) +} + +fn bind_batch_columns<'q, O>( + query: sqlx::query::QueryAs<'q, sqlx::Postgres, O, sqlx::postgres::PgArguments>, + rows: &'q [PreparedRow], +) -> sqlx::query::QueryAs<'q, sqlx::Postgres, O, sqlx::postgres::PgArguments> { + query .bind(rows.iter().map(|row| row.kind.as_str()).collect::>()) .bind( rows.iter() @@ -532,17 +737,58 @@ where .collect::>(), ) .bind(rows.iter().map(ordering_hash_text).collect::>()) - .bind(skip_unique_conflicts) - .fetch_all(executor) - .await?; +} - Ok(results) +fn bind_row_function_columns<'q>( + query: sqlx::query::Query<'q, sqlx::Postgres, sqlx::postgres::PgArguments>, + rows: &'q [PreparedRow], +) -> sqlx::query::Query<'q, sqlx::Postgres, sqlx::postgres::PgArguments> { + query + .bind(rows.iter().map(|row| row.kind.as_str()).collect::>()) + .bind( + rows.iter() + .map(|row| row.queue.as_str()) + .collect::>(), + ) + .bind(rows.iter().map(|row| &row.args).collect::>()) + .bind( + rows.iter() + .map(|row| row.state_db_str()) + .collect::>(), + ) + .bind(rows.iter().map(|row| row.priority).collect::>()) + .bind(rows.iter().map(|row| row.max_attempts).collect::>()) + .bind(rows.iter().map(|row| row.run_at).collect::>()) + .bind(rows.iter().map(|row| &row.metadata).collect::>()) + .bind( + rows.iter() + .map(|row| serde_json::json!(row.tags)) + .collect::>(), + ) + .bind( + rows.iter() + .map(|row| row.unique_key.as_deref()) + .collect::>(), + ) + .bind( + rows.iter() + .map(|row| row.unique_states.as_deref()) + .collect::>(), + ) + .bind( + rows.iter() + .map(|row| row.ordering_key.as_deref()) + .collect::>(), + ) + .bind(rows.iter().map(ordering_hash_text).collect::>()) } /// Insert many jobs through the compatibility COPY surface. /// /// Uses a temp staging table with no constraints for fast COPY ingestion, -/// then routes staged rows through `awa.insert_job_compat`. Accepts +/// then inserts them through `awa.insert_jobs_compat_batch`, or, on a schema +/// without migration v053, through `awa.insert_job_compat` row by row. Jobs +/// whose unique key is already claimed are skipped. Accepts /// `&mut PgConnection` so callers can use pool connections or transactions /// (Transaction derefs to PgConnection). For high-volume queue-storage /// producers, prefer [`QueueStorage::enqueue_params_copy`](crate::QueueStorage::enqueue_params_copy) @@ -614,10 +860,77 @@ pub async fn insert_many_copy( copy_in.finish().await?; } - // 3. Insert the staged rows through the batch function, which skips rows - // whose unique key is already claimed when the batch has any. + // 3. Insert the staged rows. With the batch function, unique conflicts are + // skipped in the one statement; without it, each unique row goes through + // the per-row function in its own savepoint. let has_unique = rows.iter().any(|r| r.unique_key.is_some()); - let results = sqlx::query_as::<_, JobRow>( + let results = if batch_function_available(conn).await? { + insert_staged_rows_with_batch_function(conn, has_unique).await? + } else { + insert_staged_rows_per_row(conn, has_unique).await? + }; + + // Keep the session-local staging table reusable across multiple COPY calls + // within the same outer transaction. + sqlx::query("DELETE FROM pg_temp.awa_copy_staging") + .execute(&mut *conn) + .await?; + + Ok(results) +} + +/// Convenience wrapper that acquires a connection from the pool. +/// +/// Wraps the operation in a transaction so the staging rows are cleaned up at +/// commit time even if the caller does not reuse the connection afterward. +#[tracing::instrument( + skip(pool, jobs), + fields( + job.count = jobs.len(), + otel.name = "send", + otel.kind = "producer", + messaging.system = "awa", + messaging.operation.r#type = "send", + messaging.batch.message_count = jobs.len(), + ) +)] +pub async fn insert_many_copy_from_pool( + pool: &PgPool, + jobs: &[InsertParams], +) -> Result, AwaError> { + if jobs.is_empty() { + return Ok(Vec::new()); + } + + let mut tx = pool.begin().await?; + let results = insert_many_copy(&mut tx, jobs).await?; + tx.commit().await?; + + Ok(results) +} + +async fn batch_function_available(conn: &mut PgConnection) -> Result { + if BATCH_INSERT_FUNCTION.load() == BatchFunction::Present { + return Ok(true); + } + let available: bool = sqlx::query_scalar( + "SELECT to_regprocedure('awa.insert_jobs_compat_batch(text[],text[],jsonb[],text[],smallint[],smallint[],timestamptz[],jsonb[],jsonb[],bytea[],text[],text[],boolean)') IS NOT NULL", + ) + .fetch_one(&mut *conn) + .await?; + BATCH_INSERT_FUNCTION.record(if available { + BatchFunction::Present + } else { + BatchFunction::Absent + }); + Ok(available) +} + +async fn insert_staged_rows_with_batch_function( + conn: &mut PgConnection, + skip_unique_conflicts: bool, +) -> Result, AwaError> { + let result = sqlx::query_as::<_, JobRow>( r#" WITH staged AS ( SELECT *, row_number() OVER () AS ord @@ -658,46 +971,187 @@ pub async fn insert_many_copy( ) AS inserted "#, ) - .bind(has_unique) + .bind(skip_unique_conflicts) .fetch_all(&mut *conn) .await?; + Ok(result) +} - // Keep the session-local staging table reusable across multiple COPY calls - // within the same outer transaction. - sqlx::query("DELETE FROM pg_temp.awa_copy_staging") - .execute(&mut *conn) - .await?; - - Ok(results) +/// CTEs that number the staged rows in staging order and re-sort them into +/// canonical lane order (see "Lane lock order" above); `staged_in_lane_order` +/// carries the staging-order position as `ord`. +macro_rules! staged_in_lane_order_ctes { + () => { + r#" + staged AS ( + SELECT *, row_number() OVER () AS ord + FROM pg_temp.awa_copy_staging + ), + staged_in_lane_order AS MATERIALIZED ( + SELECT + staged.*, + MOD( + CASE WHEN staged.ordering_hash IS NULL + THEN pg_backend_pid()::numeric + ELSE staged.ordering_hash::numeric + END, + COALESCE( + (SELECT meta.enqueue_shards FROM awa.queue_meta AS meta WHERE meta.queue = staged.queue), + 1 + )::numeric + ) AS lane_shard + FROM staged + ORDER BY staged.queue COLLATE "C", staged.priority, lane_shard, staged.ord + ) + "# + }; } -/// Convenience wrapper that acquires a connection from the pool. -/// -/// Wraps the operation in a transaction so the staging rows are cleaned up at -/// commit time even if the caller does not reuse the connection afterward. -#[tracing::instrument( - skip(pool, jobs), - fields( - job.count = jobs.len(), - otel.name = "send", - otel.kind = "producer", - messaging.system = "awa", - messaging.operation.r#type = "send", - messaging.batch.message_count = jobs.len(), - ) -)] -pub async fn insert_many_copy_from_pool( - pool: &PgPool, - jobs: &[InsertParams], +async fn insert_staged_rows_per_row( + conn: &mut PgConnection, + has_unique: bool, ) -> Result, AwaError> { - if jobs.is_empty() { - return Ok(Vec::new()); - } + let results: Vec = if has_unique { + // The compatibility `awa.jobs` surface is now a view backed by hot and + // deferred tables, so the old `ON CONFLICT` path is no longer available + // here. Keep COPY for staging/parsing, then insert unique rows one at a + // time and skip duplicates explicitly. + let staged_rows = sqlx::query_as::< + _, + ( + i64, + String, + String, + serde_json::Value, + String, + i16, + i16, + Option>, + serde_json::Value, + Vec, + Option>, + Option, + Option>, + ), + >(concat!( + "WITH", + staged_in_lane_order_ctes!(), + r#" + SELECT + ord, + kind, + queue, + args, + state::text, + priority, + max_attempts, + run_at, + metadata, + tags, + unique_key, + unique_states::text, + ordering_key + FROM staged_in_lane_order + ORDER BY queue COLLATE "C", priority, lane_shard, ord + "# + )) + .fetch_all(&mut *conn) + .await?; - let mut tx = pool.begin().await?; - let results = insert_many_copy(&mut tx, jobs).await?; - tx.commit().await?; + let mut inserted = Vec::with_capacity(staged_rows.len()); + for ( + staged_position, + kind, + queue, + args, + state, + priority, + max_attempts, + run_at, + metadata, + tags, + unique_key, + unique_states, + ordering_key, + ) in staged_rows + { + sqlx::query("SAVEPOINT awa_copy_unique_row") + .execute(&mut *conn) + .await?; + + let result = sqlx::query_as::<_, JobRow>(POSTGRES_INSERT_JOB_SQL) + .bind(&kind) + .bind(&queue) + .bind(&args) + .bind(&state) + .bind(priority) + .bind(max_attempts) + .bind(run_at) + .bind(&metadata) + .bind(&tags) + .bind(&unique_key) + .bind(&unique_states) + .bind(&ordering_key) + .fetch_one(&mut *conn) + .await; + + match result { + Ok(row) => { + inserted.push((staged_position, row)); + sqlx::query("RELEASE SAVEPOINT awa_copy_unique_row") + .execute(&mut *conn) + .await?; + } + Err(sqlx::Error::Database(db_err)) if db_err.code().as_deref() == Some("23505") => { + sqlx::query("ROLLBACK TO SAVEPOINT awa_copy_unique_row") + .execute(&mut *conn) + .await?; + sqlx::query("RELEASE SAVEPOINT awa_copy_unique_row") + .execute(&mut *conn) + .await?; + continue; + } + Err(err) => { + sqlx::query("ROLLBACK TO SAVEPOINT awa_copy_unique_row") + .execute(&mut *conn) + .await?; + sqlx::query("RELEASE SAVEPOINT awa_copy_unique_row") + .execute(&mut *conn) + .await?; + return Err(AwaError::Database(err)); + } + } + } + inserted.sort_unstable_by_key(|(staged_position, _)| *staged_position); + inserted.into_iter().map(|(_, row)| row).collect() + } else { + sqlx::query_as::<_, JobRow>(concat!( + "WITH", + staged_in_lane_order_ctes!(), + r#" + SELECT inserted.* + FROM staged_in_lane_order AS staged + CROSS JOIN LATERAL awa.insert_job_compat( + staged.kind, + staged.queue, + staged.args, + staged.state, + staged.priority, + staged.max_attempts, + staged.run_at, + staged.metadata, + staged.tags, + staged.unique_key, + staged.unique_states, + staged.ordering_key + ) AS inserted + ORDER BY staged.ord + "# + )) + .fetch_all(&mut *conn) + .await? + }; Ok(results) } diff --git a/awa/tests/insert_many_batch_test.rs b/awa/tests/insert_many_batch_test.rs index aafdf9202..d90c081ce 100644 --- a/awa/tests/insert_many_batch_test.rs +++ b/awa/tests/insert_many_batch_test.rs @@ -424,3 +424,100 @@ async fn batch_waits_for_the_lane_after_its_lane_independent_work() { assert_eq!(inserted.len(), 50); assert_eq!(ready_lane_seqs(&pool, &queue).await.len(), 51); } + +/// Producers on the per-row function, as binaries before v053 are, and +/// producers on the batch function share one lane at the same time. Each batch +/// still occupies a contiguous run of `lane_seq`, in input order, and the lane +/// has no duplicate or missing positions. +#[tokio::test] +async fn old_and_new_producers_share_a_lane_without_reordering() { + const TASKS: usize = 8; + const BATCHES: usize = 25; + const BATCH: i64 = 40; + + let _guard = ENGINE_GUARD.lock().await; + let pool = setup::setup(TASKS as u32 + 4).await; + setup::activate_queue_storage(&pool).await; + let queue = unique_queue("mixed_fleet"); + + // Make sure the batch function is the one `insert_many` uses. + insert_many(&pool, &[job(&queue, -1, false)]) + .await + .expect("warm up"); + + let mut tasks = Vec::new(); + for task in 0..TASKS { + let pool = pool.clone(); + let queue = queue.clone(); + tasks.push(tokio::spawn(async move { + for batch in 0..BATCHES { + let jobs: Vec = (0..BATCH) + .map(|seq| InsertParams { + kind: "insert_many_batch_job".to_string(), + args: serde_json::json!({ "seq": seq, "batch": format!("{task}-{batch}") }), + opts: InsertOpts { + queue: queue.clone(), + ..Default::default() + }, + }) + .collect(); + if task % 2 == 0 { + insert_through_row_function(&pool, &jobs).await; + } else { + insert_many(&pool, &jobs) + .await + .expect("batch function insert"); + } + } + })); + } + for task in tasks { + task.await.expect("producer task"); + } + + let rows: Vec<(String, i64, i64)> = sqlx::query_as( + "SELECT args->>'batch', (args->>'seq')::bigint, lane_seq FROM awa.ready_entries + WHERE queue = $1 AND args ? 'batch' ORDER BY lane_seq", + ) + .bind(&queue) + .fetch_all(&pool) + .await + .expect("read lane"); + assert_eq!(rows.len(), TASKS * BATCHES * BATCH as usize); + for pair in rows.windows(2) { + assert!(pair[1].2 > pair[0].2, "lane_seq is unique and ascending"); + } + let mut by_batch: std::collections::HashMap<&str, Vec<(i64, i64)>> = + std::collections::HashMap::new(); + for (batch, seq, lane_seq) in &rows { + by_batch.entry(batch).or_default().push((*seq, *lane_seq)); + } + for (batch, members) in by_batch { + for (offset, (seq, lane_seq)) in members.iter().enumerate() { + assert_eq!(*seq, offset as i64, "batch {batch} keeps input order"); + assert_eq!( + *lane_seq, + members[0].1 + offset as i64, + "batch {batch} occupies a contiguous run of the lane" + ); + } + } +} + +/// What a binary from before v053 sends: one `insert_job_compat` call per row. +async fn insert_through_row_function(pool: &PgPool, jobs: &[InsertParams]) { + sqlx::query( + r#" + SELECT inserted.* + FROM unnest($1::text[], $2::text[], $3::jsonb[]) WITH ORDINALITY AS input(kind, queue, args, ord) + CROSS JOIN LATERAL awa.insert_job_compat(input.kind, input.queue, input.args) AS inserted + ORDER BY input.ord + "#, + ) + .bind(jobs.iter().map(|job| job.kind.as_str()).collect::>()) + .bind(jobs.iter().map(|job| job.opts.queue.as_str()).collect::>()) + .bind(jobs.iter().map(|job| &job.args).collect::>()) + .fetch_all(pool) + .await + .expect("per-row function insert"); +} diff --git a/awa/tests/insert_many_schema_fallback_test.rs b/awa/tests/insert_many_schema_fallback_test.rs new file mode 100644 index 000000000..7c24c954a --- /dev/null +++ b/awa/tests/insert_many_schema_fallback_test.rs @@ -0,0 +1,206 @@ +//! `insert_many` and `insert_many_copy` against a schema without +//! `awa.insert_jobs_compat_batch`. +//! +//! A binary may run ahead of migration v053. It must keep inserting through +//! the per-row function, start using the batch function once it exists, and +//! recover when the function goes away again. The path a call took is read +//! from `ready_segments`: the per-row function writes one segment per row, the +//! batch function one per lane run. +//! +//! The process-wide answer about the function is part of what is tested, so +//! this binary has one test, against a database of its own. +//! +//! Requires a running Postgres instance. +//! Run with: `cargo test --package awa --test insert_many_schema_fallback_test` + +use awa::audited_sql; +use awa::model::{ + insert_many, insert_many_copy_from_pool, insert_many_skip_unique_conflicts, migrations, + AwaError, +}; +use awa::{InsertOpts, InsertParams, UniqueOpts}; +use awa_testing::setup; +use sqlx::PgPool; +use uuid::Uuid; + +const DROP_BATCH_FUNCTION: &str = "DROP FUNCTION awa.insert_jobs_compat_batch(text[], text[], \ + jsonb[], text[], smallint[], smallint[], timestamptz[], jsonb[], jsonb[], bytea[], text[], \ + text[], boolean)"; +const MIGRATION_V053: &str = + include_str!("../../awa-model/migrations/v053_insert_jobs_batch_compat.sql"); + +fn database_url_for(database: &str) -> String { + let url = setup::database_url(); + let (without_query, query) = match url.split_once('?') { + Some((prefix, query)) => (prefix, Some(query)), + None => (url.as_str(), None), + }; + let (base, _) = without_query + .rsplit_once('/') + .expect("database name in URL"); + match query { + Some(query) => format!("{base}/{database}?{query}"), + None => format!("{base}/{database}"), + } +} + +fn jobs(queue: &str, range: std::ops::Range, unique: bool) -> Vec { + range + .map(|seq| InsertParams { + kind: "schema_fallback_job".to_string(), + args: serde_json::json!({ "seq": seq }), + opts: InsertOpts { + queue: queue.to_string(), + unique: unique.then(|| UniqueOpts { + by_queue: true, + by_args: true, + ..Default::default() + }), + ..Default::default() + }, + }) + .collect() +} + +async fn segments(pool: &PgPool, queue: &str) -> i64 { + sqlx::query_scalar("SELECT count(*)::bigint FROM awa.ready_segments WHERE queue = $1") + .bind(queue) + .fetch_one(pool) + .await + .expect("count segments") +} + +async fn ready_seqs(pool: &PgPool, queue: &str) -> Vec { + sqlx::query_scalar( + "SELECT (args->>'seq')::bigint FROM awa.ready_entries WHERE queue = $1 ORDER BY lane_seq", + ) + .bind(queue) + .fetch_all(pool) + .await + .expect("read ready rows") +} + +fn seqs(rows: &[awa::JobRow]) -> Vec { + rows.iter() + .map(|row| row.args["seq"].as_i64().expect("seq")) + .collect() +} + +#[tokio::test] +async fn binary_ahead_of_the_migration_falls_back_and_recovers() { + let admin = setup::pool(2).await; + let database = format!("awa_batchfn_{}", &Uuid::new_v4().simple().to_string()[..12]); + sqlx::query(audited_sql(format!("CREATE DATABASE {database}"))) + .execute(&admin) + .await + .expect("create scratch database"); + + let pool = setup::pool_with_url(&database_url_for(&database), 4).await; + migrations::run(&pool).await.expect("migrate"); + setup::activate_queue_storage(&pool).await; + + // A schema from before v053. + sqlx::query(DROP_BATCH_FUNCTION) + .execute(&pool) + .await + .expect("drop batch function"); + + let first = insert_many(&pool, &jobs("fallback_a", 0..3, false)) + .await + .expect("insert_many without the batch function"); + assert_eq!(seqs(&first), vec![0, 1, 2]); + assert_eq!(segments(&pool, "fallback_a").await, 3, "per-row path"); + insert_many(&pool, &jobs("fallback_a", 3..6, false)) + .await + .expect("a second call without the function"); + assert_eq!(segments(&pool, "fallback_a").await, 6, "still per-row"); + assert_eq!( + ready_seqs(&pool, "fallback_a").await, + vec![0, 1, 2, 3, 4, 5] + ); + + // Unique handling on the per-row path: a duplicate fails `insert_many` + // and is skipped by `insert_many_copy`. + insert_many(&pool, &jobs("fallback_u", 0..2, true)) + .await + .expect("seed unique jobs"); + let duplicate = insert_many(&pool, &jobs("fallback_u", 1..3, true)) + .await + .expect_err("a unique conflict fails the batch"); + assert!( + matches!(&duplicate, AwaError::Database(sqlx::Error::Database(e)) if e.code().as_deref() == Some("23505")), + "{duplicate:?}" + ); + let copied = insert_many_copy_from_pool(&pool, &jobs("fallback_u", 1..4, true)) + .await + .expect("insert_many_copy without the batch function"); + assert_eq!(seqs(&copied), vec![2, 3], "duplicate skipped"); + + // The skip API is new with v053 and says so. + let skipped = insert_many_skip_unique_conflicts(&pool, &jobs("fallback_u", 0..1, true)) + .await + .expect_err("needs the migration"); + assert!( + matches!(&skipped, AwaError::Validation(message) if message.contains("v053")), + "{skipped:?}" + ); + + // The migration runs while the process is up: the next call still takes + // the per-row path, sees the function, and the one after uses it. + sqlx::raw_sql(MIGRATION_V053) + .execute(&pool) + .await + .expect("apply v053"); + insert_many(&pool, &jobs("fallback_b", 0..3, false)) + .await + .expect("call that finds the function"); + assert_eq!(segments(&pool, "fallback_b").await, 3, "per-row path"); + insert_many(&pool, &jobs("fallback_b", 3..6, false)) + .await + .expect("call through the batch function"); + assert_eq!( + segments(&pool, "fallback_b").await, + 4, + "the batch function wrote one segment for its run" + ); + assert_eq!( + ready_seqs(&pool, "fallback_b").await, + vec![0, 1, 2, 3, 4, 5] + ); + + let copied = insert_many_copy_from_pool(&pool, &jobs("fallback_u", 2..6, true)) + .await + .expect("insert_many_copy with the batch function"); + assert_eq!(seqs(&copied), vec![4, 5], "duplicates skipped in one pass"); + let skipped = insert_many_skip_unique_conflicts(&pool, &jobs("fallback_u", 0..8, true)) + .await + .expect("skip with the batch function"); + assert_eq!(seqs(&skipped), vec![6, 7]); + + // The function goes away under a process that has seen it: one call fails + // with `undefined_function`, and the next probes again and succeeds. + sqlx::query(DROP_BATCH_FUNCTION) + .execute(&pool) + .await + .expect("drop batch function again"); + let failed = insert_many(&pool, &jobs("fallback_c", 0..3, false)) + .await + .expect_err("the cached function is gone"); + assert!( + matches!(&failed, AwaError::Database(sqlx::Error::Database(e)) if e.code().as_deref() == Some("42883")), + "{failed:?}" + ); + assert!(ready_seqs(&pool, "fallback_c").await.is_empty()); + insert_many(&pool, &jobs("fallback_c", 0..3, false)) + .await + .expect("the call after the failure falls back"); + assert_eq!(segments(&pool, "fallback_c").await, 3, "per-row path"); + + pool.close().await; + sqlx::query(audited_sql(format!( + "DROP DATABASE {database} WITH (FORCE)" + ))) + .execute(&admin) + .await + .expect("drop scratch database"); +} diff --git a/docs/architecture.md b/docs/architecture.md index d3c527f61..e68e9b14a 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -152,7 +152,7 @@ Enqueue is transactional: if the producer's outer transaction rolls back, the jo There are two COPY-shaped producer paths: - Direct queue-storage COPY is the high-throughput path: Rust producers use a configured `QueueStorage::enqueue_params_copy()`, and Python producers use `enqueue_many_copy()`. Each ready or deferred write group uses array-backed INSERT below 2,048 rows and CSV COPY for larger groups. Direct-copy producers must use the same queue-storage configuration as the worker fleet, especially `queue_stripe_count` / `queue_storage_queue_stripe_count`. -- `insert_many_copy()` is the compatibility path. It stages rows with an array-backed INSERT below 2,048 rows and CSV COPY at or above that cutoff, then takes one of two branches. If any staged row has a `unique_key`, every row is replayed through `POSTGRES_INSERT_JOB_SQL` inside a per-row savepoint so SQLSTATE `23505` can skip that duplicate without aborting the batch; that statement itself calls `awa.insert_job_compat()`. An all-non-unique batch uses one lateral `awa.insert_job_compat()` call per staged row without savepoints. Both branches therefore preserve cross-storage behavior. The planned `awa.insert_job()` public capability becomes the clean stable SQL contract after #342 ships its migration and conformance artifacts. +- `insert_many_copy()` is the compatibility path. It stages rows with an array-backed INSERT below 2,048 rows and CSV COPY at or above that cutoff, then inserts them through `awa.insert_jobs_compat_batch` (migration v053; each lane's lock is held only for its reservation and the ready-row write, and unique conflicts are skipped in the same statement). On a schema without the function it takes one of two per-row branches. If any staged row has a `unique_key`, every row is replayed through `POSTGRES_INSERT_JOB_SQL` inside a per-row savepoint so SQLSTATE `23505` can skip that duplicate without aborting the batch; that statement itself calls `awa.insert_job_compat()`. An all-non-unique batch uses one lateral `awa.insert_job_compat()` call per staged row without savepoints. Both branches therefore preserve cross-storage behavior. The planned `awa.insert_job()` public capability becomes the clean stable SQL contract after #342 ships its migration and conformance artifacts. Claim is cursor-based rather than heap-scan based: diff --git a/docs/configuration.md b/docs/configuration.md index 930bc6bde..477eb58fb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -521,6 +521,8 @@ Direct-copy producers must use the same queue-storage routing config as the work `insert_many_copy()` is the compatibility insert API. It is still useful when a caller needs the canonical insert surface, but in queue-storage mode it routes through the compatibility function rather than being the primary producer fast path. +The Rust compatibility inserts differ in how they treat a unique-key conflict. `insert_many` fails the whole batch with a unique violation (SQLSTATE `23505`). `insert_many_skip_unique_conflicts` inserts the rest of the batch and returns only the rows it inserted, in input order, so a producer that replays work does not have to insert the batch again one job at a time (each of those inserts takes the lane lock separately, which on a busy lane is slower than the batch itself). `insert_many_copy` also skips conflicting jobs, and is what Python's `insert_many_copy()` calls; Python has no separate skip function because that is already its behaviour. `insert_many_skip_unique_conflicts` needs migration v053; the other two use `awa.insert_jobs_compat_batch` when the schema has it and the per-row function when it does not. + ### Terminal count rollup Queue storage keeps exact terminal counts without updating mutable counter rows on the completion hot path. `done_entries` terminal inserts append positive rows to `queue_terminal_count_deltas_*`; retry, discard, DLQ move, and compatibility delete of `done_entries` rows append negative rows. Compact receipt completions do not write count deltas: exact count reads add retained `receipt_completion_batches_*` counts and subtract retained `receipt_completion_tombstones_*`. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index ff6085d91..67bcc18df 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -450,7 +450,7 @@ Cause: Fix: -- run `awa migrate` so producers use the batch function +- run `awa migrate`: producers on the per-row path (a schema before v053) hold the lane for the whole batch, and switch to the batch function as soon as it exists - when `insert_many` fails on a unique conflict, retry with `insert_many_skip_unique_conflicts` rather than inserting the batch again row by row: each single-row insert queues for the lane separately - raise `awa.queue_meta.enqueue_shards` for a queue whose producers still saturate one lane, accepting partitioned rather than strict FIFO ([ADR-025](adr/025-sharded-enqueue-heads.md)) diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 0a114d970..de44cbfab 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -266,11 +266,14 @@ The runtime role needs `EXECUTE` on the new function; the [default privileges](security/database-roles.md#runtime-grants) cover functions the migrator creates. -A 0.7 binary that calls the new function before the migration has run fails -its `insert_many` and `insert_many_copy` calls with `function -awa.insert_jobs_compat_batch(...) does not exist`. Migrate before rolling -producers. External migration runners apply the `awa migrate --sql --from 52 ---to 53` bundle. +A 0.7 binary running before the migration keeps inserting: `insert_many` and +`insert_many_copy` look for the function in the catalog, use the per-row +function until it exists, and switch to the batch function without a restart +once it does. `insert_many_skip_unique_conflicts` needs the function and returns +a validation error before the migration. The per-row and batch paths take the +same lane lock, so a fleet that mixes them keeps each batch contiguous and in +order. External migration runners apply the `awa migrate --sql --from 52 --to +53` bundle. ## The one gate From 629274cd6f90e321c034e3f0df4a3ff45fab825f Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 13:27:19 +1300 Subject: [PATCH 35/48] test(discovery): refuse through the newest migration that runs the discovery preflight The fail-closed test rewound the schema by the newest migration and expected the rerun to hit the substrate-ownership preflight. A migration that touches no custom substrate, such as the batch insert function, carries no preflight, so the test now picks the newest migration that does. --- awa-model/tests/schema_discovery_owner_test.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/awa-model/tests/schema_discovery_owner_test.rs b/awa-model/tests/schema_discovery_owner_test.rs index 3dfc52bbd..914414343 100644 --- a/awa-model/tests/schema_discovery_owner_test.rs +++ b/awa-model/tests/schema_discovery_owner_test.rs @@ -556,8 +556,15 @@ async fn assert_configured_substrates_fail_closed( ) .fetch_one(migrator_pool) .await?; - sqlx::query("DELETE FROM awa.schema_version WHERE version = $1") - .bind(migrations::CURRENT_VERSION) + // The newest migration that runs the discovery preflight. Later ones + // that touch no custom substrate carry no preflight to refuse. + let (preflight_version, _, pending_sql) = migrations::migration_sql() + .into_iter() + .rev() + .find(|(_, _, sql)| sql.contains("unsafe configured queue-storage schema")) + .expect("a migration that runs the discovery preflight"); + sqlx::query("DELETE FROM awa.schema_version WHERE version >= $1") + .bind(preflight_version) .execute(migrator_pool) .await?; let previous_version: i32 = sqlx::query_scalar("SELECT max(version) FROM awa.schema_version") @@ -602,7 +609,6 @@ async fn assert_configured_substrates_fail_closed( "CREATE SCHEMA awa_exp AUTHORIZATION {outsider}" )))) .await?; - let (_, _, pending_sql) = migrations::migration_sql().pop().unwrap(); for (details, expected_schema) in [ ( serde_json::json!({"schema": "injected_custom"}), From 0cb61a66798e58492dd60b626af26bd13b09282a Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 13:27:37 +1300 Subject: [PATCH 36/48] fix(queue-storage): create queue lanes as the schema owner (v053) A lane's enqueue and claim sequences were created by whichever role first touched the lane, through SECURITY INVOKER helpers, so only that role and the roles its default privileges named could use them. Another runtime role then failed with "permission denied for sequence" on enqueue, claim or promotion. Each queue-storage schema now has two SECURITY DEFINER functions owned by the schema owner, provision_lane and provision_lane_sequences. The lane helpers create a missing sequence through them, and each new sequence gets the privileges of the head table it backs. ensure_lane_inserts calls provision_lane when it exists and is executable, inside a savepoint, and otherwise writes the lane rows as before. v053 refreshes the helpers and repairs existing lane sequences one at a time, reassigning and granting only what the migrating role may and reporting the rest. awa.lane_sequence_problems and the new `awa storage lane-sequences` command list what remains with the statements to run; awa.repair_lane_sequences and `--repair` rerun the repair. --- CHANGELOG.md | 24 + awa-cli/src/main.rs | 59 +- .../v023_install_queue_storage_substrate.sql | 416 +++++++++- .../v053_definer_lane_provisioning.sql | 63 ++ awa-model/src/migrations.rs | 8 +- awa-model/src/queue_storage.rs | 106 ++- awa-model/src/storage.rs | 76 ++ .../tests/least_privilege_runtime_test.rs | 41 +- .../fixtures/v052_lane_sequence_helpers.sql | 190 +++++ awa/tests/lane_ownership_roles_test.rs | 735 ++++++++++++++++++ docs/queue-storage-substrate.md | 2 +- docs/security/database-roles.md | 50 +- docs/upgrade-0.6-to-0.7.md | 39 +- skills/awa-operations/SKILL.md | 12 +- 14 files changed, 1734 insertions(+), 87 deletions(-) create mode 100644 awa-model/migrations/v053_definer_lane_provisioning.sql create mode 100644 awa/tests/fixtures/v052_lane_sequence_helpers.sql create mode 100644 awa/tests/lane_ownership_roles_test.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 065d50db1..6780d6113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,30 @@ Notable changes between releases. Detailed migration notes for storage transitio ### Fixed +- **A queue lane is usable by every runtime role, whichever role creates it + first (migration v053).** A lane's enqueue and claim sequences belonged to + the role that first enqueued into, claimed from or promoted into it, so with + several runtime roles sharing a group role, any role other than the creator + whose default privileges did not cover it failed with `permission denied for + sequence`. That included the maintenance leader promoting into a shard + created after `enqueue_shards` was raised. Lanes are now created through two + `SECURITY DEFINER` functions per queue-storage schema, `provision_lane` and + `provision_lane_sequences`, owned by the schema owner. Each new sequence gets + the privileges of the head table it backs, explicitly rather than through + default privileges. A runtime without schema `CREATE` can therefore create + lanes itself, and `awa storage prepare-queue` is optional and may run as any + runtime role. v053 gives existing lane sequences to the schema owner and adds + their missing grants, one sequence at a time and only where the migrating + role is allowed to. It never fails on a sequence it cannot reassign. The new + read-only `awa storage lane-sequences` (or + `awa.lane_sequence_problems(schema)`) lists what remains, with the statements + to run and the roles to run them as, and exits 2 while any remain; + `--repair` (or `awa.repair_lane_sequences(schema)`) repairs what the + connected role may. `awa migrate` prints a summary of the leftovers. A binary + running ahead of v053 detects that `provision_lane` is missing and creates + lanes as before, and older binaries create correctly owned lanes once v053 + has refreshed the helpers they call. See "Lane ownership and v053" in the + 0.6 to 0.7 upgrade guide. - **Batch enqueues take their lane locks in one order, so they no longer deadlock with each other.** On queue storage every enqueue holds a transaction-scoped advisory lock on its `(queue, priority, shard)` lane diff --git a/awa-cli/src/main.rs b/awa-cli/src/main.rs index 405fc3023..5e53264c5 100644 --- a/awa-cli/src/main.rs +++ b/awa-cli/src/main.rs @@ -328,11 +328,13 @@ fn access_for(command: &Commands) -> context::Access { }, Commands::Storage { command } => match command { StorageCommands::Status => ReadOnly, + StorageCommands::LaneSequences { repair: false, .. } => ReadOnly, StorageCommands::Finalize { check: true, .. } => ReadOnly, StorageCommands::FlipRingAuthority { check: true, .. } => ReadOnly, StorageCommands::Prepare { .. } | StorageCommands::PrepareQueueStorageSchema { .. } | StorageCommands::PrepareQueue { .. } + | StorageCommands::LaneSequences { .. } | StorageCommands::Abort | StorageCommands::EnterMixedTransition { .. } | StorageCommands::Finalize { .. } @@ -811,7 +813,7 @@ enum StorageCommands { #[arg(long)] reset: bool, }, - /// Provision lane sequences as the migrator, before starting a runtime without DDL + /// Provision every priority and shard of a queue ahead of its first enqueue PrepareQueue { /// Queue-storage schema to provision #[arg(long, default_value = "awa")] @@ -826,6 +828,16 @@ enum StorageCommands { #[arg(long, default_value_t = 1)] queue_stripe_count: usize, }, + /// List lane sequences not owned by the schema owner or missing runtime + /// grants, with the statements that fix them. Exits 2 while any remain. + LaneSequences { + /// Queue-storage schema to check + #[arg(long, default_value = "awa")] + schema: String, + /// Reassign and grant what the connected role is allowed to first + #[arg(long)] + repair: bool, + }, /// Abort a prepared or mixed-transition storage rollout before final activation Abort, /// Enter mixed transition and begin routing new writes to the prepared engine @@ -1182,6 +1194,16 @@ async fn run() -> Result<(), Box> { }; awa_model::migrations::run_with_options(&pool, options).await?; println!("Migrations applied successfully."); + for (schema, count) in + awa_model::storage::lane_sequence_problem_counts(&pool).await? + { + eprintln!( + "warning: {count} lane sequence(s) in schema {schema} are not owned by \ + the schema owner or lack runtime grants, and the migrating role could \ + not repair them. Run `awa storage lane-sequences --schema {schema}` for \ + the statements to run and the roles to run them as." + ); + } } } @@ -1933,6 +1955,41 @@ async fn run() -> Result<(), Box> { }))? ); } + StorageCommands::LaneSequences { schema, repair } => { + let remaining = if repair { + let results = + awa_model::storage::repair_lane_sequences(&pool, &schema).await?; + println!( + "{}", + serde_json::to_string_pretty(&serde_json::json!({ + "schema": schema, "results": results, + }))? + ); + results + .iter() + .filter(|result| result.outcome != "repaired") + .count() + } else { + let problems = + awa_model::storage::lane_sequence_problems(&pool, &schema).await?; + println!( + "{}", + serde_json::to_string_pretty(&serde_json::json!({ + "schema": schema, "problems": problems, + }))? + ); + problems.len() + }; + if remaining > 0 { + eprintln!( + "{remaining} lane sequence(s) in schema {schema} need repair. Run \ + each missing_grants statement as the sequence owner (or a role \ + that can SET ROLE to it), and each reassign_sql statement as a \ + role that can SET ROLE to both the owner and expected_owner." + ); + std::process::exit(2); + } + } StorageCommands::Abort => { awa_model::storage::abort(&pool).await?; let report = awa_model::storage::status_report(&pool).await?; diff --git a/awa-model/migrations/v023_install_queue_storage_substrate.sql b/awa-model/migrations/v023_install_queue_storage_substrate.sql index d852b2ac5..b5526cccc 100644 --- a/awa-model/migrations/v023_install_queue_storage_substrate.sql +++ b/awa-model/migrations/v023_install_queue_storage_substrate.sql @@ -42,6 +42,12 @@ LANGUAGE plpgsql SECURITY INVOKER SET search_path = pg_catalog AS $refresh$ +DECLARE + v_schema_owner OID; + v_function REGPROCEDURE; + v_function_owner OID; + v_set_mode TEXT := CASE WHEN current_setting('server_version_num')::int >= 160000 + THEN 'SET' ELSE 'MEMBER' END; BEGIN EXECUTE format( $ddl$ @@ -69,28 +75,40 @@ BEGIN ); BEGIN IF to_regclass(format('%%I.%%I', %1$L, v_enqueue_seq)) IS NULL THEN - IF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN + IF has_function_privilege( + to_regprocedure(format('%%I.provision_lane_sequences(text,smallint,smallint)', %1$L)), + 'EXECUTE' + ) THEN + PERFORM %1$I.provision_lane_sequences(p_queue, p_priority, p_enqueue_shard); + ELSIF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN RAISE EXCEPTION 'lane sequence %%.%% has not been provisioned', %1$L, v_enqueue_seq USING ERRCODE = '42501', - HINT = 'Run awa storage prepare-queue as the migrator before starting producers or workers.'; + HINT = 'Run awa migrate, or awa storage prepare-queue as the migrator, before starting producers or workers.'; + ELSE + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_enqueue_seq + ); END IF; - EXECUTE format( - 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', - %1$L, - v_enqueue_seq - ); END IF; IF to_regclass(format('%%I.%%I', %1$L, v_claim_seq)) IS NULL THEN - IF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN + IF has_function_privilege( + to_regprocedure(format('%%I.provision_lane_sequences(text,smallint,smallint)', %1$L)), + 'EXECUTE' + ) THEN + PERFORM %1$I.provision_lane_sequences(p_queue, p_priority, p_enqueue_shard); + ELSIF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN RAISE EXCEPTION 'lane sequence %%.%% has not been provisioned', %1$L, v_claim_seq USING ERRCODE = '42501', - HINT = 'Run awa storage prepare-queue as the migrator before starting producers or workers.'; + HINT = 'Run awa migrate, or awa storage prepare-queue as the migrator, before starting producers or workers.'; + ELSE + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_claim_seq + ); END IF; - EXECUTE format( - 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', - %1$L, - v_claim_seq - ); END IF; UPDATE %1$I.queue_enqueue_heads @@ -131,16 +149,22 @@ BEGIN v_start BIGINT; BEGIN IF to_regclass(format('%%I.%%I', %1$L, v_seq_name)) IS NULL THEN - IF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN + IF has_function_privilege( + to_regprocedure(format('%%I.provision_lane_sequences(text,smallint,smallint)', %1$L)), + 'EXECUTE' + ) THEN + PERFORM %1$I.provision_lane_sequences(NEW.queue, NEW.priority, NEW.enqueue_shard); + ELSIF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN RAISE EXCEPTION 'lane sequence %%.%% has not been provisioned', %1$L, v_seq_name USING ERRCODE = '42501', - HINT = 'Run awa storage prepare-queue as the migrator before starting producers or workers.'; + HINT = 'Run awa migrate, or awa storage prepare-queue as the migrator, before starting producers or workers.'; + ELSE + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_seq_name + ); END IF; - EXECUTE format( - 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', - %1$L, - v_seq_name - ); END IF; NEW.seq_name := v_seq_name; @@ -197,16 +221,22 @@ BEGIN ); BEGIN IF to_regclass(format('%%I.%%I', %1$L, v_seq_name)) IS NULL THEN - IF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN + IF has_function_privilege( + to_regprocedure(format('%%I.provision_lane_sequences(text,smallint,smallint)', %1$L)), + 'EXECUTE' + ) THEN + PERFORM %1$I.provision_lane_sequences(NEW.queue, NEW.priority, NEW.enqueue_shard); + ELSIF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN RAISE EXCEPTION 'lane sequence %%.%% has not been provisioned', %1$L, v_seq_name USING ERRCODE = '42501', - HINT = 'Run awa storage prepare-queue as the migrator before starting producers or workers.'; + HINT = 'Run awa migrate, or awa storage prepare-queue as the migrator, before starting producers or workers.'; + ELSE + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_seq_name + ); END IF; - EXECUTE format( - 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', - %1$L, - v_seq_name - ); END IF; NEW.seq_name := v_seq_name; @@ -221,11 +251,341 @@ BEGIN p_schema ); + -- Lane sequences are created by the schema owner through these two + -- SECURITY DEFINER functions, whichever role first touches the lane, so + -- every runtime role can use them. Their grants mirror the head table each + -- sequence backs (see awa.lane_sequence_problems); they never depend on + -- the creating role's default privileges. + EXECUTE format( + $ddl$ + CREATE OR REPLACE FUNCTION %1$I.provision_lane_sequences( + p_queue TEXT, + p_priority SMALLINT, + p_enqueue_shard SMALLINT + ) + RETURNS VOID + LANGUAGE plpgsql + SECURITY DEFINER + SET search_path = pg_catalog, pg_temp + AS $func$ + DECLARE + v_seq_name TEXT; + v_grant TEXT; + BEGIN + IF p_queue IS NULL OR p_queue = '' + OR p_priority IS NULL OR p_priority NOT BETWEEN 1 AND 4 + OR p_enqueue_shard IS NULL OR p_enqueue_shard NOT BETWEEN 0 AND 63 THEN + RAISE EXCEPTION 'invalid queue lane: queue %%, priority %%, enqueue shard %%', + quote_nullable(p_queue), p_priority, p_enqueue_shard + USING ERRCODE = '22023'; + END IF; + + -- The lane lock QueueStorage takes before it writes lane rows, so + -- concurrent first touches of one lane create its sequences once. + PERFORM pg_advisory_xact_lock(hashtextextended( + format('%%s:%%s:%%s:%%s', %1$L, p_queue, p_priority, p_enqueue_shard), + 0 + )); + + FOREACH v_seq_name IN ARRAY ARRAY[ + %1$I.queue_lane_sequence_name('queue_enqueue_seq', p_queue, p_priority, p_enqueue_shard), + %1$I.queue_lane_sequence_name('queue_claim_seq', p_queue, p_priority, p_enqueue_shard) + ] LOOP + IF to_regclass(format('%%I.%%I', %1$L, v_seq_name)) IS NULL THEN + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_seq_name + ); + FOR v_grant IN + SELECT unnest(problem.missing_grants) + FROM awa.lane_sequence_problems(%1$L, v_seq_name) AS problem + WHERE problem.owner = current_user + LOOP + EXECUTE v_grant; + END LOOP; + END IF; + END LOOP; + END; + $func$ + $ddl$, + p_schema + ); + + EXECUTE format( + $ddl$ + CREATE OR REPLACE FUNCTION %1$I.provision_lane( + p_queue TEXT, + p_priority SMALLINT, + p_enqueue_shard SMALLINT + ) + RETURNS VOID + LANGUAGE plpgsql + SECURITY DEFINER + SET search_path = pg_catalog, pg_temp + AS $func$ + BEGIN + -- Validates the lane and takes its lock before any row is written. + PERFORM %1$I.provision_lane_sequences(p_queue, p_priority, p_enqueue_shard); + + INSERT INTO %1$I.queue_lanes (queue, priority) + VALUES (p_queue, p_priority) + ON CONFLICT (queue, priority) DO NOTHING; + + -- The head triggers fire before ON CONFLICT and set the lane's + -- sequence, so rows that already exist are skipped outright. + INSERT INTO %1$I.queue_enqueue_heads (queue, priority, enqueue_shard) + SELECT p_queue, p_priority, p_enqueue_shard + WHERE NOT EXISTS ( + SELECT 1 FROM %1$I.queue_enqueue_heads AS heads + WHERE heads.queue = p_queue + AND heads.priority = p_priority + AND heads.enqueue_shard = p_enqueue_shard + ) + ON CONFLICT (queue, priority, enqueue_shard) DO NOTHING; + + INSERT INTO %1$I.queue_claim_heads (queue, priority, enqueue_shard) + SELECT p_queue, p_priority, p_enqueue_shard + WHERE NOT EXISTS ( + SELECT 1 FROM %1$I.queue_claim_heads AS heads + WHERE heads.queue = p_queue + AND heads.priority = p_priority + AND heads.enqueue_shard = p_enqueue_shard + ) + ON CONFLICT (queue, priority, enqueue_shard) DO NOTHING; + + PERFORM %1$I.ensure_lane_sequences(p_queue, p_priority, p_enqueue_shard); + END; + $func$ + $ddl$, + p_schema + ); + + SELECT namespace.nspowner INTO v_schema_owner + FROM pg_namespace AS namespace + WHERE namespace.nspname = p_schema; + + FOREACH v_function IN ARRAY ARRAY[ + format('%I.provision_lane_sequences(text,smallint,smallint)', p_schema)::regprocedure, + format('%I.provision_lane(text,smallint,smallint)', p_schema)::regprocedure + ] LOOP + EXECUTE format('GRANT EXECUTE ON FUNCTION %s TO PUBLIC', v_function); + + SELECT routine.proowner INTO v_function_owner + FROM pg_proc AS routine + WHERE routine.oid = v_function; + + IF v_function_owner <> v_schema_owner THEN + IF pg_has_role(current_user, v_function_owner, 'USAGE') + AND pg_has_role(current_user, v_schema_owner, v_set_mode) THEN + EXECUTE format( + 'ALTER FUNCTION %s OWNER TO %I', + v_function, + pg_get_userbyid(v_schema_owner) + ); + ELSE + RAISE WARNING '% is owned by %, not the owner % of schema %; lane sequences it creates will be owned by % too', + v_function, pg_get_userbyid(v_function_owner), pg_get_userbyid(v_schema_owner), + p_schema, pg_get_userbyid(v_function_owner) + USING HINT = format( + 'Run awa migrate as a role that can SET ROLE to %s, or as %s itself.', + quote_ident(pg_get_userbyid(v_schema_owner)), + quote_ident(pg_get_userbyid(v_schema_owner)) + ); + END IF; + END IF; + END LOOP; + END; $refresh$; REVOKE EXECUTE ON FUNCTION awa.refresh_lane_sequence_helpers(TEXT) FROM PUBLIC; +-- Lane sequences in p_schema (or the one named p_sequence) that are not owned +-- by the schema owner or lack a runtime grant. A lane sequence carries a head +-- table's cursor, so whoever may write that head table (INSERT or UPDATE) gets +-- USAGE, SELECT and UPDATE on it, and whoever may read it gets SELECT: +-- queue_enqueue_seq_* mirror queue_enqueue_heads, queue_claim_seq_* mirror +-- queue_claim_heads. missing_grants holds the statements to run as the +-- sequence owner; reassign_sql, when the owner is wrong, needs a role that can +-- SET ROLE to both the current owner and the schema owner. Read-only. +CREATE OR REPLACE FUNCTION awa.lane_sequence_problems(p_schema TEXT, p_sequence TEXT DEFAULT NULL) +RETURNS TABLE ( + sequence_name TEXT, + owner TEXT, + expected_owner TEXT, + missing_grants TEXT[], + reassign_sql TEXT +) +LANGUAGE sql +STABLE +SECURITY INVOKER +SET search_path = pg_catalog, pg_temp +AS $problems$ + WITH target AS ( + SELECT namespace.oid, namespace.nspowner + FROM pg_namespace AS namespace + WHERE namespace.nspname = p_schema + ), + lane_sequence AS ( + SELECT sequence.oid, + sequence.relname::text AS relname, + sequence.relowner, + sequence.relacl, + target.nspowner, + CASE WHEN starts_with(sequence.relname::text, 'queue_enqueue_seq_') + THEN 'queue_enqueue_heads' ELSE 'queue_claim_heads' END AS head_table + FROM target + JOIN pg_class AS sequence ON sequence.relnamespace = target.oid + WHERE sequence.relkind = 'S' + AND sequence.relname ~ '^queue_(enqueue|claim)_seq_[0-9a-f]{32}$' + AND (p_sequence IS NULL OR sequence.relname = p_sequence) + ), + wanted AS ( + SELECT DISTINCT lane_sequence.oid, head_privilege.grantee, sequence_privilege.privilege_type + FROM lane_sequence + JOIN pg_class AS head + ON head.relnamespace = (SELECT target.oid FROM target) + AND head.relname = lane_sequence.head_table + CROSS JOIN LATERAL aclexplode(COALESCE(head.relacl, acldefault('r', head.relowner))) AS head_privilege + CROSS JOIN LATERAL unnest( + CASE head_privilege.privilege_type + WHEN 'SELECT' THEN ARRAY['SELECT'] + WHEN 'INSERT' THEN ARRAY['USAGE', 'SELECT', 'UPDATE'] + WHEN 'UPDATE' THEN ARRAY['USAGE', 'SELECT', 'UPDATE'] + ELSE ARRAY[]::TEXT[] + END + ) AS sequence_privilege(privilege_type) + WHERE head_privilege.grantee <> lane_sequence.nspowner + ), + missing AS ( + SELECT wanted.oid, wanted.grantee, wanted.privilege_type + FROM wanted + JOIN lane_sequence ON lane_sequence.oid = wanted.oid + WHERE NOT EXISTS ( + SELECT 1 + FROM aclexplode(COALESCE(lane_sequence.relacl, acldefault('S', lane_sequence.relowner))) AS held + WHERE held.grantee = wanted.grantee + AND held.privilege_type = wanted.privilege_type + ) + ) + SELECT lane_sequence.relname, + pg_get_userbyid(lane_sequence.relowner)::text, + pg_get_userbyid(lane_sequence.nspowner)::text, + ARRAY( + SELECT format( + 'GRANT %s ON SEQUENCE %I.%I TO %s', + string_agg(missing.privilege_type, ', ' ORDER BY missing.privilege_type DESC), + p_schema, + lane_sequence.relname, + CASE missing.grantee WHEN 0 THEN 'PUBLIC' + ELSE quote_ident(pg_get_userbyid(missing.grantee)) END + ) + FROM missing + WHERE missing.oid = lane_sequence.oid + GROUP BY missing.grantee + ORDER BY 1 + ), + CASE WHEN lane_sequence.relowner <> lane_sequence.nspowner THEN format( + 'ALTER SEQUENCE %I.%I OWNER TO %I', + p_schema, lane_sequence.relname, pg_get_userbyid(lane_sequence.nspowner) + ) END + FROM lane_sequence + WHERE lane_sequence.relowner <> lane_sequence.nspowner + OR EXISTS (SELECT 1 FROM missing WHERE missing.oid = lane_sequence.oid) + ORDER BY lane_sequence.relname +$problems$; + +-- Give every lane sequence in p_schema to the schema owner and add its missing +-- runtime grants, one sequence at a time, doing only what the calling role is +-- allowed to: a sequence it cannot reassign keeps its owner and still gets +-- the grants when the caller can act as that owner. Never raises for a +-- sequence it cannot repair. Returns one row per sequence that had a problem: +-- outcome is 'repaired', 'owner_unchanged' (grants complete, owner still +-- wrong) or 'unrepaired', with the statements still to run. +CREATE OR REPLACE FUNCTION awa.repair_lane_sequences(p_schema TEXT) +RETURNS TABLE ( + sequence_name TEXT, + owner TEXT, + expected_owner TEXT, + outcome TEXT, + missing_grants TEXT[], + reassign_sql TEXT +) +LANGUAGE plpgsql +SECURITY INVOKER +SET search_path = pg_catalog, pg_temp +AS $repair$ +DECLARE + v_problem RECORD; + v_remaining RECORD; + v_has_remaining BOOLEAN; + v_owner OID; + v_set_mode TEXT := CASE WHEN current_setting('server_version_num')::int >= 160000 + THEN 'SET' ELSE 'MEMBER' END; + v_statement TEXT; +BEGIN + FOR v_problem IN + SELECT * FROM awa.lane_sequence_problems(p_schema) AS problem + LOOP + SELECT sequence.relowner INTO v_owner + FROM pg_class AS sequence + WHERE sequence.oid = to_regclass(format('%I.%I', p_schema, v_problem.sequence_name)); + + -- ALTER ... OWNER TO needs the current owner's privileges, SET ROLE to + -- the new owner, and the new owner's CREATE on the schema (which a + -- schema owner has). Check first so an unrelated owner is skipped + -- rather than raising. + IF v_problem.reassign_sql IS NOT NULL + AND pg_has_role(current_user, v_owner, 'USAGE') + AND pg_has_role(current_user, to_regrole(quote_ident(v_problem.expected_owner)), v_set_mode) THEN + BEGIN + EXECUTE v_problem.reassign_sql; + EXCEPTION WHEN insufficient_privilege THEN + NULL; + END; + END IF; + + SELECT * INTO v_remaining + FROM awa.lane_sequence_problems(p_schema, v_problem.sequence_name) AS problem; + v_has_remaining := FOUND; + + IF v_has_remaining + AND cardinality(v_remaining.missing_grants) > 0 + AND pg_has_role(current_user, to_regrole(quote_ident(v_remaining.owner)), 'USAGE') THEN + FOREACH v_statement IN ARRAY v_remaining.missing_grants LOOP + BEGIN + EXECUTE v_statement; + EXCEPTION WHEN insufficient_privilege THEN + NULL; + END; + END LOOP; + SELECT * INTO v_remaining + FROM awa.lane_sequence_problems(p_schema, v_problem.sequence_name) AS problem; + v_has_remaining := FOUND; + END IF; + + sequence_name := v_problem.sequence_name; + expected_owner := v_problem.expected_owner; + IF v_has_remaining THEN + owner := v_remaining.owner; + missing_grants := v_remaining.missing_grants; + reassign_sql := v_remaining.reassign_sql; + outcome := CASE WHEN cardinality(v_remaining.missing_grants) = 0 + THEN 'owner_unchanged' ELSE 'unrepaired' END; + ELSE + owner := v_problem.expected_owner; + missing_grants := ARRAY[]::TEXT[]; + reassign_sql := NULL; + outcome := 'repaired'; + END IF; + RETURN NEXT; + END LOOP; +END +$repair$; + +REVOKE EXECUTE ON FUNCTION awa.repair_lane_sequences(TEXT) FROM PUBLIC; + -- Retained job output (ADR-048): add the output columns to an existing -- substrate and expose them through terminal_jobs. Called by the installer -- and by migration v052, which does not replay the installer. Each column is diff --git a/awa-model/migrations/v053_definer_lane_provisioning.sql b/awa-model/migrations/v053_definer_lane_provisioning.sql new file mode 100644 index 000000000..a56d96978 --- /dev/null +++ b/awa-model/migrations/v053_definer_lane_provisioning.sql @@ -0,0 +1,63 @@ +-- v053: Create queue lanes as the schema owner, whichever role touches them first. +-- Lane sequences used to belong to the role that first enqueued into, claimed +-- from or promoted into a lane, and only that role (plus whoever its default +-- privileges named) could use them. refresh_lane_sequence_helpers now installs +-- two SECURITY DEFINER functions, provision_lane and provision_lane_sequences, +-- owned by the schema owner, and the lane helpers create a missing sequence +-- through them. Each new sequence gets the grants of the head table it backs. +-- This migration then repairs existing lane sequences: it gives each one to +-- the schema owner and adds its missing grants, one sequence at a time and +-- only where the migrating role may. Sequences it cannot reassign are reported +-- in a warning and by awa.lane_sequence_problems(); the migration still commits. +-- +-- N-1 binaries call the same helpers with the same arguments and cursor +-- semantics, so lanes they create are owned by the schema owner too. A binary +-- that predates provision_lane keeps using the helpers; this binary probes for +-- provision_lane and uses the helpers when it is missing. +-- +-- Live load: function replacement, plus ALTER SEQUENCE OWNER on the lane +-- sequences that need it. That takes each such sequence's ACCESS EXCLUSIVE +-- lock until commit, so enqueues and claims on those lanes wait for the +-- migration to commit; correctly owned lanes are not touched. Reads the +-- catalog only; no table DDL or row scans. + +DO $$ +DECLARE + v_schema TEXT; + v_leftovers TEXT; + v_count BIGINT; +BEGIN + FOR v_schema IN + SELECT discovered.schema_name FROM awa.queue_storage_schemas() AS discovered + LOOP + IF to_regclass(format('%I.queue_enqueue_heads', v_schema)) IS NULL + OR to_regclass(format('%I.queue_claim_heads', v_schema)) IS NULL + OR to_regclass(format('%I.queue_ring_state', v_schema)) IS NULL + OR to_regclass(format('%I.lease_ring_state', v_schema)) IS NULL + OR to_regclass(format('%I.claim_ring_state', v_schema)) IS NULL THEN + CONTINUE; + END IF; + + PERFORM awa.refresh_lane_sequence_helpers(v_schema); + + SELECT count(*), + string_agg(format('%s (owner %s, %s)', repair.sequence_name, repair.owner, repair.outcome), + ', ' ORDER BY repair.sequence_name) + INTO v_count, v_leftovers + FROM awa.repair_lane_sequences(v_schema) AS repair + WHERE repair.outcome <> 'repaired'; + + IF v_count > 0 THEN + RAISE WARNING '% lane sequence(s) in schema % still need repair: %', v_count, v_schema, v_leftovers + USING HINT = format( + 'Run awa storage lane-sequences --schema %s for the statements to run and the role to run them as.', + v_schema + ); + END IF; + END LOOP; +END; +$$; + +INSERT INTO awa.schema_version (version, description) +VALUES (53, 'Create queue lanes as the schema owner') +ON CONFLICT (version) DO NOTHING; diff --git a/awa-model/src/migrations.rs b/awa-model/src/migrations.rs index 385035b65..51c423222 100644 --- a/awa-model/src/migrations.rs +++ b/awa-model/src/migrations.rs @@ -5,7 +5,7 @@ use sqlx::{Connection, PgPool}; use tracing::{info, warn}; /// Current schema version. -pub const CURRENT_VERSION: i32 = 52; +pub const CURRENT_VERSION: i32 = 53; /// Migrations that require an exclusive (no-live-runtime) upgrade window. /// @@ -292,6 +292,11 @@ const MIGRATIONS: &[(i32, &str, &[&str])] = &[ ), (51, "Per-slot claim functions", &[V23_UP, V51_UP]), (52, "Retained job output", &[V23_UP, V52_UP]), + ( + 53, + "Create queue lanes as the schema owner", + &[V23_UP, V53_UP], + ), ]; const V1_UP: &str = include_str!("../migrations/v001_canonical_schema.sql"); @@ -352,6 +357,7 @@ const V49_UP: &str = include_str!("../migrations/v049_prepared_lane_sequences.sq const V50_UP: &str = include_str!("../migrations/v050_drop_ready_lane_shard_index.sql"); const V51_UP: &str = include_str!("../migrations/v051_claim_slot_functions.sql"); const V52_UP: &str = include_str!("../migrations/v052_retained_job_output.sql"); +const V53_UP: &str = include_str!("../migrations/v053_definer_lane_provisioning.sql"); /// Old version numbers from pre-0.4 releases that used V3/V4/V5 numbering. /// Also tolerates the unreleased inline-V6 branch numbering used during review. diff --git a/awa-model/src/queue_storage.rs b/awa-model/src/queue_storage.rs index 339001705..dafbbaa14 100644 --- a/awa-model/src/queue_storage.rs +++ b/awa-model/src/queue_storage.rs @@ -13,7 +13,7 @@ use sqlx::{PgPool, Postgres}; use std::collections::hash_map::DefaultHasher; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::hash::{Hash, Hasher}; -use std::sync::atomic::{AtomicU16, AtomicUsize, Ordering}; +use std::sync::atomic::{AtomicBool, AtomicU16, AtomicUsize, Ordering}; use std::sync::Mutex; use std::time::{Duration, Instant}; use uuid::Uuid; @@ -3461,6 +3461,12 @@ pub struct QueueStorage { /// TRUNCATEs queue_lanes; `advance_enqueue_head` repairs a stale entry /// (head row gone after a rolled-back ensure_lane). ensured_lanes: Mutex>, + /// Whether `{schema}.provision_lane` (migration v053) was callable the + /// last time a lane was created. Only a positive answer is kept: lane + /// creation is rare, and the probe rides on the lane-lock round trip. + lane_provisioner_present: AtomicBool, + /// Set once a provisioner failure has been logged. + lane_provisioner_warned: AtomicBool, slot_fill_observations: Mutex>, prune_lock_timeout: Duration, cancel_phase_hook: CancelPhaseHookSlot, @@ -3516,6 +3522,8 @@ impl QueueStorage { enqueue_shards_cache: Mutex::new(HashMap::new()), claimer_gates: Mutex::new(HashMap::new()), ensured_lanes: Mutex::new(HashSet::new()), + lane_provisioner_present: AtomicBool::new(false), + lane_provisioner_warned: AtomicBool::new(false), slot_fill_observations: Mutex::new(HashMap::new()), prune_lock_timeout: DEFAULT_PRUNE_LOCK_TIMEOUT, cancel_phase_hook: CancelPhaseHookSlot(None), @@ -4594,9 +4602,10 @@ impl QueueStorage { .await } - /// Provision every priority and shard of a queue before deploying a runtime - /// role without schema CREATE. Run as the schema owner/migrator. This does - /// not change enqueue routing or the configured shard count. + /// Provision every priority and shard of a queue ahead of its first + /// enqueue. From migration v053 any runtime role may run it: the lanes are + /// created as the schema owner. This does not change enqueue routing or + /// the configured shard count. pub async fn prepare_queue( &self, pool: &PgPool, @@ -4637,11 +4646,35 @@ impl QueueStorage { ) -> Result<(), AwaError> { let schema = self.schema(); let lane_lock_key = format!("{schema}:{queue}:{priority}:{enqueue_shard}"); - sqlx::query("SELECT pg_advisory_xact_lock(hashtextextended($1, 0))") - .bind(lane_lock_key) - .execute(tx.as_mut()) + let provisioner_callable = if self.lane_provisioner_present.load(Ordering::Relaxed) { + sqlx::query("SELECT pg_advisory_xact_lock(hashtextextended($1, 0))") + .bind(&lane_lock_key) + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + true + } else { + sqlx::query_scalar( + r#" + SELECT COALESCE(has_function_privilege(to_regprocedure($2), 'EXECUTE'), false) + FROM (SELECT pg_advisory_xact_lock(hashtextextended($1, 0))) AS lane_lock + "#, + ) + .bind(&lane_lock_key) + .bind(format!("{schema}.provision_lane(text,smallint,smallint)")) + .fetch_one(tx.as_mut()) .await - .map_err(map_sqlx_error)?; + .map_err(map_sqlx_error)? + }; + + if provisioner_callable + && self + .provision_lane(tx, queue, priority, enqueue_shard) + .await? + { + self.mark_lane_ensured(queue, priority, enqueue_shard); + return Ok(()); + } sqlx::query(audited_sql(format!( r#" @@ -4712,6 +4745,63 @@ impl QueueStorage { Ok(()) } + /// Create the lane through `{schema}.provision_lane`, which runs as the + /// schema owner, inside a savepoint. Returns false, with the transaction + /// as it was, when the function has gone (`42883`) or the schema owner + /// may not write the lane (`42501`); the caller then writes the rows + /// itself, which is what a binary that predates the function does. + async fn provision_lane<'a>( + &self, + tx: &mut sqlx::Transaction<'a, sqlx::Postgres>, + queue: &str, + priority: i16, + enqueue_shard: i16, + ) -> Result { + let schema = self.schema(); + sqlx::query("SAVEPOINT awa_provision_lane") + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + let provisioned = sqlx::query(audited_sql(format!( + "SELECT {schema}.provision_lane($1, $2, $3)" + ))) + .bind(queue) + .bind(priority) + .bind(enqueue_shard) + .execute(tx.as_mut()) + .await; + match provisioned { + Ok(_) => { + sqlx::query("RELEASE SAVEPOINT awa_provision_lane") + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + self.lane_provisioner_present.store(true, Ordering::Relaxed); + Ok(true) + } + Err(sqlx::Error::Database(db_err)) + if matches!(db_err.code().as_deref(), Some("42883" | "42501")) => + { + sqlx::query("ROLLBACK TO SAVEPOINT awa_provision_lane") + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + self.lane_provisioner_present + .store(false, Ordering::Relaxed); + if !self.lane_provisioner_warned.swap(true, Ordering::Relaxed) { + tracing::warn!( + schema, + code = db_err.code().as_deref().unwrap_or_default(), + error = %db_err.message(), + "Lane provisioning function failed; creating lane rows as the connected role" + ); + } + Ok(false) + } + Err(err) => Err(map_sqlx_error(err)), + } + } + /// Pick the enqueue shard for a row on `queue`. /// /// Reads `awa.queue_meta.enqueue_shards` (default 1, cached diff --git a/awa-model/src/storage.rs b/awa-model/src/storage.rs index b7a0ff1ad..d67dc2048 100644 --- a/awa-model/src/storage.rs +++ b/awa-model/src/storage.rs @@ -469,3 +469,79 @@ pub async fn status_report(pool: &PgPool) -> Result, + pub reassign_sql: Option, +} + +/// What [`repair_lane_sequences`] did to one lane sequence that had a problem. +#[derive(Debug, Clone, Serialize, Deserialize, FromRow, PartialEq, Eq)] +pub struct LaneSequenceRepair { + pub sequence_name: String, + /// Owner after the repair. + pub owner: String, + pub expected_owner: String, + /// `repaired`; `owner_unchanged` when the grants are complete but the + /// connected role could not reassign the sequence; or `unrepaired` when + /// grants are still missing too. + pub outcome: String, + pub missing_grants: Vec, + pub reassign_sql: Option, +} + +/// Lane sequences in `schema` that need repair. Read-only; any role may run it. +pub async fn lane_sequence_problems<'e, E>( + executor: E, + schema: &str, +) -> Result, AwaError> +where + E: PgExecutor<'e>, +{ + Ok(sqlx::query_as( + "SELECT sequence_name, owner, expected_owner, missing_grants, reassign_sql \ + FROM awa.lane_sequence_problems($1)", + ) + .bind(schema) + .fetch_all(executor) + .await?) +} + +/// Give each lane sequence in `schema` to the schema owner and add its missing +/// grants, as far as the connected role is allowed to. A sequence the role +/// cannot reassign is returned with the statements still to run, never an +/// error. +pub async fn repair_lane_sequences( + pool: &PgPool, + schema: &str, +) -> Result, AwaError> { + Ok(sqlx::query_as( + "SELECT sequence_name, owner, expected_owner, outcome, missing_grants, reassign_sql \ + FROM awa.repair_lane_sequences($1)", + ) + .bind(schema) + .fetch_all(pool) + .await?) +} + +/// How many lane sequences need repair in each queue-storage schema that has +/// any. Read-only. +pub async fn lane_sequence_problem_counts(pool: &PgPool) -> Result, AwaError> { + Ok(sqlx::query_as( + "SELECT discovered.schema_name, count(*) \ + FROM awa.queue_storage_schemas() AS discovered \ + CROSS JOIN LATERAL awa.lane_sequence_problems(discovered.schema_name) AS problem \ + GROUP BY discovered.schema_name \ + ORDER BY discovered.schema_name", + ) + .fetch_all(pool) + .await?) +} diff --git a/awa-model/tests/least_privilege_runtime_test.rs b/awa-model/tests/least_privilege_runtime_test.rs index 99e69d536..db66046a4 100644 --- a/awa-model/tests/least_privilege_runtime_test.rs +++ b/awa-model/tests/least_privilege_runtime_test.rs @@ -250,21 +250,26 @@ async fn check_runtime(pool: &PgPool, schema: &str) -> TestResult { INSERT INTO {schema}.queue_claim_heads(queue, priority, enqueue_shard) VALUES ('prepared_queue', 2, 0) ON CONFLICT DO NOTHING; SELECT {schema}.reserve_enqueue_seq('prepared_queue', 2::smallint, 0::smallint, 3); "#)))).await?; - let error = pool - .execute(sqlx::raw_sql(awa_model::audited_sql(format!( - "SELECT {schema}.ensure_lane_sequences('unprepared_queue', 2::smallint, 0::smallint)" - )))) - .await - .unwrap_err(); - assert_eq!( - error.as_database_error().unwrap().code().as_deref(), - Some("42501") - ); - assert!(error - .as_database_error() - .unwrap() - .message() - .contains("has not been provisioned")); + // An unprepared lane is created through the schema owner's provisioning + // function, so the runtime still issues no DDL of its own. + pool.execute(sqlx::raw_sql(awa_model::audited_sql(format!( + "SELECT {schema}.ensure_lane_sequences('unprepared_queue', 2::smallint, 0::smallint); \ + SELECT {schema}.provision_lane('unprepared_queue', 2::smallint, 0::smallint);" + )))) + .await?; + let foreign_owned: i64 = sqlx::query_scalar(awa_model::audited_sql(format!( + "SELECT count(*) FROM pg_class \ + WHERE relnamespace = '{schema}'::regnamespace AND relkind = 'S' \ + AND relowner <> (SELECT nspowner FROM pg_namespace WHERE nspname = '{schema}')" + ))) + .fetch_one(pool) + .await?; + assert_eq!(foreign_owned, 0); + sqlx::query_scalar::<_, i64>(awa_model::audited_sql(format!( + "SELECT {schema}.reserve_enqueue_seq('unprepared_queue', 2::smallint, 0::smallint, 1)" + ))) + .fetch_one(pool) + .await?; let error = pool .execute(sqlx::raw_sql(awa_model::audited_sql(format!( "CREATE TABLE {schema}.must_not_create(id integer)" @@ -331,10 +336,14 @@ async fn exercise_lazy_lane(options: PgConnectOptions, owner: &str, runtime: &st "GRANT USAGE, CREATE ON SCHEMA awa TO {runtime}; \ GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA awa TO {runtime}; \ GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA awa TO {runtime}; \ - GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA awa TO {runtime};" + GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA awa TO {runtime}; \ + REVOKE EXECUTE ON FUNCTION awa.provision_lane_sequences(text, smallint, smallint) \ + FROM PUBLIC, {runtime};" ), ) .await?; + // Without the provisioning function the runtime creates the lane's + // sequences itself and owns them, as a 0.6 runtime with CREATE did. let runtime_pool = PgPoolOptions::new() .max_connections(2) .connect_with(options.username(runtime)) diff --git a/awa/tests/fixtures/v052_lane_sequence_helpers.sql b/awa/tests/fixtures/v052_lane_sequence_helpers.sql new file mode 100644 index 000000000..b7d396dad --- /dev/null +++ b/awa/tests/fixtures/v052_lane_sequence_helpers.sql @@ -0,0 +1,190 @@ +-- The lane-sequence helpers as migration v052 left them, before lane +-- provisioning functions existed. Installed under a separate name so a test +-- can put a schema back in its v052 shape. +CREATE OR REPLACE FUNCTION awa.v052_refresh_lane_sequence_helpers(p_schema TEXT) +RETURNS VOID +LANGUAGE plpgsql +SECURITY INVOKER +SET search_path = pg_catalog +AS $refresh$ +BEGIN + EXECUTE format( + $ddl$ + CREATE OR REPLACE FUNCTION %1$I.ensure_lane_sequences( + p_queue TEXT, + p_priority SMALLINT, + p_enqueue_shard SMALLINT + ) + RETURNS VOID + LANGUAGE plpgsql + SET search_path = pg_catalog + AS $func$ + DECLARE + v_enqueue_seq TEXT := %1$I.queue_lane_sequence_name( + 'queue_enqueue_seq', + p_queue, + p_priority, + p_enqueue_shard + ); + v_claim_seq TEXT := %1$I.queue_lane_sequence_name( + 'queue_claim_seq', + p_queue, + p_priority, + p_enqueue_shard + ); + BEGIN + IF to_regclass(format('%%I.%%I', %1$L, v_enqueue_seq)) IS NULL THEN + IF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN + RAISE EXCEPTION 'lane sequence %%.%% has not been provisioned', %1$L, v_enqueue_seq + USING ERRCODE = '42501', + HINT = 'Run awa storage prepare-queue as the migrator before starting producers or workers.'; + END IF; + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_enqueue_seq + ); + END IF; + IF to_regclass(format('%%I.%%I', %1$L, v_claim_seq)) IS NULL THEN + IF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN + RAISE EXCEPTION 'lane sequence %%.%% has not been provisioned', %1$L, v_claim_seq + USING ERRCODE = '42501', + HINT = 'Run awa storage prepare-queue as the migrator before starting producers or workers.'; + END IF; + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_claim_seq + ); + END IF; + + UPDATE %1$I.queue_enqueue_heads + SET seq_name = v_enqueue_seq + WHERE queue = p_queue + AND priority = p_priority + AND enqueue_shard = p_enqueue_shard + AND seq_name IS DISTINCT FROM v_enqueue_seq; + + UPDATE %1$I.queue_claim_heads + SET seq_name = v_claim_seq + WHERE queue = p_queue + AND priority = p_priority + AND enqueue_shard = p_enqueue_shard + AND seq_name IS DISTINCT FROM v_claim_seq; + END; + $func$ + $ddl$, + p_schema + ); + + EXECUTE format( + $ddl$ + CREATE OR REPLACE FUNCTION %1$I.queue_enqueue_head_sequence_sync() + RETURNS TRIGGER + LANGUAGE plpgsql + SET search_path = pg_catalog + AS $func$ + DECLARE + v_seq_name TEXT := %1$I.queue_lane_sequence_name( + 'queue_enqueue_seq', + NEW.queue, + NEW.priority, + NEW.enqueue_shard + ); + v_qualified_seq TEXT := format('%%I.%%I', %1$L, v_seq_name); + v_count BIGINT; + v_start BIGINT; + BEGIN + IF to_regclass(format('%%I.%%I', %1$L, v_seq_name)) IS NULL THEN + IF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN + RAISE EXCEPTION 'lane sequence %%.%% has not been provisioned', %1$L, v_seq_name + USING ERRCODE = '42501', + HINT = 'Run awa storage prepare-queue as the migrator before starting producers or workers.'; + END IF; + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_seq_name + ); + END IF; + NEW.seq_name := v_seq_name; + + IF TG_OP = 'UPDATE' + AND NEW.next_seq IS DISTINCT FROM OLD.next_seq + AND NEW.next_seq > OLD.next_seq + THEN + v_count := NEW.next_seq - OLD.next_seq; + PERFORM pg_advisory_lock(hashtextextended(v_qualified_seq, 0)); + BEGIN + EXECUTE format( + 'SELECT nextval(%%L::regclass)::bigint', + v_qualified_seq + ) + INTO v_start; + + IF v_count > 1 THEN + EXECUTE format( + 'SELECT setval(%%L::regclass, %%s, true)', + v_qualified_seq, + v_start + v_count - 1 + ); + END IF; + EXCEPTION WHEN OTHERS THEN + PERFORM pg_advisory_unlock(hashtextextended(v_qualified_seq, 0)); + RAISE; + END; + PERFORM pg_advisory_unlock(hashtextextended(v_qualified_seq, 0)); + NEW.next_seq := v_start + v_count; + ELSE + PERFORM %1$I.set_sequence_next(v_seq_name, NEW.next_seq); + END IF; + + RETURN NEW; + END; + $func$ + $ddl$, + p_schema + ); + + EXECUTE format( + $ddl$ + CREATE OR REPLACE FUNCTION %1$I.queue_claim_head_sequence_sync() + RETURNS TRIGGER + LANGUAGE plpgsql + SET search_path = pg_catalog + AS $func$ + DECLARE + v_seq_name TEXT := %1$I.queue_lane_sequence_name( + 'queue_claim_seq', + NEW.queue, + NEW.priority, + NEW.enqueue_shard + ); + BEGIN + IF to_regclass(format('%%I.%%I', %1$L, v_seq_name)) IS NULL THEN + IF NOT has_schema_privilege(current_user, %1$L, 'CREATE') THEN + RAISE EXCEPTION 'lane sequence %%.%% has not been provisioned', %1$L, v_seq_name + USING ERRCODE = '42501', + HINT = 'Run awa storage prepare-queue as the migrator before starting producers or workers.'; + END IF; + EXECUTE format( + 'CREATE SEQUENCE IF NOT EXISTS %%I.%%I AS bigint START WITH 1 MINVALUE 1 CACHE 1', + %1$L, + v_seq_name + ); + END IF; + NEW.seq_name := v_seq_name; + + IF TG_OP = 'INSERT' THEN + PERFORM %1$I.set_sequence_next(v_seq_name, NEW.claim_seq); + END IF; + + RETURN NEW; + END; + $func$ + $ddl$, + p_schema + ); + +END; +$refresh$; diff --git a/awa/tests/lane_ownership_roles_test.rs b/awa/tests/lane_ownership_roles_test.rs new file mode 100644 index 000000000..e5aadbd39 --- /dev/null +++ b/awa/tests/lane_ownership_roles_test.rs @@ -0,0 +1,735 @@ +//! Queue lanes under a split-role install: a schema owner, a migration role +//! that is a member of it, and several application roles that share a runtime +//! group role. Only the owner and the migration role have default privileges, +//! so a lane sequence is usable by every runtime role only if it is created as +//! the owner or granted explicitly, whichever role touches the lane first. + +use awa::model::{migrations, storage, AwaError, InsertOpts, InsertParams, QueueStorage}; +use awa::model::{JobState, QueueStorageConfig}; +use sqlx::postgres::{PgConnectOptions, PgPoolOptions}; +use sqlx::{Executor, PgPool}; +use std::str::FromStr; +use std::time::Duration; + +type TestResult = Result<(), Box>; + +fn sql(text: impl Into) -> sqlx::AssertSqlSafe { + awa::audited_sql(text) +} + +/// Roles, a database owned by the schema owner, and a pool per role. +struct Cluster { + admin: PgPool, + database: String, + roles: Vec, + owner_name: String, + migrator_name: String, + runtime_name: String, + owner: PgPool, + migrator: PgPool, + app_a: PgPool, + app_b: PgPool, + app_c: PgPool, +} + +#[derive(Clone, Copy, PartialEq)] +enum Schema { + /// Every migration, including the lane provisioning functions. + Current, + /// The release before lane provisioning (v052). + BeforeProvisioning, +} + +impl Cluster { + /// `runtime_create` grants the runtime group CREATE on the schema, as a + /// 0.6 install does so runtimes can create lane sequences themselves. + async fn new( + schema: Schema, + runtime_create: bool, + ) -> Result> { + let url = std::env::var("DATABASE_URL") + .unwrap_or_else(|_| "postgres://postgres:test@localhost:15432/awa_test".to_string()); + let admin = PgPoolOptions::new() + .max_connections(2) + .connect(&url) + .await?; + let suffix = uuid::Uuid::new_v4().simple().to_string()[..12].to_string(); + let owner_name = format!("lane_owner_{suffix}"); + let migrator_name = format!("lane_migrator_{suffix}"); + let runtime_name = format!("lane_runtime_{suffix}"); + let app_names = ["a", "b", "c"].map(|app| format!("lane_app_{app}_{suffix}")); + let database = format!("lane_roles_{suffix}"); + admin + .execute(sqlx::raw_sql(sql(format!( + r#" + CREATE ROLE {owner_name} LOGIN PASSWORD 'lane_test'; + CREATE ROLE {migrator_name} LOGIN PASSWORD 'lane_test' IN ROLE {owner_name}; + CREATE ROLE {runtime_name} NOLOGIN; + CREATE ROLE {a} LOGIN PASSWORD 'lane_test' IN ROLE {runtime_name}; + CREATE ROLE {b} LOGIN PASSWORD 'lane_test' IN ROLE {runtime_name}; + CREATE ROLE {c} LOGIN PASSWORD 'lane_test' IN ROLE {runtime_name}; + "#, + a = app_names[0], + b = app_names[1], + c = app_names[2], + )))) + .await?; + admin + .execute(sqlx::raw_sql(sql(format!( + "CREATE DATABASE {database} OWNER {owner_name}" + )))) + .await?; + let mut roles = vec![ + owner_name.clone(), + migrator_name.clone(), + runtime_name.clone(), + ]; + roles.extend(app_names.iter().cloned()); + let options = PgConnectOptions::from_str(&url)? + .database(&database) + .password("lane_test"); + let pool = |user: &str| { + PgPoolOptions::new() + .max_connections(3) + .connect_with(options.clone().username(user)) + }; + let owner = pool(&owner_name).await?; + let migrator = pool(&migrator_name).await?; + + owner + .execute(sqlx::raw_sql(sql(format!( + r#" + CREATE SCHEMA awa; + GRANT USAGE ON SCHEMA awa TO {runtime_name}; + "# + )))) + .await?; + for (creator, creator_pool) in [(&owner_name, &owner), (&migrator_name, &migrator)] { + creator_pool + .execute(sqlx::raw_sql(sql(format!( + r#" + ALTER DEFAULT PRIVILEGES FOR ROLE {creator} IN SCHEMA awa + GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO {runtime_name}; + ALTER DEFAULT PRIVILEGES FOR ROLE {creator} IN SCHEMA awa + GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO {runtime_name}; + ALTER DEFAULT PRIVILEGES FOR ROLE {creator} IN SCHEMA awa + GRANT EXECUTE ON FUNCTIONS TO {runtime_name}; + "# + )))) + .await?; + } + // The migration role runs every migration with the owner as its + // effective role, as the database-roles guide describes. + let migrate_as_owner = PgPoolOptions::new() + .max_connections(1) + .connect_with( + options + .clone() + .username(&migrator_name) + .options([("role", owner_name.as_str())]), + ) + .await?; + let target = match schema { + Schema::Current => migrations::CURRENT_VERSION, + Schema::BeforeProvisioning => 52, + }; + for (_, _, statement) in migrations::migration_sql_range(0, target) { + migrate_as_owner + .execute(sqlx::raw_sql(sql(statement))) + .await?; + } + if schema == Schema::BeforeProvisioning { + // Every migration bundle carries the current helper definitions, + // so put the v052 helpers back and drop what v052 did not have. + migrate_as_owner + .execute(sqlx::raw_sql(sql(include_str!( + "fixtures/v052_lane_sequence_helpers.sql" + )))) + .await?; + migrate_as_owner + .execute(sqlx::raw_sql(sql(r#" + SELECT awa.v052_refresh_lane_sequence_helpers('awa'); + DROP FUNCTION awa.v052_refresh_lane_sequence_helpers(text); + DROP FUNCTION awa.provision_lane(text, smallint, smallint); + DROP FUNCTION awa.provision_lane_sequences(text, smallint, smallint); + DROP FUNCTION awa.repair_lane_sequences(text); + DROP FUNCTION awa.lane_sequence_problems(text, text); + "#))) + .await?; + } + migrate_as_owner.close().await; + if runtime_create { + owner + .execute(sqlx::raw_sql(sql(format!( + "GRANT CREATE ON SCHEMA awa TO {runtime_name}" + )))) + .await?; + } + + let app_a = pool(&app_names[0]).await?; + let app_b = pool(&app_names[1]).await?; + let app_c = pool(&app_names[2]).await?; + Ok(Self { + admin, + database, + roles, + owner_name, + migrator_name, + runtime_name, + owner, + migrator, + app_a, + app_b, + app_c, + }) + } + + async fn teardown(self) -> TestResult { + for pool in [ + &self.owner, + &self.migrator, + &self.app_a, + &self.app_b, + &self.app_c, + ] { + pool.close().await; + } + self.admin + .execute(sqlx::raw_sql(sql(format!( + "DROP DATABASE {} WITH (FORCE)", + self.database + )))) + .await?; + for role in self.roles.iter().rev() { + self.admin + .execute(sqlx::raw_sql(sql(format!("DROP ROLE {role}")))) + .await?; + } + self.admin.close().await; + Ok(()) + } + + /// `(sequence, owner)` for every lane sequence of `queue`. + async fn lane_sequence_owners( + &self, + queue: &str, + ) -> Result, sqlx::Error> { + sqlx::query_as( + r#" + SELECT sequence.relname::text, pg_get_userbyid(sequence.relowner)::text + FROM awa.queue_enqueue_heads AS heads + CROSS JOIN LATERAL (VALUES (heads.seq_name), (( + SELECT claims.seq_name FROM awa.queue_claim_heads AS claims + WHERE claims.queue = heads.queue + AND claims.priority = heads.priority + AND claims.enqueue_shard = heads.enqueue_shard + ))) AS lane(seq_name) + JOIN pg_class AS sequence + ON sequence.relname = lane.seq_name + AND sequence.relnamespace = 'awa'::regnamespace + WHERE heads.queue = $1 + ORDER BY 1 + "#, + ) + .bind(queue) + .fetch_all(&self.owner) + .await + } + + async fn assert_lanes_owned_by_owner(&self, queue: &str, lanes: usize) -> TestResult { + let owners = self.lane_sequence_owners(queue).await?; + assert_eq!( + owners.len(), + lanes * 2, + "lane sequences of {queue}: {owners:?}" + ); + for (sequence, owner) in owners { + assert_eq!(owner, self.owner_name, "{sequence} of {queue}"); + } + Ok(()) + } + + async fn set_enqueue_shards(&self, queue: &str, shards: i16) -> Result<(), sqlx::Error> { + sqlx::query( + "INSERT INTO awa.queue_meta (queue, enqueue_shards) VALUES ($1, $2) \ + ON CONFLICT (queue) DO UPDATE SET enqueue_shards = EXCLUDED.enqueue_shards", + ) + .bind(queue) + .bind(shards) + .execute(&self.owner) + .await?; + Ok(()) + } +} + +fn store() -> QueueStorage { + QueueStorage::new(QueueStorageConfig::default()).expect("default queue storage config") +} + +/// Enqueue `count` jobs through a fresh store, as a producer process would. +async fn enqueue(pool: &PgPool, queue: &str, priority: i16, count: i64) -> Result { + store().enqueue_batch(pool, queue, priority, count).await +} + +/// Claim and complete everything on `queue`, as a worker does; returns how +/// many jobs completed. +async fn drain(pool: &PgPool, queue: &str) -> Result { + let worker = store(); + let mut completed = 0; + loop { + let claimed = worker + .claim_runtime_batch(pool, queue, 100, Duration::from_secs(60)) + .await?; + if claimed.is_empty() { + return Ok(completed); + } + completed += worker.complete_runtime_batch(pool, &claimed).await?.len(); + } +} + +/// Schedule jobs that become due shortly, one per priority. +async fn schedule(pool: &PgPool, queue: &str, priorities: &[i16]) -> Result<(), AwaError> { + let run_at = chrono::Utc::now() + chrono::Duration::milliseconds(200); + let jobs: Vec = priorities + .iter() + .map(|&priority| InsertParams { + kind: "lane_ownership_job".into(), + args: serde_json::json!({}), + opts: InsertOpts { + queue: queue.into(), + priority, + run_at: Some(run_at), + ..Default::default() + }, + }) + .collect(); + store().enqueue_params_batch(pool, &jobs).await?; + tokio::time::sleep(Duration::from_millis(300)).await; + Ok(()) +} + +async fn first_touch_by_one_app_role(runtime_create: bool) -> TestResult { + let cluster = Cluster::new(Schema::Current, runtime_create).await?; + + // Role A creates the lane; role B enqueues, claims and completes on it. + assert_eq!(enqueue(&cluster.app_a, "fresh_queue", 3, 2).await?, 2); + assert_eq!(enqueue(&cluster.app_b, "fresh_queue", 3, 2).await?, 2); + assert_eq!(drain(&cluster.app_b, "fresh_queue").await?, 4); + + // The maintenance leader, running as role C, promotes scheduled jobs into + // lanes nobody has created yet: two priorities over two shards. + cluster.set_enqueue_shards("fresh_queue", 2).await?; + schedule(&cluster.app_a, "fresh_queue", &[1, 4]).await?; + assert_eq!( + store() + .promote_due(&cluster.app_c, JobState::Scheduled, 10) + .await?, + 2 + ); + let promoted_shards: Vec = sqlx::query_scalar( + "SELECT enqueue_shard FROM awa.queue_enqueue_heads \ + WHERE queue = 'fresh_queue' AND priority IN (1, 4) ORDER BY 1", + ) + .fetch_all(&cluster.owner) + .await?; + assert_eq!(promoted_shards, vec![0, 1]); + + // A and B both use the lanes the leader created; each producer's rotor + // visits both shards. + let (producer_a, producer_b) = (store(), store()); + for _ in 0..2 { + producer_a + .enqueue_batch(&cluster.app_a, "fresh_queue", 4, 1) + .await?; + producer_b + .enqueue_batch(&cluster.app_b, "fresh_queue", 1, 1) + .await?; + } + assert_eq!(drain(&cluster.app_a, "fresh_queue").await?, 6); + + cluster + .assert_lanes_owned_by_owner("fresh_queue", 5) + .await?; + assert!(storage::lane_sequence_problems(&cluster.owner, "awa") + .await? + .is_empty()); + cluster.teardown().await +} + +#[tokio::test] +async fn lane_first_touched_by_an_app_role_with_schema_create_serves_every_runtime_role( +) -> TestResult { + first_touch_by_one_app_role(true).await +} + +#[tokio::test] +async fn lane_first_touched_by_an_app_role_without_schema_create_serves_every_runtime_role( +) -> TestResult { + first_touch_by_one_app_role(false).await +} + +#[tokio::test] +async fn raising_enqueue_shards_live_lets_the_leader_create_a_shard_first() -> TestResult { + let cluster = Cluster::new(Schema::Current, true).await?; + enqueue(&cluster.app_a, "sharded_queue", 2, 3).await?; + + cluster.set_enqueue_shards("sharded_queue", 2).await?; + // The leader's store has already routed a promotion to shard 0, as a + // long-running leader has, so its next pick is the new shard. + let leader = store(); + schedule(&cluster.app_a, "sharded_queue", &[2]).await?; + assert_eq!( + leader + .promote_due(&cluster.app_c, JobState::Scheduled, 10) + .await?, + 1 + ); + schedule(&cluster.app_b, "sharded_queue", &[2]).await?; + assert_eq!( + leader + .promote_due(&cluster.app_c, JobState::Scheduled, 10) + .await?, + 1 + ); + let shards: Vec = sqlx::query_scalar( + "SELECT enqueue_shard FROM awa.queue_enqueue_heads WHERE queue = 'sharded_queue' ORDER BY 1", + ) + .fetch_all(&cluster.owner) + .await?; + assert_eq!(shards, vec![0, 1]); + + // Producers on both roles spread over both shards; B drains them. + let producer_a = store(); + let producer_b = store(); + for _ in 0..4 { + producer_a + .enqueue_batch(&cluster.app_a, "sharded_queue", 2, 1) + .await?; + producer_b + .enqueue_batch(&cluster.app_b, "sharded_queue", 2, 1) + .await?; + } + assert_eq!(drain(&cluster.app_b, "sharded_queue").await?, 13); + cluster + .assert_lanes_owned_by_owner("sharded_queue", 2) + .await?; + cluster.teardown().await +} + +#[tokio::test] +async fn prepare_queue_as_an_app_role_provisions_lanes_every_runtime_role_can_use() -> TestResult { + let cluster = Cluster::new(Schema::Current, true).await?; + store() + .prepare_queue(&cluster.app_a, "prepared_queue", 2) + .await?; + cluster + .assert_lanes_owned_by_owner("prepared_queue", 8) + .await?; + + cluster.set_enqueue_shards("prepared_queue", 2).await?; + let producer = store(); + for priority in 1..=4 { + producer + .enqueue_batch(&cluster.app_b, "prepared_queue", priority, 1) + .await?; + producer + .enqueue_batch(&cluster.app_c, "prepared_queue", priority, 1) + .await?; + } + assert_eq!(drain(&cluster.app_b, "prepared_queue").await?, 8); + cluster + .assert_lanes_owned_by_owner("prepared_queue", 8) + .await?; + cluster.teardown().await +} + +#[tokio::test] +async fn mixed_fleet_shares_lanes_whichever_path_creates_them() -> TestResult { + let cluster = Cluster::new(Schema::Current, true).await?; + // Role A cannot call provision_lane, so its stores take the path a binary + // that predates the function takes: they write the lane rows themselves. + cluster + .owner + .execute(sqlx::raw_sql(sql(format!( + "REVOKE EXECUTE ON FUNCTION awa.provision_lane(text, smallint, smallint) FROM PUBLIC, {}", + cluster.runtime_name + )))) + .await?; + cluster + .owner + .execute(sqlx::raw_sql(sql(format!( + "GRANT EXECUTE ON FUNCTION awa.provision_lane(text, smallint, smallint) TO {}, {}", + cluster.roles[4], cluster.roles[5] + )))) + .await?; + let can_provision: bool = sqlx::query_scalar( + "SELECT has_function_privilege('awa.provision_lane(text,smallint,smallint)', 'EXECUTE')", + ) + .fetch_one(&cluster.app_a) + .await?; + assert!(!can_provision); + + enqueue(&cluster.app_a, "fleet_queue", 1, 2).await?; + enqueue(&cluster.app_b, "fleet_queue", 2, 2).await?; + enqueue(&cluster.app_b, "fleet_queue", 1, 2).await?; + enqueue(&cluster.app_a, "fleet_queue", 2, 2).await?; + assert_eq!(drain(&cluster.app_a, "fleet_queue").await?, 8); + cluster + .assert_lanes_owned_by_owner("fleet_queue", 2) + .await?; + + // A provisioner that disappears after a store has used it: the next lane + // falls back inside the same transaction instead of failing the enqueue. + let producer = store(); + producer + .enqueue_batch(&cluster.app_b, "fleet_queue", 3, 1) + .await?; + cluster + .owner + .execute("DROP FUNCTION awa.provision_lane(text, smallint, smallint)") + .await?; + producer + .enqueue_batch(&cluster.app_b, "fleet_queue", 4, 1) + .await?; + enqueue(&cluster.app_c, "fleet_queue", 4, 1).await?; + assert_eq!(drain(&cluster.app_c, "fleet_queue").await?, 3); + cluster + .assert_lanes_owned_by_owner("fleet_queue", 4) + .await?; + cluster.teardown().await +} + +#[tokio::test] +async fn binary_ahead_of_the_schema_creates_lanes_as_before() -> TestResult { + let cluster = Cluster::new(Schema::BeforeProvisioning, false).await?; + let has_provisioner: bool = sqlx::query_scalar( + "SELECT to_regprocedure('awa.provision_lane(text,smallint,smallint)') IS NOT NULL", + ) + .fetch_one(&cluster.owner) + .await?; + assert!(!has_provisioner); + + // The owner creates lanes lazily, as on v052. + enqueue(&cluster.owner, "ahead_queue", 2, 2).await?; + enqueue(&cluster.app_b, "ahead_queue", 2, 1).await?; + assert_eq!(drain(&cluster.app_b, "ahead_queue").await?, 3); + // A runtime without schema CREATE still gets v052's provisioning hint. + let error = enqueue(&cluster.app_a, "ahead_queue", 3, 1) + .await + .unwrap_err(); + let AwaError::Database(sqlx::Error::Database(db_error)) = &error else { + panic!("expected a database error, got {error:?}"); + }; + assert_eq!(db_error.code().as_deref(), Some("42501")); + assert!(db_error.message().contains("has not been provisioned")); + cluster.teardown().await +} + +#[tokio::test] +async fn concurrent_first_touch_of_one_lane_by_two_roles() -> TestResult { + let cluster = Cluster::new(Schema::Current, true).await?; + + // A holds a brand-new lane's creation open; B's first touch waits for it + // and then uses A's sequences. + let mut holding = cluster.app_a.begin().await?; + sqlx::query("SELECT awa.provision_lane('raced_queue', 2::smallint, 0::smallint)") + .execute(holding.as_mut()) + .await?; + let app_b = cluster.app_b.clone(); + let waiting = tokio::spawn(async move { enqueue(&app_b, "raced_queue", 2, 1).await }); + let mut blocked = false; + for _ in 0..100 { + blocked = sqlx::query_scalar( + "SELECT EXISTS (SELECT 1 FROM pg_locks WHERE locktype = 'advisory' AND NOT granted \ + AND database = (SELECT oid FROM pg_database WHERE datname = current_database()))", + ) + .fetch_one(&cluster.owner) + .await?; + if blocked { + break; + } + tokio::time::sleep(Duration::from_millis(20)).await; + } + assert!(blocked, "B's first touch should wait on A's lane lock"); + holding.commit().await?; + assert_eq!(waiting.await??, 1); + + // Unordered races on many fresh lanes. + for round in 0..20 { + let queue = format!("raced_queue_{round}"); + let (from_a, from_b) = tokio::join!( + enqueue(&cluster.app_a, &queue, 1, 1), + enqueue(&cluster.app_b, &queue, 1, 1) + ); + assert_eq!(from_a? + from_b?, 2); + cluster.assert_lanes_owned_by_owner(&queue, 1).await?; + assert_eq!(drain(&cluster.app_c, &queue).await?, 2); + } + assert_eq!(drain(&cluster.app_c, "raced_queue").await?, 1); + cluster + .assert_lanes_owned_by_owner("raced_queue", 1) + .await?; + cluster.teardown().await +} + +#[tokio::test] +async fn migration_repairs_lanes_it_may_and_reports_the_rest() -> TestResult { + let mut cluster = Cluster::new(Schema::BeforeProvisioning, true).await?; + // Lanes as a 0.6 fleet left them: one each created by an app role, by the + // migration role acting as itself, and by the owner without the runtime's + // grant. + enqueue(&cluster.app_a, "app_lane", 1, 1).await?; + enqueue(&cluster.migrator, "migrator_lane", 1, 1).await?; + enqueue(&cluster.owner, "owner_lane", 1, 1).await?; + for (sequence, _) in cluster.lane_sequence_owners("owner_lane").await? { + cluster + .owner + .execute(sqlx::raw_sql(sql(format!( + "REVOKE ALL ON SEQUENCE awa.{sequence} FROM {}", + cluster.runtime_name + )))) + .await?; + } + let failed = drain(&cluster.app_b, "owner_lane").await.unwrap_err(); + assert!( + failed + .to_string() + .contains("permission denied for sequence"), + "{failed}" + ); + let failed = drain(&cluster.app_b, "app_lane").await.unwrap_err(); + assert!( + failed + .to_string() + .contains("permission denied for sequence"), + "{failed}" + ); + // 0.7 refuses to migrate while app roles hold CREATE on the schema. + cluster + .owner + .execute(sqlx::raw_sql(sql(format!( + "REVOKE CREATE ON SCHEMA awa FROM {}", + cluster.runtime_name + )))) + .await?; + + // The migration runs as the migration role itself. It is a member of the + // owner, so it may reassign its own and the owner's sequences, but not + // the app role's. + for (_, _, statement) in migrations::migration_sql_range(52, migrations::CURRENT_VERSION) { + cluster + .migrator + .execute(sqlx::raw_sql(sql(statement))) + .await?; + } + assert_eq!( + migrations::current_version(&cluster.owner).await?, + migrations::CURRENT_VERSION + ); + cluster + .assert_lanes_owned_by_owner("migrator_lane", 1) + .await?; + cluster.assert_lanes_owned_by_owner("owner_lane", 1).await?; + assert_eq!(drain(&cluster.app_b, "migrator_lane").await?, 1); + assert_eq!(drain(&cluster.app_b, "owner_lane").await?, 1); + + let problems = storage::lane_sequence_problems(&cluster.app_c, "awa").await?; + assert_eq!(problems.len(), 2, "{problems:?}"); + let app_a = cluster.roles[3].clone(); + let app_a = &app_a; + for problem in &problems { + assert_eq!(&problem.owner, app_a); + assert_eq!(problem.expected_owner, cluster.owner_name); + assert_eq!( + problem.missing_grants, + vec![format!( + "GRANT USAGE, UPDATE, SELECT ON SEQUENCE awa.{} TO {}", + problem.sequence_name, cluster.runtime_name + )] + ); + assert_eq!( + problem.reassign_sql.as_deref(), + Some( + format!( + "ALTER SEQUENCE awa.{} OWNER TO {}", + problem.sequence_name, cluster.owner_name + ) + .as_str() + ) + ); + } + + // Re-running the repair as the migration role changes nothing and fails + // nothing. The migration role created the repair function, so it grants + // its use. + cluster + .migrator + .execute(sqlx::raw_sql(sql(format!( + "GRANT EXECUTE ON FUNCTION awa.repair_lane_sequences(text) TO {}", + cluster.runtime_name + )))) + .await?; + let rerun = storage::repair_lane_sequences(&cluster.migrator, "awa").await?; + assert_eq!(rerun.len(), 2); + assert!(rerun.iter().all(|result| result.outcome == "unrepaired")); + + // A role that can act as the app role but cannot become the owner adds + // the grants and leaves the owner for someone who can. + let delegate = format!("{}_delegate", cluster.runtime_name); + cluster + .admin + .execute(sqlx::raw_sql(sql(format!( + "CREATE ROLE {delegate} LOGIN PASSWORD 'lane_test' IN ROLE {app_a}; \ + GRANT CONNECT ON DATABASE {} TO {delegate}", + cluster.database + )))) + .await?; + let delegate_pool = PgPoolOptions::new() + .max_connections(1) + .connect_with( + PgConnectOptions::from_str(&std::env::var("DATABASE_URL").unwrap_or_else(|_| { + "postgres://postgres:test@localhost:15432/awa_test".to_string() + }))? + .database(&cluster.database) + .username(&delegate) + .password("lane_test"), + ) + .await?; + let delegated = storage::repair_lane_sequences(&delegate_pool, "awa").await?; + delegate_pool.close().await; + assert_eq!(delegated.len(), 2); + for result in &delegated { + assert_eq!(result.outcome, "owner_unchanged"); + assert_eq!(&result.owner, app_a); + assert!(result.missing_grants.is_empty()); + assert!(result.reassign_sql.is_some()); + } + assert_eq!(drain(&cluster.app_b, "app_lane").await?, 1); + enqueue(&cluster.app_c, "app_lane", 1, 1).await?; + + // A role that is a member of both the app role and the owner reassigns. + cluster + .admin + .execute(sqlx::raw_sql(sql(format!( + "GRANT {app_a} TO {migrator}", + migrator = cluster.migrator_name + )))) + .await?; + let repaired = storage::repair_lane_sequences(&cluster.migrator, "awa").await?; + assert_eq!(repaired.len(), 2); + assert!( + repaired.iter().all(|result| result.outcome == "repaired"), + "{repaired:?}" + ); + assert!(storage::lane_sequence_problems(&cluster.app_c, "awa") + .await? + .is_empty()); + assert!(storage::repair_lane_sequences(&cluster.migrator, "awa") + .await? + .is_empty()); + cluster.assert_lanes_owned_by_owner("app_lane", 1).await?; + assert_eq!(drain(&cluster.app_b, "app_lane").await?, 1); + + cluster.roles.push(delegate); + cluster.teardown().await +} diff --git a/docs/queue-storage-substrate.md b/docs/queue-storage-substrate.md index 4476712e4..9542e3914 100644 --- a/docs/queue-storage-substrate.md +++ b/docs/queue-storage-substrate.md @@ -40,7 +40,7 @@ awa storage prepare-queue-storage-schema \ The command invokes the idempotent `awa.install_queue_storage_substrate(...)` helper under a per-schema advisory transaction lock. The helper is activation-neutral: preparing a schema does not route work to it. Activation is a separate staged transition described in [Upgrading from 0.5 to 0.6](upgrade-0.5-to-0.6.md). -The installer is `SECURITY INVOKER`; its caller needs DDL privileges on the target schema. After the migrator provisions each queue with `awa storage prepare-queue`, workers need runtime DML, sequence `USAGE`/`SELECT`/`UPDATE`, and `TRUNCATE` for guarded ring reclamation. They do not need schema CREATE. See [Database roles](security/database-roles.md). +The installer is `SECURITY INVOKER`; its caller needs DDL privileges on the target schema. Workers need runtime DML, sequence `USAGE`/`SELECT`/`UPDATE`, and `TRUNCATE` for guarded ring reclamation. They do not need schema CREATE: lanes are created through the schema owner's provisioning functions. See [Database roles](security/database-roles.md). ## Operator rules diff --git a/docs/security/database-roles.md b/docs/security/database-roles.md index b6c1557e9..1b5e0091f 100644 --- a/docs/security/database-roles.md +++ b/docs/security/database-roles.md @@ -63,36 +63,44 @@ ALTER DEFAULT PRIVILEGES FOR ROLE awa_owner IN SCHEMA awa If an existing installation created objects as `awa_migrator` without first setting the owner role, transfer every existing schema object to `awa_owner` before relying on owner-scoped defaults. New migrations should use the effective-role command above. -## Provision queues before starting restricted runtimes +## Lane sequences -From schema v049, runtime calls use existing lane sequences without issuing -`CREATE SEQUENCE`. Run provisioning as the migrator for every queue before -starting its producers or workers: +Each queue lane, `(queue, priority, enqueue_shard)`, has an enqueue and a claim sequence. From schema v053 they are created by the schema owner, whichever role first enqueues into, claims from or promotes into the lane: the lane helpers call `provision_lane` and `provision_lane_sequences` in the queue-storage schema. These are `SECURITY DEFINER` functions owned by the schema owner with a pinned `search_path`. Like the other runtime-callable functions they are executable by `PUBLIC`, so schema `USAGE` is what gates them, and they only create lanes, after validating the queue, priority (1–4) and shard (0–63). A runtime therefore needs neither schema `CREATE` nor default privileges to start using a new queue, priority or shard. + +A new lane sequence gets the privileges of the head table it backs. A role that may `INSERT` or `UPDATE` `queue_enqueue_heads` gets `USAGE, SELECT, UPDATE` on the enqueue sequences, and one that may only `SELECT` it gets `SELECT`; `queue_claim_heads` does the same for the claim sequences. Granting the runtime the table privileges above is enough, and no sequence default privileges are needed for lanes. + +Run migrations with the schema owner as the effective role, as above, so the provisioning functions belong to it. A migrator that cannot `SET ROLE` to the owner leaves them owned by itself and the migration warns. + +`awa storage prepare-queue` still creates every priority and shard of a queue in one transaction, and any runtime role may run it. Use it to create lanes before a deploy rather than on first use. + +### Check and repair lane ownership + +Lanes created before v053 belong to whichever role touched them first, and only that role, or the roles its default privileges named, can use them. A different runtime role then fails with `permission denied for sequence` on that lane. List lane sequences that are not owned by the schema owner or lack a runtime grant (read-only, any role): + +```bash +awa --database-url "$AWA_DATABASE_URL" storage lane-sequences --schema awa +``` + +```sql +SELECT * FROM awa.lane_sequence_problems('awa'); +``` + +The command exits 2 while any remain. Migration v053 runs the repair as the migrating role: for each sequence it changes the owner to the schema owner and adds the missing grants, wherever that role is allowed to. A sequence it is not allowed to change does not fail the migration. It is reported in a warning, and `awa migrate` prints a summary. Run the repair again at any time; it is idempotent: ```bash PGOPTIONS='-c role=awa_owner' \ - awa --database-url "$AWA_MIGRATOR_DATABASE_URL" storage prepare-queue \ - --queue email --enqueue-shards 1 + awa --database-url "$AWA_MIGRATOR_DATABASE_URL" storage lane-sequences --repair ``` -The command provisions all four priorities in one transaction and is safe to -repeat on a live queue: existing sequence cursors keep their positions. It does -not change routing or the queue's configured shard count. Prepare additional -shards before increasing `enqueue_shards`; match `--queue-stripe-count` to the -runtime's queue-storage configuration. With `PartitionedQueue`, provision each -physical queue. Use `--schema` for a custom storage schema. - -Apply the sequence grants above after provisioning, or set the owner's default -privileges first. Lane cursors need `UPDATE` for `setval`, in addition to `USAGE` -and `SELECT`. `CREATE SEQUENCE IF NOT EXISTS` requires schema CREATE even when -the sequence already exists, so provisioning alone does not repair pre-v049 -helpers: apply the migration first. Schema owners retain lazy creation for -single-role installations; a restricted runtime encountering an unprepared -lane fails with a provisioning hint. +Changing a sequence's owner requires a role that can `SET ROLE` to both the current owner and the schema owner. A migrator usually can for sequences it or the owner created, but not for one an unrelated application role created, and managed PostgreSQL offers no superuser. For each sequence that remains, the output gives the statements to run: + +- `missing_grants`: run them as the current owner, or as a role that can `SET ROLE` to it. Every runtime role can then use the lane, although the owner stays unchanged. +- `reassign_sql`: run it as a role that is a member of both roles, for example after `GRANT app_role TO awa_migrator` from a role with `ADMIN` on `app_role`. Revoke that membership afterwards. +## Custom queue-storage schemas ## Custom queue-storage schemas -Repeat the schema, table, sequence, function, and default-privilege grants for a custom queue-storage schema. Prepare custom schemas as the migrator; the runtime needs DML, sequence access, function execution, and `TRUNCATE`, but never DDL. See [Queue storage](../queue-storage-substrate.md). +Repeat the schema, table, sequence, function, and default-privilege grants for a custom queue-storage schema. Prepare custom schemas as the migrator; the runtime needs DML, sequence access, function execution, and `TRUNCATE`, but never DDL. Check lanes in a custom schema with `awa storage lane-sequences --schema `. See [Queue storage](../queue-storage-substrate.md). ## Why the grants are broad diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 0afc48afb..7fff6173f 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -14,14 +14,41 @@ A [migrate-first rehearsal with released `awa-pg==0.6.7`](https://github.com/har verified a restricted worker completing jobs on the upgraded schema. That rehearsal does not cover concurrent mixed-version rollouts. -For a runtime without DDL privileges, apply v049 as the migrator, run -`awa storage prepare-queue --queue ` for every physical queue, and grant -sequence `USAGE, SELECT, UPDATE` before starting producers or workers. Match -shard and stripe counts and provision extra lanes before increasing them. External migration runners must apply the complete generated `awa migrate --sql --from 48 --to 49` bundle: it refreshes the installer -definition before replacing lane helpers in the installed schemas. -See [Database roles](security/database-roles.md#provision-queues-before-starting-restricted-runtimes). +definition before replacing lane helpers in the installed schemas. From v053, +runtimes without DDL privileges create lanes themselves through the schema +owner's provisioning functions, so `awa storage prepare-queue` is optional. + +## Lane ownership and v053 + +Before v053 a lane's sequences belonged to the role that first enqueued into, +claimed from or promoted into it. With several runtime roles, only roles whose +default privileges covered that role could use the lane; any other role failed +with `permission denied for sequence`. v053 installs `SECURITY DEFINER` +`provision_lane` and `provision_lane_sequences` functions, owned by the schema +owner, in each queue-storage schema. The lane helpers create sequences through +them, with grants that mirror the lane's head table. v053 then gives every +existing lane sequence to the schema owner and adds its missing grants, as far +as the migrating role is allowed to. + +0.6 and earlier 0.7 binaries call the same helpers, so lanes they create after +v053 are owned by the schema owner too. A 0.7 binary running ahead of v053 +detects that `provision_lane` is missing and creates lanes as before. + +To adopt it: + +1. Check the current state: `awa storage lane-sequences` (read-only, exits 2 + while lanes need repair). +2. Run `awa migrate` with the schema owner as the effective role, as described + in [Database roles](security/database-roles.md). +3. Read the migrate output. Any lane sequence it could not reassign is listed; + `awa storage lane-sequences` gives the statements to run and the role to run + them as. See + [Check and repair lane ownership](security/database-roles.md#check-and-repair-lane-ownership). + +External migration runners apply the generated `awa migrate --sql --from 52 +--to 53` bundle, then run `awa storage lane-sequences` to check for leftovers. ## Custom-schema discovery during migration diff --git a/skills/awa-operations/SKILL.md b/skills/awa-operations/SKILL.md index 4cfb039b0..5124fbc3f 100644 --- a/skills/awa-operations/SKILL.md +++ b/skills/awa-operations/SKILL.md @@ -91,11 +91,13 @@ Do not skip a major version. 0.5 → 0.7 is unsupported; step through 0.6. ## Restricted Database Roles -When deploying a runtime without schema CREATE, apply v049 and provision every -queue with `awa storage prepare-queue` as the migrator before starting producers -or workers. Match shard/stripe counts; provision additional lanes before changing -routing. Use the sequence grants and owner defaults in -[Database roles](../../docs/security/database-roles.md#provision-queues-before-starting-restricted-runtimes). +From v053 any runtime role creates lanes through the schema owner's +`SECURITY DEFINER` provisioning functions, so runtimes need neither schema +CREATE nor sequence default privileges, and `awa storage prepare-queue` is +optional. Run migrations with the schema owner as the effective role. Check +lane ownership with `awa storage lane-sequences` (exits 2 while lanes need +repair) and fix it with `--repair` or the statements it prints; see +[Database roles](../../docs/security/database-roles.md#check-and-repair-lane-ownership). ## Rolling Upgrades From 70fe5ff66ae289189b3b3340737280f2d316372e Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 13:35:46 +1300 Subject: [PATCH 37/48] docs(migrations): link v053 to its pull request --- awa-model/migrations/v053_definer_lane_provisioning.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/awa-model/migrations/v053_definer_lane_provisioning.sql b/awa-model/migrations/v053_definer_lane_provisioning.sql index a56d96978..758627703 100644 --- a/awa-model/migrations/v053_definer_lane_provisioning.sql +++ b/awa-model/migrations/v053_definer_lane_provisioning.sql @@ -1,4 +1,5 @@ -- v053: Create queue lanes as the schema owner, whichever role touches them first. +-- Tracking: https://github.com/hardbyte/awa/pull/637 -- Lane sequences used to belong to the role that first enqueued into, claimed -- from or promoted into a lane, and only that role (plus whoever its default -- privileges named) could use them. refresh_lane_sequence_helpers now installs From 80178b39b6b2c40af8430809667a0a8a2b701069 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 14:04:15 +1300 Subject: [PATCH 38/48] fix(queue-storage): accept every lane the invoker path accepts in provision_lane Queue storage takes any queue name, including an empty one, and any smallint priority, so the provisioning functions only reject a null argument or a shard outside 0-63. --- awa-model/migrations/v023_install_queue_storage_substrate.sql | 4 ++-- docs/security/database-roles.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/awa-model/migrations/v023_install_queue_storage_substrate.sql b/awa-model/migrations/v023_install_queue_storage_substrate.sql index b5526cccc..39df93e86 100644 --- a/awa-model/migrations/v023_install_queue_storage_substrate.sql +++ b/awa-model/migrations/v023_install_queue_storage_substrate.sql @@ -272,8 +272,8 @@ BEGIN v_seq_name TEXT; v_grant TEXT; BEGIN - IF p_queue IS NULL OR p_queue = '' - OR p_priority IS NULL OR p_priority NOT BETWEEN 1 AND 4 + IF p_queue IS NULL + OR p_priority IS NULL OR p_enqueue_shard IS NULL OR p_enqueue_shard NOT BETWEEN 0 AND 63 THEN RAISE EXCEPTION 'invalid queue lane: queue %%, priority %%, enqueue shard %%', quote_nullable(p_queue), p_priority, p_enqueue_shard diff --git a/docs/security/database-roles.md b/docs/security/database-roles.md index 1b5e0091f..5f15793e7 100644 --- a/docs/security/database-roles.md +++ b/docs/security/database-roles.md @@ -65,7 +65,7 @@ If an existing installation created objects as `awa_migrator` without first sett ## Lane sequences -Each queue lane, `(queue, priority, enqueue_shard)`, has an enqueue and a claim sequence. From schema v053 they are created by the schema owner, whichever role first enqueues into, claims from or promotes into the lane: the lane helpers call `provision_lane` and `provision_lane_sequences` in the queue-storage schema. These are `SECURITY DEFINER` functions owned by the schema owner with a pinned `search_path`. Like the other runtime-callable functions they are executable by `PUBLIC`, so schema `USAGE` is what gates them, and they only create lanes, after validating the queue, priority (1–4) and shard (0–63). A runtime therefore needs neither schema `CREATE` nor default privileges to start using a new queue, priority or shard. +Each queue lane, `(queue, priority, enqueue_shard)`, has an enqueue and a claim sequence. From schema v053 they are created by the schema owner, whichever role first enqueues into, claims from or promotes into the lane: the lane helpers call `provision_lane` and `provision_lane_sequences` in the queue-storage schema. These are `SECURITY DEFINER` functions owned by the schema owner with a pinned `search_path`. Like the other runtime-callable functions they are executable by `PUBLIC`, so schema `USAGE` is what gates them, and they only create lanes, after checking that the queue, priority and shard are set and the shard is 0–63. A runtime therefore needs neither schema `CREATE` nor default privileges to start using a new queue, priority or shard. A new lane sequence gets the privileges of the head table it backs. A role that may `INSERT` or `UPDATE` `queue_enqueue_heads` gets `USAGE, SELECT, UPDATE` on the enqueue sequences, and one that may only `SELECT` it gets `SELECT`; `queue_claim_heads` does the same for the claim sequences. Granting the runtime the table privileges above is enough, and no sequence default privileges are needed for lanes. From 4e51915e07c2ee23726396ed0139ac797d80621c Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 17:49:27 +1300 Subject: [PATCH 39/48] fix(worker): restrict who may call the statistics helper and what it may analyse - Revoke EXECUTE on awa.analyze_queue_storage_relation from PUBLIC. The SHARE UPDATE EXCLUSIVE lock it takes lasts until the caller's transaction ends, so any role could hold it open and block ring prune. The migration grants EXECUTE to the roles that already hold INSERT, UPDATE and DELETE on the awa head tables, and the function requires the calling session user to hold those privileges on the target schema. - Give the function its own lock_timeout. - Accept only the two head tables and the thirteen ring parents inside the function, not any partitioned table of the schema. - Probe for the function once per pass, so a binary ahead of the schema makes one catalog query instead of fifteen failing calls and server ERROR lines. Pass-level outcomes use a new "pass" metric scope. - Correct the header, which claimed the function takes no lock. - Tests: a role without EXECUTE and a role without head-table privileges are denied, the migration grants EXECUTE to existing grantees, non-ring tables are rejected, and a missing helper costs one probe and no calls. --- CHANGELOG.md | 23 ++- awa-metrics/src/lib.rs | 6 +- .../v053_analyze_queue_storage_statistics.sql | 107 +++++++++--- awa-worker/src/statistics.rs | 135 +++++++++++++-- awa/tests/statistics_refresh_test.rs | 159 +++++++++++++++++- docs/configuration.md | 4 +- docs/grafana/README.md | 2 +- docs/security/database-roles.md | 4 +- docs/upgrade-0.6-to-0.7.md | 6 +- 9 files changed, 391 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1287eca44..699c9bb16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,21 +23,26 @@ Notable changes between releases. Detailed migration notes for storage transitio lands while ANALYZE samples the oldest slot's tables returns `blocked` and retries on its normal backoff. Results are in `awa.maintenance.analyze.attempts` and `awa.maintenance.analyze.duration` - (scope `heads` or `ring_parent`; outcome `ok`, `skipped_privilege`, + (scope `heads`, `ring_parent` or `pass`; outcome `ok`, `skipped_privilege`, `skipped_lock`, `unavailable` or `failed`). - **Migration v053 adds `awa.analyze_queue_storage_relation(schema, relation)`, so a runtime role that does not own the tables can refresh statistics.** `ANALYZE` skips a table its caller may not analyse, and the documented runtime grants do not include `MAINTAIN`, so the refresh runs through this `SECURITY DEFINER` function owned by the migration role. It analyses only a - head table or partitioned table of a schema that - `awa.queue_storage_schemas()` reports as trusted, and `EXECUTE` is granted - to `PUBLIC` like the other runtime helpers. Run `awa migrate` as the schema - owner (see [database roles](docs/security/database-roles.md)); no grant - changes are needed. A binary running ahead of the migration, or against a - function whose owner may not analyse the tables, logs one warning naming what - is missing and skips the refresh without affecting job processing. Earlier - binaries never call the function. + head table or ring parent of a schema that `awa.queue_storage_schemas()` + reports as trusted. It is not executable by `PUBLIC`, because the lock it + takes lasts until the caller's transaction ends and would block ring prune: + the migration grants `EXECUTE` to the roles that already hold INSERT, UPDATE + and DELETE on the head tables (the runtime grantees), and the function + requires the calling session user to hold them. A role created later needs + the documented `GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA awa`. Run + `awa migrate` as the schema owner (see + [database roles](docs/security/database-roles.md)). A binary running ahead of + the migration probes for the function once per pass and, like one whose + function's owner may not analyse the tables, logs one warning naming what is + missing and skips the refresh without making failing calls or affecting job + processing. Earlier binaries never call the function. ### Fixed diff --git a/awa-metrics/src/lib.rs b/awa-metrics/src/lib.rs index 14e3cb540..3f1eee208 100644 --- a/awa-metrics/src/lib.rs +++ b/awa-metrics/src/lib.rs @@ -279,7 +279,7 @@ pub struct AwaMetrics { /// rather than one per tick. Fleets alert on this rather than /// scraping the matching `tracing::warn!` line. Issue #242. pub maintenance_branch_overrun_total: Counter, - /// Planner-statistics `ANALYZE` calls by scope (`heads`, `ring_parent`) + /// Planner-statistics `ANALYZE` calls by scope (`heads`, `ring_parent`, `pass`) /// and outcome (`ok`, `skipped_privilege`, `skipped_lock`, /// `unavailable`, `failed`). One increment per relation per refresh pass. pub maintenance_analyze_attempts: Counter, @@ -1304,8 +1304,8 @@ impl AwaMetrics { self.maintenance_branch_overrun_total.add(1, &attrs); } - /// Record one planner-statistics `ANALYZE` call. `scope` is `"heads"` or - /// `"ring_parent"`; `outcome` is `"ok"`, `"skipped_privilege"`, + /// Record one planner-statistics `ANALYZE` call. `scope` is `"heads"`, + /// `"ring_parent"` or `"pass"` (a pass-level probe or failure); `outcome` is `"ok"`, `"skipped_privilege"`, /// `"skipped_lock"`, `"unavailable"` or `"failed"`. pub fn record_statistics_analyze( &self, diff --git a/awa-model/migrations/v053_analyze_queue_storage_statistics.sql b/awa-model/migrations/v053_analyze_queue_storage_statistics.sql index 93d556d12..d9ec60d0f 100644 --- a/awa-model/migrations/v053_analyze_queue_storage_statistics.sql +++ b/awa-model/migrations/v053_analyze_queue_storage_statistics.sql @@ -21,24 +21,35 @@ -- applies when ANALYZE starts work on a relation, so a child that ring prune -- holds ACCESS EXCLUSIVE is skipped during the per-child analysis, but -- sampling the children for the parent's statistics can still wait for it. --- That wait is bounded by the caller's lock_timeout and fails the call with +-- That wait is bounded by the function's lock_timeout and fails the call with -- SQLSTATE 55P03, which the caller records as skipped_lock. SKIP_LOCKED also -- skips every partition silently when the parent itself is locked, so the -- function takes the parent's SHARE UPDATE EXCLUSIVE lock first and lets that -- wait fail instead. -- --- Definer boundary: the function only analyses a head table or a partitioned --- table of a schema that awa.queue_storage_schemas() reports, which requires --- the schema's ownership, grants and triggers to be trusted, and builds SQL --- from nothing but quoted identifiers. ANALYZE writes statistics and nothing --- else. +-- Definer boundary: only a head table or ring parent of a schema that +-- awa.queue_storage_schemas() reports is analysed, which requires the schema's +-- ownership, grants and triggers to be trusted, and SQL is built from nothing +-- but quoted identifiers. ANALYZE writes statistics and nothing else. +-- Only the fixed list of ring parents and the two head tables is accepted; +-- a migration that adds a partitioned table to the substrate must extend it. +-- +-- Who may call it: the lock above lasts until the caller's transaction ends +-- and blocks ring prune of that table, so EXECUTE is not granted to PUBLIC. It +-- goes to the roles that already hold INSERT, UPDATE and DELETE on the head +-- tables of the awa schema (the runtime grantees), and the function itself +-- requires the calling session user to hold those privileges on the target +-- schema's queue_claim_heads. A role created later needs the documented +-- `GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA awa` (or default privileges). -- -- Returns 'analyzed'; 'skipped_privilege' when the function owner may not -- analyse the relation; or 'missing' when the relation does not exist. -- --- N-1 binaries never call it. A binary newer than this schema logs once that --- the function is missing and skips the refresh. Completes in milliseconds and --- takes no lock on any queue-storage table. +-- N-1 binaries never call it. A binary newer than this schema probes for the +-- function, logs once that it is missing and skips the refresh. Creating or +-- replacing it takes no table lock and completes in milliseconds; calling it +-- takes SHARE UPDATE EXCLUSIVE on the relation until the caller's transaction +-- ends. CREATE OR REPLACE FUNCTION awa.analyze_queue_storage_relation( p_schema TEXT, @@ -48,10 +59,13 @@ RETURNS TEXT LANGUAGE plpgsql SECURITY DEFINER SET search_path = pg_catalog, pg_temp +SET lock_timeout = '2s' AS $$ DECLARE + v_heads REGCLASS; v_relid OID; v_relkind "char"; + v_relowner OID; v_may_analyze BOOLEAN; BEGIN IF NOT EXISTS ( @@ -62,26 +76,51 @@ BEGIN USING ERRCODE = '22023'; END IF; + IF p_relation <> ALL (ARRAY[ + 'queue_claim_heads', + 'queue_enqueue_heads', + 'done_entries', + 'lease_claim_batches', + 'lease_claim_closure_batches', + 'lease_claim_closures', + 'lease_claims', + 'leases', + 'queue_terminal_count_deltas', + 'ready_claim_attempt_batches', + 'ready_entries', + 'ready_segments', + 'ready_tombstones', + 'receipt_completion_batches', + 'receipt_completion_tombstones' + ]) THEN + RAISE EXCEPTION '%.% is not a ring parent or head table of a queue-storage schema', + p_schema, p_relation + USING ERRCODE = '22023'; + END IF; + + v_heads := to_regclass(format('%I.queue_claim_heads', p_schema)); + IF v_heads IS NULL + OR NOT has_table_privilege(session_user, v_heads, 'INSERT') + OR NOT has_table_privilege(session_user, v_heads, 'UPDATE') + OR NOT has_table_privilege(session_user, v_heads, 'DELETE') THEN + RAISE EXCEPTION 'permission denied: % may not maintain queue storage in schema %', + session_user, p_schema + USING ERRCODE = '42501'; + END IF; + v_relid := to_regclass(format('%I.%I', p_schema, p_relation)); IF v_relid IS NULL THEN RETURN 'missing'; END IF; - SELECT class.relkind INTO v_relkind FROM pg_class AS class WHERE class.oid = v_relid; - IF NOT ( - v_relkind = 'p' - OR p_relation IN ('queue_claim_heads', 'queue_enqueue_heads') - ) THEN - RAISE EXCEPTION '%.% is not a partitioned or head table of a queue-storage schema', - p_schema, p_relation - USING ERRCODE = '22023'; - END IF; + SELECT class.relkind, class.relowner INTO v_relkind, v_relowner + FROM pg_class AS class WHERE class.oid = v_relid; -- ANALYZE skips, with a warning rather than an error, a table the caller -- may not analyse: the owner, a MAINTAIN holder (PostgreSQL 17+), a -- member of pg_maintain, or the database owner may analyse it. SELECT - pg_has_role(current_user, class.relowner, 'USAGE') + pg_has_role(current_user, v_relowner, 'USAGE') OR pg_has_role( current_user, (SELECT database.datdba FROM pg_database AS database @@ -90,12 +129,10 @@ BEGIN ) OR CASE WHEN current_setting('server_version_num')::int >= 170000 - THEN has_table_privilege(class.oid, 'MAINTAIN') + THEN has_table_privilege(v_relid, 'MAINTAIN') ELSE FALSE END - INTO v_may_analyze - FROM pg_class AS class - WHERE class.oid = v_relid; + INTO v_may_analyze; IF NOT v_may_analyze THEN RETURN 'skipped_privilege'; @@ -113,7 +150,29 @@ BEGIN END $$; -GRANT EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(TEXT, TEXT) TO PUBLIC; +REVOKE EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(TEXT, TEXT) FROM PUBLIC; + +DO $grant$ +DECLARE + v_grantee TEXT; +BEGIN + FOR v_grantee IN + SELECT pg_get_userbyid(privilege.grantee) + FROM pg_class AS heads + CROSS JOIN LATERAL aclexplode(heads.relacl) AS privilege + WHERE heads.oid = to_regclass('awa.queue_claim_heads') + AND privilege.grantee <> 0 + AND privilege.privilege_type IN ('INSERT', 'UPDATE', 'DELETE') + GROUP BY privilege.grantee + HAVING count(DISTINCT privilege.privilege_type) = 3 + LOOP + EXECUTE format( + 'GRANT EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(text, text) TO %I', + v_grantee + ); + END LOOP; +END +$grant$; INSERT INTO awa.schema_version (version, description) VALUES (53, 'Planner statistics refresh for queue-storage tables autovacuum never analyses') diff --git a/awa-worker/src/statistics.rs b/awa-worker/src/statistics.rs index 68994c6da..352b97b64 100644 --- a/awa-worker/src/statistics.rs +++ b/awa-worker/src/statistics.rs @@ -54,6 +54,8 @@ const SQLSTATE_LOCK_NOT_AVAILABLE: &str = "55P03"; pub(crate) enum RelationScope { Heads, RingParent, + /// The pass as a whole: a probe or listing failed, or the helper is absent. + Pass, } impl RelationScope { @@ -61,6 +63,7 @@ impl RelationScope { match self { RelationScope::Heads => "heads", RelationScope::RingParent => "ring_parent", + RelationScope::Pass => "pass", } } } @@ -193,7 +196,31 @@ impl StatisticsRefresher { Err(err) => { warn!(error = %err, schema = %self.schema, "Could not check the queue-storage schema for statistics refresh"); self.record( - RelationScope::RingParent, + RelationScope::Pass, + AnalyzeOutcome::Failed, + started.elapsed(), + ); + summary.record(AnalyzeOutcome::Failed); + return summary; + } + } + + match self.helper_installed().await { + Ok(true) => {} + Ok(false) => { + self.warn_unavailable_once(); + self.record( + RelationScope::Pass, + AnalyzeOutcome::Unavailable, + started.elapsed(), + ); + summary.record(AnalyzeOutcome::Unavailable); + return summary; + } + Err(err) => { + warn!(error = %err, schema = %self.schema, "Could not probe for the statistics helper"); + self.record( + RelationScope::Pass, AnalyzeOutcome::Failed, started.elapsed(), ); @@ -207,7 +234,7 @@ impl StatisticsRefresher { Err(err) => { warn!(error = %err, schema = %self.schema, "Could not list ring tables for statistics refresh"); self.record( - RelationScope::RingParent, + RelationScope::Pass, AnalyzeOutcome::Failed, started.elapsed(), ); @@ -250,6 +277,18 @@ impl StatisticsRefresher { .record_statistics_analyze(scope.as_str(), outcome.as_str(), elapsed); } + /// One catalog lookup per pass. A missing helper (a binary running ahead + /// of the schema) then costs this query instead of a failing call, and a + /// server-side ERROR line, per relation; the pass interval is the + /// re-probe interval. + async fn helper_installed(&self) -> Result { + sqlx::query_scalar( + "SELECT to_regprocedure('awa.analyze_queue_storage_relation(text,text)') IS NOT NULL", + ) + .fetch_one(&self.pool) + .await + } + async fn ring_parents(&self) -> Result, sqlx::Error> { sqlx::query_scalar( r#" @@ -327,19 +366,14 @@ impl StatisticsRefresher { AnalyzeOutcome::SkippedLock } Some(SQLSTATE_UNDEFINED_FUNCTION) => { - if !self.warned_unavailable.swap(true, Ordering::Relaxed) { - warn!( - schema = %self.schema, - "Planner statistics refresh is disabled: awa.analyze_queue_storage_relation() \ - is missing. Run `awa migrate` (schema v053 or later) to install it" - ); - } + self.warn_unavailable_once(); AnalyzeOutcome::Unavailable } Some(SQLSTATE_INSUFFICIENT_PRIVILEGE) => { self.warn_privilege_once( relation, - "the runtime role may not execute awa.analyze_queue_storage_relation(); \ + "the runtime role may not execute awa.analyze_queue_storage_relation(), or lacks \ + INSERT, UPDATE and DELETE on the queue head tables; \ GRANT EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(text, text) to it", ); AnalyzeOutcome::SkippedPrivilege @@ -351,6 +385,17 @@ impl StatisticsRefresher { } } + fn warn_unavailable_once(&self) { + if self.warned_unavailable.swap(true, Ordering::Relaxed) { + return; + } + warn!( + schema = %self.schema, + "Planner statistics refresh is disabled: awa.analyze_queue_storage_relation() \ + is missing. Run `awa migrate` (schema v053 or later) to install it" + ); + } + fn warn_privilege_once(&self, relation: &str, missing: &str) { if self.warned_privilege.swap(true, Ordering::Relaxed) { return; @@ -395,3 +440,73 @@ impl Drop for RefreshGuard { self.cancel.cancel(); } } + +#[cfg(test)] +mod tests { + use super::*; + use sqlx::postgres::{PgConnectOptions, PgPoolOptions}; + use std::str::FromStr; + + /// A binary ahead of the schema must probe once and attempt no calls: a + /// failing call per relation would count as `unavailable` fifteen times + /// and write fifteen server-side ERROR lines per pass. + #[tokio::test] + async fn missing_helper_costs_one_probe_and_no_calls() { + let url = std::env::var("DATABASE_URL") + .unwrap_or_else(|_| "postgres://postgres:test@localhost:15432/awa_test".to_string()); + let options = PgConnectOptions::from_str(&url).expect("parse DATABASE_URL"); + let admin = PgPoolOptions::new() + .max_connections(1) + .connect_with(options.clone()) + .await + .expect("connect admin"); + let database = format!("awa_stats_unit_{}", std::process::id()); + sqlx::raw_sql(awa_model::audited_sql(format!( + "DROP DATABASE IF EXISTS {database} WITH (FORCE)" + ))) + .execute(&admin) + .await + .expect("drop leftover database"); + sqlx::raw_sql(awa_model::audited_sql(format!( + "CREATE DATABASE {database}" + ))) + .execute(&admin) + .await + .expect("create database"); + let pool = PgPoolOptions::new() + .max_connections(2) + .connect_with(options.database(&database)) + .await + .expect("connect test database"); + awa_model::migrations::run(&pool).await.expect("migrate"); + + let refresher = StatisticsRefresher::new( + pool.clone(), + "awa".to_string(), + AwaMetrics::from_global(), + false, + ); + let present = refresher.run_pass().await; + assert_eq!(present.ok, 15, "{present:?}"); + + sqlx::raw_sql("DROP FUNCTION awa.analyze_queue_storage_relation(text, text)") + .execute(&pool) + .await + .expect("drop the helper"); + let absent = refresher.run_pass().await; + assert_eq!( + absent, + PassSummary { + unavailable: 1, + ..PassSummary::default() + } + ); + pool.close().await; + sqlx::raw_sql(awa_model::audited_sql(format!( + "DROP DATABASE IF EXISTS {database} WITH (FORCE)" + ))) + .execute(&admin) + .await + .expect("drop database"); + } +} diff --git a/awa/tests/statistics_refresh_test.rs b/awa/tests/statistics_refresh_test.rs index aac55c100..bc9ac8525 100644 --- a/awa/tests/statistics_refresh_test.rs +++ b/awa/tests/statistics_refresh_test.rs @@ -32,6 +32,13 @@ const RING_PARENTS: [&str; 13] = [ static DATABASE_COUNTER: AtomicU32 = AtomicU32::new(0); +async fn run_sql(pool: &PgPool, sql: String) -> Result<(), sqlx::Error> { + sqlx::raw_sql(audited_sql(sql)) + .execute(pool) + .await + .map(|_| ()) +} + fn base_database_url() -> String { std::env::var("DATABASE_URL") .unwrap_or_else(|_| "postgres://postgres:test@localhost:15432/awa_test".to_string()) @@ -380,7 +387,7 @@ async fn non_owner_runtime_role_refreshes_statistics() { "queue_claim_heads", "is not a queue-storage schema", ), - ("awa", "jobs", "is not a partitioned or head table"), + ("awa", "jobs", "is not a ring parent or head table"), ] { let error = sqlx::query_scalar::<_, String>("SELECT awa.analyze_queue_storage_relation($1, $2)") @@ -418,6 +425,153 @@ async fn non_owner_runtime_role_refreshes_statistics() { database.drop().await; } +async fn call_helper( + pool: &PgPool, + schema: &str, + relation: &str, +) -> Result { + sqlx::query_scalar("SELECT awa.analyze_queue_storage_relation($1, $2)") + .bind(schema) + .bind(relation) + .fetch_one(pool) + .await +} + +fn denied(error: &sqlx::Error, message: &str) { + let database_error = error.as_database_error().expect("database error"); + assert_eq!(database_error.code().as_deref(), Some("42501")); + assert!( + database_error.message().contains(message), + "unexpected message: {}", + database_error.message() + ); +} + +/// EXECUTE is not public: holding the lock the helper takes until the end of +/// a transaction would block ring prune of that table. A role needs EXECUTE and +/// write privileges on the head tables, and the migration grants EXECUTE to +/// the roles that already have them. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn execute_is_limited_to_roles_that_may_maintain_queue_storage() { + let suffix = uuid::Uuid::new_v4().simple().to_string(); + let owner = format!("stats_owner_{suffix}"); + let runtime = format!("stats_runtime_{suffix}"); + let bystander = format!("stats_bystander_{suffix}"); + let reader = format!("stats_reader_{suffix}"); + let database = TestDatabase::create(Some(&owner), &[&runtime, &bystander, &reader]).await; + let owner_pool = &database.owner_pool; + run_sql( + owner_pool, + format!( + "GRANT USAGE ON SCHEMA awa TO {bystander}, {reader}, {runtime}; + GRANT SELECT ON ALL TABLES IN SCHEMA awa TO {reader}; + GRANT EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(text, text) TO {reader}; + GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA awa TO {runtime}" + ), + ) + .await + .expect("grant privileges"); + let connect = |role: String| { + let options = database.options.clone(); + async move { + PgPoolOptions::new() + .max_connections(2) + .connect_with(options.username(&role).password(ROLE_PASSWORD)) + .await + .expect("connect role pool") + } + }; + let bystander_pool = connect(bystander.clone()).await; + let reader_pool = connect(reader.clone()).await; + let runtime_pool = connect(runtime.clone()).await; + + denied( + &call_helper(&bystander_pool, "awa", "queue_claim_heads") + .await + .expect_err("a role without EXECUTE is denied"), + "permission denied for function", + ); + denied( + &call_helper(&reader_pool, "awa", "queue_claim_heads") + .await + .expect_err("EXECUTE without write privileges on the head tables is denied"), + "may not maintain queue storage", + ); + + // The runtime role holds write privileges but was granted no function + // EXECUTE: re-running the migration grants it, as an upgrade does. + denied( + &call_helper(&runtime_pool, "awa", "queue_claim_heads") + .await + .expect_err("write privileges alone do not grant EXECUTE"), + "permission denied for function", + ); + for (_, _, sql) in migrations::migration_sql_range( + migrations::CURRENT_VERSION - 1, + migrations::CURRENT_VERSION, + ) { + run_sql(owner_pool, sql) + .await + .expect("re-run the migration"); + } + assert_eq!( + call_helper(&runtime_pool, "awa", "queue_claim_heads") + .await + .expect("the migration granted EXECUTE to the runtime grantee"), + "analyzed" + ); + + for pool in [bystander_pool, reader_pool, runtime_pool] { + pool.close().await; + } + database.drop().await; +} + +/// The helper analyses the ring parents and head tables only, not any other +/// partitioned table of the schema. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn helper_rejects_a_partitioned_table_that_is_not_a_ring_parent() { + let suffix = uuid::Uuid::new_v4().simple().to_string(); + let owner = format!("stats_owner_{suffix}"); + let runtime = format!("stats_runtime_{suffix}"); + let database = TestDatabase::create(Some(&owner), &[&runtime]).await; + run_sql( + &database.owner_pool, + "CREATE TABLE awa.application_events (id int) PARTITION BY LIST (id)".to_string(), + ) + .await + .expect("create a partitioned application table"); + let runtime_pool = database.runtime_pool(&runtime).await; + + for relation in ["application_events", "ready_entries_0", "jobs_hot"] { + let error = call_helper(&runtime_pool, "awa", relation) + .await + .expect_err("only ring parents and head tables are accepted"); + let database_error = error.as_database_error().expect("database error"); + assert_eq!( + database_error.code().as_deref(), + Some("22023"), + "{relation}" + ); + assert!( + database_error + .message() + .contains("is not a ring parent or head table"), + "{relation}: {}", + database_error.message() + ); + } + assert_eq!( + call_helper(&runtime_pool, "awa", "ready_entries") + .await + .expect("a ring parent is accepted"), + "analyzed" + ); + + runtime_pool.close().await; + database.drop().await; +} + /// A conflicting lock on a ring parent fails the call with `lock_not_available` /// rather than letting `ANALYZE (SKIP_LOCKED)` skip every partition and report /// success. @@ -515,7 +669,8 @@ async fn unrunnable_refresh_is_recorded_and_does_not_fail_the_runtime() { .expect("let the schema owner hand over the function"); sqlx::raw_sql(audited_sql(format!( "GRANT USAGE, CREATE ON SCHEMA awa TO {helper}; - ALTER FUNCTION awa.analyze_queue_storage_relation(text, text) OWNER TO {helper}" + ALTER FUNCTION awa.analyze_queue_storage_relation(text, text) OWNER TO {helper}; + GRANT EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(text, text) TO {owner}" ))) .execute(&database.owner_pool) .await diff --git a/docs/configuration.md b/docs/configuration.md index 6d61b5755..154c54801 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -539,8 +539,8 @@ Autovacuum does not analyse partitioned tables, so the ring parents (`ready_entr The maintenance leader runs `ANALYZE` on both when it is elected and every `statistics_refresh_interval` (default `5m`). One pass takes well under a second on a small ring and a few seconds on a ring with millions of retained rows. It has no measurable effect on claim or completion throughput. - **Locks.** Each relation is analysed in its own transaction with a 2 s `lock_timeout` and a 120 s `statement_timeout`. `SKIP_LOCKED` skips a child that ring prune holds during the per-child analysis, but sampling for the parent's statistics waits for it up to the `lock_timeout`; a call that times out is recorded as `skipped_lock` and retried on the next interval. Prune never waits for the refresh: its own 10 ms lock timeout applies, so an attempt that lands while `ANALYZE` samples the oldest slot's tables returns `blocked` and retries on its usual backoff. `ANALYZE` of a partitioned table samples every child, so that window cannot be avoided. -- **Privileges.** The refresh calls `awa.analyze_queue_storage_relation(schema, relation)` (schema v053), a `SECURITY DEFINER` function owned by the role that ran the migration, so the runtime role needs no `MAINTAIN` grant and does not have to own the tables. If the function is missing (run `awa migrate`) or its owner may not analyse the tables, the leader logs one warning that names what is missing and skips the pass; job processing is unaffected. -- **Metrics.** `awa.maintenance.analyze.attempts` and `awa.maintenance.analyze.duration`, by `awa.analyze.scope` (`heads`, `ring_parent`) and `awa.analyze.outcome` (`ok`, `skipped_privilege`, `skipped_lock`, `unavailable`, `failed`). A sustained `skipped_lock` rate means something else holds the tables; any `skipped_privilege` or `unavailable` means the refresh is not running. +- **Privileges.** The refresh calls `awa.analyze_queue_storage_relation(schema, relation)` (schema v053), a `SECURITY DEFINER` function owned by the role that ran the migration, so the runtime role needs no `MAINTAIN` grant and does not have to own the tables. It is executable only by roles that hold INSERT, UPDATE and DELETE on the queue head tables (the migration grants it to the existing ones). Each pass first probes for the function; if it is missing (run `awa migrate`) or its owner may not analyse the tables, the leader logs one warning that names what is missing and skips the pass without making failing calls; job processing is unaffected. +- **Metrics.** `awa.maintenance.analyze.attempts` and `awa.maintenance.analyze.duration`, by `awa.analyze.scope` (`heads`, `ring_parent`, `pass`) and `awa.analyze.outcome` (`ok`, `skipped_privilege`, `skipped_lock`, `unavailable`, `failed`). A sustained `skipped_lock` rate means something else holds the tables; any `skipped_privilege` or `unavailable` means the refresh is not running. ### Rust diff --git a/docs/grafana/README.md b/docs/grafana/README.md index 4b8fa278a..500b13047 100644 --- a/docs/grafana/README.md +++ b/docs/grafana/README.md @@ -207,7 +207,7 @@ In Prometheus they appear under the OpenTelemetry [OTLP-to-Prometheus translatio | `awa.maintenance.rescues` | Counter | rescue_kind | Jobs rescued | | `awa.maintenance.prune.attempts` | Counter | ring, outcome, reason | Ring prune outcomes, including destructive `pruned` and no-DDL `already_pruned` | | `awa.maintenance.prune.duration` | Histogram (s) | ring, phase | Successful destructive prune time split into `lock`, `truncate`, and `commit` | -| `awa.maintenance.analyze.attempts` | Counter | scope, outcome | Planner-statistics `ANALYZE` calls on the head tables and ring parents (`ok`, `skipped_privilege`, `skipped_lock`, `unavailable`, `failed`) | +| `awa.maintenance.analyze.attempts` | Counter | scope (`heads`, `ring_parent`, `pass`), outcome | Planner-statistics `ANALYZE` calls on the head tables and ring parents (`ok`, `skipped_privilege`, `skipped_lock`, `unavailable`, `failed`) | | `awa.maintenance.analyze.duration` | Histogram (s) | scope, outcome | Duration of one planner-statistics `ANALYZE` call | ### Heartbeat diff --git a/docs/security/database-roles.md b/docs/security/database-roles.md index 2e2d19a60..150c2fe81 100644 --- a/docs/security/database-roles.md +++ b/docs/security/database-roles.md @@ -65,9 +65,9 @@ If an existing installation created objects as `awa_migrator` without first sett ## Planner statistics -The maintenance leader runs `ANALYZE` on the queue-storage head tables and partitioned ring parents (see [Planner statistics](../configuration.md#planner-statistics)). `ANALYZE` skips a table its caller may not analyse, so a runtime that does not own the tables cannot do this itself; the leader calls `awa.analyze_queue_storage_relation(schema, relation)` instead, a `SECURITY DEFINER` function from migration v053 owned by whichever role ran the migration. Nothing is needed beyond the grants above: the function is executable by `PUBLIC`, and the runtime does not need `MAINTAIN`. +The maintenance leader runs `ANALYZE` on the queue-storage head tables and partitioned ring parents (see [Planner statistics](../configuration.md#planner-statistics)). `ANALYZE` skips a table its caller may not analyse, so a runtime that does not own the tables cannot do this itself; the leader calls `awa.analyze_queue_storage_relation(schema, relation)` instead, a `SECURITY DEFINER` function from migration v053 owned by whichever role ran the migration. The runtime does not need `MAINTAIN`. The function is not executable by `PUBLIC`, because the lock it takes lasts until the caller's transaction ends and would block ring prune: the migration grants `EXECUTE` to the roles that already hold `INSERT`, `UPDATE` and `DELETE` on the head tables, and the function requires the calling session user to hold them. A runtime role created later gets it from the `GRANT EXECUTE ON ALL FUNCTIONS` above or the default privileges. For a custom queue-storage schema, the role needs write privileges on that schema's `queue_claim_heads`. -Run migrations with the schema owner as the effective role, as shown above, so the function's owner owns the tables. A function owned by a role that may not analyse them (it is not the table owner, the database owner, or a `MAINTAIN` holder) makes every pass report `skipped_privilege` and logs one warning. The function only analyses a head table or partitioned table of a schema that `awa.queue_storage_schemas()` reports as trusted, and `ANALYZE` changes statistics only. +Run migrations with the schema owner as the effective role, as shown above, so the function's owner owns the tables. A function owned by a role that may not analyse them (it is not the table owner, the database owner, or a `MAINTAIN` holder) makes every pass report `skipped_privilege` and logs one warning. The function only analyses the two head tables and the thirteen ring parents of a schema that `awa.queue_storage_schemas()` reports as trusted, and `ANALYZE` changes statistics only. ## Provision queues before starting restricted runtimes diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 50f6cc587..5c0f47993 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -260,8 +260,10 @@ v053 adds `awa.analyze_queue_storage_relation(schema, relation)`, a maintenance leader refresh planner statistics for the head tables and ring parents when the runtime role does not own them (see [Planner statistics](configuration.md#planner-statistics)). It creates one -function and grants `EXECUTE` to `PUBLIC`; it takes no lock on any table and -completes in milliseconds. Run the migration as the schema owner so the +function, revokes `EXECUTE` from `PUBLIC` and grants it to the roles that +already hold INSERT, UPDATE and DELETE on the `awa` head tables (the runtime +grantees); it takes no table lock and completes in milliseconds. Roles created +later need `GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA awa`. Run the migration as the schema owner so the function's owner owns the tables. Binaries before v053 never call it. A 0.7 binary running before the migration From 9a7eed99ae2fa439b9488e728b9129dac9c4917f Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 18:21:00 +1300 Subject: [PATCH 40/48] fix(queue-storage): repair lane sequences per transaction with a bounded lock wait v053 reassigned lane sequences inside the migration transaction. ALTER SEQUENCE ... OWNER takes the sequence's ACCESS EXCLUSIVE lock until commit, with no lock_timeout, so an open enqueue on one lane could stall the whole migration and every repaired lane waited for the upgrade to commit. v053 now only refreshes the helpers. After it commits, awa migrate repairs each lane sequence with its own statement through awa.repair_lane_sequence(schema, sequence), which has lock_timeout = 300ms; on 55P03 the sequence is left unchanged and reported as busy. `awa storage lane-sequences --repair` uses the same path, and the set-returning awa.repair_lane_sequences(schema) is gone. Reassigning needs the current owner's privileges, which the schema owner lacks for sequences the migration role or an app role created. A migration role connected with role set to the owner therefore could not reassign its own sequences. The repair now retries such a sequence as the login role, lane_sequence_problems reports repair_roles (the login roles that can repair each sequence), and leftovers are reported with the next step to take. The docs state which role to run the repair as. --- CHANGELOG.md | 13 +- awa-cli/src/main.rs | 61 +++-- .../v023_install_queue_storage_substrate.sql | 122 +++++---- .../v053_definer_lane_provisioning.sql | 30 +-- awa-model/src/migrations.rs | 62 ++++- awa-model/src/storage.rs | 237 ++++++++++++++++-- awa/tests/lane_ownership_roles_test.rs | 194 ++++++++++---- docs/security/database-roles.md | 27 +- docs/upgrade-0.6-to-0.7.md | 17 +- skills/awa-operations/SKILL.md | 3 +- 10 files changed, 577 insertions(+), 189 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6780d6113..7f8ce530a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,14 +18,17 @@ Notable changes between releases. Detailed migration notes for storage transitio the privileges of the head table it backs, explicitly rather than through default privileges. A runtime without schema `CREATE` can therefore create lanes itself, and `awa storage prepare-queue` is optional and may run as any - runtime role. v053 gives existing lane sequences to the schema owner and adds - their missing grants, one sequence at a time and only where the migrating - role is allowed to. It never fails on a sequence it cannot reassign. The new + runtime role. After v053 commits, `awa migrate` gives existing lane + sequences to the schema owner and adds their missing grants, one sequence per + transaction with a 300 ms lock wait, and only where it is allowed to, trying + the effective role and then the login role. A sequence an open transaction + holds is skipped and reported as busy; one it may not change is reported + with the roles that can repair it. Neither fails the migration. The new read-only `awa storage lane-sequences` (or `awa.lane_sequence_problems(schema)`) lists what remains, with the statements to run and the roles to run them as, and exits 2 while any remain; - `--repair` (or `awa.repair_lane_sequences(schema)`) repairs what the - connected role may. `awa migrate` prints a summary of the leftovers. A binary + `--repair` (or `awa.repair_lane_sequence(schema, sequence)` per sequence) + repairs what the connected role may. `awa migrate` prints a summary of the leftovers. A binary running ahead of v053 detects that `provision_lane` is missing and creates lanes as before, and older binaries create correctly owned lanes once v053 has refreshed the helpers they call. See "Lane ownership and v053" in the diff --git a/awa-cli/src/main.rs b/awa-cli/src/main.rs index 5e53264c5..e111c3574 100644 --- a/awa-cli/src/main.rs +++ b/awa-cli/src/main.rs @@ -273,6 +273,23 @@ fn sanitize_filename(description: &str) -> String { /// mutating commands require an explicit `--context` or `--database-url` /// once more than one context is defined, and are confirmation-gated on /// contexts marked `production = true`. +/// After a migration, say which lane sequences still need repair and how to +/// finish it. Read-only. +async fn print_lane_sequence_leftovers( + pool: &sqlx::PgPool, +) -> Result<(), Box> { + let mut problems = Vec::new(); + for (schema, _) in awa_model::storage::lane_sequence_problem_counts(pool).await? { + problems.extend(awa_model::storage::lane_sequence_problems(pool, &schema).await?); + } + for next_step in awa_model::storage::lane_sequence_next_steps( + problems.iter().map(|problem| (problem, false)), + ) { + eprintln!("warning: {next_step}"); + } + Ok(()) +} + fn access_for(command: &Commands) -> context::Access { use context::Access::{Mutating, ReadOnly}; match command { @@ -834,7 +851,8 @@ enum StorageCommands { /// Queue-storage schema to check #[arg(long, default_value = "awa")] schema: String, - /// Reassign and grant what the connected role is allowed to first + /// Reassign and grant first, as far as the connected role (or, failing + /// that, its login role) is allowed to #[arg(long)] repair: bool, }, @@ -1194,16 +1212,7 @@ async fn run() -> Result<(), Box> { }; awa_model::migrations::run_with_options(&pool, options).await?; println!("Migrations applied successfully."); - for (schema, count) in - awa_model::storage::lane_sequence_problem_counts(&pool).await? - { - eprintln!( - "warning: {count} lane sequence(s) in schema {schema} are not owned by \ - the schema owner or lack runtime grants, and the migrating role could \ - not repair them. Run `awa storage lane-sequences --schema {schema}` for \ - the statements to run and the roles to run them as." - ); - } + print_lane_sequence_leftovers(&pool).await?; } } @@ -1956,19 +1965,18 @@ async fn run() -> Result<(), Box> { ); } StorageCommands::LaneSequences { schema, repair } => { - let remaining = if repair { - let results = - awa_model::storage::repair_lane_sequences(&pool, &schema).await?; + let next_steps = if repair { + let mut conn = pool.acquire().await?; + let repairs = + awa_model::storage::repair_lane_sequences(&mut conn, &schema) + .await?; println!( "{}", serde_json::to_string_pretty(&serde_json::json!({ - "schema": schema, "results": results, + "schema": schema, "results": repairs, }))? ); - results - .iter() - .filter(|result| result.outcome != "repaired") - .count() + awa_model::storage::lane_sequence_repair_next_steps(&repairs) } else { let problems = awa_model::storage::lane_sequence_problems(&pool, &schema).await?; @@ -1978,15 +1986,14 @@ async fn run() -> Result<(), Box> { "schema": schema, "problems": problems, }))? ); - problems.len() + awa_model::storage::lane_sequence_next_steps( + problems.iter().map(|problem| (problem, false)), + ) }; - if remaining > 0 { - eprintln!( - "{remaining} lane sequence(s) in schema {schema} need repair. Run \ - each missing_grants statement as the sequence owner (or a role \ - that can SET ROLE to it), and each reassign_sql statement as a \ - role that can SET ROLE to both the owner and expected_owner." - ); + if !next_steps.is_empty() { + for next_step in next_steps { + eprintln!("{next_step}"); + } std::process::exit(2); } } diff --git a/awa-model/migrations/v023_install_queue_storage_substrate.sql b/awa-model/migrations/v023_install_queue_storage_substrate.sql index 39df93e86..f3736cef1 100644 --- a/awa-model/migrations/v023_install_queue_storage_substrate.sql +++ b/awa-model/migrations/v023_install_queue_storage_substrate.sql @@ -407,15 +407,18 @@ REVOKE EXECUTE ON FUNCTION awa.refresh_lane_sequence_helpers(TEXT) FROM PUBLIC; -- USAGE, SELECT and UPDATE on it, and whoever may read it gets SELECT: -- queue_enqueue_seq_* mirror queue_enqueue_heads, queue_claim_seq_* mirror -- queue_claim_heads. missing_grants holds the statements to run as the --- sequence owner; reassign_sql, when the owner is wrong, needs a role that can --- SET ROLE to both the current owner and the schema owner. Read-only. +-- sequence owner; reassign_sql, when the owner is wrong, needs a role that +-- holds the current owner's privileges and can SET ROLE to the schema owner. +-- repair_roles lists the login roles, superusers aside, that can run both. +-- Read-only. CREATE OR REPLACE FUNCTION awa.lane_sequence_problems(p_schema TEXT, p_sequence TEXT DEFAULT NULL) RETURNS TABLE ( sequence_name TEXT, owner TEXT, expected_owner TEXT, missing_grants TEXT[], - reassign_sql TEXT + reassign_sql TEXT, + repair_roles TEXT[] ) LANGUAGE sql STABLE @@ -489,55 +492,76 @@ AS $problems$ CASE WHEN lane_sequence.relowner <> lane_sequence.nspowner THEN format( 'ALTER SEQUENCE %I.%I OWNER TO %I', p_schema, lane_sequence.relname, pg_get_userbyid(lane_sequence.nspowner) - ) END + ) END, + ARRAY( + SELECT candidate.rolname::text + FROM pg_roles AS candidate + WHERE candidate.rolcanlogin + AND NOT candidate.rolsuper + AND pg_has_role(candidate.oid, lane_sequence.relowner, 'USAGE') + AND (lane_sequence.relowner = lane_sequence.nspowner + OR (pg_has_role(candidate.oid, lane_sequence.nspowner, 'USAGE') + AND pg_has_role( + candidate.oid, + lane_sequence.nspowner, + CASE WHEN current_setting('server_version_num')::int >= 160000 + THEN 'SET' ELSE 'MEMBER' END + ))) + ORDER BY candidate.rolname + ) FROM lane_sequence WHERE lane_sequence.relowner <> lane_sequence.nspowner OR EXISTS (SELECT 1 FROM missing WHERE missing.oid = lane_sequence.oid) ORDER BY lane_sequence.relname $problems$; --- Give every lane sequence in p_schema to the schema owner and add its missing --- runtime grants, one sequence at a time, doing only what the calling role is --- allowed to: a sequence it cannot reassign keeps its owner and still gets --- the grants when the caller can act as that owner. Never raises for a --- sequence it cannot repair. Returns one row per sequence that had a problem: --- outcome is 'repaired', 'owner_unchanged' (grants complete, owner still --- wrong) or 'unrepaired', with the statements still to run. -CREATE OR REPLACE FUNCTION awa.repair_lane_sequences(p_schema TEXT) +-- Give one lane sequence to the schema owner and add its missing runtime +-- grants, doing only what the calling role is allowed to: a sequence it +-- cannot reassign keeps its owner and still gets the grants when the caller +-- holds that owner's privileges. Never raises for a sequence it cannot +-- repair. Reassigning takes the sequence's ACCESS EXCLUSIVE lock, which an +-- open enqueue or claim on the lane conflicts with, so the lock wait is +-- bounded: on timeout nothing changes and the outcome is 'busy'. The lock is +-- held until the caller's transaction ends, so callers repair one sequence +-- per transaction. Returns no row when the sequence needs nothing, otherwise +-- one row: outcome is 'repaired', 'owner_unchanged' (grants complete, owner +-- still wrong), 'unrepaired' or 'busy', with the statements still to run. +CREATE OR REPLACE FUNCTION awa.repair_lane_sequence(p_schema TEXT, p_sequence TEXT) RETURNS TABLE ( sequence_name TEXT, owner TEXT, expected_owner TEXT, outcome TEXT, missing_grants TEXT[], - reassign_sql TEXT + reassign_sql TEXT, + repair_roles TEXT[] ) LANGUAGE plpgsql SECURITY INVOKER SET search_path = pg_catalog, pg_temp +SET lock_timeout = '300ms' AS $repair$ DECLARE v_problem RECORD; v_remaining RECORD; - v_has_remaining BOOLEAN; - v_owner OID; + v_busy BOOLEAN := false; v_set_mode TEXT := CASE WHEN current_setting('server_version_num')::int >= 160000 THEN 'SET' ELSE 'MEMBER' END; v_statement TEXT; BEGIN - FOR v_problem IN - SELECT * FROM awa.lane_sequence_problems(p_schema) AS problem - LOOP - SELECT sequence.relowner INTO v_owner - FROM pg_class AS sequence - WHERE sequence.oid = to_regclass(format('%I.%I', p_schema, v_problem.sequence_name)); + SELECT * INTO v_problem + FROM awa.lane_sequence_problems(p_schema, p_sequence) AS problem; + IF NOT FOUND THEN + RETURN; + END IF; + BEGIN -- ALTER ... OWNER TO needs the current owner's privileges, SET ROLE to -- the new owner, and the new owner's CREATE on the schema (which a -- schema owner has). Check first so an unrelated owner is skipped - -- rather than raising. + -- without waiting for the lock. IF v_problem.reassign_sql IS NOT NULL - AND pg_has_role(current_user, v_owner, 'USAGE') + AND pg_has_role(current_user, to_regrole(quote_ident(v_problem.owner)), 'USAGE') AND pg_has_role(current_user, to_regrole(quote_ident(v_problem.expected_owner)), v_set_mode) THEN BEGIN EXECUTE v_problem.reassign_sql; @@ -547,10 +571,8 @@ BEGIN END IF; SELECT * INTO v_remaining - FROM awa.lane_sequence_problems(p_schema, v_problem.sequence_name) AS problem; - v_has_remaining := FOUND; - - IF v_has_remaining + FROM awa.lane_sequence_problems(p_schema, p_sequence) AS problem; + IF FOUND AND cardinality(v_remaining.missing_grants) > 0 AND pg_has_role(current_user, to_regrole(quote_ident(v_remaining.owner)), 'USAGE') THEN FOREACH v_statement IN ARRAY v_remaining.missing_grants LOOP @@ -560,31 +582,35 @@ BEGIN NULL; END; END LOOP; - SELECT * INTO v_remaining - FROM awa.lane_sequence_problems(p_schema, v_problem.sequence_name) AS problem; - v_has_remaining := FOUND; END IF; - - sequence_name := v_problem.sequence_name; - expected_owner := v_problem.expected_owner; - IF v_has_remaining THEN - owner := v_remaining.owner; - missing_grants := v_remaining.missing_grants; - reassign_sql := v_remaining.reassign_sql; - outcome := CASE WHEN cardinality(v_remaining.missing_grants) = 0 - THEN 'owner_unchanged' ELSE 'unrepaired' END; - ELSE - owner := v_problem.expected_owner; - missing_grants := ARRAY[]::TEXT[]; - reassign_sql := NULL; - outcome := 'repaired'; - END IF; - RETURN NEXT; - END LOOP; + EXCEPTION WHEN lock_not_available THEN + v_busy := true; + END; + + SELECT * INTO v_remaining + FROM awa.lane_sequence_problems(p_schema, p_sequence) AS problem; + sequence_name := v_problem.sequence_name; + expected_owner := v_problem.expected_owner; + IF FOUND THEN + owner := v_remaining.owner; + missing_grants := v_remaining.missing_grants; + reassign_sql := v_remaining.reassign_sql; + repair_roles := v_remaining.repair_roles; + outcome := CASE WHEN v_busy THEN 'busy' + WHEN cardinality(v_remaining.missing_grants) = 0 THEN 'owner_unchanged' + ELSE 'unrepaired' END; + ELSE + owner := v_problem.expected_owner; + missing_grants := ARRAY[]::TEXT[]; + reassign_sql := NULL; + repair_roles := ARRAY[]::TEXT[]; + outcome := 'repaired'; + END IF; + RETURN NEXT; END $repair$; -REVOKE EXECUTE ON FUNCTION awa.repair_lane_sequences(TEXT) FROM PUBLIC; +REVOKE EXECUTE ON FUNCTION awa.repair_lane_sequence(TEXT, TEXT) FROM PUBLIC; -- Retained job output (ADR-048): add the output columns to an existing -- substrate and expose them through terminal_jobs. Called by the installer diff --git a/awa-model/migrations/v053_definer_lane_provisioning.sql b/awa-model/migrations/v053_definer_lane_provisioning.sql index 758627703..2eba66ff6 100644 --- a/awa-model/migrations/v053_definer_lane_provisioning.sql +++ b/awa-model/migrations/v053_definer_lane_provisioning.sql @@ -6,26 +6,24 @@ -- two SECURITY DEFINER functions, provision_lane and provision_lane_sequences, -- owned by the schema owner, and the lane helpers create a missing sequence -- through them. Each new sequence gets the grants of the head table it backs. --- This migration then repairs existing lane sequences: it gives each one to --- the schema owner and adds its missing grants, one sequence at a time and --- only where the migrating role may. Sequences it cannot reassign are reported --- in a warning and by awa.lane_sequence_problems(); the migration still commits. +-- This migration does not reassign existing lane sequences: ALTER SEQUENCE +-- OWNER takes the sequence's ACCESS EXCLUSIVE lock until commit, and the +-- migration runs in one transaction. After it commits, `awa migrate` repairs +-- each lane sequence in its own short transaction with a bounded lock wait +-- (awa.repair_lane_sequence). Another runner can do the same with +-- `awa storage lane-sequences --repair`. -- -- N-1 binaries call the same helpers with the same arguments and cursor -- semantics, so lanes they create are owned by the schema owner too. A binary -- that predates provision_lane keeps using the helpers; this binary probes for -- provision_lane and uses the helpers when it is missing. -- --- Live load: function replacement, plus ALTER SEQUENCE OWNER on the lane --- sequences that need it. That takes each such sequence's ACCESS EXCLUSIVE --- lock until commit, so enqueues and claims on those lanes wait for the --- migration to commit; correctly owned lanes are not touched. Reads the --- catalog only; no table DDL or row scans. +-- Live load: function replacement only. Reads the catalog; no table DDL, row +-- scans or sequence locks. DO $$ DECLARE v_schema TEXT; - v_leftovers TEXT; v_count BIGINT; BEGIN FOR v_schema IN @@ -41,17 +39,13 @@ BEGIN PERFORM awa.refresh_lane_sequence_helpers(v_schema); - SELECT count(*), - string_agg(format('%s (owner %s, %s)', repair.sequence_name, repair.owner, repair.outcome), - ', ' ORDER BY repair.sequence_name) - INTO v_count, v_leftovers - FROM awa.repair_lane_sequences(v_schema) AS repair - WHERE repair.outcome <> 'repaired'; + SELECT count(*) INTO v_count + FROM awa.lane_sequence_problems(v_schema) AS problem; IF v_count > 0 THEN - RAISE WARNING '% lane sequence(s) in schema % still need repair: %', v_count, v_schema, v_leftovers + RAISE NOTICE '% lane sequence(s) in schema % are not owned by the schema owner or lack runtime grants', v_count, v_schema USING HINT = format( - 'Run awa storage lane-sequences --schema %s for the statements to run and the role to run them as.', + 'awa migrate repairs them after this commits. Otherwise run awa storage lane-sequences --schema %s --repair as the migration role itself, without SET ROLE.', v_schema ); END IF; diff --git a/awa-model/src/migrations.rs b/awa-model/src/migrations.rs index 51c423222..f30033198 100644 --- a/awa-model/src/migrations.rs +++ b/awa-model/src/migrations.rs @@ -423,9 +423,9 @@ pub async fn run_with_options(pool: &PgPool, options: MigrateOptions) -> Result< // only sound because every migration is transaction-safe (no // `CREATE INDEX CONCURRENTLY`, `VACUUM`, or explicit transaction control). let mut retry = 0; - loop { + let version_before = loop { match run_migration_transaction(pool, &options, lock_key).await { - Ok(()) => break, + Ok(version_before) => break version_before, Err(error) if is_migration_deadlock(&error) && retry < MIGRATION_DEADLOCK_RETRIES => { retry += 1; let delay = std::time::Duration::from_millis(50 * (1 << (retry - 1))); @@ -439,6 +439,10 @@ pub async fn run_with_options(pool: &PgPool, options: MigrateOptions) -> Result< } Err(error) => return Err(error), } + }; + + if version_before < LANE_PROVISIONING_VERSION { + repair_lane_sequences_after_migration(pool).await; } // Best-effort admin-metadata cache warmup, deliberately outside the @@ -449,29 +453,73 @@ pub async fn run_with_options(pool: &PgPool, options: MigrateOptions) -> Result< Ok(()) } +/// Returns the schema version the transaction started from. async fn run_migration_transaction( pool: &PgPool, options: &MigrateOptions, lock_key: i64, -) -> Result<(), AwaError> { +) -> Result { let mut tx = pool.begin().await?; sqlx::query("SELECT pg_advisory_xact_lock($1)") .bind(lock_key) .execute(&mut *tx) .await?; - apply_migrations(&mut tx, options).await?; + let version_before = apply_migrations(&mut tx, options).await?; tx.commit().await?; - Ok(()) + Ok(version_before) +} + +/// The migration that makes lane sequences belong to the schema owner. +const LANE_PROVISIONING_VERSION: i32 = 53; + +/// Repair existing lane sequences once v053 has committed. +/// +/// `ALTER SEQUENCE ... OWNER` takes the sequence's ACCESS EXCLUSIVE lock until +/// its transaction ends, so it cannot run inside the migration transaction +/// without stalling every enqueue and claim on those lanes until the whole +/// upgrade commits. Each sequence is repaired in its own short transaction +/// with a bounded lock wait instead. Best-effort: the schema is committed, and +/// whatever is left is reported with the command that finishes it. +/// +/// Uses a detached connection for the reason given on +/// [`warm_admin_metadata_cache`]. +async fn repair_lane_sequences_after_migration(pool: &PgPool) { + let mut conn = match pool.acquire().await { + Ok(conn) => conn.detach(), + Err(error) => { + warn!(%error, "Could not connect to repair lane sequences; run `awa storage lane-sequences --repair`"); + return; + } + }; + match crate::storage::repair_lane_sequences_in_every_schema(&mut conn).await { + Ok(repairs) => { + let repaired = repairs + .iter() + .filter(|repair| repair.outcome == crate::storage::LaneSequenceOutcome::Repaired) + .count(); + if repaired > 0 { + info!(repaired, "Gave lane sequences to the schema owner"); + } + for next_step in crate::storage::lane_sequence_repair_next_steps(&repairs) { + warn!("{next_step}"); + } + } + Err(error) => { + warn!(%error, "Could not repair lane sequences; run `awa storage lane-sequences --repair`"); + } + } + let _ = conn.close().await; } fn is_migration_deadlock(error: &AwaError) -> bool { error.is_deadlock() } +/// Returns the schema version before this run. async fn apply_migrations( conn: &mut PgConnection, options: &MigrateOptions, -) -> Result<(), AwaError> { +) -> Result { let has_schema: bool = sqlx::query_scalar("SELECT EXISTS(SELECT 1 FROM pg_namespace WHERE nspname = 'awa')") .fetch_one(&mut *conn) @@ -564,7 +612,7 @@ async fn apply_migrations( info!(version = current, "Schema is up to date"); } - Ok(()) + Ok(current) } /// Warm the admin-metadata cache after migrations commit. diff --git a/awa-model/src/storage.rs b/awa-model/src/storage.rs index d67dc2048..14770c40a 100644 --- a/awa-model/src/storage.rs +++ b/awa-model/src/storage.rs @@ -2,7 +2,7 @@ use crate::admin; use crate::error::AwaError; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use sqlx::{FromRow, PgExecutor, PgPool}; +use sqlx::{Connection, FromRow, PgConnection, PgExecutor, PgPool}; use std::collections::BTreeMap; #[derive(Debug, Clone, Serialize, Deserialize, FromRow, PartialEq)] @@ -472,30 +472,65 @@ pub async fn status_report(pool: &PgPool) -> Result, pub reassign_sql: Option, + /// Login roles, superusers aside, that can run every statement above. + /// Empty when no such role exists yet. + pub repair_roles: Vec, } -/// What [`repair_lane_sequences`] did to one lane sequence that had a problem. +/// What a repair did to one lane sequence. +#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[serde(rename_all = "snake_case")] +pub enum LaneSequenceOutcome { + /// Owned by the schema owner with every runtime grant. + Repaired, + /// Grants complete, but the role could not reassign the sequence. + OwnerUnchanged, + /// The role could neither reassign the sequence nor add its grants. + Unrepaired, + /// An open transaction held the sequence's lock past the repair's lock + /// timeout, so nothing changed. Rerun the repair. + Busy, +} + +impl TryFrom for LaneSequenceOutcome { + type Error = String; + + fn try_from(outcome: String) -> Result { + match outcome.as_str() { + "repaired" => Ok(Self::Repaired), + "owner_unchanged" => Ok(Self::OwnerUnchanged), + "unrepaired" => Ok(Self::Unrepaired), + "busy" => Ok(Self::Busy), + _ => Err(format!("unknown lane sequence repair outcome {outcome:?}")), + } + } +} + +/// What [`repair_lane_sequences`] did to one lane sequence that had a problem, +/// with what is still wrong afterwards. #[derive(Debug, Clone, Serialize, Deserialize, FromRow, PartialEq, Eq)] pub struct LaneSequenceRepair { + pub schema: String, pub sequence_name: String, /// Owner after the repair. pub owner: String, pub expected_owner: String, - /// `repaired`; `owner_unchanged` when the grants are complete but the - /// connected role could not reassign the sequence; or `unrepaired` when - /// grants are still missing too. - pub outcome: String, + #[sqlx(try_from = "String")] + pub outcome: LaneSequenceOutcome, pub missing_grants: Vec, pub reassign_sql: Option, + /// Login roles, superusers aside, that can finish the repair. + pub repair_roles: Vec, } /// Lane sequences in `schema` that need repair. Read-only; any role may run it. @@ -507,7 +542,8 @@ where E: PgExecutor<'e>, { Ok(sqlx::query_as( - "SELECT sequence_name, owner, expected_owner, missing_grants, reassign_sql \ + "SELECT $1::text AS schema, sequence_name, owner, expected_owner, missing_grants, \ + reassign_sql, repair_roles \ FROM awa.lane_sequence_problems($1)", ) .bind(schema) @@ -516,25 +552,182 @@ where } /// Give each lane sequence in `schema` to the schema owner and add its missing -/// grants, as far as the connected role is allowed to. A sequence the role -/// cannot reassign is returned with the statements still to run, never an -/// error. +/// grants, as far as the connection's roles are allowed to. A sequence that +/// cannot be repaired is returned with the statements still to run and the +/// roles that can run them, never an error. +/// +/// Each sequence is repaired by its own statement, outside any transaction +/// the caller holds, so a reassignment's ACCESS EXCLUSIVE lock is released +/// before the next sequence and waits at most the repair function's lock +/// timeout. A sequence locked for longer by an open enqueue or claim comes +/// back [`LaneSequenceOutcome::Busy`]. +/// +/// Reassigning needs the current owner's privileges. A migration role that +/// connects as itself and sets its role to the schema owner (`role` in the +/// connection options) loses its own privileges while acting as the owner, +/// so a sequence the current role cannot repair is retried once as the login +/// role. pub async fn repair_lane_sequences( - pool: &PgPool, + conn: &mut PgConnection, schema: &str, ) -> Result, AwaError> { - Ok(sqlx::query_as( - "SELECT sequence_name, owner, expected_owner, outcome, missing_grants, reassign_sql \ - FROM awa.repair_lane_sequences($1)", - ) - .bind(schema) - .fetch_all(pool) - .await?) + let (current_role, login_role): (String, String) = + sqlx::query_as("SELECT current_user::text, session_user::text") + .fetch_one(&mut *conn) + .await?; + let problems = lane_sequence_problems(&mut *conn, schema).await?; + let mut repairs = Vec::with_capacity(problems.len()); + for problem in problems { + let mut repair: Option = sqlx::query_as(REPAIR_LANE_SEQUENCE_SQL) + .bind(schema) + .bind(&problem.sequence_name) + .fetch_optional(&mut *conn) + .await?; + let role_was_the_obstacle = matches!( + repair.as_ref().map(|repair| repair.outcome), + Some(LaneSequenceOutcome::OwnerUnchanged | LaneSequenceOutcome::Unrepaired) + ); + if role_was_the_obstacle && login_role != current_role { + if let Some(retried) = + repair_lane_sequence_as_login_role(conn, schema, &problem.sequence_name).await? + { + repair = retried; + } + } + repairs.extend(repair); + } + Ok(repairs) +} + +const REPAIR_LANE_SEQUENCE_SQL: &str = + "SELECT $1::text AS schema, sequence_name, owner, expected_owner, outcome, missing_grants, \ + reassign_sql, repair_roles \ + FROM awa.repair_lane_sequence($1, $2)"; + +/// Repair one sequence with the login role as the current role, for this +/// transaction only. `None` when the login role may not run the repair. +async fn repair_lane_sequence_as_login_role( + conn: &mut PgConnection, + schema: &str, + sequence_name: &str, +) -> Result>, AwaError> { + let mut transaction = conn.begin().await?; + sqlx::query("SET LOCAL ROLE NONE") + .execute(&mut *transaction) + .await?; + let repair = sqlx::query_as(REPAIR_LANE_SEQUENCE_SQL) + .bind(schema) + .bind(sequence_name) + .fetch_optional(&mut *transaction) + .await; + match repair { + Ok(repair) => { + transaction.commit().await?; + Ok(Some(repair)) + } + Err(sqlx::Error::Database(error)) if error.code().as_deref() == Some("42501") => { + transaction.rollback().await?; + Ok(None) + } + Err(error) => Err(error.into()), + } +} + +/// [`repair_lane_sequences`] for every queue-storage schema with a lane +/// sequence that needs repair. +pub async fn repair_lane_sequences_in_every_schema( + conn: &mut PgConnection, +) -> Result, AwaError> { + let mut repairs = Vec::new(); + for (schema, _) in lane_sequence_problem_counts(&mut *conn).await? { + repairs.extend(repair_lane_sequences(conn, &schema).await?); + } + Ok(repairs) +} + +/// One line per group of lane sequences that still need repair, saying what +/// to do next. `busy` marks sequences a repair found locked. +pub fn lane_sequence_next_steps<'a>( + leftovers: impl IntoIterator, +) -> Vec { + let mut groups: BTreeMap<(String, bool, String, String, Vec), usize> = BTreeMap::new(); + for (problem, busy) in leftovers { + *groups + .entry(( + problem.schema.clone(), + busy, + problem.owner.clone(), + problem.expected_owner.clone(), + problem.repair_roles.clone(), + )) + .or_default() += 1; + } + groups + .into_iter() + .map( + |((schema, busy, owner, expected_owner, repair_roles), count)| { + let rerun = format!("awa storage lane-sequences --schema {schema} --repair"); + if busy { + format!( + "{count} lane sequence(s) in schema {schema} owned by {owner} are busy: an \ + open transaction held the lock, so nothing changed. Rerun `{rerun}`." + ) + } else if repair_roles.is_empty() { + format!( + "{count} lane sequence(s) in schema {schema} owned by {owner} still need \ + repair, and no login role can both act as {owner} and SET ROLE to \ + {expected_owner}. Grant {owner} to the migration role, then rerun `{rerun}` \ + connected as the migration role, or run the statements from \ + `awa storage lane-sequences --schema {schema}` as {owner}." + ) + } else { + format!( + "{count} lane sequence(s) in schema {schema} owned by {owner} still need \ + repair. Rerun `{rerun}` connected as one of: {}.", + repair_roles.join(", ") + ) + } + }, + ) + .collect() +} + +impl LaneSequenceRepair { + /// The problem left after this repair, or `None` when it was repaired. + pub fn remaining_problem(&self) -> Option { + (self.outcome != LaneSequenceOutcome::Repaired).then(|| LaneSequenceProblem { + schema: self.schema.clone(), + sequence_name: self.sequence_name.clone(), + owner: self.owner.clone(), + expected_owner: self.expected_owner.clone(), + missing_grants: self.missing_grants.clone(), + reassign_sql: self.reassign_sql.clone(), + repair_roles: self.repair_roles.clone(), + }) + } +} + +/// [`lane_sequence_next_steps`] for the sequences a repair left behind. +pub fn lane_sequence_repair_next_steps(repairs: &[LaneSequenceRepair]) -> Vec { + let leftovers: Vec<(LaneSequenceProblem, bool)> = repairs + .iter() + .filter_map(|repair| { + repair + .remaining_problem() + .map(|problem| (problem, repair.outcome == LaneSequenceOutcome::Busy)) + }) + .collect(); + lane_sequence_next_steps(leftovers.iter().map(|(problem, busy)| (problem, *busy))) } /// How many lane sequences need repair in each queue-storage schema that has /// any. Read-only. -pub async fn lane_sequence_problem_counts(pool: &PgPool) -> Result, AwaError> { +pub async fn lane_sequence_problem_counts<'e, E>( + executor: E, +) -> Result, AwaError> +where + E: PgExecutor<'e>, +{ Ok(sqlx::query_as( "SELECT discovered.schema_name, count(*) \ FROM awa.queue_storage_schemas() AS discovered \ @@ -542,6 +735,6 @@ pub async fn lane_sequence_problem_counts(pool: &PgPool) -> Result Result { + PgPoolOptions::new() + .max_connections(1) + .connect_with( + self.connect_options + .clone() + .username(&self.migrator_name) + .options([("role", self.owner_name.as_str())]), + ) + .await + } + + /// The `queue_enqueue_seq_*` sequence of `queue`'s first lane. + async fn enqueue_sequence(&self, queue: &str) -> Result { + Ok(self + .lane_sequence_owners(queue) + .await? + .into_iter() + .map(|(sequence, _)| sequence) + .find(|sequence| sequence.starts_with("queue_enqueue_seq_")) + .expect("lane has an enqueue sequence")) + } + /// `(sequence, owner)` for every lane sequence of `queue`. async fn lane_sequence_owners( &self, @@ -590,20 +618,15 @@ async fn migration_repairs_lanes_it_may_and_reports_the_rest() -> TestResult { )))) .await?; } - let failed = drain(&cluster.app_b, "owner_lane").await.unwrap_err(); - assert!( - failed - .to_string() - .contains("permission denied for sequence"), - "{failed}" - ); - let failed = drain(&cluster.app_b, "app_lane").await.unwrap_err(); - assert!( - failed - .to_string() - .contains("permission denied for sequence"), - "{failed}" - ); + for lane in ["owner_lane", "app_lane"] { + let failed = drain(&cluster.app_b, lane).await.unwrap_err(); + assert!( + failed + .to_string() + .contains("permission denied for sequence"), + "{failed}" + ); + } // 0.7 refuses to migrate while app roles hold CREATE on the schema. cluster .owner @@ -613,19 +636,17 @@ async fn migration_repairs_lanes_it_may_and_reports_the_rest() -> TestResult { )))) .await?; - // The migration runs as the migration role itself. It is a member of the - // owner, so it may reassign its own and the owner's sequences, but not - // the app role's. - for (_, _, statement) in migrations::migration_sql_range(52, migrations::CURRENT_VERSION) { - cluster - .migrator - .execute(sqlx::raw_sql(sql(statement))) - .await?; - } + // `awa migrate` connects as the migration role and acts as the owner. As + // the owner it adds the grants the owner's sequences lack; the migration + // role's own sequences need the migration role's privileges, so they are + // reassigned as the login role. Neither can act as the app role. + let migrate_pool = cluster.migrator_as_owner().await?; + tokio::time::timeout(Duration::from_secs(120), migrations::run(&migrate_pool)).await??; assert_eq!( migrations::current_version(&cluster.owner).await?, migrations::CURRENT_VERSION ); + migrate_pool.close().await; cluster .assert_lanes_owned_by_owner("migrator_lane", 1) .await?; @@ -633,10 +654,10 @@ async fn migration_repairs_lanes_it_may_and_reports_the_rest() -> TestResult { assert_eq!(drain(&cluster.app_b, "migrator_lane").await?, 1); assert_eq!(drain(&cluster.app_b, "owner_lane").await?, 1); - let problems = storage::lane_sequence_problems(&cluster.app_c, "awa").await?; - assert_eq!(problems.len(), 2, "{problems:?}"); let app_a = cluster.roles[3].clone(); let app_a = &app_a; + let problems = storage::lane_sequence_problems(&cluster.app_c, "awa").await?; + assert_eq!(problems.len(), 2, "{problems:?}"); for problem in &problems { assert_eq!(&problem.owner, app_a); assert_eq!(problem.expected_owner, cluster.owner_name); @@ -657,21 +678,31 @@ async fn migration_repairs_lanes_it_may_and_reports_the_rest() -> TestResult { .as_str() ) ); + assert!(problem.repair_roles.is_empty(), "{problem:?}"); } + let next_steps = + storage::lane_sequence_next_steps(problems.iter().map(|problem| (problem, false))); + assert_eq!(next_steps.len(), 1, "{next_steps:?}"); + assert!( + next_steps[0].contains(&format!("no login role can both act as {app_a}")), + "{next_steps:?}" + ); // Re-running the repair as the migration role changes nothing and fails - // nothing. The migration role created the repair function, so it grants - // its use. + // nothing. cluster - .migrator + .owner .execute(sqlx::raw_sql(sql(format!( - "GRANT EXECUTE ON FUNCTION awa.repair_lane_sequences(text) TO {}", + "GRANT EXECUTE ON FUNCTION awa.repair_lane_sequence(text, text) TO {}", cluster.runtime_name )))) .await?; - let rerun = storage::repair_lane_sequences(&cluster.migrator, "awa").await?; + let rerun = + storage::repair_lane_sequences(&mut *cluster.migrator.acquire().await?, "awa").await?; assert_eq!(rerun.len(), 2); - assert!(rerun.iter().all(|result| result.outcome == "unrepaired")); + assert!(rerun + .iter() + .all(|result| result.outcome == LaneSequenceOutcome::Unrepaired)); // A role that can act as the app role but cannot become the owner adds // the grants and leaves the owner for someone who can. @@ -686,20 +717,14 @@ async fn migration_repairs_lanes_it_may_and_reports_the_rest() -> TestResult { .await?; let delegate_pool = PgPoolOptions::new() .max_connections(1) - .connect_with( - PgConnectOptions::from_str(&std::env::var("DATABASE_URL").unwrap_or_else(|_| { - "postgres://postgres:test@localhost:15432/awa_test".to_string() - }))? - .database(&cluster.database) - .username(&delegate) - .password("lane_test"), - ) + .connect_with(cluster.connect_options.clone().username(&delegate)) .await?; - let delegated = storage::repair_lane_sequences(&delegate_pool, "awa").await?; + let delegated = + storage::repair_lane_sequences(&mut *delegate_pool.acquire().await?, "awa").await?; delegate_pool.close().await; assert_eq!(delegated.len(), 2); for result in &delegated { - assert_eq!(result.outcome, "owner_unchanged"); + assert_eq!(result.outcome, LaneSequenceOutcome::OwnerUnchanged); assert_eq!(&result.owner, app_a); assert!(result.missing_grants.is_empty()); assert!(result.reassign_sql.is_some()); @@ -707,7 +732,8 @@ async fn migration_repairs_lanes_it_may_and_reports_the_rest() -> TestResult { assert_eq!(drain(&cluster.app_b, "app_lane").await?, 1); enqueue(&cluster.app_c, "app_lane", 1, 1).await?; - // A role that is a member of both the app role and the owner reassigns. + // Once the migration role is a member of the app role too, the check names + // it, and a repair connected as it reassigns. cluster .admin .execute(sqlx::raw_sql(sql(format!( @@ -715,21 +741,93 @@ async fn migration_repairs_lanes_it_may_and_reports_the_rest() -> TestResult { migrator = cluster.migrator_name )))) .await?; - let repaired = storage::repair_lane_sequences(&cluster.migrator, "awa").await?; + let problems = storage::lane_sequence_problems(&cluster.app_c, "awa").await?; + assert!(problems + .iter() + .all(|problem| problem.repair_roles == vec![cluster.migrator_name.clone()])); + let repaired = + storage::repair_lane_sequences(&mut *cluster.migrator.acquire().await?, "awa").await?; assert_eq!(repaired.len(), 2); assert!( - repaired.iter().all(|result| result.outcome == "repaired"), + repaired + .iter() + .all(|result| result.outcome == LaneSequenceOutcome::Repaired), "{repaired:?}" ); assert!(storage::lane_sequence_problems(&cluster.app_c, "awa") .await? .is_empty()); - assert!(storage::repair_lane_sequences(&cluster.migrator, "awa") - .await? - .is_empty()); cluster.assert_lanes_owned_by_owner("app_lane", 1).await?; assert_eq!(drain(&cluster.app_b, "app_lane").await?, 1); cluster.roles.push(delegate); cluster.teardown().await } + +/// Reassigning a lane sequence waits on any open enqueue or claim on the lane, +/// so the repair bounds that wait and holds each sequence's lock only for its +/// own short transaction. A held sequence is skipped and reported; the rest +/// are repaired, and a later repair finishes it. +#[tokio::test] +async fn migration_skips_a_lane_sequence_an_open_transaction_holds() -> TestResult { + let cluster = Cluster::new(Schema::BeforeProvisioning, true).await?; + enqueue(&cluster.migrator, "held_lane", 1, 1).await?; + enqueue(&cluster.migrator, "free_lane", 1, 1).await?; + let held_sequence = cluster.enqueue_sequence("held_lane").await?; + // 0.7 refuses to migrate while app roles hold CREATE on the schema. + cluster + .owner + .execute(sqlx::raw_sql(sql(format!( + "REVOKE CREATE ON SCHEMA awa FROM {}", + cluster.runtime_name + )))) + .await?; + + // An enqueue in flight on held_lane holds its sequence's lock. + let mut holder = cluster.app_b.begin().await?; + sqlx::query("SELECT nextval($1::regclass)") + .bind(format!("awa.{held_sequence}")) + .execute(&mut *holder) + .await?; + + let migrate_pool = cluster.migrator_as_owner().await?; + // The migration completes while the lock is held. + tokio::time::timeout(Duration::from_secs(120), migrations::run(&migrate_pool)).await??; + for (sequence, owner) in cluster.lane_sequence_owners("held_lane").await? { + let expected = if sequence == held_sequence { + &cluster.migrator_name + } else { + &cluster.owner_name + }; + assert_eq!(&owner, expected, "{sequence}"); + } + cluster.assert_lanes_owned_by_owner("free_lane", 1).await?; + + // A repair while the transaction is still open reports the sequence busy. + let mut conn = migrate_pool.acquire().await?; + let busy = storage::repair_lane_sequences(&mut conn, "awa").await?; + assert_eq!(busy.len(), 1, "{busy:?}"); + assert_eq!(busy[0].sequence_name, held_sequence); + assert_eq!(busy[0].outcome, LaneSequenceOutcome::Busy); + assert_eq!(busy[0].owner, cluster.migrator_name); + let next_steps = storage::lane_sequence_repair_next_steps(&busy); + assert_eq!(next_steps.len(), 1); + assert!(next_steps[0].contains("busy"), "{next_steps:?}"); + assert!( + next_steps[0].contains("awa storage lane-sequences --schema awa --repair"), + "{next_steps:?}" + ); + + holder.rollback().await?; + let repaired = storage::repair_lane_sequences(&mut conn, "awa").await?; + assert_eq!(repaired.len(), 1, "{repaired:?}"); + assert_eq!(repaired[0].outcome, LaneSequenceOutcome::Repaired); + drop(conn); + migrate_pool.close().await; + cluster.assert_lanes_owned_by_owner("held_lane", 1).await?; + assert!(storage::lane_sequence_problems(&cluster.app_c, "awa") + .await? + .is_empty()); + assert_eq!(drain(&cluster.app_b, "held_lane").await?, 1); + cluster.teardown().await +} diff --git a/docs/security/database-roles.md b/docs/security/database-roles.md index 5f15793e7..d8d9f5497 100644 --- a/docs/security/database-roles.md +++ b/docs/security/database-roles.md @@ -85,17 +85,32 @@ awa --database-url "$AWA_DATABASE_URL" storage lane-sequences --schema awa SELECT * FROM awa.lane_sequence_problems('awa'); ``` -The command exits 2 while any remain. Migration v053 runs the repair as the migrating role: for each sequence it changes the owner to the schema owner and adds the missing grants, wherever that role is allowed to. A sequence it is not allowed to change does not fail the migration. It is reported in a warning, and `awa migrate` prints a summary. Run the repair again at any time; it is idempotent: +The command exits 2 while any remain. + +`awa migrate` repairs them once the migration commits, one sequence per short transaction: it gives each sequence to the schema owner and adds its missing grants, wherever it is allowed to. Reassigning takes the sequence's `ACCESS EXCLUSIVE` lock, so the repair waits at most 300 ms for it. A sequence that an open enqueue or claim holds for longer is skipped, left unchanged and reported as busy. A sequence the repair is not allowed to change is reported with the roles that can finish it. Neither fails the migration. Run the repair again at any time; it is idempotent: ```bash -PGOPTIONS='-c role=awa_owner' \ - awa --database-url "$AWA_MIGRATOR_DATABASE_URL" storage lane-sequences --repair +awa --database-url "$AWA_MIGRATOR_DATABASE_URL" storage lane-sequences --repair ``` -Changing a sequence's owner requires a role that can `SET ROLE` to both the current owner and the schema owner. A migrator usually can for sequences it or the owner created, but not for one an unrelated application role created, and managed PostgreSQL offers no superuser. For each sequence that remains, the output gives the statements to run: +Which role can repair a sequence: + +- Reassigning it needs a role that holds the current owner's privileges (a member of the owner, with inheritance) and can `SET ROLE` to the schema owner. +- Adding its grants needs the current owner's privileges. + +The schema owner holds neither the migration role's nor an application role's privileges, so a repair running as `awa_owner` cannot reassign sequences those roles created. That includes the migration role connected with `PGOPTIONS='-c role=awa_owner'`. Run the repair as the migration role itself, without `PGOPTIONS`, as above. `awa migrate` and `--repair` retry each sequence the effective role could not repair as the login role, so `awa migrate` run with `PGOPTIONS='-c role=awa_owner'`, as documented, still repairs the migration role's sequences. + +For each sequence that remains, the output lists `repair_roles`, the login roles other than superusers that can repair it, and the statements to run. A busy sequence only needs another `--repair`. When `repair_roles` is empty, which is usual for a sequence an application role created on managed PostgreSQL, either: -- `missing_grants`: run them as the current owner, or as a role that can `SET ROLE` to it. Every runtime role can then use the lane, although the owner stays unchanged. -- `reassign_sql`: run it as a role that is a member of both roles, for example after `GRANT app_role TO awa_migrator` from a role with `ADMIN` on `app_role`. Revoke that membership afterwards. +- run `missing_grants` as the current owner. Every runtime role can then use the lane, although the owner stays unchanged; or +- give the migration role the owner's privileges, for example `GRANT app_role TO awa_migrator` from a role with `ADMIN` on `app_role`, rerun `--repair` as the migration role, then revoke the membership. + +Without the CLI, repair one sequence per transaction from `psql` in autocommit mode, connected as the migration role: + +```sql +SELECT format('SELECT * FROM awa.repair_lane_sequence(%L, %L)', 'awa', sequence_name) +FROM awa.lane_sequence_problems('awa') \gexec +``` ## Custom queue-storage schemas ## Custom queue-storage schemas diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index 7fff6173f..59ef9ba89 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -28,9 +28,10 @@ default privileges covered that role could use the lane; any other role failed with `permission denied for sequence`. v053 installs `SECURITY DEFINER` `provision_lane` and `provision_lane_sequences` functions, owned by the schema owner, in each queue-storage schema. The lane helpers create sequences through -them, with grants that mirror the lane's head table. v053 then gives every -existing lane sequence to the schema owner and adds its missing grants, as far -as the migrating role is allowed to. +them, with grants that mirror the lane's head table. Once v053 commits, +`awa migrate` gives every existing lane sequence to the schema owner and adds +its missing grants, as far as it is allowed to, one sequence per short +transaction with a bounded lock wait. 0.6 and earlier 0.7 binaries call the same helpers, so lanes they create after v053 are owned by the schema owner too. A 0.7 binary running ahead of v053 @@ -42,13 +43,15 @@ To adopt it: while lanes need repair). 2. Run `awa migrate` with the schema owner as the effective role, as described in [Database roles](security/database-roles.md). -3. Read the migrate output. Any lane sequence it could not reassign is listed; - `awa storage lane-sequences` gives the statements to run and the role to run - them as. See +3. Read the migrate output. Any lane sequence it could not repair is listed in + a warning. A busy one needs another run of + `awa storage lane-sequences --repair` as the migration role (without + `PGOPTIONS`); the others name the roles that can repair them. See [Check and repair lane ownership](security/database-roles.md#check-and-repair-lane-ownership). External migration runners apply the generated `awa migrate --sql --from 52 ---to 53` bundle, then run `awa storage lane-sequences` to check for leftovers. +--to 53` bundle, which does not repair existing lane sequences, then run +`awa storage lane-sequences --repair` as the migration role itself. ## Custom-schema discovery during migration diff --git a/skills/awa-operations/SKILL.md b/skills/awa-operations/SKILL.md index 5124fbc3f..64a23de16 100644 --- a/skills/awa-operations/SKILL.md +++ b/skills/awa-operations/SKILL.md @@ -96,7 +96,8 @@ From v053 any runtime role creates lanes through the schema owner's CREATE nor sequence default privileges, and `awa storage prepare-queue` is optional. Run migrations with the schema owner as the effective role. Check lane ownership with `awa storage lane-sequences` (exits 2 while lanes need -repair) and fix it with `--repair` or the statements it prints; see +repair) and fix it with `--repair`, connected as the migration role itself +rather than as the schema owner, or with the statements it prints; see [Database roles](../../docs/security/database-roles.md#check-and-repair-lane-ownership). ## Rolling Upgrades From bfccec55abf279ce6ac9c1344b3f77cd1ed29490 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 20:58:37 +1300 Subject: [PATCH 41/48] docs(security): clarify lane sequence repair outcomes --- awa-model/migrations/v053_definer_lane_provisioning.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awa-model/migrations/v053_definer_lane_provisioning.sql b/awa-model/migrations/v053_definer_lane_provisioning.sql index 2eba66ff6..ced1a7642 100644 --- a/awa-model/migrations/v053_definer_lane_provisioning.sql +++ b/awa-model/migrations/v053_definer_lane_provisioning.sql @@ -45,7 +45,7 @@ BEGIN IF v_count > 0 THEN RAISE NOTICE '% lane sequence(s) in schema % are not owned by the schema owner or lack runtime grants', v_count, v_schema USING HINT = format( - 'awa migrate repairs them after this commits. Otherwise run awa storage lane-sequences --schema %s --repair as the migration role itself, without SET ROLE.', + 'awa migrate attempts repair after this commits; review its warnings for any sequences left unrepaired. To retry, run awa storage lane-sequences --schema %s --repair as the migration role itself, without SET ROLE.', v_schema ); END IF; From 0f84fa30aa5b1c73bad598d6c32b17c0b008b27b Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 21:11:39 +1300 Subject: [PATCH 42/48] Check statistics helper privileges before each refresh pass --- CHANGELOG.md | 2 + .../v053_analyze_queue_storage_statistics.sql | 1 + awa-worker/src/statistics.rs | 162 ++++++++++++++++-- docs/configuration.md | 2 +- docs/security/database-roles.md | 2 + skills/awa-operations/SKILL.md | 7 +- 6 files changed, 159 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 699c9bb16..f915fefb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,8 @@ Notable changes between releases. Detailed migration notes for storage transitio function's owner may not analyse the tables, logs one warning naming what is missing and skips the refresh without making failing calls or affecting job processing. Earlier binaries never call the function. + Missing EXECUTE or head-table privileges are checked before each pass, + avoiding a failing helper call for every relation. ### Fixed diff --git a/awa-model/migrations/v053_analyze_queue_storage_statistics.sql b/awa-model/migrations/v053_analyze_queue_storage_statistics.sql index d9ec60d0f..0591b8cc8 100644 --- a/awa-model/migrations/v053_analyze_queue_storage_statistics.sql +++ b/awa-model/migrations/v053_analyze_queue_storage_statistics.sql @@ -68,6 +68,7 @@ DECLARE v_relowner OID; v_may_analyze BOOLEAN; BEGIN + -- awa_statistics_helper_v1: bump when the definition or grants change. IF NOT EXISTS ( SELECT 1 FROM awa.queue_storage_schemas() AS substrate WHERE substrate.schema_name = p_schema diff --git a/awa-worker/src/statistics.rs b/awa-worker/src/statistics.rs index 352b97b64..f09940bb9 100644 --- a/awa-worker/src/statistics.rs +++ b/awa-worker/src/statistics.rs @@ -116,6 +116,13 @@ impl PassSummary { } } +#[derive(Debug, PartialEq, Eq)] +enum HelperAccess { + Available, + Missing, + Denied, +} + /// Refreshes planner statistics for one queue-storage schema. pub(crate) struct StatisticsRefresher { pool: PgPool, @@ -205,9 +212,9 @@ impl StatisticsRefresher { } } - match self.helper_installed().await { - Ok(true) => {} - Ok(false) => { + match self.helper_access().await { + Ok(HelperAccess::Available) => {} + Ok(HelperAccess::Missing) => { self.warn_unavailable_once(); self.record( RelationScope::Pass, @@ -217,8 +224,23 @@ impl StatisticsRefresher { summary.record(AnalyzeOutcome::Unavailable); return summary; } + Ok(HelperAccess::Denied) => { + self.warn_privilege_once( + "queue_claim_heads", + "the runtime role needs EXECUTE on awa.analyze_queue_storage_relation(text, text), \ + and the login role needs INSERT, UPDATE and DELETE on this schema's queue_claim_heads; \ + restore those grants as the schema owner", + ); + self.record( + RelationScope::Pass, + AnalyzeOutcome::SkippedPrivilege, + started.elapsed(), + ); + summary.record(AnalyzeOutcome::SkippedPrivilege); + return summary; + } Err(err) => { - warn!(error = %err, schema = %self.schema, "Could not probe for the statistics helper"); + warn!(error = %err, schema = %self.schema, "Could not probe access to the statistics helper"); self.record( RelationScope::Pass, AnalyzeOutcome::Failed, @@ -277,16 +299,33 @@ impl StatisticsRefresher { .record_statistics_analyze(scope.as_str(), outcome.as_str(), elapsed); } - /// One catalog lookup per pass. A missing helper (a binary running ahead - /// of the schema) then costs this query instead of a failing call, and a - /// server-side ERROR line, per relation; the pass interval is the - /// re-probe interval. - async fn helper_installed(&self) -> Result { - sqlx::query_scalar( - "SELECT to_regprocedure('awa.analyze_queue_storage_relation(text,text)') IS NOT NULL", + /// Check the helper and its caller privileges once per pass, so a missing + /// migration or grant does not produce a failing call for every relation. + async fn helper_access(&self) -> Result { + let (installed, allowed): (bool, bool) = sqlx::query_as( + r#" + SELECT helper IS NOT NULL, + COALESCE( + has_function_privilege(helper, 'EXECUTE') + AND has_table_privilege(session_user, heads, 'INSERT') + AND has_table_privilege(session_user, heads, 'UPDATE') + AND has_table_privilege(session_user, heads, 'DELETE'), + false + ) + FROM ( + SELECT to_regprocedure('awa.analyze_queue_storage_relation(text,text)') AS helper, + to_regclass(format('%I.queue_claim_heads', $1::text)) AS heads + ) AS objects + "#, ) + .bind(&self.schema) .fetch_one(&self.pool) - .await + .await?; + Ok(match (installed, allowed) { + (false, _) => HelperAccess::Missing, + (true, false) => HelperAccess::Denied, + (true, true) => HelperAccess::Available, + }) } async fn ring_parents(&self) -> Result, sqlx::Error> { @@ -314,8 +353,8 @@ impl StatisticsRefresher { self.warn_privilege_once( relation, "the owner of awa.analyze_queue_storage_relation() may not ANALYZE this table; \ - run migrations as the role that owns the queue-storage tables, or grant the \ - function owner MAINTAIN on them (PostgreSQL 17+)", + change the function's owner to the table owner with ALTER FUNCTION, \ + or grant the function owner MAINTAIN on them (PostgreSQL 17+)", ); AnalyzeOutcome::SkippedPrivilege } @@ -509,4 +548,99 @@ mod tests { .await .expect("drop database"); } + + /// Missing EXECUTE or login-role DML is a single skipped pass, rather + /// than fifteen server-side permission errors. + #[tokio::test] + async fn missing_helper_privileges_skip_the_pass_without_calling_it() { + let url = std::env::var("DATABASE_URL") + .unwrap_or_else(|_| "postgres://postgres:test@localhost:15432/awa_test".to_string()); + let options = PgConnectOptions::from_str(&url).expect("parse DATABASE_URL"); + let admin = PgPoolOptions::new() + .max_connections(1) + .connect_with(options.clone()) + .await + .expect("connect admin"); + let database = format!("awa_stats_access_unit_{}", std::process::id()); + let role = format!("awa_stats_access_{}", std::process::id()); + sqlx::raw_sql(awa_model::audited_sql(format!( + "DROP DATABASE IF EXISTS {database} WITH (FORCE)" + ))) + .execute(&admin) + .await + .expect("drop leftover database"); + sqlx::raw_sql(awa_model::audited_sql(format!("DROP ROLE IF EXISTS {role}; CREATE ROLE {role} LOGIN PASSWORD 'statistics_access_test'"))) + .execute(&admin) + .await + .expect("create test role"); + sqlx::raw_sql(awa_model::audited_sql(format!( + "CREATE DATABASE {database}" + ))) + .execute(&admin) + .await + .expect("create database"); + let owner = PgPoolOptions::new() + .max_connections(2) + .connect_with(options.clone().database(&database)) + .await + .expect("connect owner"); + awa_model::migrations::run(&owner).await.expect("migrate"); + sqlx::raw_sql(awa_model::audited_sql(format!( + "GRANT USAGE ON SCHEMA awa TO {role}; \ + GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA awa TO {role}; \ + REVOKE EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(text, text) FROM {role}" + ))) + .execute(&owner) + .await + .expect("grant head-table privileges only"); + let runtime = PgPoolOptions::new() + .max_connections(2) + .connect_with( + options + .database(&database) + .username(&role) + .password("statistics_access_test"), + ) + .await + .expect("connect runtime"); + let refresher = StatisticsRefresher::new( + runtime.clone(), + "awa".to_string(), + AwaMetrics::from_global(), + false, + ); + let denied = PassSummary { + skipped_privilege: 1, + ..PassSummary::default() + }; + assert_eq!(refresher.run_pass().await, denied); + sqlx::raw_sql(awa_model::audited_sql(format!( + "GRANT EXECUTE ON FUNCTION awa.analyze_queue_storage_relation(text, text) TO {role}" + ))) + .execute(&owner) + .await + .expect("grant helper EXECUTE"); + assert_eq!(refresher.run_pass().await.ok, 15); + sqlx::raw_sql(awa_model::audited_sql(format!( + "REVOKE INSERT ON awa.queue_claim_heads FROM {role}" + ))) + .execute(&owner) + .await + .expect("revoke login-role head privilege"); + assert_eq!(refresher.run_pass().await, denied); + + runtime.close().await; + owner.close().await; + sqlx::raw_sql(awa_model::audited_sql(format!( + "DROP DATABASE {database} WITH (FORCE)" + ))) + .execute(&admin) + .await + .expect("drop database"); + sqlx::raw_sql(awa_model::audited_sql(format!("DROP ROLE {role}"))) + .execute(&admin) + .await + .expect("drop test role"); + admin.close().await; + } } diff --git a/docs/configuration.md b/docs/configuration.md index 154c54801..4640dda6d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -539,7 +539,7 @@ Autovacuum does not analyse partitioned tables, so the ring parents (`ready_entr The maintenance leader runs `ANALYZE` on both when it is elected and every `statistics_refresh_interval` (default `5m`). One pass takes well under a second on a small ring and a few seconds on a ring with millions of retained rows. It has no measurable effect on claim or completion throughput. - **Locks.** Each relation is analysed in its own transaction with a 2 s `lock_timeout` and a 120 s `statement_timeout`. `SKIP_LOCKED` skips a child that ring prune holds during the per-child analysis, but sampling for the parent's statistics waits for it up to the `lock_timeout`; a call that times out is recorded as `skipped_lock` and retried on the next interval. Prune never waits for the refresh: its own 10 ms lock timeout applies, so an attempt that lands while `ANALYZE` samples the oldest slot's tables returns `blocked` and retries on its usual backoff. `ANALYZE` of a partitioned table samples every child, so that window cannot be avoided. -- **Privileges.** The refresh calls `awa.analyze_queue_storage_relation(schema, relation)` (schema v053), a `SECURITY DEFINER` function owned by the role that ran the migration, so the runtime role needs no `MAINTAIN` grant and does not have to own the tables. It is executable only by roles that hold INSERT, UPDATE and DELETE on the queue head tables (the migration grants it to the existing ones). Each pass first probes for the function; if it is missing (run `awa migrate`) or its owner may not analyse the tables, the leader logs one warning that names what is missing and skips the pass without making failing calls; job processing is unaffected. +- **Privileges.** The refresh calls `awa.analyze_queue_storage_relation(schema, relation)`, a `SECURITY DEFINER` function installed by migration v053. The runtime needs EXECUTE on the helper, and the login role needs INSERT, UPDATE and DELETE on the target schema's `queue_claim_heads`; the migration grants EXECUTE to existing runtime grantees. A missing helper or caller privilege skips the pass before making calls and logs one warning. Run `awa migrate` for a missing helper; restore the grants as the schema owner for `skipped_privilege`. If the helper owner may not analyse the tables, transfer the function to the table owner or grant its owner `MAINTAIN` on PostgreSQL 17+. See the [database roles guide](security/database-roles.md) for the ownership command. - **Metrics.** `awa.maintenance.analyze.attempts` and `awa.maintenance.analyze.duration`, by `awa.analyze.scope` (`heads`, `ring_parent`, `pass`) and `awa.analyze.outcome` (`ok`, `skipped_privilege`, `skipped_lock`, `unavailable`, `failed`). A sustained `skipped_lock` rate means something else holds the tables; any `skipped_privilege` or `unavailable` means the refresh is not running. ### Rust diff --git a/docs/security/database-roles.md b/docs/security/database-roles.md index 150c2fe81..2a7ed1c14 100644 --- a/docs/security/database-roles.md +++ b/docs/security/database-roles.md @@ -69,6 +69,8 @@ The maintenance leader runs `ANALYZE` on the queue-storage head tables and parti Run migrations with the schema owner as the effective role, as shown above, so the function's owner owns the tables. A function owned by a role that may not analyse them (it is not the table owner, the database owner, or a `MAINTAIN` holder) makes every pass report `skipped_privilege` and logs one warning. The function only analyses the two head tables and the thirteen ring parents of a schema that `awa.queue_storage_schemas()` reports as trusted, and `ANALYZE` changes statistics only. +If the helper's owner may not analyse the tables, run `ALTER FUNCTION awa.analyze_queue_storage_relation(text, text) OWNER TO awa_owner` as a role permitted to transfer ownership, or grant its owner `MAINTAIN` on the target tables on PostgreSQL 17+. Replacing the function body leaves its owner unchanged. + ## Provision queues before starting restricted runtimes From schema v049, runtime calls use existing lane sequences without issuing diff --git a/skills/awa-operations/SKILL.md b/skills/awa-operations/SKILL.md index 90ad16015..7f81928e5 100644 --- a/skills/awa-operations/SKILL.md +++ b/skills/awa-operations/SKILL.md @@ -321,8 +321,11 @@ On queue storage the leader runs `ANALYZE` on `queue_claim_heads`, analyses them. It goes through the `SECURITY DEFINER` function `awa.analyze_queue_storage_relation` from migration v053, so a non-owner runtime role needs no `MAINTAIN` grant. Watch `awa.maintenance.analyze.attempts`: any -`skipped_privilege` or `unavailable` means it is not running (run `awa migrate` -as the schema owner). See `docs/configuration.md#planner-statistics`. +`unavailable` means the helper is missing: run `awa migrate` as the schema +owner. For `skipped_privilege`, restore helper EXECUTE and the login role's +head-table DML, or correct the helper owner; migration reruns preserve an +existing function's owner. See `docs/configuration.md#planner-statistics` and +`docs/security/database-roles.md`. ## Managed Postgres From 7d459b50dc2837d4e9629c249a49f13a639adb31 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 21:13:24 +1300 Subject: [PATCH 43/48] fix(insert): keep schema availability local to each connection --- CHANGELOG.md | 21 +- awa-model/src/insert.rs | 182 ++++-------------- awa/tests/enqueue_lane_contention_test.rs | 2 +- awa/tests/insert_many_batch_test.rs | 8 +- awa/tests/insert_many_schema_fallback_test.rs | 127 +++++++++--- docs/architecture.md | 4 +- docs/configuration.md | 2 +- docs/upgrade-0.6-to-0.7.md | 13 +- skills/awa-jobs/SKILL.md | 5 +- 9 files changed, 154 insertions(+), 210 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cd219c09..c1db94b96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,26 +17,7 @@ Notable changes between releases. Detailed migration notes for storage transitio ### Changed -- **Batch enqueues hold a lane lock for the lane write only.** `insert_many` - and `insert_many_copy` called `awa.insert_job_compat` per row, which takes - the `(queue, priority, shard)` lane lock on the batch's first row and holds - it, because the lock lasts to commit, while every remaining row is - processed: concurrent producers on one lane queued behind whole batches. - Migration v053 adds `awa.insert_jobs_compat_batch`, which allocates job ids, - claims unique keys (in key order), registers new lanes and builds the rows - first, then reserves each lane's sequence range once, in lane order, and - writes the ready rows and segments in two statements. A 185-row batch into - one lane holds the lock for a fraction of the time it did, which raises the - per-lane ceiling several times over and cuts the time producers, promotion - and rescue spend waiting for the lane. `insert_many_copy` skips unique - conflicts in one pass instead of one savepoint per row. A binary that runs - ahead of the migration keeps working: `insert_many` and `insert_many_copy` - look for the function in the catalog and use the per-row path until it - exists, then switch to the batch function without a restart (the process - keeps the answer; a call that finds a cached function gone fails once with - `undefined_function` and the next call probes again). Binaries before this - release keep calling `awa.insert_job_compat` and share the lane lock with the - new path, so a mixed fleet keeps each batch contiguous and in order. +- **COPY and opt-in skip-conflict batch enqueues hold lane locks only for reservation, ready-row writes and commit.** Migration v053 adds `awa.insert_jobs_compat_batch`, which allocates job ids, claims unique keys in key order, registers lanes and prepares rows before reserving each lane's sequence range in lane order. `insert_many_copy` probes its own connection on every call and uses the function when installed, falling back to per-row inserts on older schemas. `insert_many_skip_unique_conflicts` requires the function. Generic `insert_many` keeps its single-statement per-row path on every supported schema, preserving caller transactions when one process writes to databases at different migration levels. All paths return rows in input order and share the same per-lane lock with older binaries. ### Fixed diff --git a/awa-model/src/insert.rs b/awa-model/src/insert.rs index 79fdde6cb..61a163843 100644 --- a/awa-model/src/insert.rs +++ b/awa-model/src/insert.rs @@ -4,16 +4,16 @@ use crate::queue_storage::ordering_key_hash64; use crate::unique::compute_unique_key; use crate::JobArgs; use sqlx::postgres::PgConnection; -use sqlx::{FromRow, PgExecutor, PgPool, Row}; -use std::sync::atomic::{AtomicU8, Ordering}; +use sqlx::{PgExecutor, PgPool}; // ── Lane lock order ───────────────────────────────────────────────────── // // On queue storage every available-state insert holds a transaction-scoped // advisory lock on its `(queue, priority, enqueue_shard)` lane until the // enclosing transaction ends, so two transactions that enqueue into the same -// lanes in opposite orders can deadlock. The batch inserts here go through -// `awa.insert_jobs_compat_batch` (migration v053), which does the +// lanes in opposite orders can deadlock. `insert_many_copy` and +// `insert_many_skip_unique_conflicts` use `awa.insert_jobs_compat_batch` +// (migration v053), which does the // lane-independent work first and then reserves its lanes in one canonical // order: `(queue, priority, shard)` ascending, queues compared bytewise // (`COLLATE "C"`, the order of Rust's `str`). `QueueStorage` batch enqueues @@ -21,8 +21,8 @@ use std::sync::atomic::{AtomicU8, Ordering}; // the reservation and the ready-row writes keeps a lane's lock window // independent of the batch's unique-claim and payload work. // -// A schema without the function (a binary running ahead of the migration) is -// served by the per-row path: rows are sorted by the same key, stably, before +// Generic `insert_many` always uses the per-row path, as does +// `insert_many_copy` before the migration: rows are sorted by the same key before // they reach `awa.insert_job_compat`, and returned in input order. Both paths // take the same lane lock, so producers on either, and older binaries, share a // lane without reordering it. @@ -245,8 +245,8 @@ const INSERT_MANY_BATCH_SQL: &str = r#" /// The per-row form of [`INSERT_MANY_BATCH_SQL`], for schemas without /// `awa.insert_jobs_compat_batch`: one `awa.insert_job_compat` call per row, /// rows inserted in canonical lane order (see "Lane lock order" above) and -/// returned in input order. `batch_insert_available` reports whether the batch -/// function exists, so the caller can switch to it. +/// returned in input order. It works before and after the batch migration, +/// including when one process writes to databases at different schema versions. const INSERT_MANY_ROW_FUNCTION_SQL: &str = r#" WITH input AS MATERIALIZED ( SELECT @@ -281,7 +281,7 @@ const INSERT_MANY_ROW_FUNCTION_SQL: &str = r#" ) ORDER BY raw.queue COLLATE "C", raw.priority, lane_shard, raw.ord ) - SELECT inserted.*, (SELECT to_regprocedure('awa.insert_jobs_compat_batch(text[],text[],jsonb[],text[],smallint[],smallint[],timestamptz[],jsonb[],jsonb[],bytea[],text[],text[],boolean)') IS NOT NULL ) AS batch_insert_available + SELECT inserted.* FROM input CROSS JOIN LATERAL awa.insert_job_compat( input.kind, @@ -513,10 +513,12 @@ fn ordering_hash_text(row: &PreparedRow) -> Option { /// (SQLSTATE `23505`, as [`AwaError::Database`]); use /// [`insert_many_skip_unique_conflicts`] to insert the rest instead. /// -/// Uses `awa.insert_jobs_compat_batch` when the schema has migration v053 and -/// the per-row `awa.insert_job_compat` path when it does not, deciding from the -/// schema itself. The first calls of a process use the per-row path until one -/// of them has seen the function. +/// Calls `awa.insert_job_compat` per row, in canonical lane order, on every +/// supported schema. A generic executor is consumed by one statement and +/// cannot be probed separately, so this path never assumes another database +/// has the same schema. [`insert_many_copy`] probes its concrete connection +/// and uses the batch function when available; +/// [`insert_many_skip_unique_conflicts`] requires that function. #[tracing::instrument( skip(executor, jobs), fields( @@ -532,7 +534,16 @@ pub async fn insert_many<'e, E>(executor: E, jobs: &[InsertParams]) -> Result, { - insert_many_batch(executor, jobs, false).await + if jobs.is_empty() { + return Ok(Vec::new()); + } + let rows = precompute_rows(jobs)?; + Ok(bind_row_function_columns( + sqlx::query_as::<_, JobRow>(INSERT_MANY_ROW_FUNCTION_SQL), + &rows, + ) + .fetch_all(executor) + .await?) } /// Insert multiple jobs in a single statement, skipping those whose unique key @@ -564,128 +575,23 @@ pub async fn insert_many_skip_unique_conflicts<'e, E>( executor: E, jobs: &[InsertParams], ) -> Result, AwaError> -where - E: PgExecutor<'e>, -{ - insert_many_batch(executor, jobs, true).await -} - -async fn insert_many_batch<'e, E>( - executor: E, - jobs: &[InsertParams], - skip_unique_conflicts: bool, -) -> Result, AwaError> where E: PgExecutor<'e>, { if jobs.is_empty() { return Ok(Vec::new()); } - let rows = precompute_rows(jobs)?; - - // Skipping conflicts has no per-row equivalent in one statement, so it - // always calls the batch function and reports a schema without it. - if skip_unique_conflicts { - return match bind_batch_columns(sqlx::query_as::<_, JobRow>(INSERT_MANY_BATCH_SQL), &rows) - .bind(true) - .fetch_all(executor) - .await - { - Ok(results) => { - BATCH_INSERT_FUNCTION.record(BatchFunction::Present); - Ok(results) - } - Err(err) if is_missing_batch_function(&err) => { - BATCH_INSERT_FUNCTION.record(BatchFunction::Absent); - Err(AwaError::Validation( - "insert_many_skip_unique_conflicts needs migration v053; run `awa migrate`" - .to_string(), - )) - } - Err(err) => Err(err.into()), - }; - } - - if BATCH_INSERT_FUNCTION.load() == BatchFunction::Present { - return match bind_batch_columns(sqlx::query_as::<_, JobRow>(INSERT_MANY_BATCH_SQL), &rows) - .bind(false) - .fetch_all(executor) - .await - { - Ok(results) => Ok(results), - Err(err) => { - // The schema no longer has the function (restored from an - // older backup, or a different database): probe again on the - // next call. This call's executor is spent, and inside a - // transaction it would be aborted anyway. - if is_missing_batch_function(&err) { - BATCH_INSERT_FUNCTION.record(BatchFunction::Unknown); - } - Err(err.into()) - } - }; - } - - // Not known to be present: insert through the per-row function, which - // every schema has, and learn from the same statement whether the batch - // function exists so the next call can use it. - let rows_out = bind_row_function_columns(sqlx::query(INSERT_MANY_ROW_FUNCTION_SQL), &rows) + match bind_batch_columns(sqlx::query_as::<_, JobRow>(INSERT_MANY_BATCH_SQL), &rows) + .bind(true) .fetch_all(executor) - .await?; - let mut results = Vec::with_capacity(rows_out.len()); - let mut available = false; - for row in &rows_out { - results.push(JobRow::from_row(row)?); - available = row.try_get::("batch_insert_available")?; - } - BATCH_INSERT_FUNCTION.record(if available { - BatchFunction::Present - } else { - BatchFunction::Absent - }); - Ok(results) -} - -/// Whether `awa.insert_jobs_compat_batch` exists in the schema this process -/// writes to, as far as it has seen. -/// -/// The executors the insert functions take are consumed by one statement, so -/// the answer comes from the per-row statement, which asks the catalog as it -/// inserts, and is cached for the process: present stays present until a -/// call finds the function missing, absent is asked again by every per-row -/// call and so is picked up as soon as the migration has run. A process that -/// writes to databases at different migration levels may see one failed call -/// when it switches to one that lacks the function. -struct BatchFunctionState(AtomicU8); - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -enum BatchFunction { - Unknown, - Present, - Absent, -} - -static BATCH_INSERT_FUNCTION: BatchFunctionState = BatchFunctionState(AtomicU8::new(0)); - -impl BatchFunctionState { - fn load(&self) -> BatchFunction { - match self.0.load(Ordering::Relaxed) { - 1 => BatchFunction::Present, - 2 => BatchFunction::Absent, - _ => BatchFunction::Unknown, - } - } - - fn record(&self, state: BatchFunction) { - self.0.store( - match state { - BatchFunction::Unknown => 0, - BatchFunction::Present => 1, - BatchFunction::Absent => 2, - }, - Ordering::Relaxed, - ); + .await + { + Ok(results) => Ok(results), + Err(err) if is_missing_batch_function(&err) => Err(AwaError::Validation( + "insert_many_skip_unique_conflicts needs migration v053; run `awa migrate`".to_string(), + )), + Err(err) => Err(err.into()), } } @@ -740,9 +646,9 @@ fn bind_batch_columns<'q, O>( } fn bind_row_function_columns<'q>( - query: sqlx::query::Query<'q, sqlx::Postgres, sqlx::postgres::PgArguments>, + query: sqlx::query::QueryAs<'q, sqlx::Postgres, JobRow, sqlx::postgres::PgArguments>, rows: &'q [PreparedRow], -) -> sqlx::query::Query<'q, sqlx::Postgres, sqlx::postgres::PgArguments> { +) -> sqlx::query::QueryAs<'q, sqlx::Postgres, JobRow, sqlx::postgres::PgArguments> { query .bind(rows.iter().map(|row| row.kind.as_str()).collect::>()) .bind( @@ -909,21 +815,15 @@ pub async fn insert_many_copy_from_pool( Ok(results) } +/// Probe this connection on every COPY call. A process can write to databases +/// at different migration levels, and the generic executor path cannot safely +/// seed a shared answer for them. async fn batch_function_available(conn: &mut PgConnection) -> Result { - if BATCH_INSERT_FUNCTION.load() == BatchFunction::Present { - return Ok(true); - } - let available: bool = sqlx::query_scalar( + Ok(sqlx::query_scalar( "SELECT to_regprocedure('awa.insert_jobs_compat_batch(text[],text[],jsonb[],text[],smallint[],smallint[],timestamptz[],jsonb[],jsonb[],bytea[],text[],text[],boolean)') IS NOT NULL", ) .fetch_one(&mut *conn) - .await?; - BATCH_INSERT_FUNCTION.record(if available { - BatchFunction::Present - } else { - BatchFunction::Absent - }); - Ok(available) + .await?) } async fn insert_staged_rows_with_batch_function( diff --git a/awa/tests/enqueue_lane_contention_test.rs b/awa/tests/enqueue_lane_contention_test.rs index 6495213a8..cd6e05b84 100644 --- a/awa/tests/enqueue_lane_contention_test.rs +++ b/awa/tests/enqueue_lane_contention_test.rs @@ -667,7 +667,7 @@ fn scenario( ) -> Scenario { Scenario { name: name.to_string(), - mode: Mode::InsertMany, + mode: Mode::InsertManySkip, producers, batch_size: 185, unique, diff --git a/awa/tests/insert_many_batch_test.rs b/awa/tests/insert_many_batch_test.rs index d90c081ce..e3e5884e1 100644 --- a/awa/tests/insert_many_batch_test.rs +++ b/awa/tests/insert_many_batch_test.rs @@ -1,4 +1,4 @@ -//! `insert_many` and `insert_many_copy` on the batch insert function. +//! Compatibility inserts and the opt-in batch insert function. //! //! A batch does its lane-independent work (job ids, unique claims, lane //! registration) before it reserves its lanes, and holds a lane lock only for @@ -341,7 +341,7 @@ async fn batch_waits_for_the_lane_after_its_lane_independent_work() { let producer = { let pool = pool.clone(); let jobs = jobs_for_probe.clone(); - tokio::spawn(async move { insert_many(&pool, &jobs).await }) + tokio::spawn(async move { insert_many_skip_unique_conflicts(&pool, &jobs).await }) }; let started = Instant::now(); @@ -440,7 +440,7 @@ async fn old_and_new_producers_share_a_lane_without_reordering() { setup::activate_queue_storage(&pool).await; let queue = unique_queue("mixed_fleet"); - // Make sure the batch function is the one `insert_many` uses. + // Provision the lane before mixing generic and batch producers. insert_many(&pool, &[job(&queue, -1, false)]) .await .expect("warm up"); @@ -464,7 +464,7 @@ async fn old_and_new_producers_share_a_lane_without_reordering() { if task % 2 == 0 { insert_through_row_function(&pool, &jobs).await; } else { - insert_many(&pool, &jobs) + insert_many_skip_unique_conflicts(&pool, &jobs) .await .expect("batch function insert"); } diff --git a/awa/tests/insert_many_schema_fallback_test.rs b/awa/tests/insert_many_schema_fallback_test.rs index 7c24c954a..7063c3ed7 100644 --- a/awa/tests/insert_many_schema_fallback_test.rs +++ b/awa/tests/insert_many_schema_fallback_test.rs @@ -1,22 +1,18 @@ //! `insert_many` and `insert_many_copy` against a schema without //! `awa.insert_jobs_compat_batch`. //! -//! A binary may run ahead of migration v053. It must keep inserting through -//! the per-row function, start using the batch function once it exists, and -//! recover when the function goes away again. The path a call took is read -//! from `ready_segments`: the per-row function writes one segment per row, the -//! batch function one per lane run. -//! -//! The process-wide answer about the function is part of what is tested, so -//! this binary has one test, against a database of its own. +//! A binary may run ahead of migration v053. Generic `insert_many` keeps using +//! the per-row function; COPY probes its own connection and uses the batch +//! function when installed. Different databases in one process can have +//! different schema versions without aborting their caller's transactions. //! //! Requires a running Postgres instance. //! Run with: `cargo test --package awa --test insert_many_schema_fallback_test` use awa::audited_sql; use awa::model::{ - insert_many, insert_many_copy_from_pool, insert_many_skip_unique_conflicts, migrations, - AwaError, + insert_many, insert_many_copy, insert_many_copy_from_pool, insert_many_skip_unique_conflicts, + migrations, AwaError, }; use awa::{InsertOpts, InsertParams, UniqueOpts}; use awa_testing::setup; @@ -145,23 +141,23 @@ async fn binary_ahead_of_the_migration_falls_back_and_recovers() { "{skipped:?}" ); - // The migration runs while the process is up: the next call still takes - // the per-row path, sees the function, and the one after uses it. + // Generic insert_many stays on the per-row path when the migration runs; + // COPY chooses the batch function on its next call. sqlx::raw_sql(MIGRATION_V053) .execute(&pool) .await .expect("apply v053"); insert_many(&pool, &jobs("fallback_b", 0..3, false)) .await - .expect("call that finds the function"); + .expect("generic insert after migration"); assert_eq!(segments(&pool, "fallback_b").await, 3, "per-row path"); insert_many(&pool, &jobs("fallback_b", 3..6, false)) .await - .expect("call through the batch function"); + .expect("second generic insert after migration"); assert_eq!( segments(&pool, "fallback_b").await, - 4, - "the batch function wrote one segment for its run" + 6, + "generic insert_many keeps its schema-independent per-row path" ); assert_eq!( ready_seqs(&pool, "fallback_b").await, @@ -177,24 +173,23 @@ async fn binary_ahead_of_the_migration_falls_back_and_recovers() { .expect("skip with the batch function"); assert_eq!(seqs(&skipped), vec![6, 7]); - // The function goes away under a process that has seen it: one call fails - // with `undefined_function`, and the next probes again and succeeds. + // Removing the function after a successful batch does not poison the next + // generic or COPY call with a stale process-wide answer. sqlx::query(DROP_BATCH_FUNCTION) .execute(&pool) .await .expect("drop batch function again"); - let failed = insert_many(&pool, &jobs("fallback_c", 0..3, false)) + let mut tx = pool.begin().await.expect("caller transaction"); + insert_many(&mut *tx, &jobs("fallback_c", 0..3, false)) .await - .expect_err("the cached function is gone"); - assert!( - matches!(&failed, AwaError::Database(sqlx::Error::Database(e)) if e.code().as_deref() == Some("42883")), - "{failed:?}" - ); - assert!(ready_seqs(&pool, "fallback_c").await.is_empty()); - insert_many(&pool, &jobs("fallback_c", 0..3, false)) + .expect("generic insert still works"); + insert_many_copy(&mut tx, &jobs("fallback_c", 3..6, false)) + .await + .expect("COPY re-probes its own connection"); + tx.commit() .await - .expect("the call after the failure falls back"); - assert_eq!(segments(&pool, "fallback_c").await, 3, "per-row path"); + .expect("caller transaction remains usable"); + assert_eq!(segments(&pool, "fallback_c").await, 6, "per-row paths"); pool.close().await; sqlx::query(audited_sql(format!( @@ -204,3 +199,79 @@ async fn binary_ahead_of_the_migration_falls_back_and_recovers() { .await .expect("drop scratch database"); } + +/// Availability learned from one database must never select SQL for another +/// database. Both paths join the caller's transaction, including its rollback. +#[tokio::test] +async fn mixed_schema_databases_do_not_abort_caller_transactions() { + let current = setup::TestDatabase::canonical().await; + let older = setup::TestDatabase::canonical().await; + for db in [¤t, &older] { + setup::activate_queue_storage(db.pool()).await; + sqlx::query("CREATE TABLE application_writes (id bigint PRIMARY KEY)") + .execute(db.pool()) + .await + .expect("create application table"); + } + sqlx::query(DROP_BATCH_FUNCTION) + .execute(older.pool()) + .await + .expect("older database has no batch function"); + + // This call previously seeded the shared cache with Present. + insert_many_skip_unique_conflicts(current.pool(), &jobs("mixed_warm", 0..2, true)) + .await + .expect("batch API on current schema"); + + for (index, db) in [¤t, &older, ¤t].into_iter().enumerate() { + let pool = db.pool(); + let queue = format!("mixed_database_{index}"); + let mut tx = pool.begin().await.expect("caller transaction"); + sqlx::query("INSERT INTO application_writes (id) VALUES ($1)") + .bind(index as i64) + .execute(&mut *tx) + .await + .expect("application write"); + let inserted = insert_many(&mut *tx, &jobs(&queue, 0..3, true)) + .await + .expect("generic insert must use this database's supported SQL"); + assert_eq!(seqs(&inserted), vec![0, 1, 2]); + let copied = insert_many_copy(&mut tx, &jobs(&queue, 2..5, true)) + .await + .expect("COPY must probe this database"); + assert_eq!(seqs(&copied), vec![3, 4], "duplicate skipped"); + let written: i64 = + sqlx::query_scalar("SELECT count(*) FROM application_writes WHERE id = $1") + .bind(index as i64) + .fetch_one(&mut *tx) + .await + .expect("caller transaction was not aborted"); + assert_eq!(written, 1); + tx.commit() + .await + .expect("commit application and jobs together"); + assert_eq!(ready_seqs(pool, &queue).await, vec![0, 1, 2, 3, 4]); + + let mut tx = pool.begin().await.expect("rollback transaction"); + sqlx::query("INSERT INTO application_writes (id) VALUES ($1)") + .bind(index as i64 + 100) + .execute(&mut *tx) + .await + .expect("application write to roll back"); + insert_many(&mut *tx, &jobs(&queue, 5..7, true)) + .await + .expect("generic insert to roll back"); + insert_many_copy(&mut tx, &jobs(&queue, 7..9, true)) + .await + .expect("COPY to roll back"); + tx.rollback().await.expect("roll back caller transaction"); + assert_eq!(ready_seqs(pool, &queue).await, vec![0, 1, 2, 3, 4]); + let rolled_back: i64 = + sqlx::query_scalar("SELECT count(*) FROM application_writes WHERE id = $1") + .bind(index as i64 + 100) + .fetch_one(pool) + .await + .expect("check application rollback"); + assert_eq!(rolled_back, 0); + } +} diff --git a/docs/architecture.md b/docs/architecture.md index e68e9b14a..79d9940df 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -152,7 +152,9 @@ Enqueue is transactional: if the producer's outer transaction rolls back, the jo There are two COPY-shaped producer paths: - Direct queue-storage COPY is the high-throughput path: Rust producers use a configured `QueueStorage::enqueue_params_copy()`, and Python producers use `enqueue_many_copy()`. Each ready or deferred write group uses array-backed INSERT below 2,048 rows and CSV COPY for larger groups. Direct-copy producers must use the same queue-storage configuration as the worker fleet, especially `queue_stripe_count` / `queue_storage_queue_stripe_count`. -- `insert_many_copy()` is the compatibility path. It stages rows with an array-backed INSERT below 2,048 rows and CSV COPY at or above that cutoff, then inserts them through `awa.insert_jobs_compat_batch` (migration v053; each lane's lock is held only for its reservation and the ready-row write, and unique conflicts are skipped in the same statement). On a schema without the function it takes one of two per-row branches. If any staged row has a `unique_key`, every row is replayed through `POSTGRES_INSERT_JOB_SQL` inside a per-row savepoint so SQLSTATE `23505` can skip that duplicate without aborting the batch; that statement itself calls `awa.insert_job_compat()`. An all-non-unique batch uses one lateral `awa.insert_job_compat()` call per staged row without savepoints. Both branches therefore preserve cross-storage behavior. The planned `awa.insert_job()` public capability becomes the clean stable SQL contract after #342 ships its migration and conformance artifacts. +- `insert_many_copy()` is the compatibility path. It stages rows with an array-backed INSERT below 2,048 rows and CSV COPY at or above that cutoff, then inserts them through `awa.insert_jobs_compat_batch` (migration v053; each lane's lock is held only for its reservation and the ready-row write, and unique conflicts are skipped in the same statement). It probes its own connection on every call; on a schema without the function it takes one of two per-row branches. If any staged row has a `unique_key`, every row is replayed through `POSTGRES_INSERT_JOB_SQL` inside a per-row savepoint so SQLSTATE `23505` can skip that duplicate without aborting the batch; that statement itself calls `awa.insert_job_compat()`. An all-non-unique batch uses one lateral `awa.insert_job_compat()` call per staged row without savepoints. Both branches therefore preserve cross-storage behavior. The planned `awa.insert_job()` public capability becomes the clean stable SQL contract after #342 ships its migration and conformance artifacts. + +Generic `insert_many` always uses one statement that calls `awa.insert_job_compat` per row in canonical lane order. Its `PgExecutor` is consumed by that statement, so it cannot probe the connection first; it does not cache another database's schema availability. `insert_many_skip_unique_conflicts` explicitly requires the batch function. Claim is cursor-based rather than heap-scan based: diff --git a/docs/configuration.md b/docs/configuration.md index 477eb58fb..231537923 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -521,7 +521,7 @@ Direct-copy producers must use the same queue-storage routing config as the work `insert_many_copy()` is the compatibility insert API. It is still useful when a caller needs the canonical insert surface, but in queue-storage mode it routes through the compatibility function rather than being the primary producer fast path. -The Rust compatibility inserts differ in how they treat a unique-key conflict. `insert_many` fails the whole batch with a unique violation (SQLSTATE `23505`). `insert_many_skip_unique_conflicts` inserts the rest of the batch and returns only the rows it inserted, in input order, so a producer that replays work does not have to insert the batch again one job at a time (each of those inserts takes the lane lock separately, which on a busy lane is slower than the batch itself). `insert_many_copy` also skips conflicting jobs, and is what Python's `insert_many_copy()` calls; Python has no separate skip function because that is already its behaviour. `insert_many_skip_unique_conflicts` needs migration v053; the other two use `awa.insert_jobs_compat_batch` when the schema has it and the per-row function when it does not. +The Rust compatibility inserts differ in how they treat a unique-key conflict. `insert_many` fails the whole batch with a unique violation (SQLSTATE `23505`). `insert_many_skip_unique_conflicts` inserts the rest of the batch and returns only the rows it inserted, in input order, so a producer that replays work does not have to insert the batch again one job at a time (each of those inserts takes the lane lock separately, which on a busy lane is slower than the batch itself). `insert_many_copy` also skips conflicting jobs, and is what Python's `insert_many_copy()` calls; Python has no separate skip function because that is already its behaviour. `insert_many_skip_unique_conflicts` needs migration v053. `insert_many_copy` probes its own connection on every call and uses `awa.insert_jobs_compat_batch` when installed, otherwise the per-row function. Generic `insert_many` always uses the per-row function in one statement, so a process can write to databases at different migration levels without assuming they share a schema. ### Terminal count rollup diff --git a/docs/upgrade-0.6-to-0.7.md b/docs/upgrade-0.6-to-0.7.md index de44cbfab..0c6315572 100644 --- a/docs/upgrade-0.6-to-0.7.md +++ b/docs/upgrade-0.6-to-0.7.md @@ -255,8 +255,8 @@ External migration runners apply the complete `awa migrate --sql --from 51 ## v053: batch producer insert -v053 adds `awa.insert_jobs_compat_batch`, the function `insert_many` and -`insert_many_copy` call. It is one `CREATE OR REPLACE FUNCTION`: no table DDL, +v053 adds `awa.insert_jobs_compat_batch`, the function `insert_many_copy` and +`insert_many_skip_unique_conflicts` call. It is one `CREATE OR REPLACE FUNCTION`: no table DDL, no scan, no lock beyond the catalog, so it applies instantly under live load. `awa.insert_job_compat` is unchanged, and binaries before v053 keep calling it; both paths take the same per-lane reservation lock, so producers on either @@ -266,14 +266,7 @@ The runtime role needs `EXECUTE` on the new function; the [default privileges](security/database-roles.md#runtime-grants) cover functions the migrator creates. -A 0.7 binary running before the migration keeps inserting: `insert_many` and -`insert_many_copy` look for the function in the catalog, use the per-row -function until it exists, and switch to the batch function without a restart -once it does. `insert_many_skip_unique_conflicts` needs the function and returns -a validation error before the migration. The per-row and batch paths take the -same lane lock, so a fleet that mixes them keeps each batch contiguous and in -order. External migration runners apply the `awa migrate --sql --from 52 --to -53` bundle. +A 0.7 binary running before the migration keeps inserting. `insert_many_copy` probes its own connection on every call, uses the per-row function until the batch function exists, and switches without a restart. Generic `insert_many` always uses the per-row function in one statement, so one process can write to databases at different migration levels without aborting a caller transaction on an unavailable function. `insert_many_skip_unique_conflicts` needs the function and returns a validation error before the migration. The per-row and batch paths take the same lane lock, so a fleet that mixes them keeps each batch contiguous and in order. External migration runners apply the `awa migrate --sql --from 52 --to 53` bundle. ## The one gate diff --git a/skills/awa-jobs/SKILL.md b/skills/awa-jobs/SKILL.md index 3895bf63a..e28f20704 100644 --- a/skills/awa-jobs/SKILL.md +++ b/skills/awa-jobs/SKILL.md @@ -124,10 +124,7 @@ low-priority work cannot starve indefinitely. **Unique jobs** deduplicate on a BLAKE3 key over kind + optionally queue + args + a time-period bucket. Defaults: dedup by args, not by queue. Conflict handling -depends on the API: a single-row `insert` / `insert_with` and the row-by-row -`insert_many` **raise `AwaError::UniqueConflict`** (Python raises the -corresponding error) on a duplicate — you must handle it, do not assume a silent -no-op. Only the COPY bulk path (`insert_many_copy`) silently skips duplicates. +depends on the API: a single-row `insert` / `insert_with` raises `AwaError::UniqueConflict` (Python raises the corresponding error), and `insert_many` fails the whole batch with SQLSTATE `23505`. `insert_many_copy` skips duplicates on every supported schema; Rust's `insert_many_skip_unique_conflicts` also skips them but requires migration v053. Both return only inserted rows, in input order. Generic `insert_many` always uses one per-row SQL statement; COPY probes its own connection and uses the batch function when installed. Cancel without storing the id via `cancel_by_unique_key(kind, queue=, args=, period_bucket=)` — the components must match those used at insert. It cancels the oldest live job holding the key. On queue storage, a `by_queue` key is From 459f0bcd7d8d8351b96715ec5a2219e189eba58e Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Fri, 6 Nov 2026 21:18:39 +1300 Subject: [PATCH 44/48] docs(insert): clarify which producer paths use batch inserts --- awa-model/migrations/v053_insert_jobs_batch_compat.sql | 10 +++++----- docs/troubleshooting.md | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/awa-model/migrations/v053_insert_jobs_batch_compat.sql b/awa-model/migrations/v053_insert_jobs_batch_compat.sql index 8463a9ba6..034477373 100644 --- a/awa-model/migrations/v053_insert_jobs_batch_compat.sql +++ b/awa-model/migrations/v053_insert_jobs_batch_compat.sql @@ -1,5 +1,6 @@ -- v053: Batch producer insert that holds each enqueue lane lock only for the -- lane write. +-- Tracking: https://github.com/hardbyte/awa/pull/635 -- -- awa.insert_job_compat takes the (queue, priority, shard) lane lock in -- reserve_enqueue_seq on a batch's first row and, because the lock is @@ -22,11 +23,10 @@ -- N-1 binaries: unchanged. They keep calling awa.insert_job_compat, whose -- definition this migration does not touch, and the two paths share the lane -- lock, so producers on either version serialise exactly as before. --- Binaries that know the function: insert_many and insert_many_copy look for it --- in the catalog and use the per-row function until it exists, so they run --- unchanged before this migration and pick the function up after it, without a --- restart. insert_many_skip_unique_conflicts needs it and reports a schema --- without it. +-- Binaries that know the function: insert_many_copy probes its own connection +-- and uses the per-row function until it exists, picking up the migration +-- without a restart. Generic insert_many always uses the per-row function; +-- insert_many_skip_unique_conflicts requires the batch function. -- External runners: apply this file; nothing else reads it. -- Live load: one CREATE OR REPLACE FUNCTION, no table DDL. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 67bcc18df..d9e7fc7f2 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -186,7 +186,7 @@ Reading them together separates the two usual failure modes: **1. Producer is going through the compatibility insert path.** -`insert_many_copy_from_pool` / `client.insert_many_copy` routes every row through `awa.insert_job_compat()` once per row. On any database with non-trivial per-statement latency (auth-proxy hop, managed Postgres, network) the per-row function call dominates — measured at ~100–150 ms per row through a Cloud SQL Auth Proxy in staging, which caps a single producer at ~7 rows/sec regardless of batch or chunk size. +Before migration v053, `insert_many_copy_from_pool` / `client.insert_many_copy` calls `awa.insert_job_compat()` per staged row. With unique jobs, per-row savepoints add database round trips that can dominate behind a proxy or on managed PostgreSQL. After migration, COPY probes its own connection and uses the batch function. Generic `insert_many` retains its per-row statement on every supported schema. Switch the producer to the direct queue-storage COPY entry point: @@ -445,12 +445,12 @@ Symptoms: Cause: - on queue storage every enqueue holds a transaction-scoped advisory lock on its `(queue, priority, shard)` lane until it commits, so concurrent producers for one lane run one at a time; a lane's ceiling is a batch's rows divided by the time the lock is held -- from migration v053, `insert_many` and `insert_many_copy` hold the lock across the lane write only, a few milliseconds for a 185-row batch; before it, the lock was held while every row of the batch was processed +- from migration v053, `insert_many_copy` and `insert_many_skip_unique_conflicts` prepare the batch before taking lane locks; generic `insert_many` continues to hold the lane while subsequent rows are processed - maintenance promotion moves due scheduled and retryable jobs into the lane under the same lock; a promotion batch is one transaction across every queue it touches, and the leader runs its branches one at a time, so a batch parked behind a hot lane delays the due jobs of other queues in that batch and the leader's other branches. Rescue itself does not take the lane lock; it writes retryable rows that promotion moves later Fix: -- run `awa migrate`: producers on the per-row path (a schema before v053) hold the lane for the whole batch, and switch to the batch function as soon as it exists +- run `awa migrate` and use `insert_many_copy` or `insert_many_skip_unique_conflicts` for the batch function; generic `insert_many` stays on its compatible per-row path - when `insert_many` fails on a unique conflict, retry with `insert_many_skip_unique_conflicts` rather than inserting the batch again row by row: each single-row insert queues for the lane separately - raise `awa.queue_meta.enqueue_shards` for a queue whose producers still saturate one lane, accepting partitioned rather than strict FIFO ([ADR-025](adr/025-sharded-enqueue-heads.md)) @@ -459,7 +459,7 @@ Fix: Cause: - on queue storage every enqueue holds a transaction-scoped advisory lock on its `(queue, priority, shard)` lane until the transaction commits; the `DETAIL` names two 64-bit advisory keys, and two transactions that took lanes in opposite orders hold one each and wait on the other's -- `insert_many`, `insert_many_copy` and the `QueueStorage` batch enqueues take their lane locks in one canonical order, `(queue, priority, shard)` ascending with queue names compared bytewise, so batches never deadlock with each other +- `insert_many`, `insert_many_copy` and the `QueueStorage` batch enqueues take their lane locks in one canonical order, `(queue, priority, shard)` ascending with queue names compared bytewise, avoiding deadlocks caused by opposing lane-lock order; uniqueness and other application locks can still form cycles - a transaction that enqueues with several separate statements (`insert` per job, handler-staged follow-ups, `Transaction.insert` in a loop) takes locks in statement order and can deadlock against a batch or another such transaction that touches the same lanes in a different order Fix: From a77eab64ae8ddac849d536df09ab2d409f5b72fe Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Sat, 7 Nov 2026 00:20:45 +1300 Subject: [PATCH 45/48] Keep queue history accurate across worker lifecycles Consume a departing worker's final published counters once and preserve unknown coverage when a participant disappears. Attribute striped job outcomes to the originating dispatcher's counter handle while keeping physical job identities intact. Keep receiver-only callback rates unknown in the overview so its hourly fallback still applies. Validation: required Rust formatting/Clippy/workspace build;14 history unit tests; striped complete/retry/fail/park regression RED then GREEN on PostgreSQL17/18; existing history cases on both majors;55 frontend tests, frontend typecheck/build and operations skill validation. --- CHANGELOG.md | 5 + awa-model/src/queue_history.rs | 171 +++++++++++++++--- .../frontend/src/__tests__/operations.test.ts | 16 +- awa-ui/frontend/src/lib/operations.ts | 9 +- awa-worker/src/dispatcher.rs | 2 + awa-worker/src/executor.rs | 8 +- awa/tests/queue_history_test.rs | 155 +++++++++++++++- docs/configuration.md | 6 +- skills/awa-operations/SKILL.md | 5 + 9 files changed, 334 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c25b622b2..7abbdaa22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -155,6 +155,11 @@ for each step. ### Fixed +- Queue history retains a departing worker's final published counters once, + keeps missing intervals unknown, and attributes striped queue outcomes to + their logical dispatcher. The overview no longer treats unknown callback + rates as zero when no worker runtime serves the queue. + - **A running job could be both finished and retried.** If a job completed, failed or was retried while stale-heartbeat or deadline rescue was examining it, rescue could miss that outcome and also send the job back for a retry, diff --git a/awa-model/src/queue_history.rs b/awa-model/src/queue_history.rs index fd133704c..a65f9661a 100644 --- a/awa-model/src/queue_history.rs +++ b/awa-model/src/queue_history.rs @@ -11,10 +11,11 @@ //! runtimes that predate the counters, and when the interval since the last //! sample is not about a minute. Completed, failed and retried counts are also //! unknown wherever a callback may have resolved a parked job, since that can -//! happen in any process. A runtime that dies between samples loses at most -//! its last snapshot interval of counts. +//! happen in any process. A departing runtime contributes its final published +//! counters once; its unpublished tail is lost. A participant disappearing +//! without a final reading makes that interval unknown. -use std::collections::{BTreeMap, BTreeSet, HashMap}; +use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use chrono::{DateTime, TimeDelta, Utc}; use serde::Serialize; @@ -87,7 +88,7 @@ impl QueueFlow { #[derive(Debug, Default)] pub struct CounterBaseline { sampled_at: Option>, - readings: HashMap<(Uuid, String), QueueOutcomeCounters>, + readings: HashMap<(Uuid, String), Option>, waiting_external: HashMap, } @@ -103,8 +104,10 @@ pub struct QueueCoverage { } impl CounterBaseline { - /// Difference the live runtimes' counters against the previous sample and - /// advance the baseline to `now`. + /// Difference participating runtimes' counters against the previous sample. + /// A departing runtime's final published snapshot contributes once, without + /// counting it as live capacity. A participant missing entirely makes the + /// interval unknown rather than turning its unobserved work into zero. pub fn advance( &mut self, now: DateTime, @@ -116,9 +119,20 @@ impl CounterBaseline { ((now - sampled_at) - TimeDelta::minutes(1)).abs() <= MINUTE_TOLERANCE }); let mut readings = HashMap::new(); + let mut observed = HashSet::new(); - for instance in instances.iter().filter(|instance| !instance.stale) { + for instance in instances { for snapshot in &instance.queues { + let key = (instance.instance_id, snapshot.queue.clone()); + if instance.stale + && !self.readings.contains_key(&key) + && self.sampled_at.is_none_or(|at| instance.last_seen_at < at) + { + // This final snapshot was already consumed, or predates our + // first baseline. It cannot contribute to this interval. + continue; + } + observed.insert(key.clone()); let entry = coverage .entry(snapshot.queue.clone()) @@ -127,20 +141,24 @@ impl CounterBaseline { live_workers: 0, capacity: Some(0), }); - entry.live_workers += 1; - entry.capacity = match (entry.capacity, snapshot.config.mode) { - (Some(total), QueueRuntimeMode::HardReserved) => { - Some(total + i64::from(snapshot.config.max_workers.unwrap_or(0))) - } - _ => None, - }; + if !instance.stale { + entry.live_workers += 1; + entry.capacity = match (entry.capacity, snapshot.config.mode) { + (Some(total), QueueRuntimeMode::HardReserved) => { + Some(total + i64::from(snapshot.config.max_workers.unwrap_or(0))) + } + _ => None, + }; + // Retain missing counters too: disappearance of an older + // participant cannot make the next interval known zero. + readings.insert(key.clone(), snapshot.counters); + } let Some(current) = snapshot.counters else { unknown.insert(snapshot.queue.clone()); continue; }; - let key = (instance.instance_id, snapshot.queue.clone()); - let previous = self.readings.get(&key); + let previous = self.readings.get(&key).and_then(Option::as_ref); let started_since_last_sample = self .sampled_at .is_some_and(|sampled_at| instance.started_at >= sampled_at); @@ -151,13 +169,13 @@ impl CounterBaseline { } else if let Some(flow) = entry.flow.as_mut() { flow.add(QueueFlow::between(previous, ¤t)); } - readings.insert(key, current); } } + for key in self.readings.keys().filter(|key| !observed.contains(*key)) { + unknown.insert(key.1.clone()); + } for queue in unknown { - if let Some(entry) = coverage.get_mut(&queue) { - entry.flow = None; - } + coverage.entry(queue).or_default().flow = None; } self.sampled_at = Some(now); self.readings = readings; @@ -247,7 +265,9 @@ pub fn build_sample( .iter() .map(|queue| { let covered = coverage.get(&queue.queue); - let flow = covered.and_then(|c| c.flow); + // No participant over this interval is a measured zero. A coverage + // entry with no flow is unknown, even if no workers remain live. + let flow = covered.map_or(Some(QueueFlow::default()), |c| c.flow); QueueHistoryRow { queue: queue.queue.clone(), bucket, @@ -265,20 +285,11 @@ pub fn build_sample( retried: flow.map(|f| f.retried), rate_limited: flow.map(|f| f.rate_limited), claim_wait_ms: flow.map(|f| f.claim_wait_ms), - // A queue nobody serves has no unknown counts: nothing ran. live_workers: covered.map_or(0, |c| c.live_workers), capacity: covered.and_then(|c| c.capacity), } }) .map(|mut row| { - if row.live_workers == 0 { - row.claimed = Some(0); - row.completed = Some(0); - row.failed_attempts = Some(0); - row.retried = Some(0); - row.rate_limited = Some(0); - row.claim_wait_ms = Some(0); - } if callback_queues.contains(&row.queue) { row.completed = None; row.failed_attempts = None; @@ -581,6 +592,106 @@ mod tests { assert_eq!(coverage["email"].flow.unwrap().claimed, 3); } + #[test] + fn departing_runtime_contributes_its_final_snapshot_once() { + let mut baseline = CounterBaseline::default(); + baseline.advance( + at(60), + &[ + instance(1, at(0), vec![("email", Some(counters(5, 5)), HARD)]), + instance(2, at(0), vec![("email", Some(counters(10, 10)), HARD)]), + ], + ); + let mut departed = instance(2, at(0), vec![("email", Some(counters(18, 18)), HARD)]); + departed.last_seen_at = at(100); + departed.stale = true; + let coverage = baseline.advance( + at(120), + &[ + instance(1, at(0), vec![("email", Some(counters(10, 10)), HARD)]), + departed.clone(), + ], + ); + assert_eq!(coverage["email"].flow.unwrap().completed, 13); + assert_eq!(coverage["email"].live_workers, 1); + assert_eq!(coverage["email"].capacity, Some(8)); + + let coverage = baseline.advance( + at(180), + &[ + instance(1, at(0), vec![("email", Some(counters(11, 11)), HARD)]), + departed, + ], + ); + assert_eq!(coverage["email"].flow.unwrap().completed, 1); + } + + #[test] + fn a_runtime_that_starts_and_dies_between_samples_contributes_once() { + let mut baseline = CounterBaseline::default(); + baseline.advance(at(60), &[]); + let mut departed = instance(2, at(90), vec![("email", Some(counters(7, 6)), HARD)]); + departed.last_seen_at = at(100); + departed.stale = true; + let coverage = baseline.advance(at(120), &[departed.clone()]); + assert_eq!(coverage["email"].flow.unwrap().completed, 6); + assert_eq!(coverage["email"].live_workers, 0); + assert_eq!(coverage["email"].capacity, Some(0)); + assert!(baseline.advance(at(180), &[departed]).is_empty()); + } + + #[test] + fn a_missing_participant_makes_the_interval_unknown_even_with_no_live_workers() { + let mut baseline = CounterBaseline::default(); + baseline.advance( + at(60), + &[instance( + 1, + at(0), + vec![("email", Some(counters(5, 5)), HARD)], + )], + ); + let coverage = baseline.advance(at(120), &[]); + assert_eq!(coverage["email"].flow, None); + let (rows, _) = build_sample( + at(120), + &[overview("email", 0, 0)], + &coverage, + &BTreeSet::new(), + &[], + ); + assert_eq!(rows[0].live_workers, 0); + assert_eq!(rows[0].claimed, None); + assert_eq!(rows[0].completed, None); + assert!(baseline.advance(at(180), &[]).is_empty()); + } + + #[test] + fn a_departed_runtime_without_counters_cannot_turn_into_known_zero() { + let mut baseline = CounterBaseline::default(); + baseline.advance( + at(60), + &[instance( + 1, + at(0), + vec![("email", Some(counters(5, 5)), HARD)], + )], + ); + let mut departed = instance(1, at(0), vec![("email", None, HARD)]); + departed.last_seen_at = at(100); + departed.stale = true; + let coverage = baseline.advance(at(120), &[departed]); + assert_eq!(coverage["email"].flow, None); + let (rows, _) = build_sample( + at(120), + &[overview("email", 0, 0)], + &coverage, + &BTreeSet::new(), + &[], + ); + assert_eq!(rows[0].completed, None); + } + #[test] fn new_instances_count_only_if_they_started_after_the_baseline() { let mut baseline = CounterBaseline::default(); diff --git a/awa-ui/frontend/src/__tests__/operations.test.ts b/awa-ui/frontend/src/__tests__/operations.test.ts index 3e787a226..81a49f6de 100644 --- a/awa-ui/frontend/src/__tests__/operations.test.ts +++ b/awa-ui/frontend/src/__tests__/operations.test.ts @@ -163,15 +163,25 @@ describe("totalRate", () => { expect(total).toBeNull(); }); - it("ignores unknown rates on queues nobody serves", () => { + it("keeps receiver-only completion rates unknown without worker runtimes", () => { const total = totalRate( report([ assessment("a", 0, { completed_per_minute: 10 }), - assessment("orphan", 0, {}, 0), + assessment("callback-receiver", 0, {}, 0), ]), (flow) => flow.completed_per_minute, ); - expect(total).toBe(10); + expect(total).toBeNull(); + }); + + it("includes a known zero on an idle queue without worker runtimes", () => { + expect(totalRate( + report([ + assessment("active", 0, { completed_per_minute: 10 }), + assessment("idle", 0, { completed_per_minute: 0 }, 0), + ]), + (flow) => flow.completed_per_minute, + )).toBe(10); }); }); diff --git a/awa-ui/frontend/src/lib/operations.ts b/awa-ui/frontend/src/lib/operations.ts index 4e508a548..041820e34 100644 --- a/awa-ui/frontend/src/lib/operations.ts +++ b/awa-ui/frontend/src/lib/operations.ts @@ -113,8 +113,8 @@ export function totalBacklog( return totals; } -/** Sum a per-queue rate across the report, or null when any queue with - * live workers has it unknown: a partial total would read as a real drop. */ +/** Sum a per-queue rate, or null when any queue's rate is unknown. A callback + * receiver can complete work without worker runtimes; missing coverage is not zero. */ export function totalRate( report: HealthReport | undefined, pick: (flow: QueueAssessment["flow"]) => number | null, @@ -123,10 +123,7 @@ export function totalRate( let total = 0; for (const queue of report.queues) { const value = pick(queue.flow); - if (value === null) { - if (queue.live_workers > 0) return null; - continue; - } + if (value === null) return null; total += value; } return total; diff --git a/awa-worker/src/dispatcher.rs b/awa-worker/src/dispatcher.rs index d0b1a6b59..280e9bc67 100644 --- a/awa-worker/src/dispatcher.rs +++ b/awa-worker/src/dispatcher.rs @@ -760,6 +760,7 @@ impl Dispatcher { job, queue_storage_claim: None, queue_storage_unique_states: None, + queue_counters: self.executor.queue_counters(&self.queue), }) .collect(), Err(err) => { @@ -805,6 +806,7 @@ impl Dispatcher { job: claimed.job, queue_storage_claim: Some(claimed.claim), queue_storage_unique_states: claimed.unique_states, + queue_counters: self.executor.queue_counters(&self.queue), }) .collect(), Err(err) => { diff --git a/awa-worker/src/executor.rs b/awa-worker/src/executor.rs index c3af818b7..6fcbf51c8 100644 --- a/awa-worker/src/executor.rs +++ b/awa-worker/src/executor.rs @@ -212,6 +212,9 @@ pub(crate) struct DispatchedJob { pub job: JobRow, pub queue_storage_claim: Option, pub queue_storage_unique_states: Option, + /// The originating dispatcher's logical queue; `job.queue` can be a + /// physical stripe and must retain that identity for storage operations. + pub queue_counters: Option>, } /// Manages job execution — spawns worker futures and tracks in-flight jobs. @@ -300,6 +303,7 @@ impl JobExecutor { let job = dispatched.job; let queue_storage_claim = dispatched.queue_storage_claim; let queue_storage_unique_states = dispatched.queue_storage_unique_states; + let counters = dispatched.queue_counters; let pool = self.pool.clone(); let workers = self.workers.clone(); let lifecycle_handlers = self.lifecycle_handlers.clone(); @@ -318,7 +322,6 @@ impl JobExecutor { let job_run_lease = job.run_lease; let job_kind = job.kind.clone(); let job_queue = job.queue.clone(); - let counters = self.queue_counters(&job_queue); let span = info_span!( "job.execute", @@ -3562,6 +3565,7 @@ mod tests { job, queue_storage_claim: None, queue_storage_unique_states: None, + queue_counters: None, }; executor .execute_task(dispatched(first), Arc::new(AtomicBool::new(false))) @@ -3640,6 +3644,7 @@ mod tests { job, queue_storage_claim: None, queue_storage_unique_states: None, + queue_counters: None, }; executor .execute_task(dispatched(first), Arc::new(AtomicBool::new(false))) @@ -3735,6 +3740,7 @@ mod tests { job, queue_storage_claim: None, queue_storage_unique_states: None, + queue_counters: None, }; let mut jobs = jobs.into_iter(); for job in jobs.by_ref().take(4) { diff --git a/awa/tests/queue_history_test.rs b/awa/tests/queue_history_test.rs index fc2c5fc1c..4abb18f42 100644 --- a/awa/tests/queue_history_test.rs +++ b/awa/tests/queue_history_test.rs @@ -4,8 +4,11 @@ use awa::model::admin; use awa::model::queue_history::{self, FleetHistoryRow, QueueHistoryRow}; -use awa::model::{insert_with, InsertOpts}; -use awa::{Client, JobArgs, JobContext, JobError, JobResult, QueueConfig, Worker}; +use awa::model::{insert, insert_with, InsertOpts}; +use awa::{ + Client, JobArgs, JobContext, JobError, JobResult, JobState, QueueConfig, QueueStorage, + QueueStorageConfig, Worker, +}; use awa_testing::TestClient; use chrono::{DurationRound, TimeDelta, Utc}; use serde::{Deserialize, Serialize}; @@ -47,6 +50,154 @@ impl Worker for HistoryProbeWorker { } } +#[derive(Debug, Serialize, Deserialize, JobArgs)] +struct StripedOutcome { + action: String, +} + +struct StripedOutcomeWorker; + +#[async_trait::async_trait] +impl Worker for StripedOutcomeWorker { + fn kind(&self) -> &'static str { + "striped_outcome" + } + + async fn perform(&self, ctx: &JobContext) -> Result { + assert!( + ctx.job.queue.starts_with("qh_striped#"), + "physical queue identity must reach the handler unchanged" + ); + match ctx.job.args["action"].as_str().unwrap() { + "retry" if ctx.job.attempt == 1 => Ok(JobResult::RetryAfter(Duration::from_millis(10))), + "fail" => Err(JobError::Terminal("history probe".into())), + "park" => Ok(JobResult::WaitForCallback( + ctx.register_callback(Duration::from_secs(300)) + .await + .map_err(JobError::retryable)?, + )), + _ => Ok(JobResult::Completed), + } + } +} + +#[tokio::test] +async fn test_striped_queue_snapshots_record_every_outcome_under_the_logical_queue() { + let _guard = LOCK.lock().await; + let client = setup().await; + let pool = client.pool(); + let queue = "qh_striped"; + let config = QueueStorageConfig { + schema: "qh_striped_counters".into(), + queue_slot_count: 4, + lease_slot_count: 2, + claim_slot_count: 2, + queue_stripe_count: 2, + lease_claim_receipts: true, + }; + let store = QueueStorage::new(config.clone()).unwrap(); + // This regression pins its backend instead of relying on fresh-install + // auto-finalization, which correctly refuses another test's canonical jobs. + store.install(pool).await.unwrap(); + store.reset(pool).await.unwrap(); + assert_eq!( + QueueStorage::active_schema(pool).await.unwrap().as_deref(), + Some(store.schema()) + ); + let params: Vec<_> = ["complete", "retry", "fail", "park"] + .into_iter() + .map(|action| { + insert::params_with( + &StripedOutcome { + action: action.into(), + }, + InsertOpts { + queue: queue.into(), + ..Default::default() + }, + ) + .unwrap() + }) + .collect(); + store.enqueue_params_batch(pool, ¶ms).await.unwrap(); + let jobs: Vec<(i64, String)> = sqlx::query_as( + "SELECT job_id, args->>'action' FROM qh_striped_counters.ready_entries ORDER BY job_id", + ) + .fetch_all(pool) + .await + .unwrap(); + assert_eq!(jobs.len(), 4); + + let runtime = Client::builder(pool.clone()) + .queue( + queue, + QueueConfig { + max_workers: 4, + poll_interval: Duration::from_millis(25), + ..QueueConfig::default() + }, + ) + .queue_storage(config, Duration::from_secs(60), Duration::from_secs(60)) + .claim_rotate_interval(Duration::from_secs(60)) + .queue_history_retention(Duration::ZERO) + .promote_interval(Duration::from_millis(25)) + .runtime_snapshot_interval(Duration::from_millis(100)) + .register_worker(StripedOutcomeWorker) + .build() + .unwrap(); + runtime.start().await.unwrap(); + let deadline = tokio::time::Instant::now() + Duration::from_secs(10); + loop { + let mut settled = true; + for (id, action) in &jobs { + let wanted = match action.as_str() { + "fail" => JobState::Failed, + "park" => JobState::WaitingExternal, + _ => JobState::Completed, + }; + settled &= store + .load_job(pool, *id) + .await + .unwrap() + .is_some_and(|job| job.state == wanted); + } + if settled { + break; + } + assert!( + tokio::time::Instant::now() < deadline, + "striped outcomes did not settle" + ); + tokio::time::sleep(Duration::from_millis(25)).await; + } + // Read a snapshot published after every durable outcome was observed, + // rather than waiting for the counter values that this regression tests. + let settled_at = Utc::now(); + let counters = loop { + let instances = admin::list_runtime_instances(pool).await.unwrap(); + if let Some(counters) = instances + .iter() + .filter(|instance| instance.last_seen_at >= settled_at) + .flat_map(|instance| &instance.queues) + .find(|snapshot| snapshot.queue == queue) + .and_then(|snapshot| snapshot.counters) + { + break counters; + } + assert!( + tokio::time::Instant::now() < deadline, + "no post-outcome runtime snapshot" + ); + tokio::time::sleep(Duration::from_millis(25)).await; + }; + runtime.shutdown(Duration::from_secs(2)).await; + assert_eq!(counters.claimed, 5); + assert_eq!(counters.completed, 2); + assert_eq!(counters.failed, 1); + assert_eq!(counters.retried, 1); + assert_eq!(counters.parked, 1); +} + #[tokio::test] async fn test_history_rows_round_trip_and_prune() { let _guard = LOCK.lock().await; diff --git a/docs/configuration.md b/docs/configuration.md index f356066af..d2cf5823a 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -797,7 +797,11 @@ unknown for a minute in which a callback could have resolved one of the queue's jobs (a job parked for a callback during it, or was already waiting at its start), because callbacks resolve in whichever process receives them; the UI then shows the hourly completion average instead. A runtime that dies -between samples loses at most its last snapshot interval of counts. +between samples contributes its final published counters once; only its +unpublished snapshot tail is lost. If a participating runtime disappears +without a final reading, the affected interval is unknown, even when no +workers remain live. The overview also keeps receiver-only callback outcome +rates unknown and uses its documented hourly fallback. `awa serve` reads the tables, so every UI replica shows the same history and history survives UI restarts. On a schema before v051, or until a current diff --git a/skills/awa-operations/SKILL.md b/skills/awa-operations/SKILL.md index b45a837ee..85f2c8af4 100644 --- a/skills/awa-operations/SKILL.md +++ b/skills/awa-operations/SKILL.md @@ -376,6 +376,11 @@ waiting over a minute with no live worker serving it, or nothing running or claimed; read its **Limited by** (no workers, rate limit, worker capacity, spare capacity) before changing anything. +Missing counter coverage is a gap, including a worker disappearing without a +final snapshot or callbacks completing without worker runtimes. Do not read a +gap as zero throughput; the overview uses its hourly fallback when current +completion rates are unknown. + ## Before You Finish A Change 1. Confirm the resolved target and that you are on the intended context. From 934d0f6539123975a56408150c79ba1e948ee1f7 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Sat, 7 Nov 2026 00:25:11 +1300 Subject: [PATCH 46/48] Replay statistics migration explicitly in grant regression --- awa/tests/statistics_refresh_test.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/awa/tests/statistics_refresh_test.rs b/awa/tests/statistics_refresh_test.rs index bc9ac8525..44fcca251 100644 --- a/awa/tests/statistics_refresh_test.rs +++ b/awa/tests/statistics_refresh_test.rs @@ -506,10 +506,9 @@ async fn execute_is_limited_to_roles_that_may_maintain_queue_storage() { .expect_err("write privileges alone do not grant EXECUTE"), "permission denied for function", ); - for (_, _, sql) in migrations::migration_sql_range( - migrations::CURRENT_VERSION - 1, - migrations::CURRENT_VERSION, - ) { + // Replay the statistics migration itself: later migrations do not repeat + // its EXECUTE grants for a runtime role created after initial migration. + for (_, _, sql) in migrations::migration_sql_range(53, 54) { run_sql(owner_pool, sql) .await .expect("re-run the migration"); From 97f8ed666e473dcc9237ac25caac910d9fbcbf98 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Sat, 7 Nov 2026 02:34:53 +1300 Subject: [PATCH 47/48] Gate enqueue ordering tests on actual reservation locks --- awa/tests/enqueue_lane_lock_order_test.rs | 46 +++++++++++++---------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/awa/tests/enqueue_lane_lock_order_test.rs b/awa/tests/enqueue_lane_lock_order_test.rs index 51ec9a4ac..866268f5e 100644 --- a/awa/tests/enqueue_lane_lock_order_test.rs +++ b/awa/tests/enqueue_lane_lock_order_test.rs @@ -6,10 +6,11 @@ //! enqueue must take its lane locks in one canonical order: `(queue, priority, //! shard)` ascending, with queue names compared bytewise. //! -//! The deadlock is driven deterministically: a gate lock stalls the +//! The lane-order interleaving is driven deterministically: a gate lock stalls the //! `QueueStorage` batch between its first and second lane, a second producer //! with the lanes in the opposite input order is then observed waiting on the //! first lane's lock through `pg_locks`, and only then is the gate released. +//! A reversed producer parks on the gate and fails the expected first-lane wait. //! //! Requires a running Postgres instance. //! Run with: `cargo test --package awa --test enqueue_lane_lock_order_test -- --nocapture` @@ -103,16 +104,7 @@ async fn reservation_lock_key(pool: &PgPool, queue: &str) -> i64 { .expect("derive reservation lock key") } -/// Key of the advisory lock `QueueStorage` takes while it provisions a lane. -async fn provisioning_lock_key(pool: &PgPool, queue: &str) -> i64 { - sqlx::query_scalar("SELECT hashtextextended($1, 0)") - .bind(format!("awa:{queue}:2:0")) - .fetch_one(pool) - .await - .expect("derive provisioning lock key") -} - -async fn wait_for_advisory_waiter(pool: &PgPool, key: i64) { +async fn wait_for_advisory_waiter(pool: &PgPool, key: i64, pid: i32) { let started = Instant::now(); loop { let waiting: bool = sqlx::query_scalar( @@ -124,10 +116,12 @@ async fn wait_for_advisory_waiter(pool: &PgPool, key: i64) { AND NOT granted AND database = (SELECT oid FROM pg_database WHERE datname = current_database()) AND ((classid::bigint << 32) | objid::bigint) = $1 + AND pid = $2 ) "#, ) .bind(key) + .bind(pid) .fetch_one(pool) .await .expect("poll pg_locks"); @@ -136,7 +130,7 @@ async fn wait_for_advisory_waiter(pool: &PgPool, key: i64) { } assert!( started.elapsed() < WAIT_DEADLINE, - "no backend started waiting for advisory lock {key}" + "backend {pid} did not start waiting for advisory lock {key}" ); tokio::time::sleep(Duration::from_millis(10)).await; } @@ -164,21 +158,26 @@ async fn assert_producer_does_not_deadlock_with_queue_storage_batch(producer: Pr provision_lanes(&pool, &config, &[&first_queue, &second_queue]).await; let first_reservation = reservation_lock_key(&pool, &first_queue).await; - let second_provisioning = provisioning_lock_key(&pool, &second_queue).await; + let second_reservation = reservation_lock_key(&pool, &second_queue).await; // The gate stalls the QueueStorage batch after it has reserved its first // lane and before it reaches its second. let mut gate = pool.begin().await.expect("begin gate transaction"); sqlx::query("SELECT pg_advisory_xact_lock($1)") - .bind(second_provisioning) + .bind(second_reservation) .execute(&mut *gate) .await .expect("take gate lock"); - // A fresh store has an empty lane cache, so it provisions each lane under - // the lock the gate holds. + // Both folded and fallback enqueues reserve these pre-provisioned lanes. + // The folded path skips provisioning locks when their heads already exist. + let storage_pool = setup::pool(1).await; + let storage_pid: i32 = sqlx::query_scalar("SELECT pg_backend_pid()") + .fetch_one(&storage_pool) + .await + .expect("storage backend PID"); let storage_batch = { - let pool = pool.clone(); + let pool = storage_pool.clone(); let config = config.clone(); let jobs = jobs_for(Producer::InsertMany, &[&first_queue, &second_queue]); tokio::spawn(async move { @@ -186,7 +185,7 @@ async fn assert_producer_does_not_deadlock_with_queue_storage_batch(producer: Pr store.enqueue_params_batch(&pool, &jobs).await }) }; - wait_for_advisory_waiter(&pool, second_provisioning).await; + wait_for_advisory_waiter(&pool, second_reservation, storage_pid).await; // The competing producer lists the lanes in the opposite order, and so // reaches for the first lane's reservation lock, which the batch holds. @@ -195,11 +194,16 @@ async fn assert_producer_does_not_deadlock_with_queue_storage_batch(producer: Pr .iter() .map(|params| params.opts.queue.clone()) .collect(); + let competing_pool = setup::pool(1).await; + let competing_pid: i32 = sqlx::query_scalar("SELECT pg_backend_pid()") + .fetch_one(&competing_pool) + .await + .expect("competing backend PID"); let competing = { - let pool = pool.clone(); + let pool = competing_pool.clone(); tokio::spawn(async move { producer.run(&pool, &competing_jobs).await }) }; - wait_for_advisory_waiter(&pool, first_reservation).await; + wait_for_advisory_waiter(&pool, first_reservation, competing_pid).await; gate.commit().await.expect("release gate"); @@ -215,6 +219,8 @@ async fn assert_producer_does_not_deadlock_with_queue_storage_batch(producer: Pr storage_result.expect("QueueStorage batch must not be chosen as a deadlock victim"); let inserted = competing_result.expect("competing producer must not be chosen as a deadlock victim"); + storage_pool.close().await; + competing_pool.close().await; // Lane ordering must not leak into the result: rows come back in input order. let returned_queues: Vec = inserted.iter().map(|row| row.queue.clone()).collect(); From d504269cbc087ae93cc29d6b8383f04677b3ef82 Mon Sep 17 00:00:00 2001 From: Brian Thorne Date: Sat, 7 Nov 2026 02:53:36 +1300 Subject: [PATCH 48/48] Map all prune transaction lock timeouts to Blocked --- CHANGELOG.md | 20 + awa-model/src/queue_storage.rs | 1387 +++++++++++------------ awa/tests/queue_storage_runtime_test.rs | 175 +++ 3 files changed, 876 insertions(+), 706 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5aa39f220..7c176b4bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,6 +88,26 @@ Notable changes between releases. Detailed migration notes for storage transitio lanes as before, and older binaries create correctly owned lanes once v053 has refreshed the helpers they call. See "Lane ownership and v053" in the 0.6 to 0.7 upgrade guide. + +- **Ring prune and terminal-count rollup report `Blocked` when any of their + statements times out on a lock.** Prune sets a short `lock_timeout` (10 ms + by default) before it takes `ACCESS EXCLUSIVE` on a slot's partitions, but + only those `LOCK TABLE` statements and the final `TRUNCATE` turned a + timeout into `PruneOutcome::Blocked`. The timeout covers every later + statement in the transaction too: the post-lock liveness checks read the + lease and claim partitions, the failed-row carry inserts into the current + slot's `done_entries` and terminal-count deltas, and the fold appends + `queue_terminal_rollup_deltas` and deletes `queue_terminal_live_counts` + rows. When one of those waited out the timeout, for example behind + autovacuum truncating a relation or a hosted Postgres's own background + workers, prune failed with a `lock_not_available` (`55P03`) database error, + was logged as an error and skipped the prune backoff. A lock timeout + anywhere in a queue, lease or claim prune, or in a terminal-count rollup + slot, now rolls the whole transaction back and reports `Blocked` + (`blocked_slots` for rollup), so maintenance backs off and retries; nothing + the attempt wrote survives the rollback. A rollup pass stops at its first + blocked slot rather than waiting out the timeout again on each remaining + one. - **Batch enqueues take their lane locks in one order, so they no longer deadlock with each other.** On queue storage every enqueue holds a transaction-scoped advisory lock on its `(queue, priority, shard)` lane diff --git a/awa-model/src/queue_storage.rs b/awa-model/src/queue_storage.rs index dafbbaa14..3d784fc27 100644 --- a/awa-model/src/queue_storage.rs +++ b/awa-model/src/queue_storage.rs @@ -713,6 +713,35 @@ async fn set_prune_lock_timeout_tx( Ok(()) } +/// Commit or roll back a maintenance transaction that has set the prune +/// `lock_timeout`. +/// +/// The timeout applies to every later statement in the transaction, not only +/// the explicit `LOCK TABLE`: an insert, update or read of another relation can +/// also queue behind a conflicting lock (autovacuum's heap truncation takes +/// `ACCESS EXCLUSIVE`, for example). A lock timeout anywhere therefore rolls the +/// whole transaction back and reports `blocked`, so the caller backs off and +/// retries instead of surfacing an error. +async fn settle_prune_tx( + tx: sqlx::Transaction<'_, Postgres>, + result: Result, + blocked: T, +) -> Result { + match result { + Ok(outcome) => { + tx.commit().await.map_err(map_sqlx_error)?; + Ok(outcome) + } + Err(err) => { + let _ = tx.rollback().await; + match err { + AwaError::Database(ref db_err) if is_lock_contention_error(db_err) => Ok(blocked), + err => Err(err), + } + } + } +} + fn validate_ident(ident: &str) -> Result<(), AwaError> { let mut chars = ident.chars(); match chars.next() { @@ -18253,7 +18282,10 @@ impl QueueStorage { break; } TerminalDeltaSlotRollup::Blocked => { + // The next slot would most likely wait out the same lock + // timeout, and the leader loop is blocked while it does. outcome.blocked_slots += 1; + break; } } } @@ -18440,237 +18472,215 @@ impl QueueStorage { return Ok(TerminalDeltaSlotRollup::SkippedActive); } - set_prune_lock_timeout_tx(&mut tx, self.prune_lock_timeout).await?; - - let lock_delta = sqlx::query(audited_sql(format!( - "LOCK TABLE {delta_child} IN ACCESS EXCLUSIVE MODE" - ))) - .execute(tx.as_mut()) - .await; - - match lock_delta { - Ok(_) => {} - Err(err) if is_lock_contention_error(&err) => { - let _ = tx.rollback().await; - return Ok(TerminalDeltaSlotRollup::Blocked); - } - Err(err) => { - let _ = tx.rollback().await; - return Err(map_sqlx_error(err)); - } - } + let locked: Result = async { + set_prune_lock_timeout_tx(&mut tx, self.prune_lock_timeout).await?; - let active_leases = - queue_prune_has_active_leases_tx(&mut tx, schema, slot, generation).await?; + sqlx::query(audited_sql(format!( + "LOCK TABLE {delta_child} IN ACCESS EXCLUSIVE MODE" + ))) + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; - if active_leases { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(TerminalDeltaSlotRollup::SkippedActive); - } + let active_leases = + queue_prune_has_active_leases_tx(&mut tx, schema, slot, generation).await?; - let unclosed_claim_refs = - queue_prune_has_unclosed_claim_refs_tx(&mut tx, schema, slot, generation).await?; - - if unclosed_claim_refs { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(TerminalDeltaSlotRollup::SkippedActive); - } + if active_leases { + return Ok(TerminalDeltaSlotRollup::SkippedActive); + } - let delta_rows: i64 = sqlx::query_scalar(audited_sql(format!( - r#" - SELECT count(*)::bigint - FROM {delta_child} - WHERE ready_generation = $1 - "# - ))) - .bind(generation) - .fetch_one(tx.as_mut()) - .await - .map_err(map_sqlx_error)?; + let unclosed_claim_refs = + queue_prune_has_unclosed_claim_refs_tx(&mut tx, schema, slot, generation).await?; - if delta_rows == 0 { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(TerminalDeltaSlotRollup::Empty); - } + if unclosed_claim_refs { + return Ok(TerminalDeltaSlotRollup::SkippedActive); + } - // In ledger authority each touched lane collapses to one bucket-0 row - // holding its old total (summed over every bucket) plus the signed - // delta, which keeps a negative delta exact when the matching positive - // count sits in another bucket. Before the flip, N-1 maintenance can - // still win the election and folds per job-id bucket, so the fold - // keeps that shape until the flip fences it (ADR-041). - let grouped_keys: i64 = match authority { - RingAuthority::Ledger => sqlx::query_scalar(audited_sql(format!( + let delta_rows: i64 = sqlx::query_scalar(audited_sql(format!( r#" - WITH grouped AS MATERIALIZED ( - SELECT - ready_slot, - queue, - priority, - enqueue_shard, - SUM(terminal_delta)::bigint AS delta + SELECT count(*)::bigint FROM {delta_child} WHERE ready_generation = $1 - GROUP BY ready_slot, queue, priority, enqueue_shard - HAVING SUM(terminal_delta) <> 0 - ), - collapsed AS ( - DELETE FROM {schema}.queue_terminal_live_counts AS counts - USING grouped - WHERE counts.ready_slot = grouped.ready_slot - AND counts.queue = grouped.queue - AND counts.priority = grouped.priority - AND counts.enqueue_shard = grouped.enqueue_shard - RETURNING - counts.ready_slot, - counts.queue, - counts.priority, - counts.enqueue_shard, - counts.live_terminal_count - ), - folded AS ( - SELECT - grouped.ready_slot, - grouped.queue, - grouped.priority, - grouped.enqueue_shard, - (grouped.delta + COALESCE(SUM(collapsed.live_terminal_count), 0))::bigint - AS live_terminal_count - FROM grouped - LEFT JOIN collapsed - ON collapsed.ready_slot = grouped.ready_slot - AND collapsed.queue = grouped.queue - AND collapsed.priority = grouped.priority - AND collapsed.enqueue_shard = grouped.enqueue_shard - GROUP BY - grouped.ready_slot, - grouped.queue, - grouped.priority, - grouped.enqueue_shard, - grouped.delta - ), - inserted AS ( - INSERT INTO {schema}.queue_terminal_live_counts ( - ready_slot, - queue, - priority, - enqueue_shard, - counter_bucket, - live_terminal_count - ) - SELECT - ready_slot, - queue, - priority, - enqueue_shard, - 0::smallint, - live_terminal_count - FROM folded - WHERE live_terminal_count <> 0 - ORDER BY ready_slot, queue, priority, enqueue_shard - RETURNING 1 - ) - SELECT count(*)::bigint FROM grouped - "# - ))) - .bind(generation) - .fetch_one(tx.as_mut()) - .await - .map_err(map_sqlx_error)?, - RingAuthority::Columns => sqlx::query_scalar(audited_sql(format!( - r#" - WITH grouped AS MATERIALIZED ( - SELECT - ready_slot, - queue, - priority, - enqueue_shard, - counter_bucket, - SUM(terminal_delta)::bigint AS delta - FROM {delta_child} - WHERE ready_generation = $1 - GROUP BY ready_slot, queue, priority, enqueue_shard, counter_bucket - HAVING SUM(terminal_delta) <> 0 - ), - updated AS ( - UPDATE {schema}.queue_terminal_live_counts AS counts - SET live_terminal_count = GREATEST(0, counts.live_terminal_count + grouped.delta) - FROM grouped - WHERE counts.ready_slot = grouped.ready_slot - AND counts.queue = grouped.queue - AND counts.priority = grouped.priority - AND counts.enqueue_shard = grouped.enqueue_shard - AND counts.counter_bucket = grouped.counter_bucket - RETURNING - counts.ready_slot, - counts.queue, - counts.priority, - counts.enqueue_shard, - counts.counter_bucket - ), - inserted AS ( - INSERT INTO {schema}.queue_terminal_live_counts AS counts ( - ready_slot, - queue, - priority, - enqueue_shard, - counter_bucket, - live_terminal_count - ) - SELECT - grouped.ready_slot, - grouped.queue, - grouped.priority, - grouped.enqueue_shard, - grouped.counter_bucket, - grouped.delta - FROM grouped - WHERE grouped.delta > 0 - AND NOT EXISTS ( - SELECT 1 - FROM updated - WHERE updated.ready_slot = grouped.ready_slot - AND updated.queue = grouped.queue - AND updated.priority = grouped.priority - AND updated.enqueue_shard = grouped.enqueue_shard - AND updated.counter_bucket = grouped.counter_bucket - ) - ORDER BY ready_slot, queue, priority, enqueue_shard, counter_bucket - ON CONFLICT (ready_slot, queue, priority, enqueue_shard, counter_bucket) DO UPDATE - SET live_terminal_count = - GREATEST(0, counts.live_terminal_count + EXCLUDED.live_terminal_count) - RETURNING 1 - ) - SELECT count(*)::bigint FROM grouped - "# + "# ))) .bind(generation) .fetch_one(tx.as_mut()) .await - .map_err(map_sqlx_error)?, - }; - - let truncate_delta = sqlx::query(audited_sql(format!("TRUNCATE TABLE {delta_child}"))) - .execute(tx.as_mut()) - .await; + .map_err(map_sqlx_error)?; - match truncate_delta { - Ok(_) => { - tx.commit().await.map_err(map_sqlx_error)?; - Ok(TerminalDeltaSlotRollup::Rolled { - delta_rows, - grouped_keys, - }) - } - Err(err) if is_lock_contention_error(&err) => { - let _ = tx.rollback().await; - Ok(TerminalDeltaSlotRollup::Blocked) - } - Err(err) => { - let _ = tx.rollback().await; - Err(map_sqlx_error(err)) + if delta_rows == 0 { + return Ok(TerminalDeltaSlotRollup::Empty); } + + // In ledger authority each touched lane collapses to one bucket-0 row + // holding its old total (summed over every bucket) plus the signed + // delta, which keeps a negative delta exact when the matching positive + // count sits in another bucket. Before the flip, N-1 maintenance can + // still win the election and folds per job-id bucket, so the fold + // keeps that shape until the flip fences it (ADR-041). + let grouped_keys: i64 = match authority { + RingAuthority::Ledger => sqlx::query_scalar(audited_sql(format!( + r#" + WITH grouped AS MATERIALIZED ( + SELECT + ready_slot, + queue, + priority, + enqueue_shard, + SUM(terminal_delta)::bigint AS delta + FROM {delta_child} + WHERE ready_generation = $1 + GROUP BY ready_slot, queue, priority, enqueue_shard + HAVING SUM(terminal_delta) <> 0 + ), + collapsed AS ( + DELETE FROM {schema}.queue_terminal_live_counts AS counts + USING grouped + WHERE counts.ready_slot = grouped.ready_slot + AND counts.queue = grouped.queue + AND counts.priority = grouped.priority + AND counts.enqueue_shard = grouped.enqueue_shard + RETURNING + counts.ready_slot, + counts.queue, + counts.priority, + counts.enqueue_shard, + counts.live_terminal_count + ), + folded AS ( + SELECT + grouped.ready_slot, + grouped.queue, + grouped.priority, + grouped.enqueue_shard, + (grouped.delta + COALESCE(SUM(collapsed.live_terminal_count), 0))::bigint + AS live_terminal_count + FROM grouped + LEFT JOIN collapsed + ON collapsed.ready_slot = grouped.ready_slot + AND collapsed.queue = grouped.queue + AND collapsed.priority = grouped.priority + AND collapsed.enqueue_shard = grouped.enqueue_shard + GROUP BY + grouped.ready_slot, + grouped.queue, + grouped.priority, + grouped.enqueue_shard, + grouped.delta + ), + inserted AS ( + INSERT INTO {schema}.queue_terminal_live_counts ( + ready_slot, + queue, + priority, + enqueue_shard, + counter_bucket, + live_terminal_count + ) + SELECT + ready_slot, + queue, + priority, + enqueue_shard, + 0::smallint, + live_terminal_count + FROM folded + WHERE live_terminal_count <> 0 + ORDER BY ready_slot, queue, priority, enqueue_shard + RETURNING 1 + ) + SELECT count(*)::bigint FROM grouped + "# + ))) + .bind(generation) + .fetch_one(tx.as_mut()) + .await + .map_err(map_sqlx_error)?, + RingAuthority::Columns => sqlx::query_scalar(audited_sql(format!( + r#" + WITH grouped AS MATERIALIZED ( + SELECT + ready_slot, + queue, + priority, + enqueue_shard, + counter_bucket, + SUM(terminal_delta)::bigint AS delta + FROM {delta_child} + WHERE ready_generation = $1 + GROUP BY ready_slot, queue, priority, enqueue_shard, counter_bucket + HAVING SUM(terminal_delta) <> 0 + ), + updated AS ( + UPDATE {schema}.queue_terminal_live_counts AS counts + SET live_terminal_count = GREATEST(0, counts.live_terminal_count + grouped.delta) + FROM grouped + WHERE counts.ready_slot = grouped.ready_slot + AND counts.queue = grouped.queue + AND counts.priority = grouped.priority + AND counts.enqueue_shard = grouped.enqueue_shard + AND counts.counter_bucket = grouped.counter_bucket + RETURNING + counts.ready_slot, + counts.queue, + counts.priority, + counts.enqueue_shard, + counts.counter_bucket + ), + inserted AS ( + INSERT INTO {schema}.queue_terminal_live_counts AS counts ( + ready_slot, + queue, + priority, + enqueue_shard, + counter_bucket, + live_terminal_count + ) + SELECT + grouped.ready_slot, + grouped.queue, + grouped.priority, + grouped.enqueue_shard, + grouped.counter_bucket, + grouped.delta + FROM grouped + WHERE grouped.delta > 0 + AND NOT EXISTS ( + SELECT 1 + FROM updated + WHERE updated.ready_slot = grouped.ready_slot + AND updated.queue = grouped.queue + AND updated.priority = grouped.priority + AND updated.enqueue_shard = grouped.enqueue_shard + AND updated.counter_bucket = grouped.counter_bucket + ) + ORDER BY ready_slot, queue, priority, enqueue_shard, counter_bucket + ON CONFLICT (ready_slot, queue, priority, enqueue_shard, counter_bucket) DO UPDATE + SET live_terminal_count = + GREATEST(0, counts.live_terminal_count + EXCLUDED.live_terminal_count) + RETURNING 1 + ) + SELECT count(*)::bigint FROM grouped + "# + ))) + .bind(generation) + .fetch_one(tx.as_mut()) + .await + .map_err(map_sqlx_error)?, + }; + + sqlx::query(audited_sql(format!("TRUNCATE TABLE {delta_child}"))) + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + Ok(TerminalDeltaSlotRollup::Rolled { + delta_rows, + grouped_keys, + }) } + .await; + + settle_prune_tx(tx, locked, TerminalDeltaSlotRollup::Blocked).await } /// Fold pending `queue_terminal_rollup_deltas` rows into the @@ -18920,172 +18930,119 @@ impl QueueStorage { }); } - set_prune_lock_timeout_tx(&mut tx, self.prune_lock_timeout).await?; + let locked: Result = async { + set_prune_lock_timeout_tx(&mut tx, self.prune_lock_timeout).await?; - let lock_started = Instant::now(); - // Claims read segments before ready rows, while producers write in - // the opposite order. Queue behind segment readers, then abandon - // the transaction rather than wait with an exclusive child held. - let lock_tables = async { - sqlx::query(audited_sql(format!( - "LOCK TABLE {segment_child} IN ACCESS EXCLUSIVE MODE" - ))) - .execute(tx.as_mut()) - .await?; - sqlx::query(audited_sql(format!( - "LOCK TABLE {ready_child}, {claim_attempt_child}, {done_child}, {tomb_child}, {receipt_batch_child}, {receipt_tomb_child}, {delta_child} IN ACCESS EXCLUSIVE MODE NOWAIT" - ))) - .execute(tx.as_mut()) + let lock_started = Instant::now(); + // Claims read segments before ready rows, while producers write in + // the opposite order. Queue behind segment readers, then abandon + // the transaction rather than wait with an exclusive child held. + async { + sqlx::query(audited_sql(format!( + "LOCK TABLE {segment_child} IN ACCESS EXCLUSIVE MODE" + ))) + .execute(tx.as_mut()) + .await?; + sqlx::query(audited_sql(format!( + "LOCK TABLE {ready_child}, {claim_attempt_child}, {done_child}, {tomb_child}, {receipt_batch_child}, {receipt_tomb_child}, {delta_child} IN ACCESS EXCLUSIVE MODE NOWAIT" + ))) + .execute(tx.as_mut()) + .await + } .await - } - .await; - let lock_duration = lock_started.elapsed(); - - if let Err(err) = lock_tables { - let _ = tx.rollback().await; - if is_lock_contention_error(&err) { - return Ok(PruneOutcome::Blocked { slot }); + .map_err(map_sqlx_error)?; + let lock_duration = lock_started.elapsed(); + + // The pre-lock gates are only an MVCC snapshot. If an in-flight + // producer or claimer committed while the exclusive partition + // lock waited, these post-lock gates see it before TRUNCATE. + let active_leases = + queue_prune_has_active_leases_tx(&mut tx, schema, slot, generation).await?; + if active_leases { + return Ok(PruneOutcome::SkippedActive { + slot, + reason: SkipReason::QueueActiveLeases, + count: busy_indicator(active_leases), + }); } - return Err(map_sqlx_error(err)); - } - - // The pre-lock gates are only an MVCC snapshot. If an in-flight - // producer or claimer committed while the exclusive partition - // lock waited, these post-lock gates see it before TRUNCATE. - let active_leases = - queue_prune_has_active_leases_tx(&mut tx, schema, slot, generation).await?; - if active_leases { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(PruneOutcome::SkippedActive { - slot, - reason: SkipReason::QueueActiveLeases, - count: busy_indicator(active_leases), - }); - } - let pending = queue_prune_has_pending_ready_tx(&mut tx, schema, slot, generation).await?; - if pending { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(PruneOutcome::SkippedActive { - slot, - reason: SkipReason::QueuePendingReady, - count: busy_indicator(pending), - }); - } + let pending = queue_prune_has_pending_ready_tx(&mut tx, schema, slot, generation).await?; + if pending { + return Ok(PruneOutcome::SkippedActive { + slot, + reason: SkipReason::QueuePendingReady, + count: busy_indicator(pending), + }); + } - let unclosed_claim_refs = - queue_prune_has_unclosed_claim_refs_tx(&mut tx, schema, slot, generation).await?; - if unclosed_claim_refs { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(PruneOutcome::SkippedActive { - slot, - reason: SkipReason::QueueUnclosedClaimRefs, - count: busy_indicator(unclosed_claim_refs), - }); - } + let unclosed_claim_refs = + queue_prune_has_unclosed_claim_refs_tx(&mut tx, schema, slot, generation).await?; + if unclosed_claim_refs { + return Ok(PruneOutcome::SkippedActive { + slot, + reason: SkipReason::QueueUnclosedClaimRefs, + count: busy_indicator(unclosed_claim_refs), + }); + } - let failed_retention_secs = i64::try_from(failed_retention.as_secs()).unwrap_or(i64::MAX); - let retention_floor = failed_retention_secs > 0; - - // #337: failed terminal rows still inside the retention floor - // are re-homed into the live done segment before the TRUNCATE - // so they stay retryable. The ring rotation lock is held above, - // which serializes against rotate — the current slot (and its - // generation, read from the ledger cursor) cannot move while - // carried rows are re-inserted into it. - let carried_failed_rows = if retention_floor { - // Carried rows are widened to the self-contained synthetic - // done-row shape (the COALESCE chain mirrors - // `done_row_projection`) because the ready rows they would - // otherwise hydrate from are truncated with this slot. - // Deliberately no ON CONFLICT: lane_seq comes from - // never-resetting sequences, so a PK collision means - // corrupted terminal state and must abort the prune loudly - // rather than silently drop a terminal fact. - let carried = sqlx::query(audited_sql(format!( - r#" - INSERT INTO {schema}.done_entries ( - ready_slot, ready_generation, job_id, kind, queue, - args, state, priority, attempt, run_lease, - max_attempts, lane_seq, enqueue_shard, run_at, - attempted_at, finalized_at, created_at, unique_key, - unique_states, payload - ) - SELECT - $2, - $3, - done.job_id, - done.kind, - done.queue, - COALESCE(done.args, ready.args, '{{}}'::jsonb), - done.state, - done.priority, - done.attempt, - done.run_lease, - COALESCE(done.max_attempts, ready.max_attempts, 25::smallint), - done.lane_seq, - done.enqueue_shard, - COALESCE(done.run_at, ready.run_at, done.finalized_at), - COALESCE(done.attempted_at, ready.attempted_at), - done.finalized_at, - COALESCE(done.created_at, ready.created_at, done.finalized_at), - COALESCE(done.unique_key, ready.unique_key), - COALESCE(done.unique_states, ready.unique_states), - COALESCE(done.payload, ready.payload, '{{}}'::jsonb) - FROM {done_child} AS done - LEFT JOIN {ready_child} AS ready - ON ready.ready_slot = done.ready_slot - AND ready.ready_generation = done.ready_generation - AND ready.queue = done.queue - AND ready.priority = done.priority - AND ready.enqueue_shard = done.enqueue_shard - AND ready.lane_seq = done.lane_seq - WHERE done.state = 'failed' - AND done.finalized_at >= now() - make_interval(secs => $1::bigint) - "# - ))) - .bind(failed_retention_secs) - .bind(state.0) - .bind(current_generation) - .execute(tx.as_mut()) - .await - .map_err(map_sqlx_error)? - .rows_affected(); - - if carried > 0 { - // This slot's live counter rows and delta segment are - // wiped below, so the carried rows' exact-count - // evidence moves with them: re-append positive deltas - // under the current slot, grouped exactly like the - // completion path's delta append. - sqlx::query(audited_sql(format!( + let failed_retention_secs = i64::try_from(failed_retention.as_secs()).unwrap_or(i64::MAX); + let retention_floor = failed_retention_secs > 0; + + // #337: failed terminal rows still inside the retention floor + // are re-homed into the live done segment before the TRUNCATE + // so they stay retryable. The ring rotation lock is held above, + // which serializes against rotate — the current slot (and its + // generation, read from the ledger cursor) cannot move while + // carried rows are re-inserted into it. + let carried_failed_rows = if retention_floor { + // Carried rows are widened to the self-contained synthetic + // done-row shape (the COALESCE chain mirrors + // `done_row_projection`) because the ready rows they would + // otherwise hydrate from are truncated with this slot. + // Deliberately no ON CONFLICT: lane_seq comes from + // never-resetting sequences, so a PK collision means + // corrupted terminal state and must abort the prune loudly + // rather than silently drop a terminal fact. + let carried = sqlx::query(audited_sql(format!( r#" - INSERT INTO {schema}.queue_terminal_count_deltas ( - ready_slot, - ready_generation, - queue, - priority, - enqueue_shard, - counter_bucket, - terminal_delta + INSERT INTO {schema}.done_entries ( + ready_slot, ready_generation, job_id, kind, queue, + args, state, priority, attempt, run_lease, + max_attempts, lane_seq, enqueue_shard, run_at, + attempted_at, finalized_at, created_at, unique_key, + unique_states, payload ) SELECT $2, $3, - queue, - priority, - enqueue_shard, - mod( - mod(job_id, {TERMINAL_COUNTER_BUCKETS}::bigint) - + {TERMINAL_COUNTER_BUCKETS}::bigint, - {TERMINAL_COUNTER_BUCKETS}::bigint - )::smallint AS counter_bucket, - count(*)::bigint - FROM {done_child} - WHERE state = 'failed' - AND finalized_at >= now() - make_interval(secs => $1::bigint) - GROUP BY queue, priority, enqueue_shard, counter_bucket - ORDER BY queue, priority, enqueue_shard, counter_bucket + done.job_id, + done.kind, + done.queue, + COALESCE(done.args, ready.args, '{{}}'::jsonb), + done.state, + done.priority, + done.attempt, + done.run_lease, + COALESCE(done.max_attempts, ready.max_attempts, 25::smallint), + done.lane_seq, + done.enqueue_shard, + COALESCE(done.run_at, ready.run_at, done.finalized_at), + COALESCE(done.attempted_at, ready.attempted_at), + done.finalized_at, + COALESCE(done.created_at, ready.created_at, done.finalized_at), + COALESCE(done.unique_key, ready.unique_key), + COALESCE(done.unique_states, ready.unique_states), + COALESCE(done.payload, ready.payload, '{{}}'::jsonb) + FROM {done_child} AS done + LEFT JOIN {ready_child} AS ready + ON ready.ready_slot = done.ready_slot + AND ready.ready_generation = done.ready_generation + AND ready.queue = done.queue + AND ready.priority = done.priority + AND ready.enqueue_shard = done.enqueue_shard + AND ready.lane_seq = done.lane_seq + WHERE done.state = 'failed' + AND done.finalized_at >= now() - make_interval(secs => $1::bigint) "# ))) .bind(failed_retention_secs) @@ -19093,187 +19050,232 @@ impl QueueStorage { .bind(current_generation) .execute(tx.as_mut()) .await - .map_err(map_sqlx_error)?; - } - carried - } else { - 0 - }; - - // #290: scan the about-to-be-truncated partition for the rollup - // fold. The rollup column is *permanent* state, so we MUST fold - // from ground truth (the `{done_child}` partition itself), not - // from `queue_terminal_live_counts` — the counter can drift - // briefly during a rolling upgrade from a pre-counter binary - // and folding drift into the rollup would bake it in forever. - // The counter rows for this slot are still cleaned up after the - // truncate; reads from the counter (queue_counts_exact in #305) - // may transiently disagree with the rollup until the operator - // runs `awa storage rebuild-terminal-counters`, but the rollup - // itself stays authoritative. See PR #304 reviewer finding - // "High: A1 can persist stale counter state before the - // read-switch PR" for the trade-off. - // - // Carried failed rows are excluded from both columns: they are - // still live in `done_entries`, so folding them into the - // permanent rollup would double-count them. - let pruned_terminal_counts: Vec<(String, i16, i64, i64)> = - sqlx::query_as(audited_sql(format!( - r#" - WITH done_counts AS ( - SELECT - queue, - priority, - (count(*) FILTER (WHERE state <> 'failed'))::bigint AS completed, - (count(*) FILTER ( + .map_err(map_sqlx_error)? + .rows_affected(); + + if carried > 0 { + // This slot's live counter rows and delta segment are + // wiped below, so the carried rows' exact-count + // evidence moves with them: re-append positive deltas + // under the current slot, grouped exactly like the + // completion path's delta append. + sqlx::query(audited_sql(format!( + r#" + INSERT INTO {schema}.queue_terminal_count_deltas ( + ready_slot, + ready_generation, + queue, + priority, + enqueue_shard, + counter_bucket, + terminal_delta + ) + SELECT + $2, + $3, + queue, + priority, + enqueue_shard, + mod( + mod(job_id, {TERMINAL_COUNTER_BUCKETS}::bigint) + + {TERMINAL_COUNTER_BUCKETS}::bigint, + {TERMINAL_COUNTER_BUCKETS}::bigint + )::smallint AS counter_bucket, + count(*)::bigint + FROM {done_child} WHERE state = 'failed' - AND ( - $2::boolean IS FALSE - OR finalized_at < now() - make_interval(secs => $1::bigint) - ) - ))::bigint AS failed - FROM {done_child} - GROUP BY queue, priority - ), - -- Scan the entire partition being truncated (all generations), - -- mirroring done_counts' whole-child scan above. The rotate guard - -- keeps a partition to one generation at prune time, so this is the - -- same set today; counting the whole child keeps the rollup fold - -- conservative even if that invariant is ever weakened (a stray - -- generation's batches would otherwise be truncated without being - -- folded into the rollup -> terminal-count undercount). - batch_rows AS ( - SELECT - batch.ready_generation, - batch.queue, - batch.priority, - item.job_id, - item.run_lease - FROM {receipt_batch_child} AS batch - CROSS JOIN LATERAL unnest( - batch.job_ids, - batch.run_leases - ) AS item(job_id, run_lease) - ), - batch_counts AS ( + AND finalized_at >= now() - make_interval(secs => $1::bigint) + GROUP BY queue, priority, enqueue_shard, counter_bucket + ORDER BY queue, priority, enqueue_shard, counter_bucket + "# + ))) + .bind(failed_retention_secs) + .bind(state.0) + .bind(current_generation) + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + } + carried + } else { + 0 + }; + + // #290: scan the about-to-be-truncated partition for the rollup + // fold. The rollup column is *permanent* state, so we MUST fold + // from ground truth (the `{done_child}` partition itself), not + // from `queue_terminal_live_counts` — the counter can drift + // briefly during a rolling upgrade from a pre-counter binary + // and folding drift into the rollup would bake it in forever. + // The counter rows for this slot are still cleaned up after the + // truncate; reads from the counter (queue_counts_exact in #305) + // may transiently disagree with the rollup until the operator + // runs `awa storage rebuild-terminal-counters`, but the rollup + // itself stays authoritative. See PR #304 reviewer finding + // "High: A1 can persist stale counter state before the + // read-switch PR" for the trade-off. + // + // Carried failed rows are excluded from both columns: they are + // still live in `done_entries`, so folding them into the + // permanent rollup would double-count them. + let pruned_terminal_counts: Vec<(String, i16, i64, i64)> = + sqlx::query_as(audited_sql(format!( + r#" + WITH done_counts AS ( + SELECT + queue, + priority, + (count(*) FILTER (WHERE state <> 'failed'))::bigint AS completed, + (count(*) FILTER ( + WHERE state = 'failed' + AND ( + $2::boolean IS FALSE + OR finalized_at < now() - make_interval(secs => $1::bigint) + ) + ))::bigint AS failed + FROM {done_child} + GROUP BY queue, priority + ), + -- Scan the entire partition being truncated (all generations), + -- mirroring done_counts' whole-child scan above. The rotate guard + -- keeps a partition to one generation at prune time, so this is the + -- same set today; counting the whole child keeps the rollup fold + -- conservative even if that invariant is ever weakened (a stray + -- generation's batches would otherwise be truncated without being + -- folded into the rollup -> terminal-count undercount). + batch_rows AS ( + SELECT + batch.ready_generation, + batch.queue, + batch.priority, + item.job_id, + item.run_lease + FROM {receipt_batch_child} AS batch + CROSS JOIN LATERAL unnest( + batch.job_ids, + batch.run_leases + ) AS item(job_id, run_lease) + ), + batch_counts AS ( + SELECT + batch_rows.queue, + batch_rows.priority, + count(*)::bigint AS completed + FROM batch_rows + WHERE NOT EXISTS ( + SELECT 1 + FROM {receipt_tomb_child} AS tomb + WHERE tomb.ready_generation = batch_rows.ready_generation + AND tomb.job_id = batch_rows.job_id + AND tomb.run_lease = batch_rows.run_lease + ) + GROUP BY batch_rows.queue, batch_rows.priority + ), + keys AS ( + SELECT queue, priority FROM done_counts + UNION + SELECT queue, priority FROM batch_counts + ) SELECT - batch_rows.queue, - batch_rows.priority, - count(*)::bigint AS completed - FROM batch_rows - WHERE NOT EXISTS ( - SELECT 1 - FROM {receipt_tomb_child} AS tomb - WHERE tomb.ready_generation = batch_rows.ready_generation - AND tomb.job_id = batch_rows.job_id - AND tomb.run_lease = batch_rows.run_lease + keys.queue, + keys.priority, + ( + COALESCE(done_counts.completed, 0) + + COALESCE(batch_counts.completed, 0) + )::bigint AS pruned_completed_count, + COALESCE(done_counts.failed, 0)::bigint AS pruned_failed_count + FROM keys + LEFT JOIN done_counts USING (queue, priority) + LEFT JOIN batch_counts USING (queue, priority) + "# + ))) + .bind(failed_retention_secs) + .bind(retention_floor) + .fetch_all(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + + let truncate_started = Instant::now(); + self + .truncate_used_children_tx( + &mut tx, + &[ + &ready_child, + &claim_attempt_child, + &done_child, + &tomb_child, + &segment_child, + &receipt_batch_child, + &receipt_tomb_child, + &delta_child, + ], ) - GROUP BY batch_rows.queue, batch_rows.priority - ), - keys AS ( - SELECT queue, priority FROM done_counts - UNION - SELECT queue, priority FROM batch_counts - ) - SELECT - keys.queue, - keys.priority, - ( - COALESCE(done_counts.completed, 0) - + COALESCE(batch_counts.completed, 0) - )::bigint AS pruned_completed_count, - COALESCE(done_counts.failed, 0)::bigint AS pruned_failed_count - FROM keys - LEFT JOIN done_counts USING (queue, priority) - LEFT JOIN batch_counts USING (queue, priority) - "# + .await + .map_err(map_sqlx_error)?; + let truncate_duration = truncate_started.elapsed(); + if !pruned_terminal_counts.is_empty() { + // #371: append the pruned counts as delta rows instead + // of upserting `queue_terminal_rollups` here — the + // upsert under a pinned MVCC horizon left one + // unreclaimable dead rollup version per prune. The + // maintenance leader folds the deltas + // (`fold_terminal_rollup_deltas`) when the horizon is + // clear; exact readers add unfolded delta sums to + // their rollup reads. + self.append_terminal_rollup_deltas_tx( + &mut tx, + pruned_terminal_counts.into_iter(), + ) + .await?; + } + + // #290: the live counter rows for this slot are about to + // be orphans (their underlying done_entries rows just got + // truncated). Delete them in the same transaction. The + // rollup fold above already captured ground-truth from + // the partition scan; this just cleans up the counter + // index entries so a future insert into a re-rotated + // slot starts from zero. + sqlx::query(audited_sql(format!( + "DELETE FROM {schema}.queue_terminal_live_counts WHERE ready_slot = $1" ))) - .bind(failed_retention_secs) - .bind(retention_floor) - .fetch_all(tx.as_mut()) + .bind(slot) + .execute(tx.as_mut()) .await .map_err(map_sqlx_error)?; + Ok(PruneOutcome::Pruned { + slot, + generation, + carried_failed_rows, + durations: PruneDurations { + lock: lock_duration, + truncate: truncate_duration, + // Set once the transaction commits. + commit: Duration::ZERO, + }, + }) + } + .await; - let truncate_started = Instant::now(); - let truncate = self - .truncate_used_children_tx( - &mut tx, - &[ - &ready_child, - &claim_attempt_child, - &done_child, - &tomb_child, - &segment_child, - &receipt_batch_child, - &receipt_tomb_child, - &delta_child, - ], - ) - .await; - let truncate_duration = truncate_started.elapsed(); - - match truncate { - Ok(_) => { - if !pruned_terminal_counts.is_empty() { - // #371: append the pruned counts as delta rows instead - // of upserting `queue_terminal_rollups` here — the - // upsert under a pinned MVCC horizon left one - // unreclaimable dead rollup version per prune. The - // maintenance leader folds the deltas - // (`fold_terminal_rollup_deltas`) when the horizon is - // clear; exact readers add unfolded delta sums to - // their rollup reads. - self.append_terminal_rollup_deltas_tx( - &mut tx, - pruned_terminal_counts.into_iter(), - ) - .await?; - } - - // #290: the live counter rows for this slot are about to - // be orphans (their underlying done_entries rows just got - // truncated). Delete them in the same transaction. The - // rollup fold above already captured ground-truth from - // the partition scan; this just cleans up the counter - // index entries so a future insert into a re-rotated - // slot starts from zero. - sqlx::query(audited_sql(format!( - "DELETE FROM {schema}.queue_terminal_live_counts WHERE ready_slot = $1" - ))) - .bind(slot) - .execute(tx.as_mut()) - .await - .map_err(map_sqlx_error)?; - let commit_started = Instant::now(); - tx.commit().await.map_err(map_sqlx_error)?; - let commit_duration = commit_started.elapsed(); - if carried_failed_rows > 0 { - tracing::info!( - slot, - carried_failed_rows, - "Carried failed terminal rows inside the retention floor to the live done segment" - ); - } - Ok(PruneOutcome::Pruned { + let commit_started = Instant::now(); + let mut outcome = settle_prune_tx(tx, locked, PruneOutcome::Blocked { slot }).await?; + if let PruneOutcome::Pruned { + carried_failed_rows, + durations, + .. + } = &mut outcome + { + durations.commit = commit_started.elapsed(); + let carried_failed_rows = *carried_failed_rows; + if carried_failed_rows > 0 { + tracing::info!( slot, - generation, carried_failed_rows, - durations: PruneDurations { - lock: lock_duration, - truncate: truncate_duration, - commit: commit_duration, - }, - }) - } - Err(err) if is_lock_contention_error(&err) => { - let _ = tx.rollback().await; - Ok(PruneOutcome::Blocked { slot }) - } - Err(err) => { - let _ = tx.rollback().await; - Err(map_sqlx_error(err)) + "Carried failed terminal rows inside the retention floor to the live done segment" + ); } } + Ok(outcome) } #[tracing::instrument( @@ -19349,82 +19351,68 @@ impl QueueStorage { let lease_child = lease_child_name(schema, slot as usize); - set_prune_lock_timeout_tx(&mut tx, self.prune_lock_timeout).await?; + let locked: Result = async { + set_prune_lock_timeout_tx(&mut tx, self.prune_lock_timeout).await?; - let lock_started = Instant::now(); - let lock_table = sqlx::query(audited_sql(format!( - "LOCK TABLE {lease_child} IN ACCESS EXCLUSIVE MODE" - ))) - .execute(tx.as_mut()) - .await; - let lock_duration = lock_started.elapsed(); + let lock_started = Instant::now(); + sqlx::query(audited_sql(format!( + "LOCK TABLE {lease_child} IN ACCESS EXCLUSIVE MODE" + ))) + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + let lock_duration = lock_started.elapsed(); - if let Err(err) = lock_table { - let _ = tx.rollback().await; - if is_lock_contention_error(&err) { - return Ok(PruneOutcome::Blocked { slot }); + // The ring rotation serialization held above keeps the cursor + // stable, but keep the explicit recheck to document the truncate + // precondition. + let (current_slot, _) = self + .ring_cursor_tx(&mut tx, RingFamily::Lease, authority) + .await?; + + if current_slot == slot { + return Ok(PruneOutcome::SkippedActive { + slot, + reason: SkipReason::LeaseCurrent, + count: 0, + }); } - return Err(map_sqlx_error(err)); - } - // The ring rotation serialization held above keeps the cursor - // stable, but keep the explicit recheck to document the truncate - // precondition. - let (current_slot, _) = self - .ring_cursor_tx(&mut tx, RingFamily::Lease, authority) - .await?; + let active_leases = Self::relation_has_rows_tx(&mut tx, &lease_child).await?; - if current_slot == slot { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(PruneOutcome::SkippedActive { - slot, - reason: SkipReason::LeaseCurrent, - count: 0, - }); - } - - let active_leases = Self::relation_has_rows_tx(&mut tx, &lease_child).await?; + if active_leases { + return Ok(PruneOutcome::SkippedActive { + slot, + reason: SkipReason::LeaseActive, + count: busy_indicator(active_leases), + }); + } - if active_leases { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(PruneOutcome::SkippedActive { + let truncate_started = Instant::now(); + self.truncate_used_children_tx(&mut tx, &[&lease_child]) + .await + .map_err(map_sqlx_error)?; + let truncate_duration = truncate_started.elapsed(); + Ok(PruneOutcome::Pruned { slot, - reason: SkipReason::LeaseActive, - count: busy_indicator(active_leases), - }); + generation, + carried_failed_rows: 0, + durations: PruneDurations { + lock: lock_duration, + truncate: truncate_duration, + // Set once the transaction commits. + commit: Duration::ZERO, + }, + }) } + .await; - let truncate_started = Instant::now(); - let truncate = self - .truncate_used_children_tx(&mut tx, &[&lease_child]) - .await; - let truncate_duration = truncate_started.elapsed(); - - match truncate { - Ok(_) => { - let commit_started = Instant::now(); - tx.commit().await.map_err(map_sqlx_error)?; - let commit_duration = commit_started.elapsed(); - Ok(PruneOutcome::Pruned { - slot, - generation, - carried_failed_rows: 0, - durations: PruneDurations { - lock: lock_duration, - truncate: truncate_duration, - commit: commit_duration, - }, - }) - } - Err(err) if is_lock_contention_error(&err) => { - let _ = tx.rollback().await; - Ok(PruneOutcome::Blocked { slot }) - } - Err(err) => { - let _ = tx.rollback().await; - Err(map_sqlx_error(err)) - } + let commit_started = Instant::now(); + let mut outcome = settle_prune_tx(tx, locked, PruneOutcome::Blocked { slot }).await?; + if let PruneOutcome::Pruned { durations, .. } = &mut outcome { + durations.commit = commit_started.elapsed(); } + Ok(outcome) } pub async fn vacuum_leases(&self, pool: &PgPool) -> Result<(), AwaError> { @@ -19728,116 +19716,103 @@ impl QueueStorage { }); } - set_prune_lock_timeout_tx(&mut tx, self.prune_lock_timeout).await?; + let locked: Result = async { + set_prune_lock_timeout_tx(&mut tx, self.prune_lock_timeout).await?; - let lock_started = Instant::now(); - let lock_tables = sqlx::query(audited_sql(format!( - "LOCK TABLE {claim_child}, {claim_batch_child}, {closure_child}, {closure_batch_child} IN ACCESS EXCLUSIVE MODE" - ))) - .execute(tx.as_mut()) - .await; - let lock_duration = lock_started.elapsed(); - - if let Err(err) = lock_tables { - let _ = tx.rollback().await; - if is_lock_contention_error(&err) { - return Ok(PruneOutcome::Blocked { slot }); - } - return Err(map_sqlx_error(err)); - } - - // After taking ACCESS EXCLUSIVE, recheck that the slot is still - // not the current one. The ring rotation serialization should - // already make this stable, but keeping the explicit gate documents - // the truncate precondition. - let (current_slot, _) = self - .ring_cursor_tx(&mut tx, RingFamily::Claim, authority) - .await?; + let lock_started = Instant::now(); + sqlx::query(audited_sql(format!( + "LOCK TABLE {claim_child}, {claim_batch_child}, {closure_child}, {closure_batch_child} IN ACCESS EXCLUSIVE MODE" + ))) + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + let lock_duration = lock_started.elapsed(); - if current_slot == slot { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(PruneOutcome::SkippedActive { - slot, - reason: SkipReason::ClaimCurrent, - count: 0, - }); - } + // After taking ACCESS EXCLUSIVE, recheck that the slot is still + // not the current one. The ring rotation serialization should + // already make this stable, but keeping the explicit gate documents + // the truncate precondition. + let (current_slot, _) = self + .ring_cursor_tx(&mut tx, RingFamily::Claim, authority) + .await?; - let open_claims = claim_prune_has_open_claims_tx( - &mut tx, - schema, - &claim_child, - &claim_batch_child, - &closure_child, - &closure_batch_child, - ) - .await?; - if open_claims { - tx.commit().await.map_err(map_sqlx_error)?; - return Ok(PruneOutcome::SkippedActive { - slot, - reason: SkipReason::ClaimOpen, - count: busy_indicator(open_claims), - }); - } + if current_slot == slot { + return Ok(PruneOutcome::SkippedActive { + slot, + reason: SkipReason::ClaimCurrent, + count: 0, + }); + } - let truncate_started = Instant::now(); - let truncate = self - .truncate_used_children_tx( + let open_claims = claim_prune_has_open_claims_tx( &mut tx, - &[ - &claim_child, - &claim_batch_child, - &closure_child, - &closure_batch_child, - ], + schema, + &claim_child, + &claim_batch_child, + &closure_child, + &closure_batch_child, ) - .await; - let truncate_duration = truncate_started.elapsed(); + .await?; + if open_claims { + return Ok(PruneOutcome::SkippedActive { + slot, + reason: SkipReason::ClaimOpen, + count: busy_indicator(open_claims), + }); + } - match truncate { - Ok(_) => { - sqlx::query(audited_sql(format!( - r#" - UPDATE {schema}.claim_ring_slots - SET rescue_cursor_claimed_at = '-infinity'::timestamptz, - rescue_cursor_job_id = 0, - rescue_cursor_run_lease = 0, - deadline_cursor_deadline_at = '-infinity'::timestamptz, - deadline_cursor_job_id = 0, - deadline_cursor_run_lease = 0, - batch_deadline_cursor_deadline_at = '-infinity'::timestamptz, - batch_deadline_cursor_batch_id = 0 - WHERE slot = $1 - "# - ))) - .bind(slot) - .execute(tx.as_mut()) + let truncate_started = Instant::now(); + self + .truncate_used_children_tx( + &mut tx, + &[ + &claim_child, + &claim_batch_child, + &closure_child, + &closure_batch_child, + ], + ) .await .map_err(map_sqlx_error)?; - let commit_started = Instant::now(); - tx.commit().await.map_err(map_sqlx_error)?; - let commit_duration = commit_started.elapsed(); - Ok(PruneOutcome::Pruned { - slot, - generation, - carried_failed_rows: 0, - durations: PruneDurations { - lock: lock_duration, - truncate: truncate_duration, - commit: commit_duration, - }, - }) - } - Err(err) if is_lock_contention_error(&err) => { - let _ = tx.rollback().await; - Ok(PruneOutcome::Blocked { slot }) - } - Err(err) => { - let _ = tx.rollback().await; - Err(map_sqlx_error(err)) - } + let truncate_duration = truncate_started.elapsed(); + sqlx::query(audited_sql(format!( + r#" + UPDATE {schema}.claim_ring_slots + SET rescue_cursor_claimed_at = '-infinity'::timestamptz, + rescue_cursor_job_id = 0, + rescue_cursor_run_lease = 0, + deadline_cursor_deadline_at = '-infinity'::timestamptz, + deadline_cursor_job_id = 0, + deadline_cursor_run_lease = 0, + batch_deadline_cursor_deadline_at = '-infinity'::timestamptz, + batch_deadline_cursor_batch_id = 0 + WHERE slot = $1 + "# + ))) + .bind(slot) + .execute(tx.as_mut()) + .await + .map_err(map_sqlx_error)?; + Ok(PruneOutcome::Pruned { + slot, + generation, + carried_failed_rows: 0, + durations: PruneDurations { + lock: lock_duration, + truncate: truncate_duration, + // Set once the transaction commits. + commit: Duration::ZERO, + }, + }) } + .await; + + let commit_started = Instant::now(); + let mut outcome = settle_prune_tx(tx, locked, PruneOutcome::Blocked { slot }).await?; + if let PruneOutcome::Pruned { durations, .. } = &mut outcome { + durations.commit = commit_started.elapsed(); + } + Ok(outcome) } fn job_id_sequence(&self) -> String { diff --git a/awa/tests/queue_storage_runtime_test.rs b/awa/tests/queue_storage_runtime_test.rs index bf51546fe..3b57f3370 100644 --- a/awa/tests/queue_storage_runtime_test.rs +++ b/awa/tests/queue_storage_runtime_test.rs @@ -15632,6 +15632,181 @@ async fn test_queue_storage_prune_oldest_blocks_on_reader_lock() { ); } +/// The prune `lock_timeout` covers every statement after it is set, not +/// only the `LOCK TABLE` on the slot's children. A statement that waits on +/// another table's lock — here the failed-row carry, its count deltas, the +/// rollup delta append and the live-counter cleanup — must roll the whole prune back +/// and report `Blocked`, leaving the slot to the next attempt. +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +async fn test_queue_storage_prune_lock_timeout_after_child_locks_reports_blocked() { + let (_db_guard, pool) = setup_pool(10).await; + let queue = "qs_prune_late_lock_timeout"; + let schema = "awa_qs_prune_late_lock_timeout"; + let store = create_store(&pool, schema).await; + + store + .enqueue_batch(&pool, queue, 1, 1) + .await + .expect("enqueue completed job"); + let claimed = store + .claim_batch(&pool, queue, 1) + .await + .expect("claim completed job"); + store + .complete_batch(&pool, &claimed) + .await + .expect("complete job"); + + let failed_job_id = enqueue_job( + &pool, + &store, + &CompleteJob { id: 1 }, + InsertOpts { + queue: queue.to_string(), + ..Default::default() + }, + ) + .await; + let claimed = store + .claim_runtime_batch(&pool, queue, 1, Duration::from_secs(30)) + .await + .expect("claim failing job") + .into_iter() + .next() + .expect("missing claimed job"); + store + .fail_terminal(&pool, failed_job_id, claimed.job.run_lease, "boom", None) + .await + .expect("fail job") + .expect("running job should fail"); + + let rotated = store.rotate(&pool).await.expect("rotate"); + assert!( + matches!(rotated, RotateOutcome::Rotated { slot: 1, .. }), + "unexpected rotate outcome: {rotated:?}" + ); + + let retention = Duration::from_secs(3600); + for held in [ + format!("{schema}.done_entries_1"), + format!("{schema}.queue_terminal_count_deltas_1"), + format!("{schema}.queue_terminal_rollup_deltas"), + format!("{schema}.queue_terminal_live_counts"), + ] { + let mut holder = pool.begin().await.expect("begin lock holder"); + sqlx::query(audited_sql(format!("LOCK TABLE {held} IN SHARE MODE"))) + .execute(holder.as_mut()) + .await + .expect("hold share lock"); + + let outcome = store.prune_oldest(&pool, retention).await; + assert!( + matches!(outcome, Ok(PruneOutcome::Blocked { slot: 0 })), + "prune waiting on {held} should report Blocked, got {outcome:?}" + ); + + holder.rollback().await.expect("release share lock"); + + assert_eq!( + done_entries_count(&pool, schema, queue).await, + 2, + "blocked prune on {held} must not truncate or carry rows" + ); + let rollup_rows: i64 = sqlx::query_scalar(audited_sql(format!( + "SELECT count(*)::bigint FROM {schema}.queue_terminal_rollup_deltas" + ))) + .fetch_one(&pool) + .await + .expect("count rollups"); + assert_eq!( + rollup_rows, 0, + "blocked prune on {held} must not fold rollups" + ); + assert_invariant_holds( + &pool, + schema, + queue, + &format!("after prune blocked on {held}"), + ) + .await; + } + + let pruned = store + .prune_oldest(&pool, retention) + .await + .expect("prune after locks released"); + assert!( + matches!( + pruned, + PruneOutcome::Pruned { + slot: 0, + carried_failed_rows: 1, + .. + } + ), + "unexpected prune outcome after locks released: {pruned:?}" + ); + assert_invariant_holds(&pool, schema, queue, "after prune").await; + let counts = store.queue_counts(&pool, queue).await.expect("counts"); + assert_eq!(counts.terminal, 2, "rollup (1) + carried live row (1)"); +} + +/// Terminal-delta rollup shares prune's lock timeout. A timeout on the +/// live-counter fold, after the delta child is locked, must report a blocked +/// slot rather than fail the rollup pass, and the pass stops there instead of +/// waiting out the same timeout on every remaining slot. +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +async fn test_queue_terminal_count_delta_rollup_lock_timeout_after_child_lock_reports_blocked() { + let (_db_guard, pool) = setup_pool(10).await; + let queue = "qs_terminal_delta_rollup_late_lock"; + let schema = "awa_qs_terminal_delta_rollup_late_lock"; + let store = create_store(&pool, schema).await; + + for _ in 0..2 { + store + .enqueue_batch(&pool, queue, 1, 3) + .await + .expect("enqueue"); + let claimed = store.claim_batch(&pool, queue, 3).await.expect("claim"); + store + .complete_batch(&pool, &claimed) + .await + .expect("complete"); + match store.rotate(&pool).await.expect("rotate") { + RotateOutcome::Rotated { .. } => {} + other => panic!("expected Rotated, got {other:?}"), + } + } + + let mut holder = pool.begin().await.expect("begin lock holder"); + sqlx::query(audited_sql(format!( + "LOCK TABLE {schema}.queue_terminal_live_counts IN SHARE MODE" + ))) + .execute(holder.as_mut()) + .await + .expect("hold share lock"); + + let outcome = store.rollup_terminal_count_deltas(&pool, 4).await; + holder.rollback().await.expect("release share lock"); + let outcome = outcome.expect("rollup waiting on live counts should not error"); + assert_eq!(outcome.rolled_slots, 0); + assert_eq!( + outcome.blocked_slots, 1, + "the pass stops at the first blocked slot" + ); + assert_eq!(live_count_sum(&pool, schema, queue).await, 0); + assert_eq!(terminal_delta_sum(&pool, schema, queue).await, 6); + + let outcome = store + .rollup_terminal_count_deltas(&pool, 4) + .await + .expect("rollup after lock released"); + assert_eq!(outcome.rolled_slots, 2); + assert_eq!(outcome.blocked_slots, 0); + assert_eq!(live_count_sum(&pool, schema, queue).await, 6); + assert_eq!(terminal_delta_sum(&pool, schema, queue).await, 0); +} + #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn test_queue_prune_allows_segment_reader_to_finish_claim_lock_order() { let (_db_guard, pool) = setup_pool(8).await;
Queue Limited by Capacity + Capacity + Done/min + Controls
)} - + @@ -317,7 +344,7 @@ export function QueueFlowTable({ + {controls(queue)} + {controls(queue)} +

s;2;?oOi; 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 aR3!CiIrY}($(O%Ex_?(iwnW-6@V@{a@PB#$ literal 0 HcmV?d00001 diff --git a/pr-screenshots/phase-incident-mobile.png b/pr-screenshots/phase-incident-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..da271fb2e690dc63165ed0c0ff14f7741784d222 GIT binary patch literal 185750 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�n>p3oN&0mL(?>HnaJ@%JnwS%lHUa0g8%f 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%0A8_Q~_u0(lvkcY^KSEJf}`UEqSE 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 %s(%VM=z#yDyX*$FZgDV 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
iD^}U zaEJ7TKHz`?w!Q5Y6~5ByDu@5y27Z)galifx+A{Hbw{=z?CnO|z-^$l{d#Om>&)0J9 zBgfCbONvW(?J42>b*Cz^|wMlCuC;A_L@s7rmE^v@9xX5g*mo` z3*2@P1B*Lr?*WF-ZxwS#fehhDd1_W5ev$|3!h-9uRGAV^a@s{>WC^mr2e*ncb-YRn zA(WoxHaOpv{a0&<0c1L@RFyxyg|CWP?2Bj{ErWkzbOcM;1a^sX4-Am;0Z_8=5IkZt zwU_@4crj|eKCjwP_7|}YFoshDKKKMARM=W7w7q8}Y6duTTfz2`X^m8!sjBp%G(NQUp5K`qZ&Mgd3PN(HLTft_9(~cv-R8cEDNcNP7MTSpLXe9d!A&rS zIn8BU*9=1sC>zfgj8Y1g`#ddg$!nSkW|eJ;MKYzPV<(p98Yu%Vb;4Ldc^<%hq(^Xw z77;5tkm(&M@`r(eC&LdD1MD1jJdV${AF5{X4gtwPQMH%k)7+}p#`b-7FV2l0*r{(d zlJ34daUaLZaRvrluxVNJFRQqfLU>#pi zGCF?ZdP%hu9Ri@SAM+*JAysN}il&X4x+428%4`npBm=t5Tn|U^#$#ibmBR(-#oZ{4 z1c`~;?#Ix!#IDcNj~*H+Vz2S)V3O_B)8>1nZL}qSLFg|52;KR&F(M;1F){JWCL;qP z+?S%PQ=hpGtPBxMVZ#-garrIcRG(=ISfn1dV+QriU}l7T-@c>gZjR26NMf&SzRo0N zK%xhAD3Gw2IEv5m53l;wK7Yl3gN}kzL9Un@wQlv#N_mBF(7aOsOc5p&v}F2imfbno zqkFbCLCk|l4>CNh3#j^&D zU0toMtbCcLTtAgTfZ?|K$9*b%?xzUm0nBono)fK7Qm(i~s~E%WrWR?RIH8L4TzPVo zc)PE_${pDWU@)d;g`D0==&RcNbfF=F_wSIG*OBa*BN@eCz(2A6=8T{OY;D1a!Jo4` z_F}e%;c4+4#Fq^XPdL+82nL4h=}P~0B(t>g{dKZ#VRWD9mmfLBEX;?nets6co>4 zwfks0aw4J|qm?4xj~{|qOtc#E2S-nj_~&(W?GrNS)mYz}oSR>?b25o-$i9m=K?hgy zb#M(=GFzMaFn+@_PrZCx4O8=t#ksk}%pm*$SjZVzACu>)-zETSUX}^~4ai8z_O@?{ zd6F8*>}>y4sGp{22EgzQu410q0AtCO!nyP~1>GOXkh^Y|@|IT(48$;cHtSK{Se~E% z83CC-96MEOSe$rv&}tWioo*-IV>U=weQZH(|ymBDhIH`dqF6A=;dHHLBJ6G?48qsjrJ?;l!v@+I{x z5-4zbGFNB5(Mj-7j&;;W1D&5ju4!b#N5a*z#J*;z^7$MKn3lG8YI2TE5}u{%*fT*r+ynA4fNv7wh% z&&K9Q$v5G5#WD2#idr1IghZ^F;elM6wH=k@(&I*zx68NJtSENxPHfhL&yw@Tk}uc{ z&bErLY+$TJpp2=xuP^v0hR8wxvC_^u&Jj(^@l08m8KF0#QM6$yQmdz!3`L-?v zY&Fd9>pT;tjoUy3cuLSLv9r9nlEK8D@MFFst;JL&4;f8TSpr3*CHob?oX->S=eO|m zW9&G%hnH6^Tnt`0%ykEl4PG#<2rPLEEt02irv%67r5hu_I8D#5U@Q~tgWdj%L`7A( z&j^Jk z#svZjY#{ZGM8s_|w;+(*yneYjg(%3=4m& z8O3%;LANZ~|8A7TFCbvBRPS5UJiv$kvNO|}g`nZ`vCS`+ovf1ymXG2y!$EXL_X1hH z^GxqneMnmHvQ;H%i3{u_W3L-i#;<(~J0qFWcqL2sp?knLoS+0Agz;TD*kW0lPhy_7 z>%;GLr#7Lau&W$7Z|CFVAAk|JSR;|ZNR^`0lb%T{c%BD%!m*=k(ic`1Ei}#;<3B4k zhqK)%XXySNiAFj*yX-oZ5q0Z=g~-#$qiqZ}HVp~^iC32v-F+8?K~@`$vNbP`3gx`2 z-R%0)2&`qi^qy+O1c^ij16OV}5XU6~Q^5EOP@IJ(htsp+G3=;lI`cu#ra zo(G!;jo{IH@l?gZ{Z1^5g|usMM8IMqGP*K)!p~4tSa?qPOJ!yL*P25DXQcU}_tu47 zyTYkMGbo0uCIy&yUK-iKmmp{zDlf=CQyD6I=2FdfFfZS|yDin;b^KL6kNz{V+$6 zV4QMmhticR&f#JP9-C@2ciR~z)=C^kp7{HpHI;Q?OgCKVCmf3_bP$~c_QgulnmvYX zKAWh1XZg``{sU|!7yZ2ew_*B2VAtMi`+U)hC$$+`pA%spOTxRM5*w#$b-CH~MljD~ zYROq6^%;a+ji;#W_Z>L!F5k(fGkx-Rm!#2QmSs%&+>_lZF@;6uhJu~|e>`s~@$+3pM`tOW;C;kit z%&q~r%gJs3rJ}e`zrA8$9Nu=~$&bFXtET^_6*_f_ZolWol2y1?*}b1Tjg-PH5rK)3 z@L@0|qkL@S6d0u8AXT5P;dPdH5@MpsNsjKGit(0nd1p*FY4}1!8@?AmjvpOsydE9~ zgpp@uov z8;y~nK;NV!6JJW!D#m0vf3FU+^f{bFAf*%ZJjL%oCWJod7|qwXp)c~FD0t`Y-o0Ss z;3ehz@L|G>4GoPp6{#fom%&^FZv6|AhoD+hh6>pAKiiJ77+4@1|5^DI zw5A^sNmDJj1~GOL5&3YoZOkt&Uix~xm)t*3+5L8gtJQSuwzpe8^i9Eu${^odg!X2d zf(Ht6@J{kQZsqtq8m{)Yq@*k3;T-**TZs`w>_3}`ffd1sbL-f~ws`i9%G5u9PGIo4 zbS>}n>aw`O$M^CXnkjvSQyvqo*K*ELqLtpg=gB_DjHq<4f~_QZwS}duoj(J8?yH{8 zC24Qp4rOQ^+*sRuqQZyl_0jRwbYR3=e-B*Vh*f_%9`P>voW` z^p(}(Bz~2QUr%f_Z{)msDWjx-x|kBC(QeD7Muvu4TXC$ctd2e?g}~!5r)$bIea`}( z11_k6WX0#rFPv0JRGbo$pf>VE&0?JJlpHmPO%quLmjsauqzV{Og3 zqxc{`o)(mF=pd!>k6{z7XW>3ebCFD+o|24Icye;8L^`~aI#(crUJ$KrcPfP1YrpN+A{^s7}p-w0y zB_BTWw0C!N`!iG?=Nqf-{8MP&aW!Xxt^zM<@iY?3hAbF~vt0s5YIp8WX!S}&$@)?L z_1ZJw@#IN);@@_B4%vnuIC*$3|JHTT66&e4b%vX`l&ka7I9J+zs7c)1+zv?iVDX+z zLtlrL+ctz60Nk;YNB>Uugg|r<%4JnUL0)4wSnAndoI!N}s6#A%h4a|*Tej|VSjXXmdn9~p zW*fSU_jX2-_vU7=U6Y{ZyyCXKnSo*t8dkDF<1)95%Q0@74bUYf9P*6dDF==))b|nZ zT`D@7(8THJ=%`)3yfM!BK~z2|<+!+;cT9{)4Vi}=`46~vTU%e&NicYyb;MZM=P^-7 zLmDfcp!G1u7N73_HMg=Nu;g^ymOd5O7#4yO(3L$Uo9WyT8dV_C)%CnRmE-Cgfg?st zvEb6iykHdpM=~Y`6>A5kCzgtqYPWCSPA>CiTUxOG++ytea_88I?ZK~KZw^;YUa|f8 zMGwdyuQ5rhKBvZ)do?fCD=K#5g|tljzqcDWYu8VufA-D#<_BZP1)*LG=+B@Xyyq@7 z+MUeE_vw>`l|1HYh?qz@awKGe^SMN4bBsZ6(JYf?g9AWjIK`mVT3>AG!BLY$ZFy5O z54-q^f4Lu@#AF+~+&1}Fd}i9t&MY&1pm?H%MvXao`gWaU%XAiDk$ViU%`*cb#GXCQ zZ?1XqGdcJ*8zjlMPH%)Gj$QulpO+k`{_j9V%D~|Jvc0tQ&2TM9>++3db%ZQ>pM-g2 zNv0{}$c!DOAJ?Wo#ix*S?T>3Am!e!2#r~xpUU>J0njQBvsbkpit)rltn5n+Ucu6JJ zB;5VpIWYoTo;}0pBaP6H$;oP7c?dhWruN?7#F^wZzKhFf?!>NfuVAjSsLz5=;sJP{sg5g$(wT5#olMn&N3%a zqKwE?PiO~Z1D8IY!k#$*raN1!cT2d^EXyJy)S9CI^#22V;uNP+PL^RbK40S9yIbJc zfY#vG&z}&tpP>J1hAD~nH}&&&hR_6+y*Myi3Pe^z#YdVWf@ghux%(f7kweb)AnGyc zr#yL5jnI?fNxe9l7db^B=bUmF%KaY}aCf5h6BjKw`eyhBY;f;5aL9Myo+ao4>w@+K z3kum^Yq7lvN#If~U(UQ`6cpO3I>BR&jn-;BqN1R}RrgD16I1lS7tRS_np&Ee`r98sw;s)mcz&n>8q zB*t+Q$6GM2h62Y+gSgbM|FtImo0Qnb8wOY=ir)J%_WG@$Kj3mKtrVSr;aQ51!~xl7w8>&!E(cu|buRf#Ke8)#3UEP`3e# zW3j#GVrB*ZCn9*D!u0(ngT4uf1mNj>`$l6lh{1ii2OWEJ{UPPcmwVsc5Zod{r*K8% zu#sbHbcD(o(t}=VnVsK@lY@dLYME^%O3sJ2rPa6C2VsuxCMYP#&%bCtq-i;Idrao( z3Uz045h4U~;{y}L97*m;%cM;6n>8xUZa85Uh|_K22rG*RG-nh#?04dl*RueTefgrK zqchuAWZIjgshMnV=SM2;aWC$lD_3S_`nvmjk!0`NzWBA7z}@(fG;2&pYo2#YsjUAd zo%l0SYo+@UPY=#w1{Rm2SWs}OB?V@PpWLXK(wSXjYFrmabFV)M795KU4{16hx~s0` zUn>P4B3UA0QU=^rd9VGLyj2eCogXwVNOv<&8vI24o&wu{0A!wb46Gl$cK7^Lt3SYn zb94cyu&&gh6Fk#4ny~?=U-{^omP$iBFSjOMG0^2SE>~{I@Au-nl zmYtMQlHk*3@{Z3NJMv#7PNc2}vnsq_To-%|B4aFZTCeM%bbs->eNBuIU~%P)j7Z;AEM z1wphJ#--|cl@jM1w*733%WH^<)-3d9aGNjHh6c~O|I}I9IJF~j1WXt&6$!_?deXBz zJK7;m|DEx#L;hJJY{X|j)=9w2)c%z>kdfBQm!Lw-d;P{n&w|c`HEyb5;qdJvAu8@k z@sTOlpZKM|R0y8F(e_nE`$ax9R(v&bm-g}g@iHT4?V&osV|Wid)vzo+JMf)Jl~{D7 z|2Q~0Hs@W&44#N}`0jDCrInlQ$I{bva}%c(Egzxo3o+}1aEyo*c0dJ{ko`swisz;^_R}uTl9REb|^s zNl1W^p7bbtAvC^-f4$BcaX{uq9Mg+r=P5F zm@Y(pm*(AP^O$dJMgZ4=Fx;%?(D5xjb2I=ba`iv0>DPU8X6%Zp)n^|iINi^`Za zOm(k@i(f@SK*Wj_Yf%mtha5=L@}>~cN~&~1ayy7s9Y@`f!VBx_>g^?W&h&)96)z;t zBtgJ}vfP_jl}NmqYpY}`NO_Z{CSV*T@{kkyHq zsI<&SYzAZx-2nZ3^BI^cT3(0F53h*!MT%B`d&(D@az=>KggMbc!ayLCjtjeBkI;RaNaH`{+Cws<(wR8q}NIuc!iF>}aa0W}|9U zNkz^DMofq@pa51%$8Wv__mUq^H<_7zxW`b7iRSBtacI?a^7auz|sJF9=n^#X>4 z(#|=Kreicp##w;(jIv`h`1|+oc)yFvmLkZqt2K@0Gh2YH0)+_}E=z}*pP(xAy;Z?3 zDyq+iJ5AA_1!*`~`Glul7aJMb0w}Mq+{;B*H$5z@&|j4fHw)*%0|(&Q{R@B?SXWSm z*cT`6VPEni6k5^`zhvSbrdql#tx@@_iBXB|#@V*YehEl_Zs?Kj+xMeH`4E1NQMQ#) za^*;8!Ta|>prfZhK-_fwTUHc`z2V>lnWwG&6GqA3(yotJ`HsxY%v7^NK}CILyRYtP zd3pKCUB=n^U3eGpu#h@?hJwN$4Zz%xK7vFpw~h`+z~4KK7*3iU0?)9GH0q*^^DJ7f zNyV>5KvEib(#z+cuQ*}FZvS{-icrQdNaDbZTOfz14zp99bU=wr>>L`2M8J61(#nS6 z9vPg3GoE#k+IuqXsJ%T$Yu^;A>xT~?Qbmr_1{_=7JJVGgKw9+A@m~1=hUN-EPDl|I_GO%I-ssR>4w3_#9DP6V5CmlET@nuR-J3hyh4 z%Fxgdq|t_1Cr&s3&6cm;t^@>s$His58(Fb4tQ*r$~MYn#&_)|ap3dAp5 zSo1;02p^%I{BirMU0LOO;Va6{o^X$aSPX3+iyi4B=|<@0Aqwi^N@_%}*!$6ivHY=j zDv;B+1Zu7sd{&?lTF4iQWY6(fhBL=-1St1muLGIhA|M(}i#PWkg4A$teL*&3mgyaY zEClNdMU+_VcB#(IN?ZK_bD)8ko3HgR~U?` zIFxs!WTs^g`Fv6~smnL5dEb ziqJB{7-Fx<*00opDutAJ1u z&l`bJ#Ki!Rc4;Unmq6U;pTbqMi#?ujaQ~PpD zTKbxtyccv+IhrYs;R7nqaQygrPkBrGDS@pMypWs^TGJnWhA#4Vr^C3* zBk4-GN=eEoyN+4{e`(zJ`(sJT-QS%-#{Rg)jW;9kL50}3JT@~u8VG4ssn^aYFv^F| zT8BTUJ#^@-MRPwqYZl32=QRMh6p{&_$B%EbQaxT-%IbzxTnp=L;_W zcZNYA-GzG-h;vz=lmd4Y1$#4YGb`g^B>}<0H##m!9T7P>JYIIrsknBt*UTu-jt;XjRa}ejU!a( z#zvtDfCGhtaDR-Ju5U&~4_n5jVN4d>&F^}mFW`~6owVAH6z;?m^){Fc`n83w96j}8vw-Hyuzk2u-T<
H^eRUR#AWUnAQ#fvAW&w};#xWXA9XE}Xw2vJ8sw+E<3( zdsj_ljm^xkiaf>PukiX)X#Wy+;(x!^kCdqI#zi@X+nnr3gBCOach=?(XJmYNP-a@W zAJ@POKfeaYCsazW&)&FcIq{e47FJve?3%n|dGjtY+Ad9;3kGJ$RpvB)AY@NHROABm-PRzfO4-0uV6fCkavlQh!l>~Q&LI? znb3tOzkk3KHkz|MrVL)g$mo7)up^>Y7&4MjTf6N5Z{D1nd&YHZ@S{t)&RdD#OpUxt zmvNs3>U&NGFKH{nNrqEF>PLT>d&J#S;U8eMp`3cH{@3g*!XrP9j+$b^E`lQyknkWR=YPG=;3%ZE6EzR3xYjYzIrL(L?BM z!zz3Kx|S)sCqRuP@PO;n`MtLPq1(Mi$@(HPZ+qLl1xqEgci|~KQ#YO+E?1U&TTQmH z0<}$Qk;@i_UqKocc!yWUxBg}wNgiFri3V6zIUE*BJo$>rE5Zb9H-rPjm8+TOHxFDg zO;Q~h>6pVbZMqxVe-L~yVjp;u;YOr!sjRwmAJIgD)&ku_THz>eB0fN!u&i51m)V}ALP2nWv`>?()KEJdC z3DQ5Z(Zs4^>J#@{V#}~}uPkLOVWtb(7A#umqQoCuw!idT$>A0zM5xz8&t+mF0L&w1 z8zjl_$Vm31?y%~DBmBy&qhHmVBd{ zWrgK3u&g|Mh+luV{!S5ghLH!~Eq56%4i4Xc=1?@2-JQ_~CUQM1H}_oQ6C9Q>`3LZBW>3t0KVA!wRsFvv+*GEtU!s@{+eD~+P?w2(_N?o=UoDsq0O!)Ya1uPu;1gAlQ<~^BA)#+A9ufhipZFlW{f2(06zWH7p?Q zw9oI~&Jz1oJU_!A{BEc=O~NY}lUS7YGBp=4D?+LWj&L88_<#<8oIfDZT|ptx-P_yH z`mXrl!%rAgR$r?8@&!M^s#Z?<54^pcoSeV`NCbrvJ%!bLXr%A1?2D)&u$(9Ir+)u# zAK$_}IaB8?d=8>xzOTPcNKKV{^}Vw*lxFbr=N}+95Olp>0SET&gLl<#EwU!RZ)bhJ z!;?L~e7V|EXl`MF3wGE_N*Kvf&5#s4)?3@HPEYz7gRi{GpZK;TsU%3Ba)tuC{ z3M!qdiy^691?NritJW#?e-M7-gHm`s1V}w1Id*K@z2lOMj7hcM7&L+(oyP61U%zfS z;SSM0P9b-9cg4%w+xNet!1#}S0DgEb-6}KFn(8XI_9fN)XV&NL2>LS_pLh&41^d4L zT93Lib8&eLS1Drg(S-I{1d7|**i56BCcK7!zkFUs`zak3>|)~Nw6;#%eTON49#suLl8E$#j2!)}XKzYEqyIHcX8+$WHb)oB&BX zX8J1mrN6OC=YO#C4vcE_kiNzneumd~o!tE&i_yRc8XiN$V}QG)uA@Wi`r8;DSC9jv z0x}`|Jy(#o%0O_(ZWIzA7});BTv|gT2vbH^oQRJuq~zrMnVyCn{p{!{RO?Ew*hEDM zb-9S+^0S!(y8^YYwChcqjL|<`iw;|5qBlW(gr>BjWWGn5=L!6mFzdDX*gFKvPT;0|Nd7mGA?GT?JARu5# zhtM7{Tjf_9bU#^OroXx7uz9-Jg=)?Mu#`PWc+vP`ww&Z9>~!L+iu?y)q5pW3ypMKCfN zc#^on;dwU+A0Mu#Dsd7st3&d0%1}>qy}L2Ob$V&l3(Dx4ym7R480g&; zfkVhm2x>quJ`xJH-EXWy6%MLOL`Irnse^=b=i2ERx2&IJ^O`LE9pvE5c* zyD{0$ioP^BDHJXOf2Z*z!p9fU1yC>uD+18m1ylL$WO_9cENcV9}4SjUsZL~s%OD~j@Mjp&{OYV|K@>3$)k&fN zY+KdHv)9xkqoaG%)Qnx*bs~9s7p%55`@^p{O1>0=kW-R=kVIq zFZ7EmlOk|9)mG%TlQT0vTDE-wJtU7o(4sjD=W0g7{Gs!?MMaWMzm~j-$q^uOQfyklgb-cv#1*e6_l0MX+k15SWk^P-E4?pIkrX!5`v6820nGx5j-)x5Hn6&L@|l9b#uJ7Ud?7FjMU8k(y;ZP+(C|5A!u@0MwzA z^n7i)j;x+ho5x^b`R^>iwTH{=wgbl*y@}D$x?Kwg{*M7YA81!CP-}7skos&+o^Ubj z@5b1dF9qtgH-;iQp7@p;E$jfv*ia1M-;zml^x&3d1k|Wu84Ssl%4=beTMptw4KdD^_>AML{s+-`+lT>J-vKG|#}aHwnO$io@Nz zcfq*{HYRw1n$`s}lpfw`ghaOGwa5rC8DxaQ)gW6jgiR?NMadQ<;^3mXCdcgT~(wzngewW|hUAA7Sfm{*!%~;goXgq*%D`;Exz0W>*|B?v&s3G#?5p-vU z;~4}Cu!TvwMVZlY-sb!Dm1#Y$r?B+1oBGD>ZT_<^h*>^OC5m%g1;W`nFW3TI*3shf zDh_{WOi4%g0W5lwK$liRclDpI2hR8yLQ8KDBwqM+x3M+;uo9C_e7g$^X~M|i;L-H- zbfl8a!YkL53`mL35BNZJ0rp)naikY@PRD((RTVF_XJBApoi#VN$97kLZ?7A&kqaD& zFt7A2Nc5wD*zLypLOF|=5NM(obBV~To+$&vgue}L>H4>+7`tF5Q*uX~@0Dw;jSH@R z)vF)Vujy&o3D4gV*b{gbTy@y~de);2ME_S!bQS%52je0=h4)&T3UL_Ey79nNEPcVSe~;m#TW^yu8JmET=X zlkMg3I;hI4ZEtsk79n`64pStwAD$|9Cr;d1=LM&)W+4Q67NBzhPvymrAD@BJ<#MzD ztLQO{qjk!J;^x0!fr-{#oba1EMAbep2LN(W87x=WtX%TKF9Fzk!s|+*^;JACVzuRZ zxf=wD^PDnHYrvsRR6nQOr4lw^sDlyB5h^>R+nA}L&tl0JVqa-3-+2JB4Y_{1_P%OP z%%zBZK&MHj{}XKA{pRW`K-(RDV-W<~xqQ`-(|u2M{&xKj3jnV+&r~-%)Gs>SXnj=8 zSgYLAWS3+T?<#irymD}G@RR*?4O9u)*#kIjrGDbDfTP0+diqA*O*9B#=0lNH=DH|% zwad%>LThIy7^~ed%Z$teW17HQW-mqIG~R4P+~i4Qj(=W*X~|kfE~Xb~CS!%{B^pTp zk|Bjr@!GrfzkgjO+qv^o>sXMs1U`q4G1KLzO{Wu+l0b9DNk-wE@c+_rPC^tTPR!~& zWq7E1+~DKg0lgVF(N>z#a%Bu+5`*Sx<2`8nhNzDr$?X08aEG#SpD@rbT zL}X)@1B&b-&Im4d7NI6o=dAfcRqUS-#H1y40~(;w*RFQRMWTW$tP5B1gj8{z9#HoX>z>6F#vEeRJ{8`^agjlm$uF-b#@(IA&-hJxNG-7>^M0 zb4*ObkTpfcoLhYPyKBIYmiO`=c)!mMHI}gOoj;$We>HTk{OKXc%P^_=_v^vV8|$t& zWJ>J&Pr3)=igqZ{u2KriGj}w|GtE6|{?2JUr{4~-vtJUSg;6PHQPvB9hrCUce`sbQ~dLBFzdbSc^8lP!Ulmk84Fr|}IKCWht&Yk1NGreET zzQewjKKi>sJcF9SUh2`;>G6=2X zy@Sa^_2^fFHS%E>f-4VvMrAkG_5c65af0Bt-3Ta+>mwV1#~xqRpfq^V6G#W)l;wqW z=mT48$ZPuBk85VkPdX3yzL`lB1<)x3-w=aqQW{3uroo%)eTCD(dTlsKFe% z@36ie>Ea2b({j2~mRx}y&J`53>poB|DxJQ)k4Lr+zDZ_kl!p!-qNA&~FG9S|Yo58# zTh+FhYGNLCgbKcE%hNrLEwiLr>Zs9i!Wn*GO1~KAGFmsZ&We=;Nx|3?m^_u0l{Fw~ z8okoSB{V4RYjg8}o|DU{`2_@QfE0u2jfnxyL)>1#8ULWpxx34yzZklWjm==3Bn$a> zSt8B~3r7wu_`P~%fWK}j$)#0up6yp7DqAod)pqy1F4^$eiQbI;+?J^$2@#!&9{$uo zu>(b;+2zXtONi}^Kpr1pv;ZkW(x0OqFBUN9ibP&l0QMIP9Nt*5ZjC?uKOC&i0{v1k ziE1@`;UdSbw6%R<>mgQkwRkcJ4u6mL7o7Z@ozjJrHa0e*&X&CFh6R@AFaT7>RiPpO z@`Q;`ocnrVMQq{S=LDzssP_$47eF=T#DN7;)y3$vp@V28a9@{|NQH$ZDQqH zz?fw43-qi9qaA|9Mk@J-Ufaqglp$#qz7PvbDFUO4%tP1)5i8D%CdW6p3}9FYkwI5y zXCwmy)1D+T2jSiWQ+21k2BHGniiJanlZ5FAvc1MH<6n?=a6plkH7c z%!q!xM7n444z6)@e);h}VW{ok$uou~=NBLz0 z%Tl+Dw{OAR3x}Aw-OA^G&f^z%<1=#ER<1u;maLibSZK*aTGs%#3S zWS-qx2i z_W2TJG7npe>=|rQw zMaAt}AI!SW>U<|O@TAUrE%00J72l{NQ4Uv79EB-H3oakNYMji}-1=8G3AWon1sfbW z?Sf&oM+$e9uU}P8t43R1kC${9Hg%hvo-TD5AprvO)f`#(A)uka67vt3=v?Ei`_aZl z=t)w7(Tbo#1nF(f6vcu*y8oixy7)uTv?zL}rG3UQ;Flqqq2ktkR|l%vWee1TRw4iZ z(fg<_4gL?yQjbT!A0zA#%u&~o9~(bfO}@jGX5F3);;8L9E1~b>K+UjP4bElNchNt7siWn~kxMOJnyTV;=w5haoAoxLT>D5Ifd@71ufL)m1H z-`)9q-+%nhpPh3%@p?U<*Y$YZ=cP*ojR(R=D~Wr))gc-rHu*d+uhP{8_Wzdek*wc> z64iVJXAU2J#;VD5nAmH_BR#(C@LmjSXtd$bTNog`z_Of`np&x5AJWigc#l>3hl7e9 zo~T>IFO3HbG&RGGaq_T?7Z0BhV$))QSdyvUMHHHh4~Y5Ci~x_cXbgHmt#Cy|iu^1` z+FHnNvc^fC_JL zUP%Q=^ zf2bRlM+LScR%+ytZfzOk?^y&+sx>h(qM815VhWDF*QP5*PEYWL6~23i-pJjp42dyt zfJY^z;=ypL>}YRa+sU#+&|ro)*jxm>?+Qz*$K=Tn;^s0^lgg#_3GDB`KLTIeF|naY z!^X<$I3*>zZdY)#=JZD*VkYF1#3Uy)+iJT>B{1(9ol6_Wr$Bt<2$@dWN~$^u2}$v& zl+>5jqz$Ath&6H>{l6=nK)Br_7(QrX;z`1wsT_bbfVj@GY%aE1ZOSF$6F_-o&FePE z3c!67OvUczjAsSop?&&*wzcH^J~F4*iZU|iSQWoJ{)BVNtWo4J@xZ5M@2rZ5-We>< z!AWrgrCR}eHUqg*!HBLh0;ldY$5u-d>fj+viNg#l;j{+>rr#E1WDXq! z(o$~%3ORB~VnUkH;xaG=q)@}gbu)Fz_lZ*#6EpK7dsoiLHYm%6$c>yN=5_zoAI6Ot z7nKwT1fQMYwEX@mXLV@_lQqswlnpH%rTOk)<)o_0l_a^-TSN6N{^DKh*2IeW_pYh7 zIXLzTX&J_|ewNycS4f?=H`e>=w_{_WV~(Fs?W~z{UZ?)>&!w$B*HIr}h_uq&LtKCb3~%z|-F;HnbMvyNKcbrl85%Ic)QCX^ zb~Qhqy&~PDmZXqe2s<96TO2GOP@cY_Z7GgIo_J$v`f7~e_251-S$bO%dh=er+MhNv z;ME4jNG35F%szJD+cv!C+2HzUC2$2mFK5L^$XXY~+v(ykSUA=ezeZkvBT}%7{6HmzmV%XSI)2up5U&Xl;1cs#+G6$9|+Ah)@dYu|m zs9{28V&ZW20qKGvJoHo?$KKt9VLW|e!ZPY8zKN{Qk`?Jdr6?9Q@K$O3)$FuN{e=rLb^_XA1yrZjS!~2>8i$b^uAgo7V9178Vtum({%ctC=mrVIB;A z{sK&AQyn{r!N>a?yXg~36A>tzwdQ(oj-Nk5Lcqg?n>z`L2G5P<=VnVGya;frXYBg^-MTZ=+0=9t zXWisQA`h4Rjgts<2hrr*9_x7~P61%~P*S9S?s;XZZG3H(u zxbvjz?aYk%uW}#7eavb4@7BjSi|;C1MszjvJ~+4Fa4c?sz#Fv5!iESvMFBe6=^7Ik z$30j(s<_p)wfjG~X$GI^XJj|f(@PL@OLcd;?9a4XTjV}O zh05{Ws#2(Lz}v~e{Mgr5vq?SVqZA3^_gtn$r09)u%1a~62o~yRIql#%hFB|X%0S`F z|80~T>_xFa6w3B^`WZO6bhfvfrw%-}z;)PYHeg)l5V?&@xGl|Zg8CUafv2K+*t(AbqYEPsrb|!gd1m@x9m1FN`d@ z%PdQ*6IWuhzedoJK3mL?5(ELoVFUxOxj zog`VCZ6XRmwg3HdNflZ#utJ>oPK4NO!B(fX{1^c+cn3$KQ8ohRy+U^edvE+%`^UfH zYy^w;4$qrZ;8(#ZxNsN*AHa0C;i`J%9!cC^($&_^K-x4iJHSEY41Nv6ooBYpk{2KG zYldL$in^vaIi0-o$0?Vl{cbEg49lId<5tEM1$Wr3Ul|ozm2vQ~ImlR7mUNYl7O#$W zz3$twP4#|VpHt9)W?5ftoZ6yJ6Q8;LpFKmT5P#!4%tN@+iBHX-S<0~BmK&a{A9=lV zK(yeXEw8ccDOSW4_-|=xzawe_DVKbsm9aOv%>L5L(UA3|=iGsOp^Q0xj2~hqYFjC9 zVQy~QOd+U9F~QC&!=v9k3R1#4XACGy439~9GT#^cp6w)O^&nSobZXayz}GDT z$2GaB?J@f-zC(v9uj?QQtnq(mOQHA7!P)-z(Kh~bhp`5Juh=2zE@`o<#Idxftf8Ut z?wc^z{0YG3ub$L93f))e|QdDfhipqa$&GJj-ck2|(2>EuaHEGyYwo{G$@iUlGPjmaL6%H5e ztSx>Dv!(x652)9ZpG47ur9SHX8Odct>3oll!uKHzht|@S&%8aZ$mb3-^~LOOzYoYs z6fLr4BA~Qd@l-+6?;`G6OiTaCu<>?t%t=Q7vcJ6&R&SH58LH*anq zsbsuo;;9!+9iM86JXA=6wfP^&G}b7*_Q{A#B-AuKzVAxhwa%UpDR10yDuJK=A@)N*DN?!NqJSe9C}v)S6n#o zEziJjhxfvTtJ{t5va?y>F`@ezWoZ73MXyNX)ZGajDfQWN%hLu@{>fQ11k?);4%1@X ztuv=$o1y|T`kPR~ef9IvryB#`}pzWQBfyU^pxC*$6{W*a4aE(d(*5U6j-e3O%07yQ+kiPKvqi7F2*l* zZ|>51THeU)PGxKBEaq6OO3@WxIsf+p6%ZbE#}$AsvS#k|7iEBOT6n2%P5tEYAtC}V zG2Rs0=s@@Jb?KH)0V0|pc~#l1$NuXf$33rXRShlmv%nia$XK+3dPR)hH!PG?UTQz2`@gfT6t*8_Jh#M6|wt|0B}Johb4-xsvN5T~?V8%! z!(>8LogLXtOgFoetFo@D&JQn`Cmr%U-+1v>RUOV`dsj_HzOLMH9{1HZzy_E93SIzA z`#+4SE)RniJ_mOFr7XGMtN{p~8NfW*kodi&Wd_pSg(J_8^CnuS{0J+xK zmn_O|{Q9s4kQZ>C!EXL8N+`^>Fj}<0xH85BLaN^Uv##874K#tsMwP0Ez4b#&8&Eiq zg!8o;1c;%r8mUzaakQbR&eea*R*@d^R%3Zf^bCogVZ;Er5b-g9!ucDdpnI>_3@(nJ zv>61b0oo#j$L+?AV}i%1sA}J)hIf;y?#^C{hJC?=&AiIDL&i&TkL*5)Pic0W*8o8W z2F49jPzyIFhn7Q{ zxfe#1z-KrH*(^ym*LSJK*uzJT#Pgc5ZSBG*-@a9McgHf=dC6_0hS@d?aB2&j~BTZnidY~J(}*K=%4%-r82C);+Ajf}ue z*+lC5_rH%Yf9Uwv5zE)$q_}Tx;PL(-T0W2pOj45$m4-=nbU?|;#Zc8i#jeJQH z6RqFBf9D4woq;H&@h^~AP_Z)fS*xo{o+?cn$krHF9AM|5iCCp*ID{Tfq*{N=PD_Kr z)3$|48!~nPMUS?1CK&+7!1$wn!ZWC0HO&{wu3})j31Dej#B$`QbSYS4YZAGbp3|d8NE=6ubp$XYk11@*nWtG^4afo&I z`{F%8DuHd5>ghFKQ2kIx(1_hrh+2H5S(~sEHXL|_U^KH~K@jb?PQ9rr)EgW-O-)UD z*Dvt#LE`fp*MBM9V;n4fCAJm!K=aTh4Dw1m711V7A1N!-7QJU@eChKd0Q{$p93*Ep z?W1F&=r{xl~A{scqSF(&@W$`GSo|(FQ7`T6&+)lstLSy zg9M(!9<6v(9lyfBKX7932eQ+sCEO{t)>irJU$unLd)Ybn^^2!pOEy@;9hXMDn>??S zGAASVL+2ZYiWr)IJ1>xpQ+9OxkG}VqEyd{I32oznhhxWyAK5qFu(AS1Ezxb_XdRs_ zWDIHYJ<^TB~7J!2E52lKI<-cF)w7wWK!9#CvXNMuls;8K7U!CxQ zv13>DQ4fd?hWdn{^_AB3i{uJsmX=GkbR!dowffGFA`~G;gLlIPrR>KkmnRoHNlW^+ ziLX|^E(=(lF8Q={0^@gN(Ka3<#I9UY{`T%J^RlsQh1o^hUo6zsSu|%M`{q2RzKP-F zkkW*CdA!GKirr50cO@m`(MVP!J;fixntg0n6hcrZ1rZThy1=eQ2qQio2@Y4MzuzPC z<@R^efI30`V&c}+QHRCfM{~x245HqYiUNm&tel?!Eub}EgqvijkRT**XvAI*Pi$*_ z&a3!H!Mpk!Q?X$sA){R-wzIgr{f#@+gdh>MudIS<01z{MjOp@J8T898E@rzv&*5RP z*fsbevU762foV0VT?UV%H4e?PAt7NIpcJ4&*}O+rCfb|7fB%gg9B0?{>xoXP@T$Q# zPc9}N@?VtjFkDgXc2H^q9djD|oPsk_J5L`NrVIY;D2b=y;m@PTD3(UlnNf>_L9nK} z8lpNGf3;Aa+#7UB>-=pMUXt3{ly~n=W70rP(EUDizK%oTRQwBEBb=Wes2jxE<^1N=f>QH_ntmI14A8QnE4aZeIPI~SP$cJ7%OiM#!pv(7UkHaBwswz20!p5BP z4Z(0hKyzLmTP4&mcQJ#3=*Hs(Q5kzS2n2qM7BSCyRE$FHm#dwt^c7z0>bxtv_bcF( zux80HJY~Jz-Jn;Vn-!Pym^W2$3Sf>$f|pdw{vfmw!M>y>IjJY7O1CBH{AUSb5sWJM z&hh8W)h9VPnszoFt!wm^hRB2<00Qc<*lU~m{W6w)Sudo6|0WZP$)0}Bg9jUr9F}QX zas8j8Xw2%X^4IL>?2L8C6oQh)|LUmkO8xaSkiCVM5IWD`z(7;P&!b7ZsiUI-DG&1U zI)#1|78dHiuEX<-roV}c#fb1b{nAGyC`eMj4FU4OtY&CK&&)K3tuk5jwoMmNoq_M2 z;42DGQCajMHda~5Cte^pKgpMUiq_|wuf(%o!|e_qmM$J2_xexm;3a7Ar-GM{%e&#`2j}g z|Jfo0JD)#)u7kDvsUzCc29ffta$NY+E}Oz(RRwyg>TY&D-hnt7lJ9D6a&q$6J{D=_ z(txxw43n{AL6BEr+t9kIa2OEBYY1T8^tt|S>c-Q(vur@>nUZ5wkBrxz4CNn9nG18P zIY!ffO0q_N2t8x~;#3>ONyAc?^)k*`hug`3S0p{+_Y{GQKy}5R}7ID{~q&bo?g*KBybw<;59eg0w(VGZ?X%@@x?Mns(8sHD|Q+1 z%^$(}AzHLr{1NCMmyPAq?AKoPlsof<_tu4az0xiCa7$L*79DA1z41PhvwAam(q#pToO^+O}IPbVf=GG8Hc&oGZPq=dNpjPeiZvQy>H z{8>-B-bGREMDU)`VjqWtEa_KXkT5YZPS#cjoqhowCwl6=n5<<&y&VEhPzs148OwLe z;s2hvhJC_GEb6IM5bcAI-aiI!IW9IgSno6q@j1o#AgdOMh|ZphFj8AlkH&uhq=VRf zpUSmGsyCHS8HjyUA58xK1~qUjgM$fV5(JknUV&;uv#lwX?+Lo4x%CjJxLe*gjLYlV z>+9m4iU=J2?EQ$(!DYWMLg2OJE^G!=j3$$L_ySoNbZkU%4>+fa8 zY=cV$9-rdE!eJ`>+jKC8UOOM<|D1=^e=|CoJFQWepn7y=e-L_-Utb^dkU+WZ!m{WK zY+o_BhT4qf$j^L-pUwDF)vwY}E6KAsAa?tf3T~nCJ0Ui<8#RmkL|Bh``Cj~4ohM(i zu(Hz248+SvpOPYJ;{b)yi+aur7qW5NaxhCAC=ml1eeq%jCdpG|WR*#j9(>RMz$nrF z^CzM`BTvLgPQ#Km@fyJ*Kpfewe-QFG3^751O@-2@XJuuS;r^M>uuyKbQzarzfm8VC zhkM88V8+qJEwqrQ|QO>j?r zEUJ?`wE){;EOuMt4N>I=Zj_hg=kX9R=;bXh zzdtl|^UD|SKE7A)-YqXp!nluWs0g0CsHk^uovoOx->sZBDqNJOWYwr@Q7zsp=@qm+ zCv~y{^=7*P%g>&9AkA!)Wxc%p`}Y)s9Y~LeNuwP^HLm16{rJ)HcS?$Fh3E4$PBiCu zODJ5vTsrC!QT0)j+^m6!_2#M0>h1?!}AFQ^{)pOV7WRD52{hI&$zHmow9F!rE8Ar>#k5X55PX zCT=EHdK_0&R4f@gLmA3)>mIqhD>O4wj<}E#avk}em#ZGETdGJoWp}73Me%3sdmePP zXC=F>F8gtTz2cYqgUbQj#jn|5+vlD|?zat6tBDs;R`zDKZ&I^(g z9v+XXs#cMe#h39^(&65{3BaZM53A)qyB7ESIp=h}6Gvyj{moVSoqH(Q3KNwHC)5MAMY2P`CTCpZ=hc)FpV~LOS2RJkZtICAP-wCG5o4NJ=Ezs?Tt8 zPG1CnjNllj5T$o==XQjzd?@K;4hRf9LgGn(eJ56Zi6Euus+`Bj>_F#auAd88ck_6i z7e!|+)|Jdw+4o8)^U`k}PNKZEJE`wIeGphp$W~q)V?B8(N*UH6iRR|qUmC7^XDYgh z?6~E>4qG~rHcMYbeTTi@JXY6Yz)~LUZ$EH_KRG8SVct0WL?jKPo2Bx{4=Igol$76K z`IM9OxTO@jMmhIHbg1)v+c$OCP5Unmy696EI#M$!w&xxkQ}xihPBOOYtrA(bFSg}D z@wFm1T1rc&-1WJkM-V0WEZ~NgeHNwlQY&pYcRJHg3xdmGnr$tL zA3o8PrJUe8`*?cCFmbO5JohD_V49E~(|Hgs)zaXk$#mfYvOgK5`QG%Uw`Coy zKkKYz*r(H-XXH`$+2LTG+77%X3lv6{ghWIzRymZNa^KCIUf0a(t#YD^zvXTCh}PYy zBC&BFlKI(KP?ITNAGUM-bVv0VqVvPU!u&|7{?!&cP5L0zvM(D4H`L#Ldq0BEGN&e; z)VL=nHZ=I9!f~JD?@j7c>#Btk<0S*@aWN4~|HK`qex_XiNQgXTJ+XjW4~R%M@vfh) z4^}Jr0gs`w6ovhveznckpg<@Y(hPKikG0&S$PF;!Oq7;8ZaA#ynNIWl1 z(+>O{VqaC?D{;BMJQ1sKriY@TwE8ayJ4(yGp~+C-G}Uf?S@7_308;$!b}yv03T%@o zwhxn>E)VdM(_jgTsv6i4J}^FEmsa%ro&<#(YV+WliC$HfCThWxYLaSkwnlv-h<)@s zeYFq_-%`C9QjeG@K8(w$-P*4Ea=QzhEo!1d`le15^4zJ^w0DKhWzot^qiatZllWJlC zBpFzfl=_<~M4}sFpm_gx{P=bHL!>AY`6AYd?E>Gz>3aMe+-wY?1~i?SBxs1F;beAR(!_jdkDy zMHcLKQe#t7VwP=};LX&BNcFAj>?fZ%jQtT!zXng3^za|(IU9>E@{SCzf;-5&>cBWh zbY!BHJ3UFq$>{tV!H3{r(j7BhU7=J5f`Eqd+hiazXjg`PC%)V#C)Xr?ztA}Oov-oW zCuk7aE?lKJj=b{f+0Cc^XVfWWkF&h{LQ14z>0PS$G)v#? z`Iben&zEwN$rG6+0PE{VWrpH)UQ3s%ah_!KWO=8>O5@4lU0ND3LWrcY6~bEx&bJyW zYr|s6(LXSLX6c0JQ4MJpNKTzlvP_XRA znBskAy?l9tFz;t}wnBbZ10Uq_0- zlyA!FGWy>rMxq@hC=_mY7jja?X9`^U>)j}3=gcYTwxIGwDj^o~Z`VIv35~y!FKJm$ zi0YGxFfYwYM$oN965VBuqdbsmNwmE#5TsQ6)|ut0EFb!xUOjupo~Ny^U^CLu#M)6q z+FxIkUF>01`R2_^-=h~4Td5~eAX{`x<5eeo!yXfAzCFl`J4*%jWzW zNeX{@UG1PGU|Fv#tnGcjXPSO)`&_GoUci31{r^FJ%cmGpKQFN zi7CbIoTS-fH60z>rWk+FYgqy{rCQ}dPxBpe zIRw^9zaF-_a1sAN$5YeO6l*7@ri(p*QYc#NL$_#s8SDLrkVci_0O=Dy8!#ew`ROvX zzBi!2(*o8$LR}5&SgN*Cq-fH5*mn-w-wyUamHXzDu!ERK)^8q(0iT6FDw|%kvciU-*Fs5{bW%lMnv+o z{O{s|bz8m>Gn4g(jrWv<#44Ls_GQ;{9E)pH-Q+fG#5Kjch0PzdbC)T^hjnH;EiO={ zBQLpbZ82+7j=9m&73<;v%ib%Cp^MPidt5#)6mYbyU(r+NxT>n8r$XD&`}(o))}IJ= za5>=%DPkH6+1E(KTWDNkM5_s3iMS&R8@e4c}2Q^CdklKn7x zAx3J05yBm6Cb<_PpSvBGBQ79*j8e8xkiwt~^e{!WD*B~Ulp?K* znXi@(Lk}D_D}DPc7ne*#n$Ir*kzRvML~W2~3L3M_0W zC0Uh^MK#cnb1 zso#*Dwb;h00>nDW&Q(hCl|HS)bk@d1be87p7CilH5Fqg?SS{@YXOBjFA&6HB*1kfs ztw%(zRu5HA;ik{OmdA7yd_9Ixsb7BDtA=b3!p?}VD;ag+Ty4ut@#eEoO%z^K)6igO z6gsC)8%n}sJ1d6|BC4k?NNnO>S6f^9Kd*m(GK%@zf9y{<0)fF5QRdT5^z__}8zBu- z@ihaz)ilMrJV!;S-eT%#YVuirj253oi;Rgq((i9&C~51}q)ivUuotIjQ&$vaOCZ_} z6Sm&jn4KP8U!bdoy{u31NsDr^$x}(HX|hLz{&CDubascHBhtO*uyL%e#5CzM=H#yq zh!8(l5<6k4a69lXUy#d5+u0|$TT&x&=DvyL%X)L?suNv!mC?D-qh|hbLCG@7Zj09-{EKuHrYt`~t~tRbU8b27 z9?oubpx#Y5g4&m4)Vx{Wfoc?kbK2s`XtPSAX;e+Kc9jT@(t$0&<8+(?(&Z#GnaK`G zGgjnM&W_Z6n6;z#&yR2Zr)P#3&%nvD~rO5WSW*K=JBq z^5K_QqmW`@I7e;^PY{$9$6phde>2QzQ2Sw`w9-v9XZ+;<4w0+LJ`Yw~+uIcl6Ptp{_qk4K$vtC`az0OWTM^=95)1B_U zQk^cs`IirkyuBTb+?7l5i%1<@dm$(rTTStHSkg&K6*hYXxG_}|1{-k>ERN!4yvo3tFb-Zgev?yQ}^ z(1S<*-+QM~pJc~3nmV;tT|EiRE@*=gv*jmX7os?2jXa?aHo+i`_P^J<#6LUf$hXc2 zDbrJPz4q~6piiB6^ue9=kAEP8u7<&rWQEpB-=eDAF~Foa;Zp1lG~Q!~x^=$WEgB_- zc4|XNBMYDlOR;N2B@j#bxiT?;0~XlLqS$q$F1)<|uZLsAe+Yg?z6?9H@y?kqwx1tG zdDR9rFMV2QiW(j^q~pRrIw|qg3)h9<4o{pi_R@L5AsiA3rH!{0+%-XYPK- z*-jpJl)HSBl=^Q5FXikr$xqzyq(b-ov3Sva{Lr&jiTJVN}Q*KBfP0=lw!WO$?hmE0q174bfS*LV|5 zSbwn!`*%6UWoDl6vZb=UDza>qn;^bH+Gx4-bfElUD$zkswgi6N8di_#o-sqy1T)%5 zr;g+soaAF;T|+Ae&h4n*G1HC{jQ|qexMK)+pt!>*!Rb>{QV#v*4bw80)R*3BmpOcc z9P_ueDna9){i+sLQRF=(R0&7YQW>bY;+xHE-vpk1(qd)EeP-#cDqR$-vcHGQp+at3 zupgsh18nkF@(!M^7(VCoD}luC>A`l#c%PamhdEvqmF?Vv8EPI*gLQ7g=O0NE6$Y!B zM72{7U~8#bi7v}Mz5YadLNu-=059x_!)tn5X!7N*I>7KZ#b0p~F(W!FS?1YX#@Bei z3K40)zV6YLEeU4^6}J>A(=MuU+DRD6SJqOE)Ntki$~dao2Ibe+ujlsr$_JaT1hsKH z!iS3&{xI>RXZ!lUzf~0*$WK{2`Y97ClTthHJr8~Ui`8*^WJAlR9_Ib5^s&vXLrKfl z<{1Y@LrvPv^Q7fetwtmc(~fo%i9(G}dpeQ^jeb>-MshUiISm*WhW~r->b0MD?Rk<; zK8Jn_+UnEfNe}(eq!_~Ft73zt($MnFoo=rp{)Q+@=dgw4>A%t3vd>3FMR!C4Zh7_{ zUBTXD&shD8#$G%fzd@{W=FsAbSB>+{uXzT05Pa9k^3l(a>PHV$qOL574HV~h0`fFu zDK0fXy{BkpGV+tBy(iNsSA&sN+yW^fqD*qD^LTKo#M4@LR+T;|R|llJJMOl-OC0zI z)@>1im-TC6?)Rb_FCJS;m45H>);je!5$meb`(v8%tF95=-WRUQD;J_PWW7tT1%^bn zJ}ISk%X%gTtY46}t@D^X@z^{`Z^DEu@aAUDn2F<~UguXnV!vitkJ$!}cz{t#io0|V z7tPeTdTO%3)}N>;@yl!hHTKl%?!~=!egqW-$9nqulzt&)Z?pkjExJsHX91>v9{Rc= z>3%QRjI<(yK^2uFf@dvl&I9QCmU|;Al&y+eXBd|xnP*LmZX{c34FSssB_4$@EW}F) z28c6rdK0O)!mbw(uzr5+-~(M>|A|I{25;25$Wi3t&}l_fQeWyTNr`Yj8pCkkfN|)#^dY zfR^mIIDNwtL1K+LZDuhs3_8b^64ys7Xv3sZ_Qk&E`DoEfQonC)X_8#!IH=FRePy+E zp(cO7Et-e8PMo>l99OCJ1{_A=9Xosb;}P+q(eH^KL`^(|QYtUmARE^kEKd)2<$k7L zhpP`C@W_?@e+qyZ411t>?k|ki8bO~KvD2F@emP3_b|f=j&lrSV`C=P*7lrFNur3yF$)Oys_y9(Ee!OVA}1SW zWKN+ZBPU1sDGE;9C&MmSSK2oC24D2^_0@(v?ORuXUF$siI@hrHVtd+##z5u3PFZ;P z+%G}d?_i?GhK9y~>{m7oyGR%sp`-fg8OQXK7c_}|Zz4|W?(N&4E}uVrY8R&#bu?RH zczt4RT|m`(=Nv_A%N^IS_(P5NLW~?Z4#fIA+Q&LkH_FuAsHW5qEHl+Bc+*&6So>xE z^@w_Ubj^tQpUi6lUnb%@Z$M#ZcWjy-=~)za!sAJO2PC|<{4&LBHnm^$4X%}`j|s~#s%Ay9zqhv_bYlt?yHsjh4BR38OrX%amjA1t^YT~w?c<}BDP1J+*>zwZEOC#H7r&EV*r{g~!8L9K4 zOqs}0Q`v5$ryi9InVzC86{IxWu(wP~=R?ybVfZ6}{h^^ef=&PS=-5$m=j)E!lw~0y zQN^B$%dqQ5>k#`fh;&*^VRbKa9cVrb;XD?T{L=8MLHmL%qkl>Tc02hn~)V!uFTRa3AXLq~G7ix+uJe@{#Wo04Q^i>`lJf%x=@E(1>Oi59h-0URT zpXIyiG!=&KPjA!uobx;u>m#Qz@btEv=!*MJB2(U6E#I?E^RH!=Azd`{93wgQHoh0u z><-a_?i${IINxdpmx|^EUjC(oj0|lgES8@5S7u|$vd!ih6J}t$6lSfIP_b&SCi8XJ z=fx_;Eel@Ut>J%<`pqoRiMqtF%7#+j{(RXx+cmbCO>Fa{xAz{MD-ID|ilzPjw@8aq zEjwA}x%6gY=_C|(d|eQnCY4Z_WiM>HPg(yCei4TVD{J3N zY-daIj))7>hI|ZF+4a=jW1iUuZz%^1Upqc68>YtT$ZNnCTkqi4M3S?SQX22|!GWE* zXrGu#SFPcdK?Swe@At0`8|r^3JuVp1owdC>pJqz`V_ESL;q%F0GgbLLNC4Dc*_;!O`IxqR$hzRDN0{D zWJo_e3!?mcV|Hc^tIp%=H3lrj!K~h&HgtdgW#iz`N@=8#Rcx+NP$r)pDs!f;3Eg3n zZr4ou4>e(NIQ#5fW+@SiBAvu#WPruh|H~Yp6DyS&S3H$`E?R1c;oiZ2|3MWv*hgg~ z#Z}?B_j=XFBfzQm$z9k}(WQKP-zxWisfwe|A3t7&#JY|1hN!4~fbMNeOS}Gi8yhR8-Q}RaNt62mCsE(tdu%h+k$i2p$uP71`Vwq)St5kKR`va<%v@z{WM> zV-$ApWBr;PGu>THn}-)~L&!_T5yLoBDqhTWJVmIL}ibEW@fi9Ha_k8tLgC_O~R_o6I5IQgI=3Y4N?! ziz3E;aY;OAdpQy(cy)=Oy)ESL^;Q-NHzK@8w5Ib^0ofkQ+Iou;O(kI z(~n-zx`5y3NOr2pBRQGZ&I<`W96ObvHb@-msMFQPQWKF;C6QTWU>7YIo5vnyUqCf zU#h~oZFmW?^DqYAB1jhcFT* z7PY}+wG@2Mj^V7z};DlcR~^i@Ex5?{^n+efpHu7)5C& z_^i_ycZ`5#+hYS0F0L_cZEdT5_|t3~YYd+a^A7JH{+D@~UmRi0C}u*xD8F@AL~0-w z+Wumzqm8GFZl5RZHA0J~ zmzwNy6>3x#>UnarQJ3~}r&BY1SmaB6NrX^zP0jX11btC(CTd1mQe;>;IiI&I5BS#tGo4)>+PV*Fn=PI(QRdB8sn;& z*0bQ?kqWH|7O(`wTY7qWy+0!g3fau=8ue6GhN*G@TuvR+v8*4hq6-#TpS#o^(oegB4xX|C&Htqw%8YLnp( z$egU6-Zy+>u{G^g#&Q5d;tQb*X%p{FEn3qF)c$^-W{pAO)o$_JwU=6vW_P4=rjN4F zU%a>s1qCX(QuCnDL?#7`PQFiB8HkUeNsA%jpD!>sH|KGhpesIf zir+G>=n(CJtz(0lGy7Yn4;g++IA0&AXycb+LeIO97MO2QxOk$wyLMFm!8xNwv*j(_ z^5QEq|B_NeXe<7E21b{2xU;Hi0t(%D|CR;>*4dj$ozK^5SjOHyvQzzRJj?`o0xms;`AD<| z6a@w{*jrv}cTEuwKiql*RI-hZ(66QL$Ocf% z&s&`rekb*)hCkrHTLK!SyRF{vQbBtGt1%4wRw2S)by`XgNf3JJ-BbuZ5XFG05<5|KS~h zUF(0%oqWTxN<1nAgOb6XQ?M45-Tq-STmfSUo(<8;1Za{B-UPacuA0DnfkW%kJ_t0Rxz4=N!=~Lg>NTpswJdqa-FkMOp5>!v9wzo+f$Yvz_?I_#-C**47g<`jau`fkP$_OuZoU z_xowxn()_#O&Xu8tG|7}wt68Sw*kgl6(`AcAMg;7WoOisqThucG5(gVE?QJ;APk(@ zB(;x;s3+HI8qq)Y!9DEHgM7^zze5i9wMTz-@LqjbX5S_EO`UE&bVe{mhjxB&qw$Q6 zqP3kRTq+|Z-8OP>%gEUJ>9#tbNJ>|^Z|`L*u9=y{u)CD}x4*L$$?R}v{tpZAYg`m2 zzUlCs77e(Dc0!#JQF@jk!|w2>=3UFn>6BG@%}$hiZNON2L!|oxNx0x`IH{+bIgHzEStrvQrKyd275<@Mfs) z?^k@dKkS&R>&CD5hZ_IQg!LJbF>HFZieJ#H_!!w8>uN#KM@jthPu9cp-?#?V)rZ9B zDJ!K1?3X6&3q$WBCY+QmAocqF_}hRnDt7&cK{}{ zn>!SUXWi(T5oG|^>d^>s-E%y46+y& zl(!lv>_}PvkRZB~{@CBYzALAwG3~UoeziY&>hzud^8TsrMPzWtl*XliIXO(_+4467 zW;to1;HeKeIjovlEie@A*$HR6mUG?jrFm?&cubboKkc};w4yGLm&F*ty+8GQdy&un^iEcir_|e+&B*&ECL{IX7A`X!FRy-Z9RHrH^Tqvs&qsGZ zkm(`Td5`bsoECled(>1jV|8=w+2qg8AA&cA8!C`8qN#1%eT}W+3U09US=k@Y^@@I@ z?JqQG5G~EgB4wDEL{dyGP*4k1edpxClzlKyQ|4!22>R$@&~?WA{jYM3Zy4gE|6rj-0Ep{+LQ7cq4%}Y#oqb(XZi>4 zUEaIp@}cm<5$%7Pmo(<7>_nPOE!^fF&Wxn8UytSzCp>b}+QdYjO1%8A*XocV5fSsc ztf@u!+uQ7%O2)=sL(=Vg&RxFI^^#HKyrmkRB)Q9vbN}yE+P`0{!abC5e9=b#oYUzv!&~!ZRQKe&vgb3^lj`cS5pMop_Z+hCMYS`j4G0LbqX6mgo7Nq? zUQKyykh`RSDDH{Be)X}B1Y5(t6?c5ekFNdu5$X7wBe`-6+UQPZ28JfYOh9j{6uUCD zcDr)F?@Qn7pO#1uA5LLA#wIt;9hiT8tEf*-N^2Kwcqy57fA7ouSSO)xk?{)}wfdB{f2m(a`uhB}&LlCnv!dKr-k3MHLdA~U#qI@$Ma$ z`*Tr#ep3kXUU6JK@Fe$kKTaPJ(I2UK{Y4f;?6>_$rqkBX==;8S!R+z>vGvwrQRiLQ zIO-}20xBg^0#ZYZbP0%b57HprAl)D;ASKe>T_PnSr6S!e9n#$$zcahfKJW8hzjyvv zcfIz4nfZR=ocr8y@7_I-t-DAgu3x_n!MA^Gc-luHL95)195m$#h#W|%erGPn`wn7g zHQOrY=I6n9M!zf37Yf0%R16%PjEqS0eAC6tp_CXWpsAe6dAQt9J63rqTycuDkkr`Irwl~b8$@DG)e?@sNH3k9ECMDgwD z%(YvytEaKqIk*ukQfA%CMz3UK%G1)qqM~wFBMJ*UIupEcHT;!U7y-<16V1P7vnI-M z2z#BFoIEBjPFS;XRo_5A-Dw?h>L*ihLjN%D2=fT+js%ZhrVlWd`(K_|j4k#4S^fyV zpE*7EZqHkBTB`L|**lL^Jfflbq_O{JZ`ponfl~10bFt^od)7okX<@b*b^D%@9=;T* z0V0F18r+eqs|hcASU#ntK`5RS@pGtZ4e*4)Brb@RL;|o zI2XRsH)nJHGl-5)y6qzUYAj5woGj|gmlU*eW*NUep32_YB;Qc@CRjt_O>-& zZv0H;l$Yn_IU6$RyFWz0L|dVu<5pIZ-`Og(7}hD*ZA@;|*xqi=o^%h=^;5BfW|b@F zg|}{PZ`KQS{rdH;&NAe|4G(ToS~$|uM`^Cd*zd1Uk7mMA@9H*`VLm!qAy(9^yna;c zUU_-p9)pxdJ$2|K(h-JIpjqhCYtpsNPWs|;TnfxYMU@n=?wbRq78WmcB8oeJ#HJ9S2vZS5!k?<}uakPD?s2adO#(rg>q_5^} za#+}QzxZ57D*;&yqJGK*gIntXll?NGs@tT-ReZ!kLG_B{E^#x6Bi z9gko5Xm4gF4M;w_JNfd1D|>pgU!Eij?h81ry+{6$luBwuR*Ywe(^=g*XBNRB-Fw@o z=sf*hCre))PjyiKie#hKcUhT^xh@foDL_NcPq60d`Ea$rHym!92kqRm%V3B-dR}8m zH1YnF%W6dw{dUq_8HewgwI0VP-cY0{-8mwXw+Sgqc%bX8-CLwt47{M8o#o){-4D!H z9Wn*HH@KV%6V>M?N%i&9m(0OqK!R*ky7~FYjaQ#byZq=Af_^Jn$JCYXcMG}GyMvTV z7r?B6Umh2(*b4n`uh@70~Xy>S8Y-dhGLccMafpS{dJOQzS_ z`_1QzXv`~A*VYEBC8V`GS>Uuywz-7``t|G47Zu3HBAs(SmAi0;&Gn?6udS!=D+yqD z+UEDpV8yCx&!%(-uJ{1)YR)Nv5@tZ4#BvM|zh}xU_JPD`_-CjL71f{e^2m=LRb{Rq zD}kPF2htSpi{t7&&ykx0gM*}`NqhTP$0=c9df-zaL+$WEO>+#0R*)-=Q7b|x4aO5) zT@)b8Sy@-B0Ksn#a^_^#S7`7+5ZDl3fH0&CL>Z!7zRUH!g)M{8sWHYzYrx*BfCGR@5FxX^tW zd9OX@@*%Ook6*Qezeh&;H`520qO5<>&}46Kvju8JtElcXQ7@v6_4eL6 zoh+x!h}JW8?UOcQZH=NrOGxW`^F{}md<5)Uv|O^k?e!zkRaF&-KV4k-iiOShW}Rxj zMiFdMHPS@3K7YRRf)~k?^YT0q0~BqLkK^>UwwB6fM39*|y4Df4RBvzCo}NmIxloEB z@&0@X0se;$xYZRe!Vy}<+6-2g^x?VslJhSy>5*6@4>U&mLlEyGCyt}k6=}I~_wP`c zdkYHcd;^;wFVCzGYT)l#mGidNQ_tqAtu32ar?g59hTjwV0?T4E1j%|^m&hsqW2Lk= z(x`f_!Km+D=$rgb`iGLfm@dY~ei&0hU6J~7(S5}t+XjVC^bIoFGgU(El;lQOjl6?) zs`sLb9gK*bVCmgi)(Bs8ZmoUjV`Lmfi3tXu75v^kk1vMZrA{7E2h=wpC}yIWWOT?U4P-V7mD zuFCOpvs&aiGZiTD0G-}``gw*muWN3YX3)*UfO7yS9ZE{! zNr~oQxKpK=k^Q6-8U>IJy&QZWp^OFb+fp5IyRE>FBo}bIPjUvXWE~R|5s00T;9#?X zI?w8?m7O#VH?IHlY2f|7MhJIybcA0)s~H1`DQ+oBLFmQxTNU~~aXZyJcD)7)uH1aX z@q*`6`63_rK${T(0==Lgd>#E|lO1vPzCwp8G%6yZ)^U{_T=rhhcmMijxZF1%`Mczq;6>2CSbzb*M1(}h zcg~A=uWa)m94{wQt?mpR2CwiN3{f{e>Xpx>s)|E{@Y|X9&IdbJgoLQPdNJvVywzv0#HRr%U=Ch~Y%O!i?(V`CbZ~Gmbx~6Tz5Z~lx=2PO@8Yd$epY3+S!DM%@@39Uwc+2PNZ`?oh_=RSZDvY`6`-rrks4@S!n94Ql5%cRNq*Y)cN z4x8>|&#{VChoh|v@M0;c>>3|WhvM2!93O8EtfikieSQ0us#D*}Dk3h9h>Q&A9wmv1 zmM`u>>N5bv_XlDB>u7|5! z@9zP00>&N}7v0BO&qE$?S+9v^jpavm0GpJDcc`VU?dENd*8DKH{RewXy_y@jEiJG9 zdIdk_Y1H)G+(53PvJ}iFG)B-qSWmdEEGo3V7wF`k$b$$xdh!^HC*azp1+4dUuLjw08spHtxhbD^}-@cvfxlpbh>w{ra zq170C(cqvUiYA`r`@f$W+yFB`@qc&<{cK=OaBeD8@4y~l2fvyzo0!k$U~8Uufpyb` z4BB801V_c(Pbg1Za`1B5aBak2d`vlGO{ABvkM_+j(b0Hmsbfc@9R7b*_D`QHC`?az zZcvDgSgyxThBR}<_uDJw!Ip|mqq7xFNRgM6^ zfkPuNJEb&_+>6`hc!!)W2jPql3U6{=2NasUP7R+^hK+zA8d_sGJ3RLhF8eDfyE}GS zG(E#ypUdneB;JRHgy>~C&HPkvi^4Pym$ir4?$UQgqFd??OWS5Gr}Sk$ty?k{|KJ1hsHfhDOS0=Wf_XEw%@noUx`QoABj6j~yd5 zsw16i`7z%<%yu0rD9^p#X0Sd2IZnZg^T;G7THW=HjXa=E-q}iw@`dJcqPmj(4m%g2 zQ7?emufRI$hKfJ$f8X!x%XB-#6D}?;)x0V&%7TSgl&9XrA`9wk9=>6_SFiBmtC*=F z+hJ6WHs^tc#wfL%OxD@Ph7KHkjWP|oC&58MMp7Vm$X96>GiT3@OyLZ5`unu`C_W++ zlazFA-em4W-{4@8a&ySeBdB#X$6(nkl8g003lSECit9Md1;JfPn0V zA?)l}y0iJP@sda;2U}YXNaouNccdqmuBTTfGs;=U)KDM!Tq&JL1zuer1PcdTFiEzz zsmbxf+dNXH71wiW@^Tow(0u;?W2Z5uXrPK%**$X-1-NPi5mbTu$p zgp|@RP;ebA^`3&K9bgs|Rfg{F%@r10%FqEApkuEw8JAdFCxZ=vqitTsCuX<1K~jT| zo(ERsf@$tMa8^N31BCM)>~<5jbX`n13nj$Gou41-LY+G+x-x9jQ|nGn7&H3w3DTq9 zpqU(^seXP0=>;~q;K{~B0{F1Oswj+#;=t0XSXl&U1Fs^9fFM0a@XxFiGwA|mz4K;Q ziGe?jOe~;j&Go~u1Ob(?L9l?k#TNy$yQHM9drM)!Pk}5)G_;a??Ajis0k}Dw)@x-J z!<EKKF+tXLjf{lTBX z)AhTBoE-Li-No6i^T+}n*v11Z`#K}yk}x!(Bj7g9##uiJ2VA{l8_`q*`*3A zh9a#+F35DThsUJt&WjCDc6~PM=N)y=cphRiQp!Ot5dj$^ zVvqScO>%1H3)Lg2{U1I0rEKjAk+4h}<>2j~HM6{I2F-ttj39#v23bj_vFswCB30kM zVQ3x!t`5!?y~CM85DUjRHv@K4P4_*2cf{ca1?HqtrBu@2C)N}RcBDV#iRAhFfLGTS+NFxply9*Wz0Bh>#>_bp`wcGyA>(?ev&PFR3 zATO)r^Jg$l{v-Mq2*(rzuHaYoJ@L31g;#%hfev0QdyW8dJ{^;sFWXC-od(<^+>J>| zQ!^&e&x}@K|GAcyjGLRe;#gj>&G&?!)NorI9Qg}lou}XJN7B6m)b|9>Ug_xQT!112 z%7@hfTfm}J)zs8-M@!KJi{EqB)p|93P*Igya`ALEjV@Ubf6ZkN7N;D?bTku443?iIjB5es<#{`20RLtY7F4&`cBV;gn+{3$|LNyX=G zm`R5#GPnX!45x=vZ^JVnrV@5k%d@x==|VMdz*!zCv$3+sdhPAo9&s^;DF<`V zp1B@DwX8hi``7i_tpjTbBK8qQrQ?o!A>=|)b~yko7pPv6;Nq$b7y?Pa*mwb8iPCj@ z7*0-%jLdf>C9JGGfEi+H_w@bZ;V!$*xBvGvD2za(y5LB zhywO+Z6>25Bg)uc;6MTsCxml+#?8i1HNcv9>lXxa*0X z|1Z`iQ(jVHlHSs<3k=ve%4+wuENLXE`AuM*d&rt$ZgNXEt$t~wF;`B1&q(>r*0N4wq9aZA@b zA*5;-dL)?uv2Sp*UAu8xFTJjzn?%s#wMjcENg|AH#`9G)^QgH@dt3lNMt*_~Ce`Txfh*Tm5)P z(V-ohH`ohxLDK67>wNu@sG@$-3d8u@BZxK(ETx1mC1!o8b6@}o-dLeRoY40MEe6ef z^E$WdjPHV@CK_Yfbo^`FS1q>X-VF3Ywa5td+7lBYAw_B9$cok83^=Q=<(emApt&ad z2kdG`Cbf5W=g5qP5D&WyT*rd!_y?ZCFYd|8%8v3xrtXLW?MRQ?=phc-ICx9B>b*}& zGPTsuFqe`lU9+R4q+HUSJc&0yN(S@H=NZpsb6;-^>#8a>db9Np7Yx6?nCBA@PfMdP z@{3_SerJ=DkpZ*gAP)}>2sg2rx`2k>SC}16Df6j1WiX4Cx=oXM9gM~fgIEZ5sC+I+ zILvEMGeI6uE~&`ee`ZGK_{(W^NE+@Ba5w}fUc4JS#@gSU){nu)lTKGwRPcOHn%52{ zlM>BV+ZK!J4ku!DXFJ|C`-IFOQ(qktGHjP?hs(Te0H|V5ucz^En51~JTMY4^$RzW> z^^u|z?>bD&Fu=MY^?=Wba{U{bfLobef0i_kM&r9%%8~IFJ*kJLpFjbHDM}}=TltAk zKyZI!B1O0tIW~hjj* zH39*)g>HL(VS&?Z)DvLTZIp?^+B1Ue}6?~ z3)Zt?2G>_us^GF-8@q%>gE9RTjEW3^Y3{JybbR!l5^@vhsxm4qhM6(1V3a3;JHc$R zrK^j}t$u}hfphnbakG3H!qE)pX@iW!(g-O0zd|3Xy%iv>W;!OD-f z?vXy3Cr5XwnjAL9MPrrZAsr&eh3rkpU=*#egWqLU#K?6 zMBwDGHKJLm0eXE%cX;$H?wy|>zt`DouXDH5aY|MWQpu{hP>NQ9=49a|?d|xUQ zl<4Kzc8&PK1AsBKI)cl&=tNIDxrAI?2Ti1uR^C^Xmg=QzZ>Ok5gBhsh_}7c2-Ub=h zg@tr9Y~CBDCVksa)%O;=&zD|;ix9X(CKp&}=Pm!ewEnIWk!X-(JJZm7vo;$Bsb^;% z5acFxeIs(r7`03k;U3`!l2ZU_hAM~6(9&&59IcO z?9%jo@umTSJcn`=QkicRRRGiQnXYb%U%y)GI=}Nq@W53FgVU+IovS$vL6CpiqPRl* z{omEho?FGxaUadYx`B*X7A@|C2<6`id{N=@v8;n*)ib$@e*orgZ)=N8q(&e_@_+Mk za5MryOi8I__fq6dF1a&Q4JbHnlOO-FwwG6Ekj4WeF*1Q~-BRIEQI22&1Q-|ertw2R z(Urb5!#$FkI=wT$OU*p9th~HH4Ge#afm}0vrQdXK-~=d^t@k*7GY|<37BXIkN1F=8 z_dz)iTR5{2Po-R%vuJzLebafV$F(Ol4T&pX#iHi|{nP#b^;$d88ZRaOeI#zjj*lOKz1 z8YnJ*1?oxgg^IG&e}_F`)^FTveL4MB66R}^aTF|}|K5K!R*}^4y!)aS7K;4zQ5%W} z<&wB5J7(#(Q%_QxW95aCq!*r;@t0a9mgp1`uNMd>?SCcc7)aO`RDNjJh#k@O!L?5e6Ns3#dblR(>3 zVKw$+_)t-iB@?(x%DTFjjhNo?V&+Iip^%yx{%SQ5udo*sPpl|g+U}8(LF?Jr0U4|x zXWZ9Q5XKgUso|)whg%^5BO^S(0?DqTr2J{-mMm#!zYCG2p#cFOf*3k{ zz&-<#>FmmZ?bh8IW-Z&*)YR3{!Oz9zAN|kb9jpVB?nW^P2zuU=&eJZ&5T^w-Nv9wX3- z2$iKiI5^SQ7w&{f+Oe0JHrlOcZmv=JDaY4W3|g0$(?RK7m{?eykmC@$w08@Cvz_*mKj+&@GH=kH!qPZJUyUUuRoNmuNc6*gRvo>7lbBY+*8TQ$_m#2GC=kKPR5bn zzm?w{;As1zVCJVpGgdcuw{Fr$D(dB@r|W3YFsVC5hJ~fM)SCVL2wDTUz~~}2|Mbs- z#&)k59viSno@kl#K}7UDLPA>Sked4N(nj{ItYt}*?fPqm9GMtOpicg-+o$lwF{I75)23M&dA1zQH2K)pHmk3fSmu~2 z+MEt@&c)_aApR~@-yDIJ-FgGZE41Vd*aCbm#U&>fZ)PoBiXuRP+tXHn6!Ff_APZJD zz#j_`QQ*EXX`jr0*2@^J+?mAWhwRVQ@-_X6(&ovD==l zq7uiZBW_B|$`TXOg(BLQ0w}h!Vj#k;{T%I33RK71j z->V1K3&c`4uYtE@yfk z{xCRo{1P;nkH*HcwJVL<{aRXX)x9Zd?5 zN!&pqi4V|Jzua9Yf~cRx&IJ0~NONxt!YiXcxBujPt#aL(anPd|eBIF3=Qdd*Z*~bz z1m}DGhp3w}b?p&N)9NzMK)%W;s9y6FOOvALm?xgt->|z?JoIv7|v$PE;9%n)~pT{+xtEO3sS4sEjlQoj_K7eB2 z4+4S>f(4l~Ufj!wFL683U0oG``59f~9-j~svl6S#&w0b7>7`q~B#j7M>&@ui{v-ZK zTv75RctPaKC>;zJaw7Tk^WH@Z=E#$)s;cJn{Q+KQx%GscFWLu)Q_$2LJ2@6OIP|9B zXzP%1KuY+ziDspD!5g1s&NpF_t-h<3BRAo)cVqCx-``)6sT6E*2kW|%PH)-7$b`dD z@aB5T?h=-Uqnet8zCPu=*U2F{MCsx%V8S&E0Qa9>;>aJsd%#m^=>L}c8SMSlBgG=( z>kOKiacN}c#o~Y_8EKXskVjAtcJ@Jp-eMe`O8xy!&_5=a43(8Wrf&dpk)&@G{NH7z zrTT4j4PyABBP_XZBqOqw>r%vRel<2KWPbsBl{$$~vf8|4oh1>ayXNM>UNpR3rc`Fi zuB%kYetBIVp-{>6YioZ(2`eo};*;5yzGpN9)GJFgEYp85R(zGU_nFInVI0Mavrc1z zt73M&qQ`z3SXpu5aNI8uW?Fp+4GsG6VRoAV5E`J9;f`nvH=aPk<4iB{-fB?2-Hr8c zwtuq0M~nVzlRwU8K)tWu9g!a}1LEVs{}Q@BGeci(elpy>8PGGI*>-AwvKRVDRola! z-hr;~({wL!{aL9@#Yb28=Fud>wFQ+IQUatT#w277EG*=G|0rF<#Mp_`7kEBZ%i!i( z0vkc8fgWe!PrnHN5AXC45X}m!t0U@i#s$x%%^pzl{D9(TX$ts0?Vk#a+Bun-KOqhc zWJe_0{14apB+R*uzOM{9nxvDYvH%G0B3tyDTIi;%*ZnSJIN5#ivPJ5GzHUov{TrPL z+Zcn>*w5#8pz$4IHfE73utul z&ONDm<-Xw!c`rZfiS`b`Fph@3$-OgmE#=FBH_a!oZZ8c(emVk`;*00G9rl+O6OpNJ z1TUImzBe>TkLxFr7w90}WqJk&*ZZ;L+FI7Lo1a^%wn##322IpWlr7DJ4LZjr3)WwF2{g;fp+JP;oF z^z;$Z^BjBS+mNm|7l#Bs2@LQ0D{f^nl&?Dg$PlmoWa`+DIi#++`AP0n1#wX6)|hOnJfbEyyMqg|6dhwYUg_ zxpSfxO7Si~EDKZvacyx~EghYVmlHUtZmUC%tpP$uFT>xy%^eO0^MfR?iFTHgEFgQb zR0~r?4zpRHT*Fv@=AP^lA|RZ|S0R!0i&kh5QnDCI znFzI~4vKwyvQcY&9ySoyD^KF*}%^e%N+JN-iZP#(8xp1SS-He{L1U z^eLT>Bng&%5*hv%3-A;n$yKb@t^WahQ(QmgjTn>Z`iqmY773M=K2vE(o@8QjTRxI2O;1$;gt)Jy_!cPM=Cj(5+dAK1RjxzzlV~!h#q- z@o|(wYi6Z06-)6+1Wo7BLPGbuY>zyJu#5eD72A?11v4_-T$eJFZZG7}1H8Q*5K(%h z`uOO<=rS&sYXwaY@=)Ia=mB7E%vS;EpVRG(c}??Vbkg^22#mahT^0qYsFL!(hlI%HHdWdhkee*xik#Z)(c&vSRVV@U(OPQ0+=#hs2&71qT#qWq`Yqes^45}H*dNa#|J!UXi4wP zxH|50&0lHqn|fJvr8WLSKK*KwfhE)*s;#-dL2V%}CdR0BbX{4Eh&lg0>?TBGvl)By3GEI0|Z+wDNTGDqvh`_TEPjpPi zUjd$uyM2))f=aSw0ge=Jh)M@C$0H^oinz^}+ z?#v54bVKbKsm7C56`UgPEVfY>3+YtZ2-myqJj`@N6%7E=)I#=x1 z%@&B;xeW}ep~+O?KfiyQ5)<>a8ME7#d6(P&-7@6SM=c}lp$$&Mnl@4|B`Q)%AKe24 z5R3SruFSp&&=1T8Xgnvs+LqnB#%+oNnI=P$5ym|Wo`)0NFtGq%P2}g+Uq-etYRU>{ z)0<69T<+5K);1m2UbOKo7SCSiV-fudJ>rS1tKmbN8i( zYF1nbB7RXd}I)L@4mUnAC3Ub~hL)=dGS^*Du zRL~75pDQ|UxqwLHm)CZVFd~dhJxgT$$Yp;BLaq_cPCDG|fdWgTues^DTaXm|S7{bnE|=oq_(VqiJY9+r1wY- z%B{l1U*6SCyMHJ9-o@YmCmWOkCdTG$V zyu@%nQ+rZUQBgF=vdeer&BV=H}ush|Aqh#GYIq4H9d;Am;GEw8|X=wP>*OwZcz8bMmaf;os-M5yy=;oeJqB~APQQzV52v~8L&BvfmdGJKfR#_fibyW)~lVlUeLxU z9G3UxFXL_R=W#q>la|(ZAH^3!|JW6U{6k6aeXml8V82BpqxKl9~-83 ze?H~#r>R23;5PL)@5_yN4k2YS6_8jw1}dI05_ti3S4Qo1(JRiO0n$YPsY9+9OOz!L zodK2T|5g48pTTRoR=Pg9BgTm_N(Tdrr{FmW^XGtoQ6KA(Oi6p14cuQqQ3WC)@4kap zTk|`hfRGAZ*ucmdKTe6c77EallanW>mluadGBS~@BS2;}W!h^1lV>zHFtp&IG1w#f50i0N8W^c!`N)hTe3KrsO01SmV=^ydU=A=P2) zozIU1<{PU6ca7es2<%4O)*w7O6#~i~$i5uyce%YUo-o7%8eXR}sxeYh9`u-<-O9&IOFC?h9RYJ`8z_Fii(R3{(%{oBaUun;6Mmcb|r z*3)eO85IZU5bRl@1K(j{*6&}c2~+LJ&Oh2*O4$;nS!}3z&~hIOTlyffp}HxZpu%R# zy48>QFBlgiTWIjh)4*=%*Cu6YxWe*AjIP(pnig=Sg*Z5PU^d56+~Va=FaOnUULN_{ z7_x7oqVVzYDF#o;aM5)<4n~@Ro2=BB!^6W<%J(^zwCh)Kgk+ZzJ0U46ngAcZ7WkYC7o(5#eL)WVPCFUya}SN;#*g zgr?VBoiB>hZ+oTKsBnM@YDpl&SPT;kcM)&WJ-d5+?7DM^rn4V? z?a~8|S-^JvM_6fAO=} zmaeT?HhM4p%{(fQSLN8e>X3F7x-a<`FT#H8^G_q;xVwZM)@)HMotPDQ^_uR*PPT>nzPOqyx6)K>N zSYD#*edGHEbIwM<*bvXP!_e^kL0X;HEj}Olk5N%71AhSsTu8FCgtu|9W_euD)%9Yd zGs+)FtTuOxj3I8RS9(CQErK?^OMU4IBNx|jTU)$yW$USYKxil~?+ccObNZkU4N&*) zI3#ecyN(5;zR15{Q3{J)0t;Q*+$LSL;k7*QReOT|57CpcQw}}Gix7plb1 z5*vSkL9z@HRK=tqjD@%eK&8>I*Uqh50l6?HpyB(qtI1W>?yfEaK*zbask!*$Emx;a z&;JA#H{9C)ypWH9er-BglLcepSzMgD$eY9u2*BFoa-&aV(HSDM6F#p@AnT#m%N=VciuBtVGV_~X+!QsZ0#puK(v4=`66?_ zYHsdX@+*fzdag$!t$8%c!RA3qPByTLMpj>91N>cOU^Lv$*OS&T4Whoabty^7G=t*Y zhJe~hf04vzis2DrKd2$8#ID)g)O2)gtjz8X0l`lL8mMR^#-8aV@ovZv?JDz8^azTy&-7cg^2tyk!gmL0o*z>ZfbJ5JSX+3IQ<#~V36}l6F~HaYoiMot z;5Z4KtJRxzblGfV|9p2wX7Q1od=zM#se2C6`eeIJ#%H`qed{LDpv9txbkj4 zpzzy?h>iX10A?n<4v-d~1Y;3B7hs#iEbbQ5=+*DlXxh1`OB-%u=@B1JPA7in)7i!Z zxftELy&Ug640Y>>Yrxz5NGcK4_VcPyGpH@~ceYN*kV7l_-!C&Rca=b~`@`NfqWkyTSX;3o^*Cv~2dt}d@_k@A&jrm>|J zDecQD63|1uP>mt?6LCbcvGu}F%Fh5!B;>HNF)^v!PtVTg1YNC^ zLeaV}=Hk1V$W^O>+&ow=-+eZ%#tu@xEab-516#QiGc=fS%_Pl!@e@k)Ofm=)3cu3Nvsl`w^Z2LmXF;-vdiaxquY{Rd8*jtQ+blNX@>emV5zY--P)1 z6G&)-xoAKD`v#PXOM?X|&>UsUYJyL!w%rM!w}gX%Zy5&(veqWyQhKatC^;i40sX0q zHlKLq5jgg@PA&lfps)H64Hq{;ui-i9$QfB!RP7kgNdQm9!o-9?0cr4jWKcHgO0*m* z%mPO1>nozB$0(B8v*!D_l|SwFSH$#ObacpYx$-G^w!vb_Y!fieUP6@3jg!+CRw-rW zGUrXN!g0vj9qR1t|NYw#SeYPC{z$U_13kj!`#U9|N=plA0U`|nR{HFa;ee9p`ZHRJp=gM5KcRw`#(W~@9#p$q?cy$)3Iy~YhVrnbl44K`NR z`$ArAepvPSJv&b75WoaP9?aW}f4IQCbJ7S|=?QHgY!D`$GZhgLewAaOKW{5S_z~~~ zKMw4{kN*rFht7wyDPO;;L3XmTa{t-c8L-(tkn%}_1)_O0SVTZ6npRgQsA4DWWCw*R zC_zZ_K3>mH%V|T=jTAyo0mlS47k$u~W9w*Y4q)CG6hH;8ay5LX{;vW$S1BcbYdPrI z^XIt*1(>97)~4#YShsvxJ#}>8(K0M_s7vUU!CA9+3-s;rUfSB)qxjwzRkjNqRWfXi zEWmLS0F+SCi8<@Q4?`Ek3V(|0zreMfoSkOw4gp7d*C6yY+kSDQG~pTk7E0cJS_2$m zfR{3}vtbYiTqU@+`+xr<_|EWF=izoRCHE`_T>4v;YaeLXgmrc0#l;6mC5455fEj=0 zPrQxss)?NLrzhs11IZKu?LZ?fmSXkEy8x4wWGQNs^si+2|TQ zo_KTcmoFcHc{hsIYOMN?#N7&i=ya~N0V2`Z6gS1XU7M-zWsrdnesX|!r+DZ_dso5Q z1rjUC5000!y?z$cRyfAaFHTvOdB6Yr+~H3|ME-;Cz3F1Bhm*Lqx(Q)nC01j`lZKUe zgoMMeXMw)~?`Ia+m?l|0>0+4q;(F=U6Dc>YUvEvymW*hEp(g)1WFmfM?G1tmQ*T~_ zCI=9bLa3zo!N|QAg0L-MgjXSx93F0Wyn}xOZ43MBs~JY^y&E`W&{cQ&E7WcRNftu! z==sqZ4h$=hV+UkLWULQC~lanDF9AcI2 zzyk&U*q)u!J)(zv=ULK=peCF0_D%%lSzVnlN>F_Stq)jm;orSW!*LE5N_(^?+$)#a zvYxrm<0@Ihl9La>_**&W1LnHqO;~YWXWJ;*_UTc1PfyS1O2P`6t+lwRgLQ9-{Z7Sn zeF7tWeHv#1qeECTTPOPr|EP=$0sJHftOQ2Px47?*-_CdK=} z&({~mAj3mLa=MI=c-<0q4YUk#+_ne?E?}O3(!zYSTnysn%?f~EAtEXYyfATEF(5(9 zxT4zmD%`}iR1Ag2uws4teso^6ph5b+9vgj$DXRizS| z|5+vY(kPvx3WuN|6I4Ns&sf%s0p+oqbg6?ocORdtsjKeXNz%iEM0v2p;1VR5@9(8} zUo^rQ(k|CiW)eE(eF+)rL45$06LVS`g47;&a8Wx~Qx$m^pNy;*Y<^w{!bAUTF)T;( zfdzuFaj&6K^YHSrD~c0)6=ERh=%xd{%WzcTeqAbAF$8TV5XrNoPQZz)KLtoOKquPW z#RNbLuck}$Z#l1Gqfos<%=`RGm^zY;22^zMdXD z%m?J;87;pc;}1DvV`!Kd9ewZKPGHoVwRA15m5!84dg^GFOJUBYH}q9pe@S@?!?o~w8xX)V=jF|RGT{L+iE8R25HAj-bC-5q;lPB1 z#kG<22#fi)6rfj*VZ}xbUi|gnFZs1|NI?Pm`Rb;wT50ELU9nxh4kn4n7%^aK@N^M0 zZg2m(Q8x#%$L)Q8y}~PY-Ccmcp6?~DtE&SIA3owbjDZ`jamztuB9wK7;C(FMo~<<} zYiU`oWW_$WuyEr#{V3K8FE3E%{g9Cax$vIitJ#{G@!3t!KxI8esdX$LCDb7(TI!51 z)|MoRd1EwPgP}I0^aT`Np z<09R9sr>Mc@$sL)e}ui3mgZ~oNLlQGd~QLEsz(SU%R>~UgQJ*01?c>6$S=I4r1Du0 z3X1DM+L89@(_~kYH_EW(b)d145xd(SI$+o+R(D_&B-O4A{M%XZKi}Up zQ@+#{l5l|>kdY`M+(gC2O(tu^+}zTi27>bZHa52Ye0OW>a&f&AJQh|(oI|z-|9Vg@ zP;+!%oL_=s6YX`|kJdcDf&yadg^uGnAmIXB3rT%|a4l?XjDUqYaHk%iz@EnHmjC(S zuOBNKUF8l8oqU-d&API^gr!uh^S1KNcRd4xGWSC{O-*7cTH2hN%L`P@pp@*Ng%`t( zjlKa77G367HGfZhfW90u>*?;|<2xR12uQiOx)<^X8X1(d%kS`WE+I76U2uQ*0$%deZj~_$CD|t@= zCK^%Cj>Mm%GO;`6YCvo_w>LpDj=o2G&+mVj_^kfWAYAE_O@==J9YU z1qTMc{GSiEHKYRaPqB2aUk2<#mmWSLAy)eO`Y^>|AU{4n=HDK(Sry>trwaqk_l$oT zi`Lhc$eir#FXn@R6rwkzu_2@)h0EqsNy)ZJ3R4)##-D!6#V*q4&;7!$0XuJ~P`yIG zQL3u_a;>Zpw2PunUyF)5VcevAm5l^VVLp-HHCXU=n>a|8yM6@J(nDD*AIyqcS@dgSZE_tbG?<}~^utt6THbln#>O0KV2w5&X zM$3sH1rq$c=Q5f?$rqDEpN5?0je|KC@xY1Fst*c5J53C4Gq8oH@8`Te>P!2@X6i=<*Iz)y1m~B?8ehVLgYabLa~Nxo zj91!RLcA;_CjURa7p~WTY7d`3w%u#8sV};9+v7(hq&AI#uN$i(@|goDt{E`lFa~W| zD-5hJ#!~{^IU%hV-v*{yKYsjB>b?Ky$&+AO8ChAEH_=m{^{yogdK`UTv+GK!f5^85 zPlUg>!eW@EPK}ZX8(_l!>lGzMjWylV*Z27GW8-ukk)M#(7`FpSih_nMQ0IG5+c$q; zDh!5iACCI2*zK9QR%LMPF_VBTO2BjynfHi_O4KQ}Cno?{N%Gu0Jlps0YW#sAw~@&$ zEUYL}7vRxBF!b);-m)?nw}RfUcB1+cA|w01SdHDpL=Ey$F9|`y`G2v1fBpvTHHNC> zHEw8EHzsg79x9e)?;dSO3=T$(b-~>8aAhzwAcJeDNHa_0kiiZg53eJo9`wSYC&$N3 z+TVh45;?7;#=cmoRh4{ZT?|O)eFK8IXg-gFH6AdCl#yd5u`n>`PZK>=FB3dF-4uZ8 z1mXqs{`0H<{X^jva*`Q&01hwcIxcQQDNoG4`T1qPVLwh`u! zr*;7@f$hDM{d(;hmw_U}J2ZCM$t z7j)TT6%tCpDON3>giiz5%>VRHf4>i8c^mO}aDb}tI+r5znps$2GitjnmX3vzMS@_3 zX2t3eL?EgN3+Fr3D+NPw&?>ap5f_t~C=vjmDx>C?$f(fN)Kq{#rIuD!fLp2Sbk*7U zP~SMm6?DKS>y=Xw3g0kR-3z-VGdoaYCs(=I@%QJ$|L6Pof$^3V!+={$dsQxOCk@o) zZ2e$^SFW7H?D3r9C_~HF&yQK>Y-F_p=l)|uRtB(?LDdiQ%aDcy6k*s=*{S zgLtr7W(Cu!g>IqBBtg&k%jFqGt+{`f!@m!phBS)z_1l24nLGO2T3Y4+-f60;dfje@ zwjK!l-!H}-nl)jVI|;uq<6Wy9~BIwbm1(cd7i~UG7i+IJaN$m|I+=7MjO5YYd@%qcj=6^r&fBsBON8K_9Q}?ma(Q^PX zcyRyzO#^>yQVOElyZ4XY)M~@Y1Nkm2babf>@F&#l&21WBrCDyq{^7=0**-p3~eh*aYH0n z{l!JynS4HxiHZU~=JdP!Y^SNx>g)5Ppf=u2Ln-@5HWu{_ZT| ze^`Y7^&gOI|M#{3e~tkXf5>>toAh7I$G;D^yRnpv%&o)VgoKW)`xgfuiO()}#o`&k zA5VGrC1}xxowc>L>M4<3DA%)mKHhmp{U2Jy#V^ZZ$HtaNkuYPq_=ZHw4d!XzwfFyE zZos!>RDtYkVIn7oNx9*|w~`qB&Hc~su;0H;Ox#nQnc1Ah z>HOmhDFx#%V12-*m6+J*U*Fu9mZp6BOUO^mv;JUCk!)xE=70PIyhAEZPR1hu+&sB` z2brM6doktBc%W=p$P{%PqI_vN=Fep;ix@W3zypIe-NAvO^6u|t8wQw&L6i~24U~YN-UTJ!P{J0r%iAR8Kx3- z^Wta7A2;HO7rez7W}2&JCmY)y{I=9-aqFLdvZ4o|L4Z^OwhRnE>T0#-=BqPNv%A~O zZ(xIp1KLn#ocHdfy3vd%XDz+#8#I&o(s=k&_Jv5P&w0!#XsffsfKR;zo#+j6;XxIa=$DyIU+rh<#e!35E1D-w&#vI64>LPvg z4@A`Bggc6m@@}*3W@=iR*~^#U^3O|6ZTsg(N6AWqqW;q-&x3-sJyC8aJU1$q*7QBjXS&#^LGZKb6SJ20nK29%JaW7cSM zmc$O)?<;kenzXJ)Pxn)o_n$vR)CWz93{E&0wpl#^nE!lJ!g?1A5q@ignT;?D2u_snzT_8s1T{?-dfD*-zl{yDv<^CPe|uJK2Dl$Y04d@ujI;3igD z(6$omp(KInfT}8JjG#;SWOL+y`~k%|>`B;8=7x8Xf_w`b8ebs4=|Cpu=7I!E zKYk5*-(X_YO&=2!qAWYOr}hM^XBY@=SHlEu0GLMZ7<5aX8us`7I+} zzB!;k1DW|QjGb0i`JDDNU?vD(fLLt(zzjt?g7+(A;O>~q$yrEBVy2RE8v_surYj86 zlaLo=YRb$cX*^Z@6Xq!WSxQpc+N?}WE71OjjeFP_8c#_X3kys5wQJWl_Hn_21|!h) z@^Ys~kLnu(VxD~lTo;HsTY8d`UO;0jlV>RQUS% z?PiFl=M`wdsOblgJXOip;(tB;X*S$u>06oKx2~sO`6-JF;!Z~dyHPNkA^E{`%DpBTQtPqMNr#*K6-%-A?BbVgi8s8 zE^C0Z+?=8FG+L02hd%`UUE1pqe|HS67M(_axa31M#-KX}9D!_5eoNtyLFR)$F(f|C z1PP&ExpK1ZHnF`sUg3~kj}o}MJg~Ps5Q!HOA`e&!ymzmRj9hm6h^WP{4-5-|(E>NX~h-i4`>dJ|KYnfwS)O=YLU}K~Ko#xL-L}O;Scyih?cC4ce#Z zxD<#X!uJKq5Gp8>@IcA-TT#(=o+dv`*FOzdQW%{qT++|F;0Ao$qj-mx*WqAe|McX< zQ(oKclqP5#hTO-iCD>4kJ&~4PfGWqEvK_pU;3frsnJJ(xycWH%Z}Zz)gOs>AEPY`a zz(ep%-I{_SR!a&G$P5Q^RGq-vC?kWd)*wOYqHAEVyta1FVXIy#yZ?_(BOI(?c{o5# zFmnV;mjWn7;h~yV0U9nM*2~bm{UHfBYSPWkO%Mfx>(eoRU6h>RpMWy_5d=Qi%`tgU?uGbLiU%x9#m?CfILUI^gxXtV489As3% zRR1+tef}M!3piwh1K(a#qoW@O3B{Kfb{QzBzkL3D<8WTvWN^dDX9V(|J^_hV{tgX| zO>YJ}-2ZsuefipMy&3xq;Mn2S|A`LG>8U!Si*P0Z`wbM+YHx1|IM7go(|my$ZU6u_ zB){U+V!U9)B4h$9B%Z90+ZrVv-cc*7kan4M^T0sRAA134rwc$wfErHA$k(A8cu zIQdrK6$EWho7G_@35h>9R&X$1B5bh8K%@=NX6x6PiqR}c9EuZu7|uitFZLKfE(Iwq z&MTvto!z?i ztlHH@5{l<-SWrWCV5hD6IW{g1)_d?89_g`aRoor%MEhJ^Jn7?hE~xP{+3>s-hshWf z{-PW76garJKpqLgg#<2DVd3x4um*;-SUC#<;rm~ggYZp+ITjgIGVr%yjvr;*Me3<< z0!pMDRVxQBQ3mKg9Ui00JycNvA1fiW*@4#Bl>j|ccngy~a3={k+%cv~F&pE9Xen$G z`|SYeCOd9SCKb>FY$N_LG!4u1pa~q$#>1l{3A2&To}QUSP=LWa?1?SO3shg|gnYmC zYkvMh%naAo*0}D%Jajt&QZ&d~ePX@8mJ7GYA0;E)*YpqPOy67>!#O#vE;c>yyuIJ2 zTnauxO!@Ob2qrzXQ*(1!Y8^E+v1k4CxeSgX{n!Ks-U zfV5Ekq~`@A2?r%i9hvOJ(9pa>@L^eyhU|(lw~fgfbV~o!9e4_X9R3XUTeD{0e^9c% z_wivi29YVRG_h>Fz+zu^5X_9==H#UyT1c>jFqQw_a{XSJezswy zQ1<5>f(AL3p`)h8XuQHJ{KjPl$;IggDcBt*d&a11z5qm6WNI4BlrPgj0 m&cS!+ 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