{"action":"opened","issue":{"url":"https://api.github.com/repos/dotnet/orleans/issues/693","labels_url":"https://api.github.com/repos/dotnet/orleans/issues/693/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/orleans/issues/693/comments","events_url":"https://api.github.com/repos/dotnet/orleans/issues/693/events","html_url":"https://github.com/dotnet/orleans/issues/693","id":100579919,"number":693,"title":"Timers asyncCallback invocations and reentrant behaviour","user":{"login":"jenyayel","id":1775602,"avatar_url":"https://avatars.githubusercontent.com/u/1775602?v=3","gravatar_id":"","url":"https://api.github.com/users/jenyayel","html_url":"https://github.com/jenyayel","followers_url":"https://api.github.com/users/jenyayel/followers","following_url":"https://api.github.com/users/jenyayel/following{/other_user}","gists_url":"https://api.github.com/users/jenyayel/gists{/gist_id}","starred_url":"https://api.github.com/users/jenyayel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenyayel/subscriptions","organizations_url":"https://api.github.com/users/jenyayel/orgs","repos_url":"https://api.github.com/users/jenyayel/repos","events_url":"https://api.github.com/users/jenyayel/events{/privacy}","received_events_url":"https://api.github.com/users/jenyayel/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-08-12T16:14:30Z","updated_at":"2015-08-12T16:14:30Z","closed_at":null,"body":"In the documentation of [Timers and Reminders](http://dotnet.github.io/orleans/Advanced-Concepts/Timers-and-Reminders), there is a sentence regarding Timers:\r\n>Note however, asyncCallback invocations are not delivered as messages and are thus not subject to message interleaving semantics. This means that invocations of asyncCallback should be considered to behave as if running on a reentrant grain with respect to other messages to that grain.\r\n\r\nI'm on another hand, don't want the behavior of reentrant grain. In my case the timer updates the state, so if the message coming from outside to update the state as well, then the raise condition can occur. I'm totally OK that the messages will wait until timer finishes its operation.\r\n\r\nOne idea I had is that in asyncCallback to send a message to grain itself, but is seems a little bit weird. \r\n"}}