[
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: [email protected]
For additional commands, e-mail: [email protected]