-
Notifications
You must be signed in to change notification settings - Fork 934
Add monitor based sync only locker for ReadWrite cache #2944
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
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
May you also insert a documentation entry in the below file after the query cache factory setting?
nhibernate-core/doc/reference/modules/configuration.xml
Lines 600 to 612 in 92075ee
<row> | |
<entry> | |
<literal>cache.query_cache_factory</literal> | |
</entry> | |
<entry> | |
The class name of a custom <literal>IQueryCacheFactory</literal> implementation. | |
Defaults to the built-in <literal>StandardQueryCacheFactory</literal>. | |
<para> | |
<emphasis role="strong">eg.</emphasis> | |
<literal>classname.of.QueryCacheFactory, assembly</literal> | |
</para> | |
</entry> | |
</row> |
<row>
<entry>
<literal>cache.read_write_lock_factory</literal>
</entry>
<entry>
Specify the cache lock factory to use for read-write cache regions.
Defaults to the built-in <literal>async</literal> cache lock factory.
<para>
<emphasis role="strong">eg.</emphasis>
<literal>async</literal>, or <literal>sync</literal>, or <literal>classname.of.CacheLockFactory, assembly</literal>
</para>
<para>
<literal>async</literal> uses a single writer multiple readers locking mechanism supporting asynchronous operations.
</para>
<para>
<literal>sync</literal> uses a single access locking mechanism which will throw on asynchronous
operations but may have better performances than the <literal>async</literal> provider for applications using
the .Net Framework (4.8 and below).
</para>
</entry>
</row>
Co-authored-by: Frédéric Delaporte <12201973+fredericDelaporte@users.noreply.github.com>
Done |
fredericDelaporte
approved these changes
Nov 28, 2021
hazzik
reviewed
Jan 18, 2022
hazzik
reviewed
Jan 18, 2022
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #2862
Adds ability to use old
lock
based locking for sync only scenarios. Reason: As described here in full .NET Framework current locking code is 300 times slower.Throws
InvalidOperationException
when used in async code.Usage:
Or by code:
It's also possible to provide custom locker. See #2862 (comment)