Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NullPointerException in QueryRewriter.java #13

Closed
eeeebbbbrrrr opened this issue Aug 8, 2015 · 0 comments
Closed

NullPointerException in QueryRewriter.java #13

eeeebbbbrrrr opened this issue Aug 8, 2015 · 0 comments

Comments

@eeeebbbbrrrr
Copy link
Collaborator

An index option configuration that links multiple indexes:

alter index idxso_posts set (options='user_data:(owner_user_id=<so_users.idxso_users>id), comment_data:(id=<so_comments.idxso_comments>post_id)');

can cause an NPE in the Elasticsearch plugin when both named indexes are used in a single query, such as:

select count(*) from so_posts where zdb(so_posts) ==> 'user_data.display_name:j* and comment_data.user_display_name:q*';

The full stack is:

java.lang.RuntimeException: #options(user_data:(owner_user_id=<so_users.idxso_users>id), comment_data:(id=<so_comments.idxso_comments>post_id)) (((_xmin = 6510594 AND _cmin < 0 AND (_xmax = 0 OR (_xmax = 6510594 AND _cmax >= 0))) OR (_xmin_is_committed = true AND (_xmax = 0 OR (_xmax = 6510594 AND _cmax >= 0) OR (_xmax <> 6510594 AND _xmax_is_committed = false))))) AND (#child<data>((user_data.display_name:j* and comment_data.user_display_name:q*)))
    at com.tcdi.zombodb.postgres.PostgresTIDResponseAction.buildJsonQueryFromRequestContent(PostgresTIDResponseAction.java:136)
    at com.tcdi.zombodb.postgres.PostgresTIDResponseAction.handleRequest(PostgresTIDResponseAction.java:83)
    at org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:53)
    at org.elasticsearch.rest.RestController.executeHandler(RestController.java:225)
    at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:170)
    at org.elasticsearch.http.HttpServer.internalDispatchRequest(HttpServer.java:121)
    at org.elasticsearch.http.HttpServer$Dispatcher.dispatchRequest(HttpServer.java:83)
    at org.elasticsearch.http.netty.NettyHttpServerTransport.dispatchRequest(NettyHttpServerTransport.java:329)
    at org.elasticsearch.http.netty.HttpRequestHandler.messageReceived(HttpRequestHandler.java:63)
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.http.netty.pipelining.HttpPipeliningHandler.messageReceived(HttpPipeliningHandler.java:60)
    at org.elasticsearch.common.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.handler.codec.http.HttpContentEncoder.messageReceived(HttpContentEncoder.java:82)
    at org.elasticsearch.common.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.handler.codec.http.HttpChunkAggregator.messageReceived(HttpChunkAggregator.java:145)
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.handler.codec.http.HttpContentDecoder.messageReceived(HttpContentDecoder.java:108)
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296)
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:459)
    at org.elasticsearch.common.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:536)
    at org.elasticsearch.common.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:435)
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268)
    at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255)
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
    at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.elasticsearch.common.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.NullPointerException
    at com.tcdi.zombodb.query_parser.QueryRewriter.expand(QueryRewriter.java:1403)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:543)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:439)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:426)
    at com.tcdi.zombodb.query_parser.QueryRewriter.loadFielddata(QueryRewriter.java:1253)
    at com.tcdi.zombodb.query_parser.QueryRewriter.expand(QueryRewriter.java:1397)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:613)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build0(QueryRewriter.java:480)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:445)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:426)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:499)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:437)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:426)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:574)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:431)
    at com.tcdi.zombodb.query_parser.QueryRewriter.build(QueryRewriter.java:426)
    at com.tcdi.zombodb.query_parser.QueryRewriter.rewriteQuery(QueryRewriter.java:206)
    at com.tcdi.zombodb.postgres.PostgresTIDResponseAction.buildJsonQueryFromRequestContent(PostgresTIDResponseAction.java:127)
    ... 49 more
eeeebbbbrrrr added a commit that referenced this issue Aug 8, 2015
The underlying problem was that when an ASTNestedGroup was removed, its siblings were no longer accessible
due to ordinal renumbering.  So the fix is to temporarily store the collection of child nodes before doing
any optimization of nested groups.
eeeebbbbrrrr added a commit that referenced this issue Aug 8, 2015
eeeebbbbrrrr added a commit that referenced this issue Aug 9, 2015
The underlying problem was that when an ASTNestedGroup was removed, its siblings were no longer accessible
due to ordinal renumbering.  So the fix is to temporarily store the collection of child nodes before doing
any optimization of nested groups.
eeeebbbbrrrr added a commit that referenced this issue Nov 10, 2020
…armaeter (we default to 'constant_score') and also find_link_for_field() was bugged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant