Skip to content

Commit aef0f46

Browse files
The most significant changes include the removal of the System.Data namespace from several files, the modification of the return type of the ToListAsync and GetDataForTypeAsync methods, and the addition of a new condition in several catch blocks.
1. The `System.Data` namespace was removed from several files as it was no longer needed. This change simplifies the code and reduces dependencies. 2. The return type of the `ToListAsync` method in `IObjectQueryExtensions.cs` was changed from `IEnumerable<TObject>` to `List<TObject>`. This change makes the return type more specific and allows for more operations on the returned data. 3. The return statement in `IObjectQueryExtensions.cs` was modified to return a new list with zero elements instead of an empty enumerable when the results are null. This change ensures that the method always returns a list, even when there are no results. 4. The `GetDataForTypeAsync` method in several files was updated to return a `List<T>` instead of `IEnumerable<T>`. This change, like the one for `ToListAsync`, makes the return type more specific. 5. The code that converts the result of `GetDataForTypeAsync` to a list was removed in several files, as the method now directly returns a list. This change simplifies the code and reduces unnecessary operations. 6. An additional condition was added to several `catch` blocks to check if the exception message contains "reader is closed". This change improves error handling by providing a more specific response to a common error. 7. The `OnSite` method was added to the query in `EventLogHealthCheck.cs` to filter the results based on the current site ID. This change improves the relevance of the returned data. 8. The `GetDataForTypeAsync` method in `SitePresentationHealthCheck.cs` was updated to throw a `NotImplementedException`, as it is not used in this class. This change prevents potential misuse of the method.
1 parent 8aef993 commit aef0f46

File tree

9 files changed

+41
-29
lines changed

9 files changed

+41
-29
lines changed

src/XperienceCommunity.AspNetCore.HealthChecks/Extensions/IObjectQueryExtensions.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System.Data;
2-
using CMS.DataEngine;
1+
using CMS.DataEngine;
32

43
namespace XperienceCommunity.AspNetCore.HealthChecks.Extensions
54
{
@@ -14,7 +13,7 @@ public static class IObjectQueryExtensions
1413
/// <param name="cancellationToken"></param>
1514
/// <returns></returns>
1615
/// <exception cref="ArgumentNullException"></exception>
17-
public static async Task<IEnumerable<TObject>> ToListAsync<TQuery, TObject>(this IObjectQuery<TQuery, TObject> query, CancellationToken cancellationToken = default)
16+
public static async Task<List<TObject>> ToListAsync<TQuery, TObject>(this IObjectQuery<TQuery, TObject> query, CancellationToken cancellationToken = default)
1817
where TQuery : IObjectQuery<TQuery, TObject>
1918
where TObject : BaseInfo
2019
{
@@ -28,8 +27,8 @@ public static async Task<IEnumerable<TObject>> ToListAsync<TQuery, TObject>(this
2827
//.GetEnumerableTypedResultAsync(commandBehavior: CommandBehavior.CloseConnection, true, cancellationToken: cancellationToken)
2928
.ConfigureAwait(false);
3029

31-
32-
return results.ToList() ?? Enumerable.Empty<TObject>();
30+
31+
return results?.ToList() ?? new List<TObject>(0);
3332
}
3433
}
3534
}

src/XperienceCommunity.AspNetCore.HealthChecks/HealthChecks/AzureSearchTaskHealthCheck.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
2828
{
2929
try
3030
{
31-
var searchTasks = (await GetDataForTypeAsync(cancellationToken)).ToList();
31+
var searchTasks = await GetDataForTypeAsync(cancellationToken);
3232

3333
if (searchTasks.Count == 0)
3434
{
@@ -47,7 +47,9 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
4747
}
4848
catch (InvalidOperationException ex)
4949
{
50-
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase) || ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase))
50+
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase)
51+
|| ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase)
52+
|| ex.Message.Contains("reader is closed", StringComparison.OrdinalIgnoreCase))
5153
{
5254
return HealthCheckResult.Healthy();
5355
}
@@ -68,7 +70,7 @@ protected override IEnumerable<SearchTaskAzureInfo> GetDataForType()
6870
return result.ToList();
6971
}
7072

71-
protected override async Task<IEnumerable<SearchTaskAzureInfo>> GetDataForTypeAsync(
73+
protected override async Task<List<SearchTaskAzureInfo>> GetDataForTypeAsync(
7274
CancellationToken cancellationToken = default)
7375
{
7476
var query = _searchTaskAzureInfoProvider.Get()

src/XperienceCommunity.AspNetCore.HealthChecks/HealthChecks/BaseKenticoHealthCheck.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public abstract class BaseKenticoHealthCheck<T> where T : BaseInfo
1919
/// </summary>
2020
/// <param name="cancellationToken">The cancellation token.</param>
2121
/// <returns>A task that represents the asynchronous operation and contains an enumerable collection of Kentico objects.</returns>
22-
protected abstract Task<IEnumerable<T>> GetDataForTypeAsync(CancellationToken cancellationToken = default);
22+
protected abstract Task<List<T>> GetDataForTypeAsync(CancellationToken cancellationToken = default);
2323

2424
/// <summary>
2525
/// Gets the error data for the specified Kentico objects.

src/XperienceCommunity.AspNetCore.HealthChecks/HealthChecks/EventLogHealthCheck.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using System.Collections.ObjectModel;
2-
using System.Data;
32
using CMS.EventLog;
43
using CMS.Helpers;
5-
using CMS.Search.Azure;
64
using CMS.SiteProvider;
75
using Microsoft.Extensions.Diagnostics.HealthChecks;
86
using XperienceCommunity.AspNetCore.HealthChecks.Extensions;
@@ -29,7 +27,7 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
2927
{
3028
try
3129
{
32-
var eventList = (await GetDataForTypeAsync(cancellationToken)).ToList();
30+
var eventList = await GetDataForTypeAsync(cancellationToken);
3331

3432
var exceptionEvents = eventList
3533
.Where(e => e.EventType == "E"
@@ -47,7 +45,9 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
4745
}
4846
catch (InvalidOperationException ex)
4947
{
50-
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase) || ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase))
48+
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase)
49+
|| ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase)
50+
|| ex.Message.Contains("reader is closed", StringComparison.OrdinalIgnoreCase))
5151
{
5252
return HealthCheckResult.Healthy();
5353
}
@@ -64,16 +64,18 @@ protected override IEnumerable<EventLogInfo> GetDataForType()
6464
{
6565
var query = _eventLogInfoProvider.Get()
6666
.WhereEquals(nameof(EventLogInfo.EventType), "E")
67-
.WhereNotEquals(nameof(EventLogInfo.Source), nameof(HealthReport));
67+
.WhereNotEquals(nameof(EventLogInfo.Source), nameof(HealthReport))
68+
.OnSite(SiteContext.CurrentSiteID);
6869

6970
return query.ToList();
7071
}
7172

72-
protected override async Task<IEnumerable<EventLogInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
73+
protected override async Task<List<EventLogInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
7374
{
7475
var query = _eventLogInfoProvider.Get()
7576
.WhereEquals(nameof(EventLogInfo.EventType), "E")
76-
.WhereNotEquals(nameof(EventLogInfo.Source), nameof(HealthReport));
77+
.WhereNotEquals(nameof(EventLogInfo.Source), nameof(HealthReport))
78+
.OnSite(SiteContext.CurrentSiteID);
7779

7880
return await query.ToListAsync(cancellationToken: cancellationToken);
7981
}

src/XperienceCommunity.AspNetCore.HealthChecks/HealthChecks/LocalSearchTaskHealthCheck.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
2626
{
2727
try
2828
{
29-
var searchTasks = (await GetDataForTypeAsync(cancellationToken)).ToList();
29+
var searchTasks = await GetDataForTypeAsync(cancellationToken);
3030

3131
if (searchTasks.Count == 0)
3232
{
@@ -37,7 +37,9 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
3737
}
3838
catch (InvalidOperationException ex)
3939
{
40-
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase) || ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase))
40+
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase)
41+
|| ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase)
42+
|| ex.Message.Contains("reader is closed", StringComparison.OrdinalIgnoreCase))
4143
{
4244
return HealthCheckResult.Healthy();
4345
}
@@ -58,7 +60,7 @@ protected override IEnumerable<SearchTaskInfo> GetDataForType()
5860
return query.ToList();
5961
}
6062

61-
protected override async Task<IEnumerable<SearchTaskInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
63+
protected override async Task<List<SearchTaskInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
6264
{
6365

6466
var query = _searchTaskInfoProvider.Get()

src/XperienceCommunity.AspNetCore.HealthChecks/HealthChecks/SiteConfigurationHealthCheck.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,17 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
2424
{
2525
try
2626
{
27-
var sites = (await GetDataForTypeAsync(cancellationToken)).ToList();
27+
var sites = await GetDataForTypeAsync(cancellationToken);
2828

2929
return sites.Count == 0 ?
3030
HealthCheckResult.Unhealthy("There are no sites configured.")
3131
: HealthCheckResult.Healthy("Sites have been added to the CMS.");
3232
}
3333
catch (InvalidOperationException ex)
3434
{
35-
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase) || ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase))
35+
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase)
36+
|| ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase)
37+
|| ex.Message.Contains("reader is closed", StringComparison.OrdinalIgnoreCase))
3638
{
3739
return HealthCheckResult.Healthy();
3840
}
@@ -52,7 +54,7 @@ protected override IEnumerable<SiteInfo> GetDataForType()
5254
return query.ToList();
5355
}
5456

55-
protected override async Task<IEnumerable<SiteInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
57+
protected override async Task<List<SiteInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
5658
{
5759
var query = _siteInfoProvider.Get();
5860
return await query.ToListAsync(cancellationToken: cancellationToken);

src/XperienceCommunity.AspNetCore.HealthChecks/HealthChecks/SitePresentationHealthCheck.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ public SitePresentationHealthCheck(ISiteService siteService,
7171
}
7272
catch (InvalidOperationException ex)
7373
{
74-
75-
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase))
74+
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase)
75+
|| ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase)
76+
|| ex.Message.Contains("reader is closed", StringComparison.OrdinalIgnoreCase))
7677
{
7778
return HealthCheckResult.Healthy();
7879
}
@@ -92,7 +93,7 @@ protected override IEnumerable<SiteInfo> GetDataForType()
9293
return new List<SiteInfo>() { query };
9394
}
9495

95-
protected override Task<IEnumerable<SiteInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
96+
protected override Task<List<SiteInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
9697
{
9798
throw new NotImplementedException();
9899
}

src/XperienceCommunity.AspNetCore.HealthChecks/HealthChecks/StagingTaskHealthCheck.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ public StagingTaskHealthCheck(IStagingTaskInfoProvider stagingTaskInfoProvider,
9090
}
9191
catch (InvalidOperationException ex)
9292
{
93-
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase) || ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase))
93+
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase)
94+
|| ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase)
95+
|| ex.Message.Contains("reader is closed", StringComparison.OrdinalIgnoreCase))
9496
{
9597
return HealthCheckResult.Healthy();
9698
}

src/XperienceCommunity.AspNetCore.HealthChecks/HealthChecks/WebFarmTaskHealthCheck.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
2727

2828
try
2929
{
30-
var data = (await GetDataForTypeAsync(cancellationToken)).ToList();
30+
var data = await GetDataForTypeAsync(cancellationToken);
3131

3232
if (data.Count != 0)
3333
{
@@ -38,7 +38,9 @@ public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context
3838
}
3939
catch (InvalidOperationException ex)
4040
{
41-
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase) || ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase))
41+
if (ex.Message.Contains("open DataReader", StringComparison.OrdinalIgnoreCase)
42+
|| ex.Message.Contains("current state", StringComparison.OrdinalIgnoreCase)
43+
|| ex.Message.Contains("reader is closed", StringComparison.OrdinalIgnoreCase))
4244
{
4345
return HealthCheckResult.Healthy();
4446
}
@@ -60,7 +62,7 @@ protected override IEnumerable<WebFarmServerTaskInfo> GetDataForType()
6062
return query.ToList();
6163
}
6264

63-
protected override async Task<IEnumerable<WebFarmServerTaskInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
65+
protected override async Task<List<WebFarmServerTaskInfo>> GetDataForTypeAsync(CancellationToken cancellationToken = default)
6466
{
6567
var query = _webFarmTaskInfoProvider
6668
.Get()

0 commit comments

Comments
 (0)