{"action":"created","issue":{"url":"https://api.github.com/repos/Graylog2/graylog2-server/issues/948","labels_url":"https://api.github.com/repos/Graylog2/graylog2-server/issues/948/labels{/name}","comments_url":"https://api.github.com/repos/Graylog2/graylog2-server/issues/948/comments","events_url":"https://api.github.com/repos/Graylog2/graylog2-server/issues/948/events","html_url":"https://github.com/Graylog2/graylog2-server/pull/948","id":56677193,"number":948,"title":"Prevent duplicate loading of plugins in PluginLoader","user":{"login":"joschi","id":43951,"avatar_url":"https://avatars.githubusercontent.com/u/43951?v=3","gravatar_id":"","url":"https://api.github.com/users/joschi","html_url":"https://github.com/joschi","followers_url":"https://api.github.com/users/joschi/followers","following_url":"https://api.github.com/users/joschi/following{/other_user}","gists_url":"https://api.github.com/users/joschi/gists{/gist_id}","starred_url":"https://api.github.com/users/joschi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joschi/subscriptions","organizations_url":"https://api.github.com/users/joschi/orgs","repos_url":"https://api.github.com/users/joschi/repos","events_url":"https://api.github.com/users/joschi/events{/privacy}","received_events_url":"https://api.github.com/users/joschi/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-02-05T14:31:48Z","updated_at":"2015-02-10T10:48:09Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Graylog2/graylog2-server/pulls/948","html_url":"https://github.com/Graylog2/graylog2-server/pull/948","diff_url":"https://github.com/Graylog2/graylog2-server/pull/948.diff","patch_url":"https://github.com/Graylog2/graylog2-server/pull/948.patch"},"body":"When plugins were available multiple times on the class path or in the plugin directory of Graylog, the PluginLoader used to load identical plugins multiple times. By using a sorted set and a specialized Comparator<Plugin> in PluginLoader we prevent that behaviour."},"comment":{"url":"https://api.github.com/repos/Graylog2/graylog2-server/issues/comments/73679844","html_url":"https://github.com/Graylog2/graylog2-server/pull/948#issuecomment-73679844","issue_url":"https://api.github.com/repos/Graylog2/graylog2-server/issues/948","id":73679844,"user":{"login":"kroepke","id":52014,"avatar_url":"https://avatars.githubusercontent.com/u/52014?v=3","gravatar_id":"","url":"https://api.github.com/users/kroepke","html_url":"https://github.com/kroepke","followers_url":"https://api.github.com/users/kroepke/followers","following_url":"https://api.github.com/users/kroepke/following{/other_user}","gists_url":"https://api.github.com/users/kroepke/gists{/gist_id}","starred_url":"https://api.github.com/users/kroepke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kroepke/subscriptions","organizations_url":"https://api.github.com/users/kroepke/orgs","repos_url":"https://api.github.com/users/kroepke/repos","events_url":"https://api.github.com/users/kroepke/events{/privacy}","received_events_url":"https://api.github.com/users/kroepke/received_events","type":"User","site_admin":false},"created_at":"2015-02-10T10:48:09Z","updated_at":"2015-02-10T10:48:09Z","body":"I think that a plugin's name is only used for display purposes, right?\r\n\r\nIf that's true, then I think the name itself should not be used for comparisons, instead we should define what the unique id should look like.\r\nI would say we should advise people to use a package or class name, like the Riemann output plugin does: https://github.com/Graylog2/graylog2-plugin-output-riemann/blob/master/src/main/java/org/graylog2/outputs/riemann/RiemannOutputMetadata.java#L14\r\n"}}