Skip to content

Instantly share code, notes, and snippets.

View lukebakken's full-sized avatar

Luke Bakken lukebakken

View GitHub Profile
@lukebakken
lukebakken / rabbitmq-consumer-timeout-notify-consumer.md
Created November 6, 2026 17:29
RabbitMQ consumer delivery timeouts: notify_consumer and basic.cancel-ok, history, docs and related work

RabbitMQ consumer delivery timeouts: notify_consumer and basic.cancel-ok

What exists in rabbitmq/rabbitmq-server, the documentation and the clients about the AMQP 0-9-1 consumer timeout basic.cancel, the notify_consumer setting and client-sent basic.cancel-ok, as of 2026-11-06.

History

4.3.0: consumer timeouts move into the quorum queue

  • PR #13885 "Ra v3" by kjnilsson, merged 2026-03-10. "Consumer timeouts in queue" is one item in its checklist of about a dozen.
  • On a timeout the queue returns the timed-out messages and sends the channel a {released, …, timeout} action, and for AMQP 0-9-1 the channel answers with basic.cancel.
@lukebakken
lukebakken / connection-max-per-node-deferred.md
Created October 27, 2026 23:21
Deferred findings from the connection_max_per_node reviews (amazon-mq/upstream-to-rabbitmq-server#14)

This was written by Claude (Anthropic's Claude Code) under the direction of @lukebakken, from three code reviews of connection_max_per_node (amazon-mq/upstream-to-rabbitmq-server#14). It's a to-do list, not settled decisions, and most items were not re-checked after the reviews.

Deferred findings from the connection_max_per_node reviews

connection_max_per_node is an Amazon MQ limit on client connections per node, shared by every messaging protocol and counted in a pg scope by amq_connection_limit. These findings were left out of the change. Most predate it, but the shared limit makes them matter more. Line references are against branch connection-max-per-node at 418bc37f37.

Refusals that keep their place in the count

A connection refused by connection_max_per_node itself leaves the count at once. A connection refused by any other check counts until its process exits.

@lukebakken
lukebakken / 18017-deferred-gist.md
Last active October 29, 2026 14:13
Deferred findings from the rabbitmq/rabbitmq-server#18017 review

This was written by Claude (Anthropic's Claude Code) under the direction of @lukebakken, from a code review of the rabbitmq-server-18017 branch. It's a to-do list, not settled decisions.

Deferred findings from the #18017 review

Update, 2026-10-28: rabbitmq/rabbitmq-server#18068 was closed, and rabbitmq/rabbitmq-server#18081 fixed rabbitmq/rabbitmq-server#18017 instead. It adds a boot-state check to rabbit_db:reset/0 and rabbit_db_cluster:join/2, with unchecked do_reset/0 and do_join/2 for peer discovery. It doesn't change forget_cluster_node or rabbit_khepri:init/1, so the forget_member/2 items below now apply to main without the check #18068 added, and the section "Not in #18081" lists what that leaves open.

Findings from the max-effort review of rabbitmq-server-18017 that were left out of the fix. Line numbers are as of 18f06b9071 on main.

Deferred

@lukebakken
lukebakken / pika_md_wrap_check.py
Created October 18, 2026 15:36
pika: sketch detector for hard-wrapped prose in markdown (see pika/pika#1730 follow-up)
"""
Report hard-wrapped prose in markdown files.
`AGENTS.md` asks for one line per paragraph and per list item in every `.md` file. A line break is
in scope only when it sits inside prose: the line breaks that carry syntax stay, and the categories
below are the ones that occur in this repository.
Exit status is 0 when every file is clean, 1 when any file carries wrapped prose, and 2 when a path
argument does not exist.
@lukebakken
lukebakken / Update-AUPackages.md
Created June 18, 2026 18:47
Update-AUPackages Report #powershell #chocolatey
@lukebakken
lukebakken / pr339_review.md
Created June 4, 2026 13:04
PR #339 review: automatic connection and channel recovery

Code Review: PR #339 - Automatic Connection and Channel Recovery

PR: rabbitmq/amqp091-go#339 Author: suchitd (Suchit Dhakate) Reviewed: 2026-06-04 Reviewer: AI (Claude) with @lukebakken guidance Size: +1824 / -63 lines across 11 files

This review was produced by an AI assistant (Claude Code, Anthropic) under the direction of @lukebakken. Findings were verified against the actual

rabbitmq-amqp-python-client v0.7.0 - Code Audit

Audit of the official RabbitMQ AMQP 1.0 Python client. Performed 2026-06-01 against the local checkout.

Repository: https://github.com/rabbitmq/rabbitmq-amqp-python-client

Overview

  • Python 3.10+, built on python-qpid-proton (C extension for AMQP 1.0)
  • Sync + async API (async wraps sync via run_in_executor)

pika PR #1582 - Session Handoff Document

This document is written for an AI assistant picking up this work in a new session. Read every section before doing anything. The user (Luke Bakken, @lukebakken) will confirm when to start.


1. Essential rules - read these files first

Review Session Context - PR #148

What this file is for

This file lets an AI agent resume the PR #148 review session on a different machine without losing context. Read this file, then read rabbitmq-stream-s3-gh-148.md for the actual review output.

PR under review

  • Repo: amazon-mq/rabbitmq-stream-s3 (private)
  • PR: #148 - "Redesign upload path to behave like replication"

Issue 16347 - per-protocol connection limits implementation plan

Context

GitHub issue: rabbitmq/rabbitmq-server#16347

The issue is a review of what remains to be done for per-protocol connection limits. The stream plugin already has stream.max_connections and the web_mqtt plugin already has web_mqtt.max_connections. This document covers the implementation of mqtt.max_connections (PR #16367, under revision) and stomp.max_connections (PR #16368, open).

Status of PR #16367: The initial implementation used ranch:info(RanchRef) (same as the stream plugin). Reviewer @ansd identified that this gives a per-listener count, not a node-wide count. MQTT supports port-to-vhost mapping (multiple listeners on different ports), dual-stack (separate IPv4/IPv6 listeners), and mixed TCP/TLS deployments — each of which is a separate Ranch ref with its own supervisor. With four listeners and max_connections = 1000, the actual node limit would be 4000. The fix is to use the MQTT P