{"action":"created","issue":{"url":"https://api.github.com/repos/Polymer/polymer/issues/3620","repository_url":"https://api.github.com/repos/Polymer/polymer","labels_url":"https://api.github.com/repos/Polymer/polymer/issues/3620/labels{/name}","comments_url":"https://api.github.com/repos/Polymer/polymer/issues/3620/comments","events_url":"https://api.github.com/repos/Polymer/polymer/issues/3620/events","html_url":"https://github.com/Polymer/polymer/issues/3620","id":151271061,"number":3620,"title":"Catch when interdependent observers cause infinite loop","user":{"login":"andybons","id":365204,"avatar_url":"https://avatars.githubusercontent.com/u/365204?v=3","gravatar_id":"","url":"https://api.github.com/users/andybons","html_url":"https://github.com/andybons","followers_url":"https://api.github.com/users/andybons/followers","following_url":"https://api.github.com/users/andybons/following{/other_user}","gists_url":"https://api.github.com/users/andybons/gists{/gist_id}","starred_url":"https://api.github.com/users/andybons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andybons/subscriptions","organizations_url":"https://api.github.com/users/andybons/orgs","repos_url":"https://api.github.com/users/andybons/repos","events_url":"https://api.github.com/users/andybons/events{/privacy}","received_events_url":"https://api.github.com/users/andybons/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-04-27T00:36:55Z","updated_at":"2016-04-28T11:40:16Z","closed_at":null,"body":"Say a user inadvertently creates the following scenario:\r\n\r\n```js\r\nproperties: {\r\n  chicken: Object,\r\n  egg: Object,\r\n},\r\n\r\nobservers: [\r\n  '_chickenHatched(egg)',\r\n  '_eggLaid(chicken)',\r\n],\r\n\r\n_chickenHatched: function(egg) {\r\n  this.chicken = this._crackOpen(egg);\r\n},\r\n\r\n_eggLaid: function(chicken) {\r\n  this.egg = this._getEgg(chicken);\r\n},\r\n\r\n```\r\nThen the moment either property becomes defined, infinite looping ensues...\r\n![tumblr_mutbjnogjc1qz6z2wo1_500](https://cloud.githubusercontent.com/assets/365204/14838340/40a504a2-0bd5-11e6-9712-8640424be997.gif)\r\n\r\nIt would be nice to have an upper limit set on the number of dependent observers fired so that these bugs can be more easily tracked down.\r\n\r\n(Per a discussion with @sorvell)"},"comment":{"url":"https://api.github.com/repos/Polymer/polymer/issues/comments/215398211","html_url":"https://github.com/Polymer/polymer/issues/3620#issuecomment-215398211","issue_url":"https://api.github.com/repos/Polymer/polymer/issues/3620","id":215398211,"user":{"login":"d1manson","id":4244876,"avatar_url":"https://avatars.githubusercontent.com/u/4244876?v=3","gravatar_id":"","url":"https://api.github.com/users/d1manson","html_url":"https://github.com/d1manson","followers_url":"https://api.github.com/users/d1manson/followers","following_url":"https://api.github.com/users/d1manson/following{/other_user}","gists_url":"https://api.github.com/users/d1manson/gists{/gist_id}","starred_url":"https://api.github.com/users/d1manson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d1manson/subscriptions","organizations_url":"https://api.github.com/users/d1manson/orgs","repos_url":"https://api.github.com/users/d1manson/repos","events_url":"https://api.github.com/users/d1manson/events{/privacy}","received_events_url":"https://api.github.com/users/d1manson/received_events","type":"User","site_admin":false},"created_at":"2016-04-28T11:40:16Z","updated_at":"2016-04-28T11:40:16Z","body":"You might also encounter this via a `debounce`, especially in the zero-delay case."}}