Hi Yu-Wei,

Collections#emptySet returns an immutable Set, so it should be
mutations.add(mutation);
that's throwing the UnsupportedOperationException rather than anything
related to C*.

If you're going to add something to a set later, use the regular
constructor. Most likely HashSet:
new HashSet<>();

Best,
Angelo

On Wed, Sep 29, 2021 at 3:48 AM Yu-Wei Su <plenty...@scalar-labs.com> wrote:

> Hi,
>
> I am thinking of using the Cassandra trigger to delete or update data
> right after they are inserted.
>
> First, I tried deleting the data.
>
> This is my table.
>
> ```
> CREATE TABLE mykeyspace.mytable (
>     mycolumn text PRIMARY KEY
> )
> ```
>
> and this is my trigger
>
> ```
> public class MyTrigger implements ITrigger {
>   public Collection<Mutation> augment(Partition partition) {
>     Collection<Mutation> mutations = Collections.emptySet();
>
>     PartitionUpdate.SimpleBuilder partitionUpdateBuilder = Mutation
>         .simpleBuilder(partition.metadata().ksName,
> partition.partitionKey())
>         .update(partition.metadata());
>
>     Row.SimpleBuilder rowBuilder =
> partitionUpdateBuilder.row(Clustering.EMPTY);
>
>     rowBuilder.delete();
>
>     Mutation mutation = partitionUpdateBuilder.buildAsMutation();
>
>     mutations.add(mutation);
>
>     return mutations;
>   }
> }
> ```
>
> then, I got this error message (/var/log/cassandra/system.log) at run-time.
>
>
> ```
> ERROR [Native-Transport-Requests-1] 2021-09-28 06:49:12,748
> ErrorMessage.java:384 - Unexpected exception during request
> java.lang.RuntimeException: Exception while executing trigger on table
> with ID: 27a4dfa0-2028-11ec-a91c-6d2c86545d91
>         at
> org.apache.cassandra.triggers.TriggerExecutor.executeInternal(TriggerExecutor.java:246)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.triggers.TriggerExecutor.execute(TriggerExecutor.java:124)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.service.StorageProxy.mutateWithTriggers(StorageProxy.java:957)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.cql3.statements.ModificationStatement.executeWithoutCondition(ModificationStatement.java:435)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:421)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:225)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:532)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:509)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.transport.messages.ExecuteMessage.execute(ExecuteMessage.java:146)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.transport.Message$Dispatcher.processRequest(Message.java:687)
> [apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.transport.Message$Dispatcher.lambda$channelRead0$0(Message.java:593)
> [apache-cassandra-3.11.11.jar:3.11.11]
>         at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> ~[na:1.8.0_302]
>         at
> org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:162)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at
> org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:113)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_302]
> Caused by: java.lang.UnsupportedOperationException: null
>         at java.util.AbstractCollection.add(AbstractCollection.java:262)
> ~[na:1.8.0_302]
>         at MyTrigger.augment(MyTrigger.java:26) ~[na:na]
>         at
> org.apache.cassandra.triggers.TriggerExecutor.executeInternal(TriggerExecutor.java:234)
> ~[apache-cassandra-3.11.11.jar:3.11.11]
>         ... 14 common frames omitted
> ```
>
> I guess I made a mistake in my trigger implementation.
> Not sure if it is the correct way to do that.
>
> Could you give me some advice?
>
> Thank you.
>

Reply via email to