Skip to content

Commit 3d91b73

Browse files
authored
Merge pull request #4720 from Particular/connector_heartbeat
2 parents 70e9717 + 91a8480 commit 3d91b73

File tree

16 files changed

+79
-138
lines changed

16 files changed

+79
-138
lines changed

src/Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
<PackageVersion Include="NServiceBus.Transport.SqlServer" Version="8.1.6" />
4848
<PackageVersion Include="NServiceBus.Transport.PostgreSql" Version="8.1.7" />
4949
<PackageVersion Include="NuGet.Versioning" Version="6.12.1" />
50-
<PackageVersion Include="NUnit" Version="4.2.2" />
50+
<PackageVersion Include="NUnit" Version="4.3.2" />
5151
<PackageVersion Include="NUnit.Analyzers" Version="4.6.0" />
5252
<PackageVersion Include="NUnit3TestAdapter" Version="4.6.0" />
5353
<PackageVersion Include="Particular.Approvals" Version="2.0.0" />

src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_headers.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ public async Task A_new_message_with_edited_headers_is_sent()
6666
{
6767
Assert.That(context.EditedMessageId, Is.Not.EqualTo(context.OriginalMessageId));
6868
Assert.That(context.OriginalMessageFailure.Status, Is.EqualTo(FailedMessageStatus.Resolved));
69-
Assert.That(context.EditedMessageHeaders["AcceptanceTest.NewHeader"], Is.EqualTo("42").AsCollection);
70-
Assert.That(context.EditedMessageHeaders["ServiceControl.EditOf"], Is.EqualTo(context.UniqueMessageId).AsCollection);
69+
Assert.That(context.EditedMessageHeaders["AcceptanceTest.NewHeader"], Is.EqualTo("42"));
70+
Assert.That(context.EditedMessageHeaders["ServiceControl.EditOf"], Is.EqualTo(context.UniqueMessageId));
7171
});
7272
}
7373

src/ServiceControl.Persistence.RavenDB/ConnectedApplicationsDataStore.cs

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/ServiceControl.Persistence.RavenDB/RavenPersistence.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public void AddPersistence(IServiceCollection services)
6666
services.AddSingleton<IRetryHistoryDataStore, RetryHistoryDataStore>();
6767
services.AddSingleton<IEndpointSettingsStore, EndpointSettingsStore>();
6868
services.AddSingleton<ITrialLicenseDataProvider, TrialLicenseDataProvider>();
69-
services.AddSingleton<IConnectedApplicationsDataStore, ConnectedApplicationsDataStore>();
7069
}
7170

7271
public void AddInstaller(IServiceCollection services)

src/ServiceControl.Persistence.Tests.RavenDB/ConnectedApplications/ConnectedApplicationsTests.cs

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/ServiceControl.Persistence/IConnectedApplicationsDataStore.cs

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/ServiceControl.UnitTests/API/APIApprovals.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using ServiceBus.Management.Infrastructure.Settings;
2020
using ServiceControl.Infrastructure.Api;
2121
using ServiceControl.Infrastructure.WebApi;
22+
using ServiceControl.Monitoring.HeartbeatMonitoring;
2223

2324
[TestFixture]
2425
class APIApprovals
@@ -34,7 +35,7 @@ public async Task RootPathValue()
3435
new ActiveLicense(null) { IsValid = true },
3536
new Settings(),
3637
null,
37-
null
38+
new MassTransitConnectorHeartbeatStatus()
3839
)
3940
)
4041
{

src/ServiceControl/Infrastructure/Api/ConfigurationApi.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@
88
using System.Threading;
99
using System.Threading.Tasks;
1010
using Configuration;
11+
using Monitoring.HeartbeatMonitoring;
1112
using Particular.ServiceControl.Licensing;
1213
using ServiceBus.Management.Infrastructure.Settings;
1314
using ServiceControl.Api;
1415
using ServiceControl.Api.Contracts;
15-
using ServiceControl.Persistence;
1616

1717
class ConfigurationApi(ActiveLicense license,
1818
Settings settings,
19-
IConnectedApplicationsDataStore connectedApplicationsDataStore,
20-
IHttpClientFactory httpClientFactory) : IConfigurationApi
19+
IHttpClientFactory httpClientFactory, MassTransitConnectorHeartbeatStatus connectorHeartbeatStatus) : IConfigurationApi
2120
{
2221
public Task<RootUrls> GetUrls(string baseUrl, CancellationToken cancellationToken)
2322
{
@@ -51,7 +50,7 @@ public Task<RootUrls> GetUrls(string baseUrl, CancellationToken cancellationToke
5150
}
5251

5352

54-
public async Task<object> GetConfig(CancellationToken cancellationToken)
53+
public Task<object> GetConfig(CancellationToken cancellationToken)
5554
{
5655
object content = new
5756
{
@@ -85,13 +84,10 @@ public async Task<object> GetConfig(CancellationToken cancellationToken)
8584
{
8685
settings.HeartbeatGracePeriod
8786
},
88-
ConnectedApplications = new
89-
{
90-
ConnectedApplications = await connectedApplicationsDataStore.GetConnectedApplications()
91-
}
87+
MassTransitConnector = connectorHeartbeatStatus.LastHeartbeat
9288
};
9389

94-
return content;
90+
return Task.FromResult(content);
9591
}
9692

9793
public async Task<RemoteConfiguration[]> GetRemoteConfigs(CancellationToken cancellationToken = default)

src/ServiceControl/Licensing/ActiveLicense.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
namespace Particular.ServiceControl.Licensing
22
{
3-
using System.Threading.Tasks;
4-
using System.Threading;
53
using System;
4+
using System.Threading;
5+
using System.Threading.Tasks;
66
using global::ServiceControl.LicenseManagement;
77
using global::ServiceControl.Persistence;
88
using NServiceBus.Logging;
99

1010
public class ActiveLicense(ITrialLicenseDataProvider trialLicenseDataProvider)
1111
{
1212
public bool IsValid { get; set; }
13+
public bool IsEvaluation { get; set; }
1314

1415
public LicenseDetails Details { get; set; }
1516

@@ -22,6 +23,8 @@ public async Task Refresh(CancellationToken cancellationToken)
2223
Details = await ValidateTrialLicense(detectedLicense.Details, trialLicenseDataProvider, cancellationToken);
2324

2425
IsValid = !Details.HasLicenseExpired();
26+
27+
IsEvaluation = detectedLicense.IsEvaluationLicense;
2528
}
2629

2730
internal static async Task<LicenseDetails> ValidateTrialLicense(LicenseDetails licenseDetails, ITrialLicenseDataProvider trialLicenseDataProvider, CancellationToken cancellationToken)

src/ServiceControl/Licensing/LicenseController.cs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
using System.Threading;
44
using System.Threading.Tasks;
55
using Microsoft.AspNetCore.Mvc;
6+
using Monitoring.HeartbeatMonitoring;
67
using Particular.ServiceControl.Licensing;
7-
using Persistence;
88
using ServiceBus.Management.Infrastructure.Settings;
99

1010
[ApiController]
1111
[Route("api")]
12-
public class LicenseController(ActiveLicense activeLicense, Settings settings, IConnectedApplicationsDataStore connectedApplicationsStore) : ControllerBase
12+
public class LicenseController(ActiveLicense activeLicense, Settings settings, MassTransitConnectorHeartbeatStatus connectorHeartbeatStatus) : ControllerBase
1313
{
1414
[HttpGet]
1515
[Route("license")]
@@ -31,21 +31,14 @@ public async Task<ActionResult<LicenseInfo>> License(bool refresh, string client
3131
LicenseType = activeLicense.Details.LicenseType ?? string.Empty,
3232
InstanceName = settings.InstanceName ?? string.Empty,
3333
LicenseStatus = activeLicense.Details.Status,
34-
LicenseExtensionUrl = $"https://particular.net/extend-your-trial?p={clientName}{await BuildConnectedApplicationsListPart()}"
34+
LicenseExtensionUrl = connectorHeartbeatStatus.LastHeartbeat == null
35+
? $"https://particular.net/extend-your-trial?p={clientName}"
36+
: $"https://particular.net/license/mt?p={clientName}&t={(activeLicense.IsEvaluation ? 0 : 1)}"
3537
};
3638

3739
return licenseInfo;
3840
}
3941

40-
async Task<string> BuildConnectedApplicationsListPart()
41-
{
42-
var connectedApplications = await connectedApplicationsStore.GetConnectedApplications();
43-
44-
return connectedApplications != null
45-
? $"&ca={string.Join(',', connectedApplications)}"
46-
: string.Empty;
47-
}
48-
4942
public class LicenseInfo
5043
{
5144
public bool TrialLicense { get; set; }

0 commit comments

Comments
 (0)