{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/orleans/issues/535","labels_url":"https://api.github.com/repos/dotnet/orleans/issues/535/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/orleans/issues/535/comments","events_url":"https://api.github.com/repos/dotnet/orleans/issues/535/events","html_url":"https://github.com/dotnet/orleans/pull/535","id":89317026,"number":535,"title":"NotImplementedReminderTable to disable reminders","user":{"login":"shayhatsor","id":12084632,"avatar_url":"https://avatars.githubusercontent.com/u/12084632?v=3","gravatar_id":"","url":"https://api.github.com/users/shayhatsor","html_url":"https://github.com/shayhatsor","followers_url":"https://api.github.com/users/shayhatsor/followers","following_url":"https://api.github.com/users/shayhatsor/following{/other_user}","gists_url":"https://api.github.com/users/shayhatsor/gists{/gist_id}","starred_url":"https://api.github.com/users/shayhatsor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shayhatsor/subscriptions","organizations_url":"https://api.github.com/users/shayhatsor/orgs","repos_url":"https://api.github.com/users/shayhatsor/repos","events_url":"https://api.github.com/users/shayhatsor/events{/privacy}","received_events_url":"https://api.github.com/users/shayhatsor/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/orleans/labels/cla-already-signed","name":"cla-already-signed","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-06-18T15:02:55Z","updated_at":"2015-06-19T06:34:26Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dotnet/orleans/pulls/535","html_url":"https://github.com/dotnet/orleans/pull/535","diff_url":"https://github.com/dotnet/orleans/pull/535.diff","patch_url":"https://github.com/dotnet/orleans/pull/535.patch"},"body":"When using ZooKeeper as a membership provider , the reminders provider is set to GrainBasedReminderTable (as a fallback). This seemed to work fine. But it doesn't.\r\nThe scenario:\r\n1) 5 silos are started as secondary and are active in the same deployment. (named Silo1-Silo5)\r\n2) all silos crash\r\n3) Silo1 is restarted\r\n4) Silo1 adds a suspected dead entry for Silo2-Silo5\r\n5) Silo1 tries to get the grain for the GrainBasedReminderTable.\r\n6) the hash result says that Silo3 knows where the GrainBasedReminderTable is.\r\n7) Silo1 suspicion isn't enough to change the ring. \r\n8) Silo1 can't start its reminder service and crashes. This happens continuously until enough silos are started and the membership table reflects reality.\r\n\r\nI've added a NotImplementedReminderTable reminder table implementation that just throws when reminders are used by grains. IMO this is much better than the fallback to GrainBasedReminderTable, which gives grains the illusion of persistent storage which in reality doesn't exist."},"comment":{"url":"https://api.github.com/repos/dotnet/orleans/issues/comments/113393676","html_url":"https://github.com/dotnet/orleans/pull/535#issuecomment-113393676","issue_url":"https://api.github.com/repos/dotnet/orleans/issues/535","id":113393676,"user":{"login":"shayhatsor","id":12084632,"avatar_url":"https://avatars.githubusercontent.com/u/12084632?v=3","gravatar_id":"","url":"https://api.github.com/users/shayhatsor","html_url":"https://github.com/shayhatsor","followers_url":"https://api.github.com/users/shayhatsor/followers","following_url":"https://api.github.com/users/shayhatsor/following{/other_user}","gists_url":"https://api.github.com/users/shayhatsor/gists{/gist_id}","starred_url":"https://api.github.com/users/shayhatsor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shayhatsor/subscriptions","organizations_url":"https://api.github.com/users/shayhatsor/orgs","repos_url":"https://api.github.com/users/shayhatsor/repos","events_url":"https://api.github.com/users/shayhatsor/events{/privacy}","received_events_url":"https://api.github.com/users/shayhatsor/received_events","type":"User","site_admin":false},"created_at":"2015-06-19T06:34:26Z","updated_at":"2015-06-19T06:34:26Z","body":"About ZK PR, I've went through it. I'll answer your questions by adding proper documentation to the ZooKeeperBasedMembershipTable class. and just a small question, wouldn't removing the log4net package just make nuget download it again and add to the packages file? ZooKeeperNetEx package references it."}}