Comments (5)
In 3.x, there was a global option set on by default to try to allow call-chain reentrancy. The implementation was not effective or correct. In 7.x+, you still have the option, but it's on a per-call-site basis. See the docs on call-chain-reentrancy here, with a demonstration of how to accomplish this: https://learn.microsoft.com/en-us/dotnet/orleans/grains/request-scheduling#call-chain-reentrancy
from orleans.
Using AsReference provide you a proxy class . The same use by external to access the grain.
So the rule of mono thread access occured.
You are in the grain and you try to access the same grain method passing by the outside => DEAD LOCK
It's like entering your house, closing the door, leaving from the windows and try the re-enter by the locked door.
Try tagging "GetName" with alwaysinterleaveattribute
This will allow recursive call.
from orleans.
So I guess the bug was in Orleans 3.x, which did not deadlock?
from orleans.
from orleans.
I understand the principle and I'm pretty sure the intentions were the same in Orleans 3.x. It just so happened that we had a few places in our Orleans 3.x implementation that used code similar to my example without any problem. We are currently migrating to Orleans 8.x and encountered the deadlock and were surprised by the difference in behavior.
from orleans.
Related Issues (20)
- Issues with streams during rolling deploy (Orleans.Streams.QueueCacheMissException) HOT 1
- In Orleans 8.1.0, after 90 seconds, the Silo and Gateway ports will change from the status LISTEN to CLOSED, which prevents further connections.
- Cannot serialize type inheriting from Dictionary HOT 3
- Pulling agents don't work properly with MemoryStreams on multiple silos
- Bug: Invalid code generated for interface with explicit implementations
- [Proposal] Let `AddSiloBuilderConfigurator` has an overload which accept an `Action` to configure cluster
- Serialization issues #2 - Orleans 8.0.0 HOT 1
- Serialization issues #3 - Orleans 8.0.0
- UnregisterReminder(string reminderName)
- Tracing: Recorded flag not propagated between activities HOT 6
- Graceful shutdown
- ObjectDisposedException at Orleans.Runtime.GrainTimer.ForwardToAsyncCallback HOT 3
- Add Roslyn PublicApiAnalyzers to all src projects
- PersistentStreamPullingAgent skips over the message under a certain condition
- Serializing polymorphic records with constructor parameters HOT 3
- Google Cloud Pub/Sub streaming support
- Could not find a copier for type <>z__ReadOnlyArray`1[IFoo]. HOT 3
- Orleans Silos freezing and crashing HOT 1
- Failing to migrate AdoNet grain reminders from Orleans 3.7.2 to Orleans 7
- Redis PubSub Streaming Support
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 orleans.