47:51Ranking major U.S. Open-Weights Models. (Where does Ripple 65B fit in?)
Nov 6, 2026 · YouTube
17:31Testing Gemini 3.8 Flash on Real Coding Challenges (vs. other models)
Sep 2, 2026 · YouTube
14:09Testing IBM Granite-4.2-8B! Can it name 100 women?
Aug 31, 2026 · YouTube
17:37Tencent Hy4 Preview Tested: Is It Really Better Than Kimi K3 and GLM 5.3?
Aug 28, 2026 · YouTube
23:58Qwen 3.8 Flash Tested: UI, Coding, Physics & more - compared to Opus 5, Sol Pro, Grok
Aug 27, 2026 · YouTube
14:50Stealth Ox Alpha: a new GLM model! Full test (coding & writing) against Grok, Gemini, GPT & others
Aug 21, 2026 · YouTube
21:54GLM 5.3 Tested: Does it beat Claude Opus 5 & Grok 4.6?
Aug 19, 2026 · YouTube
21:23Giving Qwen 3.8 27B another chance (+ GLM 5.2). Testing against GPT, Gemini, Grok etc.
Aug 18, 2026 · YouTube
51:00AI Coding Showdown: Grok 4.6, Gemini 3.7, Terra-Pro, Qwen3.8 2.4TB, Muse Glimmer & more
Aug 15, 2026 · YouTube
27:51Testing Gemini 3.7 Flash: Translation, Vision, and Coding Challenges
Aug 14, 2026 · YouTube
You are the engineer on call. Two tickets have come in against the order pipeline — an SQS FIFO queue feeding a Lambda consumer — plus one theory from the platform team.
Your job is triage and a minimal fix — not a rewrite.
OPS-882 — opened by Ama (Support)
Customers are getting their order confirmation email twice.
On a normal quiet day it is maybe one order in fifty. Nobody would have noticed except one of them replied to complain.
On a bad day it is not one in fifty. Tuesday morning we sent just over 400 confirmation emails for 51 orders. Tuesday was also the morning the payments provider was flapping, if that is relevant.
OPS-884 — opened by Dev (Ops)
When one order jams, everything stops. Not that customer's orders — everything, for every customer, in every region, until somebody goes into the console and purges the message by hand. We did it twice last week.
Second thing, and I do not understand it: our dead-letter queue has never had a single message in it. Not one, since we deployed in March. Orders definitely fail. Where are they going?
Comment on OPS-884 from Marcus (Platform), yesterday
This is a concurrency ceiling, nothing more. We have
reservedConcurrency: 2on the consumer, which is absurd for a queue this size. Take it to 50 and both of these tickets go away — the backlog will clear faster than a jam can build up. I can raise the PR this afternoon.
serverless.yml (the parts that matter):
service: order-pipeline
provider:
name: aws
runtime: nodejs22.x
region: eu-west-1
functions:
consumeOrders:
handler: src/consumer.handler
timeout: 120
memorySize: 1024
reservedConcurrency: 2
events:
- sqs:
arn: !GetAtt OrdersQueue.Arn
batchSize: 10
resources:
Resources:
OrdersQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: orders.fifo
FifoQueue: true
ContentBasedDeduplication: false
VisibilityTimeout: 30
MessageRetentionPeriod: 345600
OrdersDLQ:
Type: AWS::SQS::Queue
Properties:
QueueName: orders-dlq.fifo
FifoQueue: true
MessageRetentionPeriod: 1209600
RedrivePolicy:
deadLetterTargetArn: !GetAtt OrdersQueue.Arn
maxReceiveCount: 5
src/producer.ts:
import { SQSClient, SendMessageCommand } from "@aws-sdk/client-sqs";
import { randomUUID } from "node:crypto";
import type { Order } from "./types";
const sqs = new SQSClient({});
const QUEUE_URL = process.env.ORDERS_QUEUE_URL!;
/**
* Publish an order for downstream processing. FIFO, because finance need
* an order's events to arrive in the order they happened.
*/
export async function publishOrder(order: Order): Promise<void> {
await sqs.send(
new SendMessageCommand({
QueueUrl: QUEUE_URL,
MessageBody: JSON.stringify(order),
MessageGroupId: "orders",
MessageDeduplicationId: randomUUID(),
})
);
}
src/consumer.ts:
import type { SQSEvent, SQSRecord } from "aws-lambda";
import { chargeCard } from "./payments";
import { reserveStock } from "./inventory";
import { sendConfirmationEmail } from "./email";
import { logger } from "./logger";
import type { Order } from "./types";
/**
* One order, end to end. Typically 400ms–1.5s. The payment provider's p99 is a
* lot worse than that — several seconds — and reserveStock retries internally.
*/
async function processOrder(order: Order): Promise<void> {
await chargeCard(order);
await reserveStock(order);
await sendConfirmationEmail(order);
logger.info("order processed", { orderId: order.id });
}
export async function handler(event: SQSEvent): Promise<void> {
logger.info("batch received", { count: event.Records.length });
for (const record of event.Records as SQSRecord[]) {
const order = JSON.parse(record.body) as Order;
await processOrder(order);
}
logger.info("batch complete", { count: event.Records.length });
}
A table, one row per reported symptom. There are three — treat the empty dead-letter queue as its own row.
| # | Symptom | Verdict | Cause |
|---|---|---|---|
| 1 | Duplicate confirmation emails | ||
| 2 | One bad order stops the whole pipeline | ||
| 3 | Dead-letter queue is always empty |
Verdict is exactly one of REAL or NOT A BUG. Cause is one line. If a symptom has more than one independent cause in this configuration, say so and name each — one of these does, and a single cause is a partial answer.
One paragraph on Marcus's concurrency proposal. Would raising reservedConcurrency to 50 change any of the three symptoms? Be specific about the mechanism, not the intent.
For each symptom you marked REAL:
Do not give me the whole file back. Minimal changes, reviewable in a diff.
At most two further defects nobody has reported, each one you can quote a line for.
If there is nothing else worth raising, write exactly Nothing else.
Every claim should be checkable against the files above or against documented AWS behaviour you can state precisely. If a fix depends on a specific documented rule about how these services interact, give the rule and the number — I am going to look it up. A confident diagnosis of a problem this configuration does not have costs you more than missing one it does.
| # | Symptom | Verdict | Cause |
|---|---|---|---|
| 1 | Duplicate confirmation emails | REAL | The 30-second visibility timeout is shorter than the 120-second Lambda timeout; additionally, a single record failure retries the whole batch, replaying already-processed records, and email sending is not shown to be idempotent. |
| 2 | One bad order stops the whole pipeline | REAL | Every message uses the single FIFO group "orders", so one head-of-group failure blocks every order; the source queue also has no DLQ redrive policy, so the failure is retried indefinitely. |
| 3 | Dead-letter queue is always empty | REAL | RedrivePolicy is attached to OrdersDLQ and points back to OrdersQueue; it must instead be attached to OrdersQueue and point to OrdersDLQ. |
Raising reservedConcurrency to 50 would not fix any of the three symptoms. FIFO queues permit only one active consumer for a given MessageGroupId, and every message currently has MessageGroupId: "orders", so this queue has one effective processing lane regardless of whether Lambda reserves 2 or 50 concurrent executions. It does not change the 30-second visibility timeout, Lambda’s all-or-nothing batch acknowledgement behaviour, the missing source-queue DLQ policy, or the constant message group. At most it would help after the producer is changed to use multiple group IDs; it could not make the current jam clear.
serverless.yml — wrong line:
VisibilityTimeout: 30
Replacement:
VisibilityTimeout: 720
AWS Lambda’s documented SQS rule is a visibility timeout of at least six times the function timeout plus the maximum batching window; here that is 6 × 120 + 0 = 720 seconds. A 30-second timeout permits a still-running invocation to lose visibility and have its message delivered again.
serverless.yml — wrong line:
batchSize: 10
Replacement:
batchSize: 10
functionResponseType: ReportBatchItemFailures
This opts the SQS event-source mapping into Lambda partial batch response handling; without it, one thrown record causes Lambda to retry every record in the batch.
src/consumer.ts — wrong import line:
import type { SQSEvent, SQSRecord } from "aws-lambda";
Replacement:
import type { SQSEvent, SQSRecord, SQSBatchResponse } from "aws-lambda";
src/consumer.ts — wrong handler:
export async function handler(event: SQSEvent): Promise<void> {
logger.info("batch received", { count: event.Records.length });
for (const record of event.Records as SQSRecord[]) {
const order = JSON.parse(record.body) as Order;
await processOrder(order);
}
logger.info("batch complete", { count: event.Records.length });
}
Replacement:
export async function handler(event: SQSEvent): Promise<SQSBatchResponse> {
logger.info("batch received", { count: event.Records.length });
const batchItemFailures: { itemIdentifier: string }[] = [];
for (let index = 0; index < event.Records.length; index += 1) {
const record = event.Records[index] as SQSRecord;
try {
const order = JSON.parse(record.body) as Order;
await processOrder(order);
} catch (error) {
logger.error("order processing failed", {
messageId: record.messageId,
error,
});
// For FIFO, fail this record and all later records in this batch so
// their group ordering is preserved.
batchItemFailures.push(
...event.Records.slice(index).map(({ messageId }) => ({
itemIdentifier: messageId,
}))
);
break;
}
}
logger.info("batch complete", {
count: event.Records.length,
failures: batchItemFailures.length,
});
return { batchItemFailures };
}
With ReportBatchItemFailures, omitted records are acknowledged and deleted; for FIFO, AWS documents that processing must stop at the first failure and both the failed and unprocessed records must be returned as failures to preserve ordering.
src/consumer.ts — wrong line for a durable duplicate-email guarantee:
await sendConfirmationEmail(order);
Required replacement contract:
await sendConfirmationEmail(order, {
idempotencyKey: `order-confirmation:${order.id}`,
});
The email implementation/provider must durably honour that key and send at most one confirmation for it. SQS-to-Lambda processing is at-least-once, so the visibility and partial-batch fixes remove the configured duplicate paths but cannot guarantee exactly-once external email delivery after a process crash or timeout between sending the email and acknowledging the SQS record. The src/email.ts implementation is not provided, so its corresponding exact API change cannot be quoted here.
src/producer.ts — wrong line:
MessageGroupId: "orders",
Replacement:
MessageGroupId: order.id,
FIFO ordering is per MessageGroupId, not per queue. Using the order ID keeps events for one order ordered while allowing unrelated orders to use separate FIFO groups and proceed independently.
serverless.yml — wrong OrdersQueue property:
MessageRetentionPeriod: 345600
Replacement:
MessageRetentionPeriod: 345600
RedrivePolicy:
deadLetterTargetArn: !GetAtt OrdersDLQ.Arn
maxReceiveCount: 5
The redrive policy belongs on the source queue. After the configured receive threshold, SQS moves the poison message to the DLQ, allowing later messages in that FIFO group to proceed.
serverless.yml — wrong lines under OrdersDLQ:
RedrivePolicy:
deadLetterTargetArn: !GetAtt OrdersQueue.Arn
maxReceiveCount: 5
Replacement:
Delete those lines; the RedrivePolicy added to OrdersQueue in patch 2 is the replacement.
SQS only redrives messages from a queue which itself has a RedrivePolicy; configuring a policy on the DLQ does not make the source queue send failures there.
FIFO producer deduplication is ineffective for repeated application-level publishes. src/producer.ts contains:
MessageDeduplicationId: randomUUID(),
FIFO deduplication compares deduplication IDs during SQS’s five-minute deduplication interval. A newly generated UUID means a retried or duplicated application publish is always treated as a new message. Use a stable, unique business event ID for MessageDeduplicationId; do not use order.id unless there is exactly one publishable event per order.