Comments (3)
Timeouts aren't strange, they happen rarely and they happen in combination with other unrelated redis requests. I wanted to understand how to recover from those errors. If the default expiry is 30s and configurable, that perfectly fits our needs
from distributedlock.
@alexandrepepin-boxoffice the redis lock has a default expiry of 30s (with regular renewal so long as the lock is held). See these docs.
So I would expect that if you lose connection to your Redis instance the lock would be held for no more than 30s.
You can shorten that time by fiddling with the options, but if you make it too short then you risk losing the lock spuriously due to lack on your app server (app server is too overloaded to renew the lease before it expires).
I'm also curious whether you think the timeouts themselves are strange: is this something that happens rarely and when it does other unrelated Redis requests also time out or is this something that happens every time and only when the library is trying to release?
from distributedlock.
I'm going to consider this resolved for the time being. It would be great if we had a way to ensure that the lock renewal system was not affected by thread starvation, but that seems difficult especially since StackExchange.Redis itself is async under the hood and might use the default thread pool even if we make efforts not too. So I think for now the guidance should be to set a longer expiry if you plan to exhaust the thread pool, or better yet don't exhaust the thread pool :-).
from distributedlock.
Related Issues (20)
- Too many UnobservedTaskException HOT 2
- IOException: directory already exists in Ubuntu
- Elaborate on ZooKeeper setup docs HOT 1
- Upgrade to NUnit 4 and leverage new features like Assert.ThatAsync and Assert.Multiple
- Use NUnit.Analyzers to prepare for migration to NUnit 4
- Add additional TFM so the dependency on System.Threading.AccessControl can be removed HOT 2
- Azure Semaphore implementation HOT 1
- Local development and CI using test containers HOT 5
- Dependency on Microsoft.Data.SqlClient 5.2.0 may be unnecessary HOT 3
- Postgres: Add support for transaction-scoped advisory locks with external DB connections HOT 9
- EventWaitHandle support for local namespace HOT 2
- Rare race condition with keepalive after upgrading to Npgsql 8.0.3
- Core Next Minor - normalize locking in DatabaseConnection.CreateCommand()
- Upgrade to Npgsql 8.0.3
- Take advantage of """ strings in various files
- RedisScript<T> whitespace regex doesn't need to consider single whitespace chars
- Single-node in-memory implementation HOT 2
- Sqlite implementation
- Postgres: allow ShouldPrepareCommands to be false to work with npgsql driver Multiplexing
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from distributedlock.