{"action":"created","issue":{"url":"https://api.github.com/repos/Xorlev/gatekeeper/issues/20","labels_url":"https://api.github.com/repos/Xorlev/gatekeeper/issues/20/labels{/name}","comments_url":"https://api.github.com/repos/Xorlev/gatekeeper/issues/20/comments","events_url":"https://api.github.com/repos/Xorlev/gatekeeper/issues/20/events","html_url":"https://github.com/Xorlev/gatekeeper/issues/20","id":82405812,"number":20,"title":"Gatekeeper fails to update config with cast exception","user":{"login":"CoreyBehrends","id":2529427,"avatar_url":"https://avatars.githubusercontent.com/u/2529427?v=3","gravatar_id":"","url":"https://api.github.com/users/CoreyBehrends","html_url":"https://github.com/CoreyBehrends","followers_url":"https://api.github.com/users/CoreyBehrends/followers","following_url":"https://api.github.com/users/CoreyBehrends/following{/other_user}","gists_url":"https://api.github.com/users/CoreyBehrends/gists{/gist_id}","starred_url":"https://api.github.com/users/CoreyBehrends/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CoreyBehrends/subscriptions","organizations_url":"https://api.github.com/users/CoreyBehrends/orgs","repos_url":"https://api.github.com/users/CoreyBehrends/repos","events_url":"https://api.github.com/users/CoreyBehrends/events{/privacy}","received_events_url":"https://api.github.com/users/CoreyBehrends/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-05-29T12:22:26Z","updated_at":"2015-05-30T01:18:39Z","closed_at":null,"body":"First off, great project!  Very clever.\r\n\r\nMy only issue is that it appears to blow up when a config updates on Zookeeper.  Below is the stack trace.  Any insight would be greatly appreciated.  I'm more than happy to help in any way I can.\r\n\r\n\r\n\r\njava.lang.ClassCastException: Cannot cast java.util.LinkedHashMap to java.lang.Void\r\n        at java.lang.Class.cast(Class.java:3369) ~[na:1.8.0_40]\r\n        at org.apache.curator.x.discovery.details.JsonInstanceSerializer.deserialize(JsonInstanceSerializer.java:51) ~[gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.x.discovery.details.ServiceCacheImpl.addInstance(ServiceCacheImpl.java:180) ~[gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.x.discovery.details.ServiceCacheImpl.childEvent(ServiceCacheImpl.java:142) ~[gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.framework.recipes.cache.PathChildrenCache$5.apply(PathChildrenCache.java:516) [gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.framework.recipes.cache.PathChildrenCache$5.apply(PathChildrenCache.java:510) [gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.framework.listen.ListenerContainer$1.run(ListenerContainer.java:92) [gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:299) [gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.framework.listen.ListenerContainer.forEach(ListenerContainer.java:84) [gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.framework.recipes.cache.PathChildrenCache.callListeners(PathChildrenCache.java:508) [gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.framework.recipes.cache.EventOperation.invoke(EventOperation.java:35) [gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at org.apache.curator.framework.recipes.cache.PathChildrenCache$9.run(PathChildrenCache.java:759) [gatekeeper-agent-1.1.0-SNAPSHOT.jar:na]\r\n        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40]\r\n        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40]\r\n        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40]\r\n        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40]\r\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40]\r\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40]\r\n        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40]\r\n"},"comment":{"url":"https://api.github.com/repos/Xorlev/gatekeeper/issues/comments/106969880","html_url":"https://github.com/Xorlev/gatekeeper/issues/20#issuecomment-106969880","issue_url":"https://api.github.com/repos/Xorlev/gatekeeper/issues/20","id":106969880,"user":{"login":"CoreyBehrends","id":2529427,"avatar_url":"https://avatars.githubusercontent.com/u/2529427?v=3","gravatar_id":"","url":"https://api.github.com/users/CoreyBehrends","html_url":"https://github.com/CoreyBehrends","followers_url":"https://api.github.com/users/CoreyBehrends/followers","following_url":"https://api.github.com/users/CoreyBehrends/following{/other_user}","gists_url":"https://api.github.com/users/CoreyBehrends/gists{/gist_id}","starred_url":"https://api.github.com/users/CoreyBehrends/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CoreyBehrends/subscriptions","organizations_url":"https://api.github.com/users/CoreyBehrends/orgs","repos_url":"https://api.github.com/users/CoreyBehrends/repos","events_url":"https://api.github.com/users/CoreyBehrends/events{/privacy}","received_events_url":"https://api.github.com/users/CoreyBehrends/received_events","type":"User","site_admin":false},"created_at":"2015-05-30T01:18:39Z","updated_at":"2015-05-30T01:18:39Z","body":"You're exactly correct.  The deserialization of the stream from Zk was\nfailing due to \"Void\" not being valid when the serializer returned a List.\n\nI\"m sorry I misread the release notes.  I'll cover my changes with tests as\nbest I can and submit a PR this weekend.\n\n\n\nOn Fri, May 29, 2015 at 8:01 PM, Michael Rose <notifications@github.com>\nwrote:\n\n> Gatekeeper currently does not have 90% test coverage. The release notes\n> were admitting omission. Given that this is starting to get used outside\n> our environment I'll commit some extra tests this weekend and get public\n> coverage setup.\n>\n> Feel free to PR your changes and I'll merge them in after some testing.\n>\n> I imagine the issue was that the plugin actually uses instance metadata\n> and not void like Gatekeeper assumes.\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/Xorlev/gatekeeper/issues/20#issuecomment-106968980>.\n>\n\n\n\n-- \nCorey Behrends\nPro Athlete, Inc.\n10800 North Pomona Ave\nKansas City, MO 64153\nDirect:  816-659-8619\n816-587-6050\nwww.proathleteinc.com\n"}}