Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Async method to ContentDefinitionManager to prevent possible thread starvation #14668

Merged
merged 28 commits into from
Nov 23, 2023

Conversation

MikeAlhayek
Copy link
Member

@MikeAlhayek MikeAlhayek commented Nov 11, 2023

Fix #14667

  • Fix all the warning
  • Cleanup the duplicated logic in the methods. Point the non-async methods to async by using .GetAwaiter().GetResult()
  • document the changes to the interfaces.

Here is a list of interfaces that were modified

  • IStereotypeService
  • IStereotypesProvider
  • IRouteableContentTypeProvider
  • IRouteableContentTypeCoordinator
  • IContentDefinitionService
  • IContentDefinitionManager
  • IContentDefinitionService

@sebastienros lots of changes had to happen here to ensure that IContentDefinitionManager is no longer blocking. I have another PR going into YesSql that would allow us to reduce the locking even more.

@jtkech lots of changes here. I would appreciate a second set of eye to ensure I did not miss anything.

@MikeAlhayek MikeAlhayek marked this pull request as draft November 11, 2023 18:56
@MikeAlhayek MikeAlhayek self-assigned this Nov 11, 2023
@MikeAlhayek MikeAlhayek marked this pull request as ready for review November 12, 2023 17:22
@MikeAlhayek MikeAlhayek requested a review from jtkech November 12, 2023 17:25
@MikeAlhayek
Copy link
Member Author

Fixed the failing tests. Did random tests on the site and everything seems to be working as expected.

@jtkech
Copy link
Member

jtkech commented Nov 13, 2023

This is something that I already suggested when we introduced DocumentManager but at a time it was not so easy to make things approved ;) So because sometimes there are pros and cons to make things async we did a compromise that doesn't fully use the DocumentManager pattern.

For example it still uses directly the IMemoryCache.

So, if we agree to make it async I think that it should follow the regular DocumentManager pattern (should be done carefully), this is something that I can do.

I will look at it when I will have time.

@MikeAlhayek
Copy link
Member Author

@jtkech

if we agree to make it async I think that it should follow the regular DocumentManager pattern (should be done carefully), this is something that I can do.

This is something @sebastienros and I chatted about. I think he is good with using async to prevent blocking. Do you see a problem with converting this to async?

@jtkech
Copy link
Member

jtkech commented Nov 13, 2023

Do you see a problem with converting this to async?

Not at all, it was just for info about the history, but then should change for example the direct usage of the memory cache and its invalidation, I already did it but reverted it to allow an old PR to be approved.

For now I'have too many things in late but I will work on it asap.

Note: Good to improve things but we still need to understand what really happens e.g. in #14616.

@MikeAlhayek
Copy link
Member Author

Note: Good to improve things but we still need to understand what really happens e.g. in #14616.

Absolutely, this is a big problem for me. But, the more I dig, the more things I notice and end up with a PR to improve. For example, I am under the impression that is something cause a lock of the resources and the only thread is not release. So now I am after anything that is causing a lock. Similarly, the PR in YesSql sebastienros/yessql#508 was submitted to prevent locking. Currently, event session.Save(obj) causes a lock which is not good since this method is used everywhere.

@jtkech
Copy link
Member

jtkech commented Nov 14, 2023

Currently, event session.Save(obj) causes a lock

Do you mean that you are also saving data while processing your report? If so maybe a dead lock between 2 transactions waiting for each other. Otherwise if even a regular session save may cause a lock, maybe something else more specific to find. Because I don't have the context to be able to repro, can you share some parts of your code in case there is something to find.

@MikeAlhayek
Copy link
Member Author

@jtkech no. The report reads only and does not save data. If there was a deadlock, we'll likely to hit that deadlock even when running the same report with less data.

My save locks, I mean in general the call to Save causes a thread lock. Keep in mind that I am running the app on a single vCore which means the CPU is able to process a single thread at a time. So if we don't release the lock, the CPU won't be able to process anything else meanwhile.

@jtkech
Copy link
Member

jtkech commented Nov 14, 2023

Keep in mind that I am running the app on a single vCore which means the CPU is able to process a single thread at a time.

Ah okay, this may explain some behaviors, for example we have some synchronous locks but, for most of them, not to access IO resources, hmm are you using Lucene?

One good thing to test would be to see what happens when disabling step by step some features.

@jtkech
Copy link
Member

jtkech commented Nov 16, 2023

Didn't have time to look at it, I will try asap.

As I remember it has some specificities that we may have to take care.

Otherwise we could just extend/change the interface, and then the implementation but moving old methods to interface/extensions methods for backward compatibilities, as we did elsewhere.

Just retrieved this 2 PRs ;) #6921 #3930

@jtkech
Copy link
Member

jtkech commented Nov 19, 2023

@sebastienros @MikeAlhayek Okay Just saw the related meeting discussion.

As said when we introduced DocumentManager we used it for ContentDefinitionManager, I already suggestted to make it all async but because of pros and cons we didn't do it.

But ContentDefinitionManager already uses DocumentManager through IContentDefinitionStore to manage Get/Load for update, syncing between instances, it also already manages cumulative updates where data are persisted once at the end of the shell scope and only if the session is well committed.

So would need to fully follow the DocumentManager async pattern and see how we manage part that are always synchronous, didn't have time yet but I will look at it asap.

Here the database one.

public class DatabaseContentDefinitionStore : IContentDefinitionStore
{
private readonly IDocumentManager<ContentDefinitionRecord> _documentManager;
public DatabaseContentDefinitionStore(IDocumentManager<ContentDefinitionRecord> documentManager)
{
_documentManager = documentManager;
}
/// <inheritdoc />
public Task<ContentDefinitionRecord> LoadContentDefinitionAsync() => _documentManager.GetOrCreateMutableAsync();
/// <inheritdoc />
public Task<ContentDefinitionRecord> GetContentDefinitionAsync() => _documentManager.GetOrCreateImmutableAsync();
/// <inheritdoc />
public Task SaveContentDefinitionAsync(ContentDefinitionRecord contentDefinitionRecord) => _documentManager.UpdateAsync(contentDefinitionRecord);
}

There is also FileContentDefinitionStore using an IDocumentManager<IFileDocumentStore, ...>.

public class FileContentDefinitionStore : IContentDefinitionStore
{
private readonly IDocumentManager<IFileDocumentStore, ContentDefinitionRecord> _documentManager;

@jtkech
Copy link
Member

jtkech commented Nov 20, 2023

Okay, I take a look and seems to be consistent, as said (see my above comment) the definition manager already use IDocumentManager through the IContentDefinitionStore.

Could be a singleton if we make the 2 stores singletons which is possible as they only inject IDocumentManager that we made singletons (even if they always execute in a scope context).

And we use the memory cache to GET already built types and parts definitions, but we use scoped caches when we do multiple LOADs for update in the same scope.

We can't GET once on startup as ContentDefinitionRecord is a shared Document that needs to be kept in sync, but most of the time this is what happens while rendering the frist content item.

As described when we LOAD for updating we act on the same scoped cached built definitions and the ContentDefinitionRecord Document is already persisted only once at the end of the shell scope.

So what @MikeAlhayek has already done seems to be almost what we need, good job.

We would just need to reduce the number of async calls, I think we can because I saw redundant calls, I will work on it very soon.

@jtkech
Copy link
Member

jtkech commented Nov 20, 2023

@MikeAlhayek I started to work on it, for info ConfigureAwait(false) is useless under aspnetcore.

@MikeAlhayek
Copy link
Member Author

@jtkech Yes I was planning to remove them. But, I left them alone until you made the changes you mentioned first.

@MikeAlhayek
Copy link
Member Author

MikeAlhayek commented Nov 21, 2023

@jtkech I did some cleanup and removed some redundant async calls. I hope we can merge this PR soon.

As described when we LOAD for updating we act on the same scoped cached built definitions and the ContentDefinitionRecord Document is already persisted only once at the end of the shell scope.

Where in the code this is done to ensure we only update the database one?

@jtkech
Copy link
Member

jtkech commented Nov 22, 2023

@MikeAlhayek

I did some cleanup and removed some redundant async calls. I hope we can merge this PR soon.

Okay, let me work on it this night.

Where in the code this is done to ensure we only update the database one?

SaveContentDefinitionAsync() > _documentManager.UpdateAsync() > DocumentStore.UpdateAsync() > _session.Save() and AfterCommitSuccess<T>() that registers a possible delegate.

Then when DocumentStore.CommitAsync() > _session.SaveChangesAsync() and execute possible delegates, knowing that CommitAsync() is called at the end of the shell scope because of how ISession is resolved, see the registration of ISession that contains the following.

                ShellScope.Current
                    .RegisterBeforeDispose(scope =>
                    {
                        return scope.ServiceProvider
                            .GetRequiredService<IDocumentStore>()
                            .CommitAsync();
                    })

This ensures that the ISession is only commited at the end of the shell scope, unless if SaveChangesAsync() is called explicitly, which is the case in some places, maybe not always for a good reason, sometimes just because done before the above pattern.

@jtkech
Copy link
Member

jtkech commented Nov 22, 2023

@MikeAlhayek

As said

Okay, let me work on it this night.

I'm working on but I saw that are pushing changes.

@jtkech
Copy link
Member

jtkech commented Nov 22, 2023

That's okay, you didn't change ContentDefinitionManager

@MikeAlhayek
Copy link
Member Author

@jtkech sorry I just saw your message. I did some cleanup to get it ready. Anyway, I think I am done with my changes. Let me know once you are done please.

Thank you

@MikeAlhayek
Copy link
Member Author

@jtkech I did another round of testing and see no issues. I am going to merge this PR.

@MikeAlhayek MikeAlhayek merged commit 582653c into main Nov 23, 2023
3 checks passed
@MikeAlhayek MikeAlhayek deleted the ma/use-async branch November 23, 2023 16:47
DrewScoggins added a commit to dotnet-perf-bot/OrchardCore that referenced this pull request Dec 1, 2023
* mkdocs-material 9.2.8

* Release 1.7 (OrchardCMS#14111)

* Switch to 1.8.0-preview

* Position the modal over the navbar (OrchardCMS#14270)

* Add 1.8 release notes file. (OrchardCMS#14277)

* jQuery 3.7.1 (OrchardCMS#14231)

* Add @brutoledo as a contributor

* Add @dannyd89 as a contributor

* Typo SMS features

* Update libphonenumber-csharp 8.13.20 (OrchardCMS#14287)

* NLog.Web.AspNetCore 5.3.4 (OrchardCMS#14283)

* leaflet 1.9.4 (OrchardCMS#14054)

* bootstrap-select 1.14.0-beta3 (OrchardCMS#14282)

* Fixes invalid cookie name (OrchardCMS#14280)

* Add @ludovic-th as a contributor

* Move Moq into tests libraries (OrchardCMS#14260)

* Microsoft.Identity.Web 2.13.4 (OrchardCMS#14292)

* BenchmarkDotNet 0.13.8 (OrchardCMS#14293)

* mkdocs-material 9.3.0

* mkdocs-material 9.3.1

* Remove duplicate alert in settings (OrchardCMS#14299)

* Make WorkflowType extension able (OrchardCMS#14275)

* NET 6.0.22, 7.0.11 (OrchardCMS#14320)

* Update OpenIddict 4.8.0 (OrchardCMS#14321)

* Update Jint 3.0.0-beta-2051 (OrchardCMS#14322)

* Add IsViewOrPageResult() extension (OrchardCMS#14228)

* Use language keywords instead of framework type names for type references (IDE0049) (OrchardCMS#14273)

* Few missing language types in .cs (OrchardCMS#14323)

* Language Types in Razor files (OrchardCMS#14324)

* Handle InvalidToken in UserService.ProcessValidationErrors() (OrchardCMS#14331)

Co-authored-by: Mike Alhayek <mike@crestapps.com>

* Make SRI hashes consistent (OrchardCMS#13775)

* Update Form Migrations Create() (OrchardCMS#14272)

* Fix media item icon (OrchardCMS#14342)

* Update Azure.Storage.Blobs 12.18.0 (OrchardCMS#14326)

* mkdocs 1.5.3

* mkdocs-material 9.3.2

* Update Jint to 3.0.0-beta-2052 (OrchardCMS#14369)

* Update libphonenumber-csharp 8.13.21 (OrchardCMS#14376)

* xunit 2.5.1, xunit.runner.visualstudio 2.5.1, xunit.runner.visualstudio 1.3.0 (OrchardCMS#14379)

* Azure.Identity 1.10.1 (OrchardCMS#14378)

* ZString 2.5.1 (OrchardCMS#14377)

* mkdocs-material 9.4.0

* mkdocs-material 9.4.1

* mkdocs-material 9.4.2

* Fix Monaco doc link (OrchardCMS#14387)

* Upgrade to Bootstrap 5.3.2 (OrchardCMS#14294)

* Fixing Icon-Picker and cleanup sass (OrchardCMS#14393)

* Set html classes to make the scripts work again (removed in OrchardCMS#9371) (OrchardCMS#14367)

* Add a fallback function to crypto.randomUUID (OrchardCMS#14371)

* Update HtmlSantizer 8.0.718 (OrchardCMS#14395)

* Update Microsoft.Identity.Web 2.14.0 (OrchardCMS#14394)

* SASS files cleanup in TheAdmin theme (OrchardCMS#14399)

* Fix validation color in the login layout (OrchardCMS#14400)

* Update Fluid 2.5.0 (OrchardCMS#14402)

* Trim Async suffix (OrchardCMS#14407)

Co-authored-by: Vincent Jacquet <vjacquet@wmcsoft.com>

* Typos in OrchardCore.Notifications (OrchardCMS#14409)

* Update libphonenumber-csharp 8.13.22 (OrchardCMS#14408)

* Fix doc typo (OrchardCMS#14411)

* mkdocs-material 9.4.3

* fix: workflow module page list issue when using PostgreSQL OrchardCMS#14334 (OrchardCMS#14412)

* Add @emrahtokalak as a contributor

* Add @vjacquet as a contributor

* Fix randomUUID, modal dialog and duplicate alerts

* Add a fallback function to crypto.randomUUID (OrchardCMS#14371)
* Fix modal dialog location
* Remove duplicate alert in settings (OrchardCMS#14299)
Co-authored-by: Hisham Bin Ateya <hishamco_2007@yahoo.com>

* Add OC.Notifications.Abstractions docs (OrchardCMS#14427)

* Fix `Creating a modular ASP.NET Core application` tutorial (OrchardCMS#14415)

Emphasize that reference must be added from the applicaiton to the module

* mkdocs-material 9.4.4

* Fix form validation and link decoration (BS 5.3) (OrchardCMS#14432)

* Fix admin menu background color on small screen. (OrchardCMS#14434)

* Open the front page in the same browser instead of a blank tab. (OrchardCMS#14435)

* Fix Publish Later Buttons (OrchardCMS#14438)

* Cleanup Archive/Publish Later and remove unnecessary assets and resources (OrchardCMS#14441)

* BenchmarkDotNet 0.13.9 (OrchardCMS#14436)

* Update HtmlSantizer 8.0.723 (OrchardCMS#14429)

* Microsoft.Identity.Web 2.15.1 (OrchardCMS#14437)

* AdminBranding (OrchardCMS#14453)

* Admin Navbar link (OrchardCMS#14454)

* Upgrade TheTheme to use Bootstrap 5.3.2 (OrchardCMS#14451)

* Fix sortable widgets (OrchardCMS#14467)

* Remove "Cannot update your own roles" warning (OrchardCMS#14440)

* Fix null exception in EmailTask (OrchardCMS#14471)

* mkdocs-material 9.4.5

* Fix WidgetsListPart UI (OrchardCMS#14461)

* Memory Leaks (OrchardCMS#14348)

* Update 7.0.12 & 6.0.23 (OrchardCMS#14478)

* OpenIddict 4.9.0 (OrchardCMS#14463)

* Fix an exception in ListPart with header (OrchardCMS#14473)

* fix: workflow module page list issue when using PostgreSQL OrchardCMS#14334 (OrchardCMS#14412) (OrchardCMS#14428)

* Fix roles filter (OrchardCMS#14468)

* Docs tabs

* Enable tabs

* Docs missing links

* Docs enable footer (Previous, Next link)

* Typo Release 1.8

* Docs reference links

* Azure.Identity 1.10.2 (OrchardCMS#14494)

* Update Taxomony field (OrchardCMS#14477)

* Introduce a new Narbar shape (OrchardCMS#14488)

* Can't Reload Stream Config Provider (OrchardCMS#14499)

* Update YesSQL 3.4.0 (OrchardCMS#14491)

* NRE in query editor (OrchardCMS#14501)

* Set index length limit for MySQL (OrchardCMS#14500)

Fix OrchardCMS#14338

* Fix a typo (OrchardCMS#14503)

* Fix TheBlogTheme shared views (OrchardCMS#14493)

* Release 1.7.1 (OrchardCMS#14474)

Fix OrchardCMS#14338

---------

Co-authored-by: yaricrolletservico <101557629+yaricrolletservico@users.noreply.github.com>
Co-authored-by: Hisham Bin Ateya <hishamco_2007@yahoo.com>

* Fix mysql functional tests (OrchardCMS#14502)

* Release 1.7.1 (OrchardCMS#14506)

Co-authored-by: Sébastien Ros <sebastienros@gmail.com>

* Add @yaricrolletservico as a contributor

* mkdocs-material 9.4.6

* Docs GraphQL: Fix url api/graphql

* Fix messages class names (OrchardCMS#14508)

* Update 1.7.1 release notes (OrchardCMS#14509)

* js-cookie does not need to depend on jQuery (OrchardCMS#14511)

* mkdocs-git-revision-date-localized-plugin 1.2.1

* NLog.Web.AspNetCore 5.3.5

* centrally define media resources (OrchardCMS#14512)

* Fix TheAdmin & TheTheme for RTL languages (OrchardCMS#14486)

* Fixing TheTheme newly intruduced accessibility rules and HTML rules violations (Lombiq Technologies: NEST-462) (OrchardCMS#14523)

* Update libphonenumber-csharp 8.13.23 (OrchardCMS#14529)

* Add @yk as a contributor

* Fix MySQL index length (OrchardCMS#14513)

* Release 1.7.2 (OrchardCMS#14532)

* Revert " Add @yk as a contributor"

This reverts commit ce82352.

* Save Shell Config SubSections (OrchardCMS#14490)

* Microsoft.Identity.Web 2.15.2 (OrchardCMS#14540)

* SMTP should send the email if the SSL certificate is invalid (OrchardCMS#14444)

Co-authored-by: Sébastien Ros <sebastienros@gmail.com>

* Thumbnails for media app (OrchardCMS#14528)

* Add a way to restart a workflow instance (OrchardCMS#14470)

* pymdown-extensions 10.3.1

* Cleanup ReCaptcha services (OrchardCMS#14333)

Co-authored-by: Sébastien Ros <sebastienros@gmail.com>

* Change how ReCaptchaService consumes HttpClient (OrchardCMS#14544)

* Move ContentRootPoFileLocationProvider to OC.Localization.Core.PortableObject folder (OrchardCMS#13713)

* User Accounts and Custom User Settings Deployment (OrchardCMS#14208)

Co-authored-by: Mike Alhayek <mike@crestapps.com>
Co-authored-by: Hisham Bin Ateya <hishamco_2007@yahoo.com>

* xunit 2.5.3 (OrchardCMS#14558)

* Azure.Identity 1.10.3 (OrchardCMS#14557)

* Microsoft.Identity.Web 2.15.3 (OrchardCMS#14556)

* Jint 3.0.0-beta-2053 (OrchardCMS#14560)

* Media caches cleanups (OrchardCMS#14087)

* Add KeyVault without building a config (OrchardCMS#14550)

* Dotnet 8.0 (OrchardCMS#14058)

* Missing sdk (OrchardCMS#14561)

* js-cookie 3.0.5 (OrchardCMS#14559)

* HtmlSanitizer 8.0.746 (OrchardCMS#14577)

* correct bootstrap-select dependency (OrchardCMS#14578)

* Throw descriptive exception when a field is added with no type. (OrchardCMS#14569)

* Add extensions for IDisplayManager (OrchardCMS#14579)

* Register ReCaptchaService as singleton (OrchardCMS#14583)

Co-authored-by: Sébastien Ros <sebastienros@gmail.com>

* Assign the technical name of the field as the display name by default (OrchardCMS#14571)

* Use shape when rendering Http errors to allow cusomization from the UI (OrchardCMS#14545)

* Fix field wrappers CSS class names (OrchardCMS#14547)

* Cleanup ReCaptchaService after changing the registration type (OrchardCMS#14587)

* .NET 6.0.24, 7.0.13 (OrchardCMS#14575)

* Update GetPartWrapperCssClasses and GetFieldWrapperCssClasses helpers (OrchardCMS#14591)

* mkdocs-material 9.4.7

* Improve AdminDashboard Styling (OrchardCMS#14593)

* Monaco 0.44.0

* remove admin.css resource dependency on audit trail list (OrchardCMS#14608)

fixes OrchardCMS#14607

* Update the Admin Dashboard documentation. (OrchardCMS#14602)

* Monaco js error fix (OrchardCMS#14601)

* Remove admin.js dependency on fields and parts (OrchardCMS#14600)

* Update libphonenumber-csharp 8.13.24 (OrchardCMS#14619)

* xunit 2.6.0 (OrchardCMS#14618)

* Update StackExchange.Redis 2.7.4 (OrchardCMS#14620)

* Use CommitAsync() instead od Commit() (OrchardCMS#14622)

* BenchmarkDotNet 0.13.10 (OrchardCMS#14623)

* Add a shortcode for cache busting (OrchardCMS#14621)

Co-authored-by: Zoltán Lehóczky <zoltan.lehoczky@lombiq.com>
Co-authored-by: Hisham Bin Ateya <hishamco_2007@yahoo.com>

* Invalidate cache on updating store (OrchardCMS#14612)

* Improve performance for CssClass extensions (OrchardCMS#14615)

* Do not show dashboard widget when `DashboardWidget` is removed. (OrchardCMS#14603)

* mkdocs-material 9.4.8

* Update Jint 3.0.0-beta-2054 (OrchardCMS#14633)

* Address CssClasses helper warning (OrchardCMS#14643)

* Fix content preview editor resource dependency (OrchardCMS#14642)

* Fix the Content-preview script (OrchardCMS#14644)

* Azure.Storage.Blobs 12.19.0 (OrchardCMS#14647)

* xunit 2.6.1 (OrchardCMS#14646)

* Register TwoFactorAuthenticationClaimsProvider service (OrchardCMS#14651)

Fix OrchardCMS#14650

* Fix monaco editor widget error

* Initialize logger for YesSql to enable logging (OrchardCMS#14659)

* Cleanup workflow activities (OrchardCMS#14597)

* Microsoft.NET.Test.Sdk 17.8.0 (OrchardCMS#14665)

* pymdown-extensions 10.4

* Minor performance update for HtmlContentBuilderExtensions (OrchardCMS#14664)

* Update MailKit & MimiKit 4.3.0 (OrchardCMS#14669)

* Update xUnit Analyzers 1.5.0 (OrchardCMS#14670)

* Update Azure.Extensions.AspNetCore.Configuration.Secrets 1.3.0 (OrchardCMS#14672)

* Update Jint 3.0.0-beta-2055 (OrchardCMS#14671)

* Log a message every time Redis ConnectionMultiplexer is created

* Update Azure Identity 1.10.4 (OrchardCMS#14690)

* .NET 8.0.0 (OrchardCMS#14688)

* Update Azure Blobs 12.19.1 (OrchardCMS#14691)

* Update .NET 7.0.14 & .NET 6.0.25 (OrchardCMS#14689)

* Fix missing claims for OpenID code flow. (OrchardCMS#14686)

* OpenIddict 4.10.0 (OrchardCMS#14692)

* Add form originated http redirect task (OrchardCMS#14610)

* Set the docker image to .NET 8 (OrchardCMS#14696)

* Update workflows and test runners to use .net 8 (OrchardCMS#14702)

* Update YesSql to version 3.5.0 (OrchardCMS#14706)

* Update Moq 4.20.69 (OrchardCMS#14705)

* Drop support for .NET 6/7 (OrchardCMS#14695)

* mkdocs-material 9.4.9

* Update Microsoft.SourceLink.GitHub 8.0.0 (OrchardCMS#14714)

* Remove 'Async' term from a synchronous method (OrchardCMS#14710)

* Missing connection dispose (OrchardCMS#14709)

* Use C# 12.0 (OrchardCMS#14713)

* Little cleanup (OrchardCMS#14711)

* Register DataProtection_Azure asynchronously (OrchardCMS#14687)

* Typos in Media (OrchardCMS#14708)

* Update DocumentFormat.OpenXml 3.0.0 (OrchardCMS#14718)

* mkdocs-material 9.4.10

* xUnit VS runner (OrchardCMS#14725)

* Update xunit analyzers 1.6.0 (OrchardCMS#14724)

* Update xunit 2.6.2 (OrchardCMS#14723)

* Should not invalidate the cache of a Volatile Document. (OrchardCMS#14720)

As it is never persisted and can't be retrieved from a given store, see PR comment.

* Update Jint 3.0.0-beta-2056 (OrchardCMS#14729)

* Fix the Github release action on Windows (OrchardCMS#14707)

* Add a way to Remove User from a Role (Issue OrchardCMS#14632) (OrchardCMS#14652)

---------

Co-authored-by: Mike Alhayek <mike@crestapps.com>

* Update Microsoft.Identity.Web 2.15.5 (OrchardCMS#14733)

* Update libphonenumber-csharp  8.13.24 (OrchardCMS#14734)

* Fix Docker build (OrchardCMS#14736)

* Fix docker build (OrchardCMS#14737)

* Fix doc semantic error (OrchardCMS#14742)

* mkdocs-material>=9.4.11

* Add Async method to ContentDefinitionManager to prevent possible thread starvation (OrchardCMS#14668)

* Cleanup notifications module (OrchardCMS#14745)

* Pre-render Navbar to allow resource injection (OrchardCMS#14747)

* Add As/Put method to ISite to allow caching (OrchardCMS#14372)

* Typo (OrchardCMS#14741)

* Cleanup (OrchardCMS#14740)

* Remove compiler directives (OrchardCMS#14739)

* mkdocs-material 9.4.12

* Update HtmlSanitizer 8.0.795 (OrchardCMS#14753)

* Update  AngleSharp 1.0.6 (OrchardCMS#14673)

* pymdown-extensions 10.5

* mkdocs-material 9.4.13

* Pre-render Navbar to allow resource injection (OrchardCMS#14755)

* Don't throw lock timeout if shell activated (OrchardCMS#14756)

* Azure DP Initializer (OrchardCMS#14750)

* mkdocs-material 9.4.14

* Update Microsoft.Identity.Web 2.16.0 (OrchardCMS#14778)

* Missing OC.Media dependency (OrchardCMS#14758)

* Remove the double scroll in the notification item (OrchardCMS#14781)

* Update libphonenumber-csharp 8.13.26 (OrchardCMS#14788)

* Fix multi-targeting file locks (OrchardCMS#14732)

* Fix send button style in OC.Email (OrchardCMS#14804)

* Adding helpful methods for ContentPart, ContentType builders and Cont… (OrchardCMS#14717)

* Add full type name for Lucene lock type

In net9.0 the runtime now exposes it's own `Lock` type, dotnet/runtime#87672. This causes
a build break as there is a collision between the Lucene type and the
runtime type.

---------

Co-authored-by: Antoine Griffard <agriffard@hotmail.com>
Co-authored-by: Sébastien Ros <sebastienros@gmail.com>
Co-authored-by: Mike Alhayek <mike@crestapps.com>
Co-authored-by: Hisham Bin Ateya <hishamco_2007@yahoo.com>
Co-authored-by: ludovic-th <65158865+ludovic-th@users.noreply.github.com>
Co-authored-by: Tony Han <huarui2219@qq.com>
Co-authored-by: Jean-Thierry Kéchichian <jean-thierry.kechichian@wanadoo.fr>
Co-authored-by: Steven Spits <steven@netwave.be>
Co-authored-by: vjacquet <vjacquet@users.noreply.github.com>
Co-authored-by: Vincent Jacquet <vjacquet@wmcsoft.com>
Co-authored-by: Szymon Seliga <SzymonSel@users.noreply.github.com>
Co-authored-by: Emrah Tokalak <emrahtokalak@gmail.com>
Co-authored-by: Andrii Chebukin <XperiAndri@Outlook.com>
Co-authored-by: yaricrolletservico <101557629+yaricrolletservico@users.noreply.github.com>
Co-authored-by: Thomas Bolon <tbolon@users.noreply.github.com>
Co-authored-by: yk <giannkyrias@gmail.com>
Co-authored-by: Krisztián Németh <krisztian.nemeth@lombiq.com>
Co-authored-by: lampersky <lampersky@gmail.com>
Co-authored-by: Szabolcs Deme <80963259+DemeSzabolcs@users.noreply.github.com>
Co-authored-by: Zoltán Lehóczky <zoltan.lehoczky@lombiq.com>
Co-authored-by: Spyros <93044877+spyraklas@users.noreply.github.com>
Co-authored-by: Matt Varblow <mvarblow@users.noreply.github.com>
Co-authored-by: Banzai316 <elaurentin@users.noreply.github.com>
Co-authored-by: minhtaile2712 <minhtaile2712@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Make all the IContentDefinitionManager method async to prevent possible thread starvation
3 participants