cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-11064) Failed aggregate creation breaks server permanently
Date Mon, 25 Jan 2016 14:44:39 GMT

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

Sylvain Lebresne commented on CASSANDRA-11064:
----------------------------------------------

But we're talking of UDA here right? Custom types are not gonna anywhere anytime soon and
there is no plan that I'm aware of removing them (which doesn't mean we can change how they
are defined, so we do have some flexibility regarding AbstractType). This goes for their usability:
having to deal with blobs is not more difficult for UDA than for any other place in CQL.
 
Don't get me wrong, I'm not saying their support is the most important thing ever. But they
are part of CQL and are supported anywhere else so excluding them from UDA now would be inconsistent.
More importantly, it's not the problem here so let's focus on the true issue: that validation
of {{INITCONT}} is broken.

> Failed aggregate creation breaks server permanently
> ---------------------------------------------------
>
>                 Key: CASSANDRA-11064
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11064
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Olivier Michallat
>            Assignee: Robert Stupp
>
> While testing edge cases around aggregates, I tried the following to see if custom types
were supported:
> {code}
> ccm create v321 -v3.2.1 -n3
> ccm updateconf enable_user_defined_functions:true
> ccm start
> ccm node1 cqlsh
> CREATE FUNCTION id(i 'DynamicCompositeType(s => UTF8Type, i => Int32Type)')
> RETURNS NULL ON NULL INPUT
> RETURNS 'DynamicCompositeType(s => UTF8Type, i => Int32Type)'
> LANGUAGE java
> AS 'return i;';
> // function created successfully
> CREATE AGGREGATE ag()
> SFUNC id
> STYPE 'DynamicCompositeType(s => UTF8Type, i => Int32Type)'
> INITCOND 's@foo:i@32';
> ServerError: <ErrorMessage code=0000 [Server error] message="java.lang.RuntimeException:
java.util.concurrent.ExecutionException: org.apache.cassandra.exceptions.SyntaxException:
Failed parsing CQL term: [s@foo:i@32] reason: SyntaxException line 1:1 no viable alternative
at character '@'">{code}
> Despite the error, the aggregate appears in system tables:
> {code}
> select * from system_schema.aggregates;
>  keyspace_name | aggregate_name | ...
> ---------------+----------------+ ...
>           test |             ag | ...
> {code}
> But you can't drop it, and trying to drop its function produces the server error again:
> {code}
> DROP AGGREGATE ag;
> InvalidRequest: code=2200 [Invalid query] message="Cannot drop non existing aggregate
'test.ag'"
> DROP FUNCTION id;
> ServerError: <ErrorMessage code=0000 [Server error] message="java.lang.RuntimeException:
java.util.concurrent.ExecutionException: org.apache.cassandra.exceptions.SyntaxException:
Failed parsing CQL term: [s@foo:i@32] reason: SyntaxException line 1:1 no viable alternative
at character '@'">
> {code}
> What's worse, it's now impossible to restart the server:
> {code}
> ccm stop; ccm start
> org.apache.cassandra.exceptions.SyntaxException: Failed parsing CQL term: [s@foo:i@32]
reason: SyntaxException line 1:1 no viable alternative at character '@'
> 	at org.apache.cassandra.cql3.CQLFragmentParser.parseAny(CQLFragmentParser.java:48)
> 	at org.apache.cassandra.cql3.Terms.asBytes(Terms.java:51)
> 	at org.apache.cassandra.schema.SchemaKeyspace.createUDAFromRow(SchemaKeyspace.java:1225)
> 	at org.apache.cassandra.schema.SchemaKeyspace.fetchUDAs(SchemaKeyspace.java:1204)
> 	at org.apache.cassandra.schema.SchemaKeyspace.fetchFunctions(SchemaKeyspace.java:1129)
> 	at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:897)
> 	at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:872)
> 	at org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:860)
> 	at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:125)
> 	at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:115)
> 	at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:229)
> 	at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:551)
> 	at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:680)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message