Comments (5)
Hello @william-keller,
The related improvement has been included in the 1.0.0 RC.01 release.
Please read the README.md and CHANGELOG.md files because this release has breaking changes.
You can find the 1.0.0 RC.01 NuGet packages here.
If you have any suggestions or comments please, do not hesitate to send them 😉
from idempotentapi.
Hi @ikyriak ... how are you doing?
We've finally solved this problem by adding this code in our startup.cs file:
ThreadPool.SetMinThreads(100, 100);
It was probaly a thread poll issue
Many Thanks
from idempotentapi.
Hi @ikyriak
We found a scenario when this error occurs more frequently
Try to run locally (2 or more) docker containers with the same application/controller, such as a scalable cloud enviroment
Then, try to send 2 post requests with the same idempotencykey many times
from idempotentapi.
Hello @william-keller
The standard IDistributedCache
interface doesn't support an atomic command to GetOrSet a cached value. For that reason, the current implementation cannon prevent multiple concurrent requests and guarantee that only one will be executed. So, they will be both executed in a scenario of two concurrent requests with the same idempotency key.
Additionally, there is the scenario of a Distributed Cache failure (e.g., timeout) when setting the controller action's result. In such a case, we would need a retry mechanism on the server instance (that has the result) and reject the subsequent requests (in the instances that don't have the result). So, we should use a local memory cache.
The good news is that we could use the FusionCache implementation, which supports both the GetOrSet
method and several fail-safe mechanisms. I have started writing the tests for these scenarios, and then I will try to use the FusionCache.
from idempotentapi.
Hello @william-keller,
That's very interesting.
I am happy that you solved it and informed us about your solution.
Have a nice day,
from idempotentapi.
Related Issues (20)
- Get 409 status code when retry HOT 5
- Failed to get correct hash value with same request body HOT 2
- Http Status code of the response is not returned correctly from the cache HOT 5
- IdempotentAPI.DistributedAccessLock.MadelsonDistributedLock not found in NuGet repository HOT 6
- Default name of idempotency header key HOT 2
- Make all code async
- What do you do with Content-Type caching? HOT 2
- Support MinimalAPI projects HOT 1
- Performance Issue when using Distributed Cache in MSSQL DB HOT 1
- Make idempotency optional HOT 9
- Potential idempotency issue HOT 4
- Request data hash always returns empty byte array HOT 2
- Specify the ExpireHour in Timestamp instead of int HOT 4
- Latest nuget breaks on minimal API having HttpResponse in its action HOT 5
- Possibility to configure controllers via IdempotencyOptions HOT 1
- FastEndpoints support? HOT 8
- For Minimal APIs, how to configure the idempotent options for a specific endpoint, not generally? (cache deadline, etc) HOT 2
- Feature: Configurable JSON serializers HOT 6
- 406 Not Accepted on cached response with Content-Type: application/json; charset=utf-8 HOT 5
- Framework 4.8 support HOT 5
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 idempotentapi.