{"action":"created","issue":{"url":"https://api.github.com/repos/mesos/storm/issues/84","labels_url":"https://api.github.com/repos/mesos/storm/issues/84/labels{/name}","comments_url":"https://api.github.com/repos/mesos/storm/issues/84/comments","events_url":"https://api.github.com/repos/mesos/storm/issues/84/events","html_url":"https://github.com/mesos/storm/pull/84","id":121883423,"number":84,"title":"Shade all possible dependencies except mesos. ","user":{"login":"dsKarthick","id":1086011,"avatar_url":"https://avatars.githubusercontent.com/u/1086011?v=3","gravatar_id":"","url":"https://api.github.com/users/dsKarthick","html_url":"https://github.com/dsKarthick","followers_url":"https://api.github.com/users/dsKarthick/followers","following_url":"https://api.github.com/users/dsKarthick/following{/other_user}","gists_url":"https://api.github.com/users/dsKarthick/gists{/gist_id}","starred_url":"https://api.github.com/users/dsKarthick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dsKarthick/subscriptions","organizations_url":"https://api.github.com/users/dsKarthick/orgs","repos_url":"https://api.github.com/users/dsKarthick/repos","events_url":"https://api.github.com/users/dsKarthick/events{/privacy}","received_events_url":"https://api.github.com/users/dsKarthick/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2015-12-12T22:01:51Z","updated_at":"2015-12-18T19:31:14Z","closed_at":"2015-12-15T00:04:20Z","pull_request":{"url":"https://api.github.com/repos/mesos/storm/pulls/84","html_url":"https://github.com/mesos/storm/pull/84","diff_url":"https://github.com/mesos/storm/pull/84.diff","patch_url":"https://github.com/mesos/storm/pull/84.patch"},"body":"The dependencies in the mesos/storm could potentially conflict with those in the topologies. For instance, mesos/storm codebase depends on guava-18. If the topology submitted by the users of the mesos/storm cluster depend on a version of guava that is not compatible with guava-18, it would result in a conflict. So its good practice to shade all the dependencies of mesos/storm.\r\n \r\nWe aren't able to shade org.apache.mesos because it is loaded directly by the Mesos\r\n\"drivers\", that run within the MesosNimbus and MesosSupervisor processes.\r\n\r\n@erikdw @JessicaLHartog @brndnmtthws @tnachen @JessicaLHartog"},"comment":{"url":"https://api.github.com/repos/mesos/storm/issues/comments/165877723","html_url":"https://github.com/mesos/storm/pull/84#issuecomment-165877723","issue_url":"https://api.github.com/repos/mesos/storm/issues/84","id":165877723,"user":{"login":"erikdw","id":1111441,"avatar_url":"https://avatars.githubusercontent.com/u/1111441?v=3","gravatar_id":"","url":"https://api.github.com/users/erikdw","html_url":"https://github.com/erikdw","followers_url":"https://api.github.com/users/erikdw/followers","following_url":"https://api.github.com/users/erikdw/following{/other_user}","gists_url":"https://api.github.com/users/erikdw/gists{/gist_id}","starred_url":"https://api.github.com/users/erikdw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikdw/subscriptions","organizations_url":"https://api.github.com/users/erikdw/orgs","repos_url":"https://api.github.com/users/erikdw/repos","events_url":"https://api.github.com/users/erikdw/events{/privacy}","received_events_url":"https://api.github.com/users/erikdw/received_events","type":"User","site_admin":false},"created_at":"2015-12-18T19:31:14Z","updated_at":"2015-12-18T19:31:14Z","body":"Yes, just talked this over with @dsKarthick :  \r\n\r\nThe bits in the storm-mesos framework will have been massaged so that it expects to find the class at `org.apache.commons.shaded.io.IOUtils`, but the class doesn't exist at that fully-qualified classname in the bundled-up/shaded storm-mesos jar, nor does it exist in the storm-provided jars on the worker host (`commons-io-2.4.jar` has `org.apache.commons.io.IOUtils` not `org.apache.commons.shaded.io.IOUtils`).\r\n\r\nMore specifically, yes, the shaded storm-mesos jar *did not* have the `commons-io` classes in it at all, because `commons-io` was a *provided* dependency through the inclusion of the *provided* `storm-core` dependency, and so was assumed to exist in the target environment.  But now it didn't anymore after the shading, because of the mismatched fully-qualified classnames.  So @brndnmtthws 's change to make `commons-io` a *compile* scoped dependency has pulled those classes into the shaded jar and thus the class will be found at the expected fully-qualified classname.\r\n\r\nPhew.  So I think we're all good here now."}}