You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2017/10/21 16:11:00 UTC

[jira] [Commented] (ASTERIXDB-2124) Feed fails to start when filter and index both exist on one field

    [ https://issues.apache.org/jira/browse/ASTERIXDB-2124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16214001#comment-16214001 ] 

ASF subversion and git services commented on ASTERIXDB-2124:
------------------------------------------------------------

Commit 7e76a0797388d5c8f92a96c7fa6b4cf30c0886f0 in asterixdb's branch refs/heads/master from [~idleft]
[ https://git-wip-us.apache.org/repos/asf?p=asterixdb.git;h=7e76a07 ]

[ASTERIXDB-1983] Feed pipeline refactoring for SQL++

- user model changes: no
- storage format changes: no
- interface changes: no

Current implementation of feed uses handcraft AQL queries for creating
feed pipeline. This causes a lot of issues and does not support SQL++
very well. Also, there is an overhead for parsing the query everytime.
In this patch, it's replaced with compiled statement in SQL++ which
provides support for attaching UDF to feed as well.

Details:
1. Remove SubscribeFeedStatement.
2. Remove SubscribeFeed related query compilation code, and reuse the
upsert dataflow.
3. Added SQL++ User Defined Function support for feed, including adding
multiple functions to one feed.
4. Related test cases added.
5. Change the default behavior of feed to be upsert instead of upsert.
'insert-feed' option is provided for experiment uses.
6. This patch also fixes several feed related bugs: [ASTERIXDB-2085]
[ASTERIXDB-2124].

Change-Id: I0ae5a837613780a4d2c90c98139fdc6d5e040cc9
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2059
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: abdullah alamoudi <ba...@gmail.com>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>


> Feed fails to start when filter and index both exist on one field
> -----------------------------------------------------------------
>
>                 Key: ASTERIXDB-2124
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2124
>             Project: Apache AsterixDB
>          Issue Type: Bug
>            Reporter: Steven Jacobs
>            Assignee: Xikui Wang
>
> The following gives an internal error, but works successfully when either the index or the filter are removed from the DDLs:
> drop dataverse channels if exists;
> create dataverse channels;
> use dataverse channels;
> create type UserLocation as closed {
> 	recordId: integer,
> 	location: circle,
> 	userName: string,
> 	timeStamp: datetime
> };
> create dataset UserLocations(UserLocation)
> primary key recordId with filter on timeStamp;
> create index time2 on UserLocations(timeStamp);
> create feed LocationFeed using socket_adapter
> (
>     ("sockets"="127.0.0.1:10009"),
>     ("address-type"="IP"),
>     ("type-name"="UserLocation"),
>     ("upsert-feed"="true"),
>     ("format"="adm")
> );
> connect feed LocationFeed to dataset UserLocations;
> start feed LocationFeed;
> StackTrace:
> SEVERE: java.lang.NullPointerException
> org.apache.hyracks.api.exceptions.HyracksDataException: java.lang.NullPointerException
> 	at org.apache.hyracks.api.exceptions.HyracksDataException.create(HyracksDataException.java:47)
> 	at org.apache.asterix.app.active.FeedEventsListener.doStart(FeedEventsListener.java:110)
> 	at org.apache.asterix.app.active.ActiveEntityEventsListener.start(ActiveEntityEventsListener.java:374)
> 	at org.apache.asterix.app.translator.QueryTranslator.handleStartFeedStatement(QueryTranslator.java:2120)
> 	at org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:367)
> 	at org.apache.asterix.api.http.server.RestApiServlet.doHandle(RestApiServlet.java:209)
> 	at org.apache.asterix.api.http.server.RestApiServlet.getOrPost(RestApiServlet.java:177)
> 	at org.apache.asterix.api.http.server.RestApiServlet.get(RestApiServlet.java:161)
> 	at org.apache.hyracks.http.server.AbstractServlet.handle(AbstractServlet.java:86)
> 	at org.apache.hyracks.http.server.HttpRequestHandler.handle(HttpRequestHandler.java:70)
> 	at org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:55)
> 	at org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:36)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.NullPointerException
> 	at org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression.hashCode(VariableReferenceExpression.java:86)
> 	at java.util.HashMap.hash(HashMap.java:338)
> 	at java.util.HashMap.get(HashMap.java:556)
> 	at org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonExpressionsRule$CommonExpressionSubstitutionVisitor.transform(ExtractCommonExpressionsRule.java:241)
> 	at org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator.acceptExpressionTransform(IndexInsertDeleteUpsertOperator.java:106)
> 	at org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonExpressionsRule.removeCommonExpressions(ExtractCommonExpressionsRule.java:176)
> 	at org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonExpressionsRule.removeCommonExpressions(ExtractCommonExpressionsRule.java:144)
> 	at org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonExpressionsRule.removeCommonExpressions(ExtractCommonExpressionsRule.java:144)
> 	at org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonExpressionsRule.removeCommonExpressions(ExtractCommonExpressionsRule.java:144)
> 	at org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonExpressionsRule.removeCommonExpressions(ExtractCommonExpressionsRule.java:144)
> 	at org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonExpressionsRule.rewritePre(ExtractCommonExpressionsRule.java:117)
> 	at org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:91)
> 	at org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController.rewriteWithRuleCollection(SequentialFixpointRuleController.java:53)
> 	at org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runOptimizationSets(HeuristicOptimizer.java:102)
> 	at org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.optimize(HeuristicOptimizer.java:82)
> 	at org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$1$1.optimize(HeuristicCompilerFactoryBuilder.java:90)
> 	at org.apache.asterix.api.common.APIFramework.compileQuery(APIFramework.java:267)
> 	at org.apache.asterix.app.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:1869)
> 	at org.apache.asterix.utils.FeedOperations.getConnectionJob(FeedOperations.java:180)
> 	at org.apache.asterix.utils.FeedOperations.buildStartFeedJob(FeedOperations.java:377)
> 	at org.apache.asterix.app.active.FeedEventsListener.doStart(FeedEventsListener.java:88)
> 	... 14 more



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)