cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benjamin Shen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-13966) UDAs that instantiate UDTs break after restart
Date Wed, 18 Oct 2017 18:41:00 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-13966?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Benjamin Shen updated CASSANDRA-13966:
--------------------------------------
    Environment: Successfully reproducible on a single-node Mac OS X Yosemite 10.10.5 cluster
and a 6-node 2-DC CentOS 6.9 cluster.  (was: Successfully reproducible on a single-node Mac
OS X Yosemite 10.10.5 cluster and a 6-node CentOS 6.9 cluster.)

> UDAs that instantiate UDTs break after restart
> ----------------------------------------------
>
>                 Key: CASSANDRA-13966
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13966
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>         Environment: Successfully reproducible on a single-node Mac OS X Yosemite 10.10.5
cluster and a 6-node 2-DC CentOS 6.9 cluster.
>            Reporter: Benjamin Shen
>             Fix For: 3.11.x
>
>
> When testing performance optimizations for for UDAs, I noticed that, when instantiated
using udfContext, newly created UDTs would cause a UDA to break, but ONLY after restart. This
is pretty concern for us to deploy UDAs in a production setting, as it feels like a consistency
error.
> When run without restarting Cassandra, this CQL script produces no errors and the expected
result:
> {code}-- Create and USE your own keyspace
> CREATE TYPE testing_type (
>     a int
> );
> CREATE OR REPLACE FUNCTION
> testing_state (
>     state int
> )
> CALLED ON NULL INPUT RETURNS 
> int
> LANGUAGE java AS
> '
> return state+1;
> ';
> CREATE OR REPLACE FUNCTION
> testing_final(state int)
> CALLED ON NULL INPUT RETURNS int LANGUAGE java AS
> '
> udfContext.newUDTValue("testing_type");
> return state;';
> CREATE OR REPLACE AGGREGATE testing_uda()
> SFUNC testing_state
> STYPE int
> FINALFUNC testing_final
> INITCOND 0;
> CREATE TABLE IF NOT EXISTS testing_table (
>     "a" int,
>     PRIMARY KEY ("a")
> ) WITH gc_grace_seconds=0
>     AND COMPACTION={'class': 'TimeWindowCompactionStrategy', 'compaction_window_unit':
'DAYS', 'compaction_window_size': '1'};
> SELECT testing_uda() FROM testing_table;{code}
> However, if you then restart Cassandra on the local node and rerun the last line again:
> {code}
> -- Restart Cassandra after running previous script
> cqlsh:my_keyspace> SELECT testing_uda() FROM testing_table;
> Traceback (most recent call last):
>   File "/Users/bshen/cassandra-trunk/bin/cqlsh.py", line 1044, in perform_simple_statement
>     result = future.result()
>   File "/Users/bshen/cassandra-trunk/bin/../lib/cassandra-driver-internal-only-3.10.zip/cassandra-driver-3.10/cassandra/cluster.py",
line 3826, in result
>     raise self._final_exception
> FunctionFailure: Error from server: code=1400 [User Defined Function failure] message="execution
of 'phoneid.testing_final[int]' failed: java.lang.NullPointerException"
> {code}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message