Basic License fails to install

I have a cluster running ES 2.3.0, the license and marvel agent plugins are installed on all nodes. Everything seems to be working properly with the temporarily generated license key.

When I attempt to install a basic license I get the following error:

{
"error" : {
"root_cause" : [ {
"type" : "transport_serialization_exception",
"reason" : "Failed to deserialize response of type [org.elasticsearch.license.plugin.action.put.PutLicenseResponse]"
} ],
"type" : "transport_serialization_exception",
"reason" : "Failed to deserialize response of type [org.elasticsearch.license.plugin.action.put.PutLicenseResponse]",
"caused_by" : {
"type" : "array_index_out_of_bounds_exception",
"reason" : "1"
}
},
"status" : 500
}

The ES log contains the following error:
[2016-04-04 16:26:24,057][WARN ][rest.suppressed ] /_license Params: {pretty=}
RemoteTransportException[[Failed to deserialize response of type [org.elasticsearch.license.plugin.action.put.PutLicenseResponse]]]; nested: TransportSerializationException[Failed to deserialize response of type [org.elasticsearch.license.plugin.action.put.PutLicenseResponse]]; nested: ArrayIndexOutOfBoundsException[1];
Caused by: TransportSerializationException[Failed to deserialize response of type [org.elasticsearch.license.plugin.action.put.PutLicenseResponse]]; nested: ArrayIndexOutOfBoundsException[1];
at org.elasticsearch.transport.netty.MessageChannelHandler.handleResponse(MessageChannelHandler.java:180)
at org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:138)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at org.elasticsearch.license.plugin.action.put.PutLicenseResponse.readFrom(PutLicenseResponse.java:74)
at org.elasticsearch.transport.netty.MessageChannelHandler.handleResponse(MessageChannelHandler.java:178)
... 23 more

Any assistance in getting this license applied would be appreciated.

Hey Ethan,

Can you share the exact command line you ran to add the license? This isn't an error I've seen before, so I'm wondering if there was a problem with the command to add the license.

Thanks,
Steve

curl -XPUT http://ip_address:9200/_license -d @license.json

Ethan,

Can you try redownloading your license or verifying that @license.json actually points to the file that you think?

I tried with your license internally on a fresh install of ES 2.3.0 and it worked without issue:

$ tar -xf elasticsearch-2.3.0.tar.gz
$ cd elasticsearch-2.3.0
$ bin/plugin install license
$ bin/plugin install marvel-agent
$ bin/elasticsearch

and from another shell:

$ curl -XPUT ip_address:9200/_license -d @../path/to/license.json

This worked without issue on my end. I also tested it with ES 2.3.1 as well as with a standalone master node and standalone data node clustered together. Can you also show the output of

$ curl -XGET ip_address:9200/_cat/plugins?v

I tried grabbing the license file a second time earlier today without any change.

Plugins:

root@frclogmaster01:~# curl -XGET 10.1.0.4:9200/_cat/plugins?v
name           component    version type url
frclogmaster02 graph        2.3.0   j
frclogmaster02 head         master  s    /_plugin/head/
frclogmaster02 license      2.3.0   j
frclogmaster02 marvel-agent 2.3.0   j
frclogdata03   graph        2.3.0   j
frclogdata03   head         master  s    /_plugin/head/
frclogdata03   license      2.3.0   j
frclogdata03   marvel-agent 2.3.0   j
frclogdata01   graph        2.3.0   j
frclogdata01   head         master  s    /_plugin/head/
frclogdata01   license      2.3.0   j
frclogdata01   marvel-agent 2.3.0   j
frclogdata05   graph        2.3.0   j
frclogdata05   head         master  s    /_plugin/head/
frclogdata05   license      2.3.0   j
frclogdata05   marvel-agent 2.3.0   j
frclogingest02 graph        2.3.0   j
frclogingest02 head         master  s    /_plugin/head/
frclogingest02 hq           1.0.0   s    /_plugin/hq/
frclogingest02 license      2.3.0   j
frclogingest02 marvel-agent 2.3.0   j
frclogingest03 graph        2.3.0   j
frclogingest03 head         master  s    /_plugin/head/
frclogingest03 hq           1.0.0   s    /_plugin/hq/
frclogingest03 license      2.3.0   j
frclogingest03 marvel-agent 2.3.0   j
frclogingest01 graph        2.3.0   j
frclogingest01 head         master  s    /_plugin/head/
frclogingest01 hq           1.0.0   s    /_plugin/hq/
frclogingest01 license      2.3.0   j
frclogingest01 marvel-agent 2.3.0   j
frclogmaster03 graph        2.3.0   j
frclogmaster03 head         master  s    /_plugin/head/
frclogmaster03 license      2.3.0   j
frclogmaster03 marvel-agent 2.3.0   j
frclogdata02   graph        2.3.0   j
frclogdata02   head         master  s    /_plugin/head/
frclogdata02   license      2.3.0   j
frclogdata02   marvel-agent 2.3.0   j
frclogdata04   graph        2.3.0   j
frclogdata04   head         master  s    /_plugin/head/
frclogdata04   license      2.3.0   j
frclogdata04   marvel-agent 2.3.0   j
frclogmaster01 head         master  s    /_plugin/head/
frclogmaster01 license      2.3.0   j
frclogmaster01 marvel-agent 2.3.0   j

Hi Ethan,

It looks like there may be an inconsistency with the Graph plugin being installed on some but not all nodes. Regardless, since the Basic license does not apply to the Graph plugin, I believe that uninstalling the Graph plugin from those nodes (and restarting each node so that it takes effect) will resolve the issue.

That worked, thank you!