[
https://issues.apache.org/jira/browse/CASSANDRA-1311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12976326#action_12976326
]
Martin Hentschel commented on CASSANDRA-1311:
---------------------------------------------
In StorageProxy.mutate (was mutateBlocking in the older version I guess),
triggers are only executed once a write quorum has been reached. Threrefore,
at the master, only acknowledged writes will also fire triggers. If the
acknowledgement gets lost, then the writes have been performed and the triggers
have been executed so there should not be a consistency issue.
Concerning your point about slave nodes, we assume that clients retry write
requests that have not been acknowledged by Cassandra. Triggers at slave nodes
are buffered (storeDanglingTrigger) and are only executed in case the master
node goes down. If the master fails before sending the acknowledgement to the
client, the trigger might have been executed already. I think that correctly
was your point. But because the client did not get a response, it should retry
its write request and thus establishing consistency again. Of course, there is
a window in which triggers have been fired but the actual data is not present.
If the client ceases to issue the write request, then the inconsistency will be
durable, which is bad. If this is a too serious issue, we should come up with
a solution.
(For the record:
Master node = Cassandra's update coordinator
Slave nodes = All replica nodes minus the update coordinator)
> Support (asynchronous) triggers
> -------------------------------
>
> Key: CASSANDRA-1311
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1311
> Project: Cassandra
> Issue Type: New Feature
> Components: Contrib
> Reporter: Maxim Grinev
> Fix For: 0.8
>
> Attachments: HOWTO-PatchAndRunTriggerExample-update1.txt,
> HOWTO-PatchAndRunTriggerExample.txt, ImplementationDetails-update1.pdf,
> ImplementationDetails.pdf, trunk-967053.txt, trunk-984391-update1.txt,
> trunk-984391-update2.txt
>
>
> Asynchronous triggers is a basic mechanism to implement various use cases of
> asynchronous execution of application code at database side. For example to
> support indexes and materialized views, online analytics, push-based data
> propagation.
> Please find the motivation, triggers description and list of applications:
> http://maxgrinev.com/2010/07/23/extending-cassandra-with-asynchronous-triggers/
> An example of using triggers for indexing:
> http://maxgrinev.com/2010/07/23/managing-indexes-in-cassandra-using-async-triggers/
> Implementation details are attached.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.