"value cannot be parsed to boolean" -- Is there some to get ES to say which property this is?

It would be really helpful if when properties fail to parse the key and actual value are added the exception/log. Is there a log level that might add this info? (Although it should be shown at any log level.)

[2016-06-21 14:16:50,587][ERROR][bootstrap ] [s-elasticsearch-master-1] Exception
java.lang.IllegalArgumentException: value cannot be parsed to boolean [ true/1/on/yes OR false/0/off/no ]
at org.elasticsearch.common.Booleans.parseBooleanExact(Booleans.java:97)
at org.elasticsearch.cluster.node.DiscoveryNode.dataNode(DiscoveryNode.java:256)
at org.elasticsearch.cluster.node.DiscoveryNodes$Builder.build(DiscoveryNodes.java:659)
at org.elasticsearch.cluster.ClusterState$Builder.nodes(ClusterState.java:571)
at org.elasticsearch.cluster.service.InternalClusterService.doStart(InternalClusterService.java:205)
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:68)
at org.elasticsearch.node.Node.start(Node.java:279)
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:206)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:272)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)

Besides, isn't valid yaml booleans this?


I am creating the yaml from ansible. When ansible renders the elasticsearch.yml it turn python boolean into True,False. If I use |to_yaml it still uses True,False because those are valid yaml booleans.

Short answer is that no, it appears the parser cannot be configured to display the value that failed to parse correctly: https://github.com/elastic/elasticsearch/blob/v2.3.3/core/src/main/java/org/elasticsearch/common/Booleans.java#L86-L97

Unfortunately, this is kind of hit-or-miss in the codebase right now. Newer parsing code generally makes an attempt to use formats like "Cannot parse value [foo], expected ["yes", "no"], got ["bar"]". But a lot of places, especially older code, doesn't follow this convention.

Regarding the set of yaml, I agree the parser seems incomplete. I've opened an issue: https://github.com/elastic/elasticsearch/issues/19006

No, only if we support the optional language-independent type Boolean which we do not.

Ok, fair enough. The only real downside is that ansible variables must be defined:

node.master: 'true'

instead of

node.master: true