Skip to content

Commit 3375c75

Browse files
authored
Add support for RabbitMQ v7 (#6479)
## Summary of changes Adds support for RabbitMQ v7 ## Reason for change We want to support the latest versions of packages. 7.x.x was released ~6 weeks ago, with _significant_ changes to both the public API and the internal API (which is probably why it hasn't been explicitly requested yet). ## Implementation details This one took a _lot_ of work. In summary: - Basically all the integrations had to be rewritten to work with the new async APIs - Where possible, simply called into the original sync integration (other than where the work is trivial) - Some challenges, in that the duck types had to change. - Most problematic was the `BasicProperties` because now `IReadOnlyBasicProperties` is null, which means we can't easily add the headers if they're not provided (to propagate context). - Worked around it with an additional instrumentation, but I'm not super happy about it 😅 - Had to completely rewrite the sample app to use the new async APIs - Originally I tried to `#if RABBITMQ_7_0` my way in the existing methods, but was impossible to follow, so split into -pre and -post v7 methods instead. - Tweaked some of the pre-V7 methods in the sample to be async to improve reuse ## Test coverage We get the same overall snapshots for v7 as we do for v6, so 🤞 Did an "all TFMs, all versions" run [here](https://dev.azure.com/datadoghq/dd-trace-dotnet/_build/results?buildId=170428&view=results) (and a previous one for DSM) ## Other details Stacked on: - #6463 - #6480 > [!NOTE] > This PR actually highlighted a current limitation in our CallTarget instrumentation. If an API uses `ValueTask`, which comes from a _library_ rather than being built-in (i.e. it's netfx or < .NET Core 3.1) then we _don't_ instrument it correctly. Originally I worked around it, but there's a "proper" fix in #6480. Assuming that actually works and is merged, then we don't need the workaround, otherwise I can re-enable it.
1 parent b0cee22 commit 3375c75

File tree

45 files changed

+2475
-824
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+2475
-824
lines changed

tracer/build/PackageVersionsGeneratorDefinitions.json

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -235,26 +235,36 @@
235235
"SampleProjectName": "Samples.RabbitMQ",
236236
"NugetPackageSearchName": "RabbitMQ.Client",
237237
"MinVersion": "3.6.9",
238-
"MaxVersionExclusive": "7.0.0",
238+
"MaxVersionExclusive": "8.0.0",
239239
"SpecificVersions": [
240240
"3.*.*",
241241
"4.*.*",
242242
"5.*.*",
243-
"6.*.*"
244-
]
243+
"6.*.*",
244+
"7.*.*"
245+
],
246+
"VersionConditions": [{
247+
"MinVersion": "7.0.0",
248+
"ExcludeTargetFrameworks": ["net462"]
249+
}]
245250
},
246251
{
247252
"IntegrationName": "DataStreamsRabbitMQ",
248253
"SampleProjectName": "Samples.DataStreams.RabbitMQ",
249254
"NugetPackageSearchName": "RabbitMQ.Client",
250255
"MinVersion": "3.6.9",
251-
"MaxVersionExclusive": "7.0.0",
256+
"MaxVersionExclusive": "8.0.0",
252257
"SpecificVersions": [
253258
"3.*.*",
254259
"4.*.*",
255260
"5.*.*",
256-
"6.*.*"
257-
]
261+
"6.*.*",
262+
"7.*.*"
263+
],
264+
"VersionConditions": [{
265+
"MinVersion": "7.0.0",
266+
"ExcludeTargetFrameworks": ["net462"]
267+
}]
258268
},
259269
{
260270
"IntegrationName": "SystemDataSqlClient",

tracer/build/PackageVersionsLatestMajors.g.props

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,6 +1116,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
11161116
<RequiresDockerDependency>All</RequiresDockerDependency>
11171117
<SampleName>Samples.RabbitMQ</SampleName>
11181118
</PackageVersionSample>
1119+
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
1120+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1121+
<TargetFramework>netcoreapp2.1</TargetFramework>
1122+
<RequiresDockerDependency>All</RequiresDockerDependency>
1123+
<SampleName>Samples.RabbitMQ</SampleName>
1124+
</PackageVersionSample>
11191125
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
11201126
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
11211127
<TargetFramework>netcoreapp3.0</TargetFramework>
@@ -1140,6 +1146,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
11401146
<RequiresDockerDependency>All</RequiresDockerDependency>
11411147
<SampleName>Samples.RabbitMQ</SampleName>
11421148
</PackageVersionSample>
1149+
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
1150+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1151+
<TargetFramework>netcoreapp3.0</TargetFramework>
1152+
<RequiresDockerDependency>All</RequiresDockerDependency>
1153+
<SampleName>Samples.RabbitMQ</SampleName>
1154+
</PackageVersionSample>
11431155
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
11441156
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
11451157
<TargetFramework>netcoreapp3.1</TargetFramework>
@@ -1164,6 +1176,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
11641176
<RequiresDockerDependency>All</RequiresDockerDependency>
11651177
<SampleName>Samples.RabbitMQ</SampleName>
11661178
</PackageVersionSample>
1179+
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
1180+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1181+
<TargetFramework>netcoreapp3.1</TargetFramework>
1182+
<RequiresDockerDependency>All</RequiresDockerDependency>
1183+
<SampleName>Samples.RabbitMQ</SampleName>
1184+
</PackageVersionSample>
11671185
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
11681186
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
11691187
<TargetFramework>net5.0</TargetFramework>
@@ -1188,6 +1206,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
11881206
<RequiresDockerDependency>All</RequiresDockerDependency>
11891207
<SampleName>Samples.RabbitMQ</SampleName>
11901208
</PackageVersionSample>
1209+
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
1210+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1211+
<TargetFramework>net5.0</TargetFramework>
1212+
<RequiresDockerDependency>All</RequiresDockerDependency>
1213+
<SampleName>Samples.RabbitMQ</SampleName>
1214+
</PackageVersionSample>
11911215
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
11921216
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
11931217
<TargetFramework>net6.0</TargetFramework>
@@ -1212,6 +1236,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
12121236
<RequiresDockerDependency>All</RequiresDockerDependency>
12131237
<SampleName>Samples.RabbitMQ</SampleName>
12141238
</PackageVersionSample>
1239+
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
1240+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1241+
<TargetFramework>net6.0</TargetFramework>
1242+
<RequiresDockerDependency>All</RequiresDockerDependency>
1243+
<SampleName>Samples.RabbitMQ</SampleName>
1244+
</PackageVersionSample>
12151245
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
12161246
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
12171247
<TargetFramework>net7.0</TargetFramework>
@@ -1236,6 +1266,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
12361266
<RequiresDockerDependency>All</RequiresDockerDependency>
12371267
<SampleName>Samples.RabbitMQ</SampleName>
12381268
</PackageVersionSample>
1269+
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
1270+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1271+
<TargetFramework>net7.0</TargetFramework>
1272+
<RequiresDockerDependency>All</RequiresDockerDependency>
1273+
<SampleName>Samples.RabbitMQ</SampleName>
1274+
</PackageVersionSample>
12391275
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
12401276
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
12411277
<TargetFramework>net8.0</TargetFramework>
@@ -1260,6 +1296,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
12601296
<RequiresDockerDependency>All</RequiresDockerDependency>
12611297
<SampleName>Samples.RabbitMQ</SampleName>
12621298
</PackageVersionSample>
1299+
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
1300+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1301+
<TargetFramework>net8.0</TargetFramework>
1302+
<RequiresDockerDependency>All</RequiresDockerDependency>
1303+
<SampleName>Samples.RabbitMQ</SampleName>
1304+
</PackageVersionSample>
12631305
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
12641306
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
12651307
<TargetFramework>net9.0</TargetFramework>
@@ -1284,6 +1326,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
12841326
<RequiresDockerDependency>All</RequiresDockerDependency>
12851327
<SampleName>Samples.RabbitMQ</SampleName>
12861328
</PackageVersionSample>
1329+
<PackageVersionSample Include="test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj">
1330+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1331+
<TargetFramework>net9.0</TargetFramework>
1332+
<RequiresDockerDependency>All</RequiresDockerDependency>
1333+
<SampleName>Samples.RabbitMQ</SampleName>
1334+
</PackageVersionSample>
12871335
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
12881336
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
12891337
<TargetFramework>net462</TargetFramework>
@@ -1332,6 +1380,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
13321380
<RequiresDockerDependency>All</RequiresDockerDependency>
13331381
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
13341382
</PackageVersionSample>
1383+
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
1384+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1385+
<TargetFramework>netcoreapp2.1</TargetFramework>
1386+
<RequiresDockerDependency>All</RequiresDockerDependency>
1387+
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
1388+
</PackageVersionSample>
13351389
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
13361390
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
13371391
<TargetFramework>netcoreapp3.0</TargetFramework>
@@ -1356,6 +1410,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
13561410
<RequiresDockerDependency>All</RequiresDockerDependency>
13571411
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
13581412
</PackageVersionSample>
1413+
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
1414+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1415+
<TargetFramework>netcoreapp3.0</TargetFramework>
1416+
<RequiresDockerDependency>All</RequiresDockerDependency>
1417+
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
1418+
</PackageVersionSample>
13591419
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
13601420
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
13611421
<TargetFramework>netcoreapp3.1</TargetFramework>
@@ -1380,6 +1440,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
13801440
<RequiresDockerDependency>All</RequiresDockerDependency>
13811441
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
13821442
</PackageVersionSample>
1443+
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
1444+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1445+
<TargetFramework>netcoreapp3.1</TargetFramework>
1446+
<RequiresDockerDependency>All</RequiresDockerDependency>
1447+
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
1448+
</PackageVersionSample>
13831449
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
13841450
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
13851451
<TargetFramework>net5.0</TargetFramework>
@@ -1404,6 +1470,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
14041470
<RequiresDockerDependency>All</RequiresDockerDependency>
14051471
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
14061472
</PackageVersionSample>
1473+
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
1474+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1475+
<TargetFramework>net5.0</TargetFramework>
1476+
<RequiresDockerDependency>All</RequiresDockerDependency>
1477+
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
1478+
</PackageVersionSample>
14071479
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
14081480
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
14091481
<TargetFramework>net6.0</TargetFramework>
@@ -1428,6 +1500,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
14281500
<RequiresDockerDependency>All</RequiresDockerDependency>
14291501
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
14301502
</PackageVersionSample>
1503+
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
1504+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1505+
<TargetFramework>net6.0</TargetFramework>
1506+
<RequiresDockerDependency>All</RequiresDockerDependency>
1507+
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
1508+
</PackageVersionSample>
14311509
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
14321510
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
14331511
<TargetFramework>net7.0</TargetFramework>
@@ -1452,6 +1530,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
14521530
<RequiresDockerDependency>All</RequiresDockerDependency>
14531531
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
14541532
</PackageVersionSample>
1533+
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
1534+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1535+
<TargetFramework>net7.0</TargetFramework>
1536+
<RequiresDockerDependency>All</RequiresDockerDependency>
1537+
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
1538+
</PackageVersionSample>
14551539
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
14561540
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
14571541
<TargetFramework>net8.0</TargetFramework>
@@ -1476,6 +1560,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
14761560
<RequiresDockerDependency>All</RequiresDockerDependency>
14771561
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
14781562
</PackageVersionSample>
1563+
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
1564+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1565+
<TargetFramework>net8.0</TargetFramework>
1566+
<RequiresDockerDependency>All</RequiresDockerDependency>
1567+
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
1568+
</PackageVersionSample>
14791569
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
14801570
<Properties>ApiVersion=3.6.9;RestoreRecursive=false;BuildProjectReferences=false</Properties>
14811571
<TargetFramework>net9.0</TargetFramework>
@@ -1500,6 +1590,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
15001590
<RequiresDockerDependency>All</RequiresDockerDependency>
15011591
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
15021592
</PackageVersionSample>
1593+
<PackageVersionSample Include="test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj">
1594+
<Properties>ApiVersion=7.0.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
1595+
<TargetFramework>net9.0</TargetFramework>
1596+
<RequiresDockerDependency>All</RequiresDockerDependency>
1597+
<SampleName>Samples.DataStreams.RabbitMQ</SampleName>
1598+
</PackageVersionSample>
15031599
<PackageVersionSample Include="test\test-applications\integrations\Samples.SqlServer\Samples.SqlServer.csproj">
15041600
<Properties>ApiVersion=4.9.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
15051601
<TargetFramework>net462</TargetFramework>

0 commit comments

Comments
 (0)