{"action":"created","issue":{"url":"https://api.github.com/repos/elastic/elasticsearch/issues/13273","repository_url":"https://api.github.com/repos/elastic/elasticsearch","labels_url":"https://api.github.com/repos/elastic/elasticsearch/issues/13273/labels{/name}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/issues/13273/comments","events_url":"https://api.github.com/repos/elastic/elasticsearch/issues/13273/events","html_url":"https://github.com/elastic/elasticsearch/issues/13273","id":104515099,"number":13273,"title":"How will Java clients survive the 1.x -> 2.x upgrade?","user":{"login":"udoprog","id":111092,"avatar_url":"https://avatars.githubusercontent.com/u/111092?v=3","gravatar_id":"","url":"https://api.github.com/users/udoprog","html_url":"https://github.com/udoprog","followers_url":"https://api.github.com/users/udoprog/followers","following_url":"https://api.github.com/users/udoprog/following{/other_user}","gists_url":"https://api.github.com/users/udoprog/gists{/gist_id}","starred_url":"https://api.github.com/users/udoprog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/udoprog/subscriptions","organizations_url":"https://api.github.com/users/udoprog/orgs","repos_url":"https://api.github.com/users/udoprog/repos","events_url":"https://api.github.com/users/udoprog/events{/privacy}","received_events_url":"https://api.github.com/users/udoprog/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/:Java%20API","name":":Java API","color":"009800"},{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/discuss","name":"discuss","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":11,"created_at":"2015-09-02T16:00:12Z","updated_at":"2016-06-22T21:21:29Z","closed_at":null,"body":"I'm raising this out of concern for the up and coming 2.0 release.\r\n\r\nCurrently, java clients communicating with an elasticsearch cluster use the following dependency.\r\n\r\n```xml\r\n<dependency>\r\n  <groupId>org.elasticsearch</groupId>\r\n  <artifactId>elasticsearch</artifactId>\r\n  <version>1.x.y or 2.x.y</version>\r\n</dependency>\r\n```\r\n\r\nThis is a _very large_ package, essentially containing all the code necessary to operate an elasticsearch node. What clients typically are interested in is the TransportClient code.\r\n\r\nA major version bump is allowed to carry incompatible changes, and I will be encountering several scenarios where I will have to write java clients that communicate with both `1.x` and `2.x` clusters.\r\n\r\nTraditionally you have been very good at maintaining backwards compatibility, I have 1.4 clients communicating with 1.7 clusters. So Minor versions have not been that much of an issue as long as you control the feature set you use for each cluster version.\r\n\r\nThe canonical way of solving this would be to extract the public API into a separate artifact, and under a different package name (e.g. `org.elasticsearch2`) to allow the two different client versions to co-exist both in maven, and in the classpath.\r\n\r\nConsidering the **important** comment on [your java-api client documentation](https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/client.html) this seems to ramp up towards becoming a major hassle for me.\r\n\r\nWill there be some way of combating this?"},"comment":{"url":"https://api.github.com/repos/elastic/elasticsearch/issues/comments/227880550","html_url":"https://github.com/elastic/elasticsearch/issues/13273#issuecomment-227880550","issue_url":"https://api.github.com/repos/elastic/elasticsearch/issues/13273","id":227880550,"user":{"login":"brusic","id":354105,"avatar_url":"https://avatars.githubusercontent.com/u/354105?v=3","gravatar_id":"","url":"https://api.github.com/users/brusic","html_url":"https://github.com/brusic","followers_url":"https://api.github.com/users/brusic/followers","following_url":"https://api.github.com/users/brusic/following{/other_user}","gists_url":"https://api.github.com/users/brusic/gists{/gist_id}","starred_url":"https://api.github.com/users/brusic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brusic/subscriptions","organizations_url":"https://api.github.com/users/brusic/orgs","repos_url":"https://api.github.com/users/brusic/repos","events_url":"https://api.github.com/users/brusic/events{/privacy}","received_events_url":"https://api.github.com/users/brusic/received_events","type":"User","site_admin":false},"created_at":"2016-06-22T21:21:28Z","updated_at":"2016-06-22T21:21:28Z","body":"@rtijoriwala You can follow the progress here: https://github.com/elastic/elasticsearch/pull/18735"}}
{"actor":{"display_login":"brusic"}}