Skip to content

Commit cfcc6d8

Browse files
authored
Merge pull request #1909 from rabbitmq/lukebakken/pre-7.2.1-release
Pre-7.2.1 release preparation
2 parents 8e772cf + cd2bd9b commit cfcc6d8

File tree

3 files changed

+358
-18
lines changed

3 files changed

+358
-18
lines changed
Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ The RabbitMQ .NET Client is a comprehensive AMQP 0-9-1 client library for .NET,
88
- **Dual-licensed**: Apache License 2.0 and Mozilla Public License 2.0
99
- **Target Frameworks**: .NET 8.0 and .NET Standard 2.0
1010
- **Language**: C# 12.0 with nullable reference types enabled
11-
- **Current Version**: 7.2.0 (in development)
12-
- **Latest Stable**: 7.1.2 (released March 2025)
11+
- **Current Version**: 7.2.1 (in development)
12+
- **Latest Stable**: 7.2.0 (released November 2025)
1313

1414
## Major Version 7.x Changes
1515

@@ -65,7 +65,7 @@ Wraps `Connection` to provide automatic recovery from network failures:
6565

6666
#### 3. Channel Management (`IChannel` / `Channel`)
6767

68-
**Location**: `projects/RabbitMQ.Client/Impl/Channel.cs`
68+
**Location**: `projects/RabbitMQ.Client/Impl/Channel.cs` (partial class, with `Channel.BasicPublish.cs` and `Channel.PublisherConfirms.cs`)
6969

7070
Channels are lightweight virtual connections multiplexed over a single TCP connection:
7171

@@ -223,13 +223,12 @@ var factory = new ConnectionFactory
223223
Per-channel configuration:
224224

225225
```csharp
226-
var options = new CreateChannelOptions
227-
{
228-
PublisherConfirmationsEnabled = true,
229-
PublisherConfirmationTrackingEnabled = true,
230-
OutstandingPublisherConfirmationsRateLimiter = rateLimiter,
231-
ContinuationTimeout = TimeSpan.FromSeconds(20)
232-
};
226+
var options = new CreateChannelOptions(
227+
publisherConfirmationsEnabled: true,
228+
publisherConfirmationTrackingEnabled: true,
229+
outstandingPublisherConfirmationsRateLimiter: rateLimiter,
230+
consumerDispatchConcurrency: 1
231+
);
233232
```
234233

235234
## Key Design Patterns
@@ -305,7 +304,7 @@ Multiple levels of shutdown:
305304
- **IntegrationFixture**: Base class for integration tests
306305
- **TestConnectionRecoveryBase**: Base for recovery tests
307306
- **RabbitMQCtl**: Wrapper for `rabbitmqctl` commands
308-
- **ToxiproxyManager**: Network failure simulation
307+
- **ToxiproxyManager**: Network failure simulation (in `projects/Test/Integration/`)
309308

310309
## Build and Packaging
311310

@@ -315,11 +314,14 @@ Multiple levels of shutdown:
315314
rabbitmq-dotnet-client/
316315
├── projects/
317316
│ ├── RabbitMQ.Client/ # Main client library
318-
│ ├── RabbitMQ.Client.OAuth2/ # OAuth2 support
317+
│ ├── RabbitMQ.Client.OAuth2/ # OAuth2 support (source)
318+
│ ├── RabbitMQ.Client.OAuth2-NuGet/ # OAuth2 NuGet packaging
319319
│ ├── RabbitMQ.Client.OpenTelemetry/ # OTel extensions
320320
│ ├── Test/ # Test projects
321321
│ ├── Benchmarks/ # Performance benchmarks
322-
│ └── Applications/ # Sample applications
322+
│ ├── Applications/ # Sample applications
323+
│ ├── toxiproxy-netcore/ # Toxiproxy .NET client (vendored)
324+
│ └── specs/ # AMQP 0-9-1 spec files
323325
├── .ci/ # CI configuration
324326
├── .github/workflows/ # GitHub Actions
325327
└── packages/ # NuGet output
@@ -411,11 +413,12 @@ Configurable TLS options:
411413

412414
## Known Issues and Limitations
413415

414-
### Current Issues (as of 7.1.2)
416+
### Current Issues (as of 7.2.0)
415417

416-
1. **Deadlock Scenarios**: Rare deadlocks during channel close (addressed in 7.1.1)
417-
2. **ObjectDisposedException**: Occasional exceptions during shutdown (addressed in 7.1.2)
418-
3. **Rate Limiter**: Issues with lease acquisition (fixed in 7.1.1)
418+
1. **Heartbeat Crashes**: Unhandled exceptions in heartbeat timer callbacks (addressed in 7.2.1)
419+
2. **Publisher Confirm Semaphore**: Unconditional semaphore release on cancellation (addressed in 7.2.1)
420+
3. **Channel Shutdown**: `TryComplete` needed instead of `Complete` during channel shutdown (addressed in 7.2.1)
421+
4. **Auto-delete Entity Recovery**: Recorded bindings not removed for auto-delete entities (addressed in 7.2.1)
419422

420423
### Design Limitations
421424

@@ -424,7 +427,7 @@ Configurable TLS options:
424427
3. **Frame Size**: Maximum frame size negotiated at connection time
425428
4. **Synchronous RPC**: Only one RPC operation per channel at a time
426429

427-
## Future Directions (7.2.0)
430+
## Future Directions (7.2.1)
428431

429432
Based on the changelog and issue tracker:
430433

RELEASE.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# RabbitMQ .NET Client release process
2+
3+
## Ensure builds are green:
4+
5+
* [GitHub Actions](https://github.com/rabbitmq/rabbitmq-dotnet-client/actions)
6+
7+
8+
## Update API documentation
9+
10+
Note: `main` (`6.x` and later) only
11+
12+
Please see [this guide](https://github.com/rabbitmq/rabbitmq-dotnet-client/blob/main/APIDOCS.md).
13+
14+
15+
## Update CHANGELOG
16+
17+
Run `tools/generate-changelog.sh` with the previous tag and the new tag:
18+
19+
```
20+
tools/generate-changelog.sh v7.X.Y v7.X.(Y+1)
21+
```
22+
23+
This inserts a new section into `CHANGELOG.md` after the `# Changelog` header.
24+
The release date is set to `UNRELEASED-DATE` as a placeholder. Review the
25+
output with `git diff CHANGELOG.md` and edit as needed before committing.
26+
27+
28+
## Create and push release tag
29+
30+
Note: `alpha` releases are versioned by default via the MinVer package. The version is based off of the most recent tag.
31+
32+
RC release:
33+
34+
```
35+
git tag -a -s -u B1B82CC0CF84BA70147EBD05D99DE30E43EAE440 -m 'rabbitmq-dotnet-client v7.X.Y-rc.1' 'v7.X.Y-rc.1'
36+
```
37+
38+
Final release:
39+
40+
```
41+
git tag -a -s -u B1B82CC0CF84BA70147EBD05D99DE30E43EAE440 -m 'rabbitmq-dotnet-client v7.X.Y' 'v7.X.Y'
42+
```
43+
44+
Push!
45+
46+
```
47+
git push --tags
48+
```
49+
50+
## `6.x` branch
51+
52+
53+
### Trigger build locally
54+
55+
```
56+
cd path\to\rabbitmq-dotnet-client
57+
git checkout v6.X.Y
58+
git clean -xffd
59+
.\build.bat
60+
dotnet build ./RabbitMQDotNetClient.sln --configuration Release --property:CONCOURSE_CI_BUILD=true
61+
dotnet nuget push -k NUGET_API_KEY -s https://api.nuget.org/v3/index.json ./packages/RabbitMQ.Client.6.X.Y.nupkg
62+
```
63+
64+
## `main` (`7.x`) branch
65+
66+
* Close the appropriate milestone, and make a note of the link to the milestone with closed issues visible
67+
* Use the GitHub web UI or `gh release create` command to create the new release
68+
* GitHub actions will build and publish the release to NuGet

0 commit comments

Comments
 (0)